From 567e6108cd0a2cec52463ddbfa2668398cbd3edf Mon Sep 17 00:00:00 2001 From: skpanagiotis Date: Thu, 19 Jun 2025 17:39:11 +0300 Subject: [PATCH 1/5] Update to latest cpython commit and update all .po files --- Makefile | 2 +- about.po | 2 +- bugs.po | 2 +- c-api/abstract.po | 2 +- c-api/allocation.po | 222 +- c-api/apiabiversion.po | 2 +- c-api/arg.po | 58 +- c-api/bool.po | 2 +- c-api/buffer.po | 2 +- c-api/bytearray.po | 2 +- c-api/bytes.po | 2 +- c-api/call.po | 2 +- c-api/capsule.po | 2 +- c-api/cell.po | 2 +- c-api/code.po | 4 +- c-api/codec.po | 2 +- c-api/complex.po | 2 +- c-api/concrete.po | 2 +- c-api/contextvars.po | 2 +- c-api/conversion.po | 2 +- c-api/coro.po | 2 +- c-api/datetime.po | 2 +- c-api/descriptor.po | 2 +- c-api/dict.po | 2 +- c-api/exceptions.po | 366 +-- c-api/extension-modules.po | 354 +++ c-api/file.po | 2 +- c-api/float.po | 2 +- c-api/frame.po | 2 +- c-api/function.po | 4 +- c-api/gcsupport.po | 160 +- c-api/gen.po | 2 +- c-api/hash.po | 2 +- c-api/import.po | 2 +- c-api/index.po | 2 +- c-api/init.po | 844 +++--- c-api/init_config.po | 2 +- c-api/intro.po | 348 ++- c-api/iter.po | 2 +- c-api/iterator.po | 2 +- c-api/lifecycle.po | 358 +++ c-api/list.po | 2 +- c-api/long.po | 2 +- c-api/mapping.po | 2 +- c-api/marshal.po | 2 +- c-api/memory.po | 316 ++- c-api/memoryview.po | 2 +- c-api/method.po | 2 +- c-api/module.po | 462 ++-- c-api/monitoring.po | 2 +- c-api/none.po | 2 +- c-api/number.po | 2 +- c-api/object.po | 2 +- c-api/objimpl.po | 2 +- c-api/perfmaps.po | 2 +- c-api/refcounting.po | 4 +- c-api/reflection.po | 2 +- c-api/sequence.po | 2 +- c-api/set.po | 2 +- c-api/slice.po | 2 +- c-api/stable.po | 66 +- c-api/structures.po | 2 +- c-api/sys.po | 2 +- c-api/time.po | 2 +- c-api/tuple.po | 2 +- c-api/type.po | 234 +- c-api/typehints.po | 2 +- c-api/typeobj.po | 1587 +++++++---- c-api/unicode.po | 208 +- c-api/utilities.po | 2 +- c-api/veryhigh.po | 2 +- c-api/weakref.po | 2 +- contents.po | 2 +- copyright.po | 2 +- cpython | 2 +- deprecations/c-api-pending-removal-in-3.14.po | 2 +- deprecations/c-api-pending-removal-in-3.15.po | 2 +- deprecations/c-api-pending-removal-in-3.18.po | 3 +- .../c-api-pending-removal-in-future.po | 2 +- deprecations/index.po | 19 +- deprecations/pending-removal-in-3.13.po | 2 +- deprecations/pending-removal-in-3.14.po | 2 +- deprecations/pending-removal-in-3.15.po | 19 +- deprecations/pending-removal-in-3.16.po | 2 +- deprecations/pending-removal-in-3.17.po | 3 +- deprecations/pending-removal-in-3.19.po | 3 +- deprecations/pending-removal-in-future.po | 2 +- distributing/index.po | 2 +- extending/building.po | 172 +- extending/embedding.po | 48 +- extending/extending.po | 539 ++-- extending/index.po | 60 +- extending/newtypes.po | 2 +- extending/newtypes_tutorial.po | 600 ++-- extending/windows.po | 6 +- faq/design.po | 2 +- faq/extending.po | 193 +- faq/general.po | 2 +- faq/gui.po | 2 +- faq/index.po | 2 +- faq/installed.po | 2 +- faq/library.po | 2 +- faq/programming.po | 2 +- faq/windows.po | 2 +- glossary.po | 661 ++--- howto/annotations.po | 13 +- howto/argparse-optparse.po | 2 +- howto/argparse.po | 2 +- howto/clinic.po | 2 +- howto/cporting.po | 10 +- howto/curses.po | 2 +- howto/descriptor.po | 2 +- howto/enum.po | 2 +- howto/free-threading-extensions.po | 222 +- howto/free-threading-python.po | 117 +- howto/functional.po | 2 +- howto/gdb_helpers.po | 2 +- howto/index.po | 2 +- howto/instrumentation.po | 2 +- howto/ipaddress.po | 2 +- howto/isolating-extensions.po | 204 +- howto/logging-cookbook.po | 2 +- howto/logging.po | 2 +- howto/mro.po | 2 +- howto/perf_profiling.po | 2 +- howto/pyporting.po | 2 +- howto/regex.po | 2 +- howto/remote_debugging.po | 3 +- howto/sockets.po | 2 +- howto/sorting.po | 2 +- howto/timerfd.po | 2 +- howto/unicode.po | 2 +- howto/urllib2.po | 191 +- installing/index.po | 2 +- library/__future__.po | 2 +- library/__main__.po | 2 +- library/_thread.po | 2 +- library/abc.po | 2 +- library/aifc.po | 2 +- library/allos.po | 2 +- library/annotationlib.po | 378 ++- library/archiving.po | 8 +- library/argparse.po | 75 +- library/array.po | 2 +- library/ast.po | 70 +- library/asynchat.po | 2 +- library/asyncio-api-index.po | 2 +- library/asyncio-dev.po | 85 +- library/asyncio-eventloop.po | 720 ++--- library/asyncio-exceptions.po | 2 +- library/asyncio-extending.po | 2 +- library/asyncio-future.po | 2 +- library/asyncio-graph.po | 3 +- library/asyncio-llapi-index.po | 2 +- library/asyncio-platforms.po | 2 +- library/asyncio-policy.po | 2 +- library/asyncio-protocol.po | 2 +- library/asyncio-queue.po | 2 +- library/asyncio-runner.po | 2 +- library/asyncio-stream.po | 161 +- library/asyncio-subprocess.po | 2 +- library/asyncio-sync.po | 2 +- library/asyncio-task.po | 473 ++-- library/asyncio.po | 2 +- library/asyncore.po | 2 +- library/atexit.po | 2 +- library/audioop.po | 2 +- library/audit_events.po | 2 +- library/base64.po | 191 +- library/bdb.po | 2 +- library/binary.po | 2 +- library/binascii.po | 2 +- library/bisect.po | 2 +- library/builtins.po | 2 +- library/bz2.po | 2 +- library/calendar.po | 2 +- library/cgi.po | 2 +- library/cgitb.po | 2 +- library/chunk.po | 2 +- library/cmath.po | 2 +- library/cmd.po | 2 +- library/cmdline.po | 2 +- library/cmdlinelibs.po | 2 +- library/code.po | 66 +- library/codecs.po | 2 +- library/codeop.po | 2 +- library/collections.abc.po | 2 +- library/collections.po | 2 +- library/colorsys.po | 2 +- library/compileall.po | 114 +- library/compression.po | 52 + library/compression.zstd.po | 1126 ++++++++ library/concurrency.po | 4 +- library/concurrent.futures.po | 157 +- library/concurrent.interpreters.po | 250 ++ library/concurrent.po | 9 +- library/configparser.po | 2 +- library/constants.po | 2 +- library/contextlib.po | 2 +- library/contextvars.po | 2 +- library/copy.po | 6 +- library/copyreg.po | 2 +- library/crypt.po | 2 +- library/crypto.po | 2 +- library/csv.po | 140 +- library/ctypes.po | 932 ++++--- library/curses.ascii.po | 2 +- library/curses.panel.po | 2 +- library/curses.po | 636 ++--- library/custominterp.po | 2 +- library/dataclasses.po | 274 +- library/datatypes.po | 2 +- library/datetime.po | 1134 ++++---- library/dbm.po | 2 +- library/debug.po | 2 +- library/decimal.po | 457 ++- library/development.po | 2 +- library/devmode.po | 2 +- library/dialog.po | 2 +- library/difflib.po | 2 +- library/dis.po | 412 ++- library/distribution.po | 2 +- library/distutils.po | 2 +- library/doctest.po | 760 ++--- library/email.charset.po | 2 +- library/email.compat32-message.po | 2 +- library/email.contentmanager.po | 2 +- library/email.encoders.po | 2 +- library/email.errors.po | 2 +- library/email.examples.po | 2 +- library/email.generator.po | 2 +- library/email.header.po | 56 +- library/email.headerregistry.po | 2 +- library/email.iterators.po | 2 +- library/email.message.po | 2 +- library/email.mime.po | 2 +- library/email.parser.po | 2 +- library/email.po | 2 +- library/email.policy.po | 2 +- library/email.utils.po | 2 +- library/ensurepip.po | 2 +- library/enum.po | 2 +- library/errno.po | 2 +- library/exceptions.po | 2 +- library/faulthandler.po | 2 +- library/fcntl.po | 2 +- library/filecmp.po | 2 +- library/fileformats.po | 2 +- library/fileinput.po | 2 +- library/filesys.po | 2 +- library/fnmatch.po | 2 +- library/fractions.po | 2 +- library/frameworks.po | 2 +- library/ftplib.po | 2 +- library/functional.po | 2 +- library/functions.po | 2 +- library/functools.po | 2 +- library/gc.po | 2 +- library/getopt.po | 2 +- library/getpass.po | 2 +- library/gettext.po | 2 +- library/glob.po | 2 +- library/graphlib.po | 2 +- library/grp.po | 2 +- library/gzip.po | 2 +- library/hashlib.po | 2 +- library/heapq.po | 2 +- library/hmac.po | 2 +- library/html.entities.po | 2 +- library/html.parser.po | 2 +- library/html.po | 2 +- library/http.client.po | 2 +- library/http.cookiejar.po | 2 +- library/http.cookies.po | 2 +- library/http.po | 2 +- library/http.server.po | 95 +- library/i18n.po | 2 +- library/idle.po | 2 +- library/imaplib.po | 2 +- library/imghdr.po | 2 +- library/imp.po | 2 +- library/importlib.metadata.po | 2 +- library/importlib.po | 2 +- library/importlib.resources.abc.po | 2 +- library/importlib.resources.po | 2 +- library/index.po | 2 +- library/inspect.po | 2 +- library/internet.po | 2 +- library/intro.po | 2 +- library/io.po | 399 +-- library/ipaddress.po | 2 +- library/ipc.po | 2 +- library/itertools.po | 2 +- library/json.po | 359 +-- library/keyword.po | 2 +- library/language.po | 2 +- library/linecache.po | 2 +- library/locale.po | 2 +- library/logging.config.po | 12 +- library/logging.handlers.po | 439 +-- library/logging.po | 2 +- library/lzma.po | 2 +- library/mailbox.po | 2 +- library/mailcap.po | 2 +- library/markup.po | 2 +- library/marshal.po | 2 +- library/math.po | 260 +- library/mimetypes.po | 2 +- library/mm.po | 2 +- library/mmap.po | 2 +- library/modulefinder.po | 2 +- library/modules.po | 2 +- library/msilib.po | 2 +- library/msvcrt.po | 2 +- library/multiprocessing.po | 12 +- library/multiprocessing.shared_memory.po | 2 +- library/netdata.po | 2 +- library/netrc.po | 2 +- library/nis.po | 2 +- library/nntplib.po | 2 +- library/numbers.po | 2 +- library/numeric.po | 2 +- library/operator.po | 2 +- library/optparse.po | 2 +- library/os.path.po | 112 +- library/os.po | 2 +- library/ossaudiodev.po | 2 +- library/pathlib.po | 244 +- library/pdb.po | 313 ++- library/persistence.po | 2 +- library/pickle.po | 2 +- library/pickletools.po | 2 +- library/pipes.po | 2 +- library/pkgutil.po | 9 +- library/platform.po | 2 +- library/plistlib.po | 2 +- library/poplib.po | 2 +- library/posix.po | 2 +- library/pprint.po | 2 +- library/profile.po | 2 +- library/pty.po | 2 +- library/pwd.po | 2 +- library/py_compile.po | 2 +- library/pyclbr.po | 2 +- library/pydoc.po | 2 +- library/pyexpat.po | 2 +- library/python.po | 8 +- library/queue.po | 2 +- library/quopri.po | 2 +- library/random.po | 2 +- library/re.po | 360 +-- library/readline.po | 2 +- library/removed.po | 2 +- library/reprlib.po | 2 +- library/resource.po | 2 +- library/rlcompleter.po | 2 +- library/runpy.po | 2 +- library/sched.po | 2 +- library/secrets.po | 2 +- library/security_warnings.po | 2 +- library/select.po | 2 +- library/selectors.po | 2 +- library/shelve.po | 2 +- library/shlex.po | 2 +- library/shutil.po | 271 +- library/signal.po | 2 +- library/site.po | 2 +- library/smtpd.po | 2 +- library/smtplib.po | 2 +- library/sndhdr.po | 2 +- library/socket.po | 10 +- library/socketserver.po | 2 +- library/spwd.po | 2 +- library/sqlite3.po | 31 +- library/ssl.po | 2 +- library/stat.po | 2 +- library/statistics.po | 2 +- library/stdtypes.po | 2450 +++++++++-------- library/string.po | 2 +- library/stringprep.po | 2 +- library/struct.po | 2 +- library/subprocess.po | 2 +- library/sunau.po | 2 +- library/superseded.po | 2 +- library/symtable.po | 2 +- library/sys.monitoring.po | 2 +- library/sys.po | 141 +- library/sys_path_init.po | 2 +- library/sysconfig.po | 2 +- library/syslog.po | 2 +- library/tabnanny.po | 2 +- library/tarfile.po | 534 ++-- library/telnetlib.po | 2 +- library/tempfile.po | 2 +- library/termios.po | 2 +- library/test.po | 2 +- library/text.po | 2 +- library/textwrap.po | 2 +- library/threading.po | 667 +++-- library/time.po | 2 +- library/timeit.po | 2 +- library/tk.po | 2 +- library/tkinter.colorchooser.po | 2 +- library/tkinter.dnd.po | 2 +- library/tkinter.font.po | 2 +- library/tkinter.messagebox.po | 2 +- library/tkinter.po | 2 +- library/tkinter.scrolledtext.po | 2 +- library/tkinter.ttk.po | 2 +- library/token.po | 4 +- library/tokenize.po | 2 +- library/tomllib.po | 2 +- library/trace.po | 2 +- library/traceback.po | 2 +- library/tracemalloc.po | 2 +- library/tty.po | 2 +- library/turtle.po | 2 +- library/types.po | 2 +- library/typing.po | 351 ++- library/unicodedata.po | 2 +- library/unittest.mock-examples.po | 2 +- library/unittest.mock.po | 6 +- library/unittest.po | 4 +- library/unix.po | 2 +- library/urllib.error.po | 2 +- library/urllib.parse.po | 2 +- library/urllib.po | 2 +- library/urllib.request.po | 6 +- library/urllib.robotparser.po | 2 +- library/uu.po | 2 +- library/uuid.po | 71 +- library/venv.po | 2 +- library/warnings.po | 2 +- library/wave.po | 2 +- library/weakref.po | 2 +- library/webbrowser.po | 2 +- library/windows.po | 2 +- library/winreg.po | 2 +- library/winsound.po | 2 +- library/wsgiref.po | 2 +- library/xdrlib.po | 2 +- library/xml.dom.minidom.po | 2 +- library/xml.dom.po | 2 +- library/xml.dom.pulldom.po | 2 +- library/xml.etree.elementtree.po | 2 +- library/xml.po | 2 +- library/xml.sax.handler.po | 2 +- library/xml.sax.po | 2 +- library/xml.sax.reader.po | 2 +- library/xml.sax.utils.po | 2 +- library/xmlrpc.client.po | 2 +- library/xmlrpc.po | 2 +- library/xmlrpc.server.po | 2 +- library/zipapp.po | 2 +- library/zipfile.po | 2 +- library/zipimport.po | 2 +- library/zlib.po | 2 +- library/zoneinfo.po | 2 +- license.po | 2 +- reference/compound_stmts.po | 71 +- reference/datamodel.po | 1701 ++++++------ reference/executionmodel.po | 2 +- reference/expressions.po | 157 +- reference/grammar.po | 97 +- reference/import.po | 2 +- reference/index.po | 2 +- reference/introduction.po | 278 +- reference/lexical_analysis.po | 859 +++--- reference/simple_stmts.po | 2 +- reference/toplevel_components.po | 2 +- sphinx.po | 32 +- tutorial/appendix.po | 2 +- tutorial/appetite.po | 2 +- tutorial/classes.po | 2 +- tutorial/controlflow.po | 85 +- tutorial/datastructures.po | 2 +- tutorial/errors.po | 2 +- tutorial/floatingpoint.po | 2 +- tutorial/index.po | 26 +- tutorial/inputoutput.po | 2 +- tutorial/interactive.po | 2 +- tutorial/interpreter.po | 2 +- tutorial/introduction.po | 244 +- tutorial/modules.po | 233 +- tutorial/stdlib.po | 2 +- tutorial/stdlib2.po | 2 +- tutorial/venv.po | 2 +- tutorial/whatnow.po | 2 +- using/android.po | 15 +- using/cmdline.po | 2 +- using/configure.po | 566 ++-- using/editors.po | 2 +- using/index.po | 2 +- using/ios.po | 2 +- using/mac.po | 373 +-- using/unix.po | 2 +- using/windows.po | 875 +++--- whatsnew/2.0.po | 2 +- whatsnew/2.1.po | 2 +- whatsnew/2.2.po | 2 +- whatsnew/2.3.po | 2 +- whatsnew/2.4.po | 2 +- whatsnew/2.5.po | 2 +- whatsnew/2.6.po | 2 +- whatsnew/2.7.po | 2 +- whatsnew/3.0.po | 2 +- whatsnew/3.1.po | 2 +- whatsnew/3.10.po | 867 +++--- whatsnew/3.11.po | 2 +- whatsnew/3.12.po | 19 +- whatsnew/3.13.po | 1072 ++++---- whatsnew/3.14.po | 1958 ++++++++----- whatsnew/3.2.po | 2 +- whatsnew/3.3.po | 2 +- whatsnew/3.4.po | 2 +- whatsnew/3.5.po | 2 +- whatsnew/3.6.po | 2 +- whatsnew/3.7.po | 2 +- whatsnew/3.8.po | 2 +- whatsnew/3.9.po | 2 +- whatsnew/changelog.po | 2 +- whatsnew/index.po | 2 +- 522 files changed, 19892 insertions(+), 15058 deletions(-) create mode 100644 c-api/extension-modules.po create mode 100644 c-api/lifecycle.po create mode 100644 library/compression.po create mode 100644 library/compression.zstd.po create mode 100644 library/concurrent.interpreters.po diff --git a/Makefile b/Makefile index 17be0eee..15704319 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ # from which we generated our po files. We use it here so when we # test build, we're building with the .rst files that generated our # .po files. -CPYTHON_CURRENT_COMMIT := d13d5fdf610a294a6c3dc125e0856fb7fdd41e49 +CPYTHON_CURRENT_COMMIT := 250bb7fffd0b7270064505a3acaa025a268985ce CPYTHON_PATH := ./cpython diff --git a/about.po b/about.po index da6824ee..ffef9082 100644 --- a/about.po +++ b/about.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-03-31 19:50+0000\n" "Last-Translator: Theofanis Petkos \n" "Language-Team: PyGreece \n" diff --git a/bugs.po b/bugs.po index f9814c2b..a81a8b80 100644 --- a/bugs.po +++ b/bugs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-06 12:51+0000\n" "Last-Translator: Theofanis Petkos \n" "Language-Team: PyGreece \n" diff --git a/c-api/abstract.po b/c-api/abstract.po index 495b7ca9..41807f2d 100644 --- a/c-api/abstract.po +++ b/c-api/abstract.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/allocation.po b/c-api/allocation.po index f61efa31..b3f303f8 100644 --- a/c-api/allocation.po +++ b/c-api/allocation.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-06-04 11:27+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" @@ -25,28 +25,48 @@ msgstr "Δέσμευση Αντικειμένων στο Σωρό" msgid "" "Initialize a newly allocated object *op* with its type and initial " "reference. Returns the initialized object. Other fields of the object are " -"not affected." +"not initialized. Despite its name, this function is unrelated to the " +"object's :meth:`~object.__init__` method (:c:member:`~PyTypeObject.tp_init` " +"slot). Specifically, this function does **not** call the object's :meth:`!" +"__init__` method." msgstr "" -"Αρχικοποιεί ένα νεοδεσμευμένο αντικείμενο *op* με τον τύπο και την αρχική " -"αναφορά του. Επιστρέφει το αρχικοποιημένο αντικείμενο. Άλλα πεδία του " -"αντικειμένου δεν επηρεάζονται." #: c-api/allocation.rst:24 msgid "" +"In general, consider this function to be a low-level routine. Use :c:member:" +"`~PyTypeObject.tp_alloc` where possible. For implementing :c:member:`!" +"tp_alloc` for your type, prefer :c:func:`PyType_GenericAlloc` or :c:func:" +"`PyObject_New`." +msgstr "" + +#: c-api/allocation.rst:31 +msgid "" +"This function only initializes the object's memory corresponding to the " +"initial :c:type:`PyObject` structure. It does not zero the rest." +msgstr "" + +#: c-api/allocation.rst:37 +msgid "" "This does everything :c:func:`PyObject_Init` does, and also initializes the " "length information for a variable-size object." msgstr "" "Αυτό κάνει τα πάντα που κάνει η :c:func:`PyObject_Init`, και επίσης " "αρχικοποιεί τις πληροφορίες μήκους για ένα αντικείμενο μεταβλητού μεγέθους." -#: c-api/allocation.rst:30 +#: c-api/allocation.rst:42 +msgid "" +"This function only initializes some of the object's memory. It does not " +"zero the rest." +msgstr "" + +#: c-api/allocation.rst:48 +#, fuzzy msgid "" -"Allocate a new Python object using the C structure type *TYPE* and the " -"Python type object *typeobj* (``PyTypeObject*``). Fields not defined by the " -"Python object header are not initialized. The caller will own the only " -"reference to the object (i.e. its reference count will be one). The size of " -"the memory allocation is determined from the :c:member:`~PyTypeObject." -"tp_basicsize` field of the type object." +"Allocates a new Python object using the C structure type *TYPE* and the " +"Python type object *typeobj* (``PyTypeObject*``) by calling :c:func:" +"`PyObject_Malloc` to allocate memory and initializing it like :c:func:" +"`PyObject_Init`. The caller will own the only reference to the object (i.e. " +"its reference count will be one)." msgstr "" "Δεσμεύει ένα νέο αντικείμενο Python χρησιμοποιώντας τον τύπο δομής C *TYPE* " "και το αντικείμενο τύπου Python *typeobj* (``PyTypeObject*``). Τα πεδία που " @@ -55,54 +75,130 @@ msgstr "" "αναφορών του θα είναι ένα). Το μέγεθος της δέσμευσης μνήμης καθορίζεται από " "το πεδίο :c:member:`~PyTypeObject.tp_basicsize` του αντικειμένου τύπου." -#: c-api/allocation.rst:38 +#: c-api/allocation.rst:107 +msgid "" +"Avoid calling this directly to allocate memory for an object; call the " +"type's :c:member:`~PyTypeObject.tp_alloc` slot instead." +msgstr "" + +#: c-api/allocation.rst:110 +msgid "" +"When populating a type's :c:member:`~PyTypeObject.tp_alloc` slot, :c:func:" +"`PyType_GenericAlloc` is preferred over a custom function that simply calls " +"this macro." +msgstr "" + +#: c-api/allocation.rst:61 msgid "" -"Note that this function is unsuitable if *typeobj* has :c:macro:" -"`Py_TPFLAGS_HAVE_GC` set. For such objects, use :c:func:`PyObject_GC_New` " -"instead." +"This macro does not call :c:member:`~PyTypeObject.tp_alloc`, :c:member:" +"`~PyTypeObject.tp_new` (:meth:`~object.__new__`), or :c:member:" +"`~PyTypeObject.tp_init` (:meth:`~object.__init__`)." +msgstr "" + +#: c-api/allocation.rst:65 +#, fuzzy +msgid "" +"This cannot be used for objects with :c:macro:`Py_TPFLAGS_HAVE_GC` set in :c:" +"member:`~PyTypeObject.tp_flags`; use :c:macro:`PyObject_GC_New` instead." msgstr "" "Σημειώστε ότι αυτή η συνάρτηση δεν είναι κατάλληλη αν το *typeobj* έχει :c:" "macro:`Py_TPFLAGS_HAVE_GC` ορισμένο. Για τέτοια αντικείμενα, χρησιμοποιήστε :" "c:func:`PyObject_GC_New` αντ' αυτού." -#: c-api/allocation.rst:45 +#: c-api/allocation.rst:68 msgid "" -"Allocate a new Python object using the C structure type *TYPE* and the " -"Python type object *typeobj* (``PyTypeObject*``). Fields not defined by the " -"Python object header are not initialized. The allocated memory allows for " -"the *TYPE* structure plus *size* (``Py_ssize_t``) fields of the size given " -"by the :c:member:`~PyTypeObject.tp_itemsize` field of *typeobj*. This is " -"useful for implementing objects like tuples, which are able to determine " -"their size at construction time. Embedding the array of fields into the " -"same allocation decreases the number of allocations, improving the memory " -"management efficiency." +"Memory allocated by this macro must be freed with :c:func:`PyObject_Free` " +"(usually called via the object's :c:member:`~PyTypeObject.tp_free` slot)." +msgstr "" + +#: c-api/allocation.rst:123 +msgid "" +"The returned memory is not guaranteed to have been completely zeroed before " +"it was initialized." +msgstr "" + +#: c-api/allocation.rst:128 +msgid "" +"This macro does not construct a fully initialized object of the given type; " +"it merely allocates memory and prepares it for further initialization by :c:" +"member:`~PyTypeObject.tp_init`. To construct a fully initialized object, " +"call *typeobj* instead. For example::" +msgstr "" + +#: c-api/allocation.rst:83 +msgid "PyObject *foo = PyObject_CallNoArgs((PyObject *)&PyFoo_Type);" +msgstr "" + +#: c-api/allocation.rst:137 +#, fuzzy +msgid ":c:func:`PyObject_Free`" +msgstr "Ίδιο με την :c:func:`PyObject_Free`." + +#: c-api/allocation.rst:88 +msgid ":c:macro:`PyObject_GC_New`" +msgstr "" + +#: c-api/allocation.rst:139 +msgid ":c:func:`PyType_GenericAlloc`" +msgstr "" + +#: c-api/allocation.rst:140 +msgid ":c:member:`~PyTypeObject.tp_alloc`" msgstr "" -"Δεσμεύει ένα νέο αντικείμενο Python χρησιμοποιώντας τον τύπο δομής C *TYPE* " -"και το αντικείμενο τύπου Python *typeobj* (``PyTypeObject*``). Τα πεδία που " -"δεν ορίζονται από την κεφαλίδα αντικειμένου Python δεν αρχικοποιούνται. Η " -"δεσμευμένη μνήμη επιτρέπει τη δομή *TYPE* συν *size* (``Py_ssize_t``) πεδία " -"του μεγέθους που δίνεται από το πεδίο :c:member:`~PyTypeObject.tp_itemsize` " -"του *typeobj*. Αυτό είναι χρήσιμο για την υλοποίηση αντικειμένων όπως τις " -"πλειάδες (tuples), τα οποία είναι σε θέση να προσδιορίσουν το μέγεθός τους " -"κατά τη διάρκεια της κατασκευής. Η ενσωμάτωση του πίνακα πεδίων στην ίδια " -"δέσμευση μειώνει τον αριθμό των δεσμεύσεων, βελτιώνοντας την αποδοτικότητα " -"της διαχείρισης μνήμης." -#: c-api/allocation.rst:56 +#: c-api/allocation.rst:95 +msgid "Like :c:macro:`PyObject_New` except:" +msgstr "" + +#: c-api/allocation.rst:97 +msgid "" +"It allocates enough memory for the *TYPE* structure plus *size* " +"(``Py_ssize_t``) fields of the size given by the :c:member:`~PyTypeObject." +"tp_itemsize` field of *typeobj*." +msgstr "" + +#: c-api/allocation.rst:100 +msgid "The memory is initialized like :c:func:`PyObject_InitVar`." +msgstr "" + +#: c-api/allocation.rst:102 msgid "" -"Note that this function is unsuitable if *typeobj* has :c:macro:" -"`Py_TPFLAGS_HAVE_GC` set. For such objects, use :c:func:`PyObject_GC_NewVar` " -"instead." +"This is useful for implementing objects like tuples, which are able to " +"determine their size at construction time. Embedding the array of fields " +"into the same allocation decreases the number of allocations, improving the " +"memory management efficiency." +msgstr "" + +#: c-api/allocation.rst:114 +#, fuzzy +msgid "" +"This cannot be used for objects with :c:macro:`Py_TPFLAGS_HAVE_GC` set in :c:" +"member:`~PyTypeObject.tp_flags`; use :c:macro:`PyObject_GC_NewVar` instead." msgstr "" "Σημειώστε ότι αυτή η συνάρτηση δεν είναι κατάλληλη αν το *typeobj* έχει :c:" "macro:`Py_TPFLAGS_HAVE_GC` ορισμένο. Για τέτοια αντικείμενα, χρησιμοποιήστε :" "c:func:`PyObject_GC_NewVar` αντ' αυτού." -#: c-api/allocation.rst:63 +#: c-api/allocation.rst:118 +msgid "" +"Memory allocated by this function must be freed with :c:func:`PyObject_Free` " +"(usually called via the object's :c:member:`~PyTypeObject.tp_free` slot)." +msgstr "" + +#: c-api/allocation.rst:133 +msgid "" +"PyObject *list_instance = PyObject_CallNoArgs((PyObject *)&PyList_Type);" +msgstr "" + +#: c-api/allocation.rst:138 +msgid ":c:macro:`PyObject_GC_NewVar`" +msgstr "" + +#: c-api/allocation.rst:145 msgid "Same as :c:func:`PyObject_Free`." msgstr "Ίδιο με την :c:func:`PyObject_Free`." -#: c-api/allocation.rst:67 +#: c-api/allocation.rst:149 msgid "" "Object which is visible in Python as ``None``. This should only be accessed " "using the :c:macro:`Py_None` macro, which evaluates to a pointer to this " @@ -112,10 +208,44 @@ msgstr "" "προσπελαύνεται μόνο χρησιμοποιώντας τη μακροεντολή :c:macro:`Py_None`, η " "οποία αξιολογείται σε έναν δείκτη σε αυτό το αντικείμενο." -#: c-api/allocation.rst:74 -msgid ":c:func:`PyModule_Create`" -msgstr ":c:func:`PyModule_Create`" +#: c-api/allocation.rst:156 +msgid ":ref:`moduleobjects`" +msgstr "" -#: c-api/allocation.rst:75 +#: c-api/allocation.rst:157 msgid "To allocate and create extension modules." msgstr "Για να δεσμεύσετε και να δημιουργήσετε επεκτάσεις modules." + +#~ msgid "" +#~ "Initialize a newly allocated object *op* with its type and initial " +#~ "reference. Returns the initialized object. Other fields of the object " +#~ "are not affected." +#~ msgstr "" +#~ "Αρχικοποιεί ένα νεοδεσμευμένο αντικείμενο *op* με τον τύπο και την αρχική " +#~ "αναφορά του. Επιστρέφει το αρχικοποιημένο αντικείμενο. Άλλα πεδία του " +#~ "αντικειμένου δεν επηρεάζονται." + +#~ msgid "" +#~ "Allocate a new Python object using the C structure type *TYPE* and the " +#~ "Python type object *typeobj* (``PyTypeObject*``). Fields not defined by " +#~ "the Python object header are not initialized. The allocated memory " +#~ "allows for the *TYPE* structure plus *size* (``Py_ssize_t``) fields of " +#~ "the size given by the :c:member:`~PyTypeObject.tp_itemsize` field of " +#~ "*typeobj*. This is useful for implementing objects like tuples, which " +#~ "are able to determine their size at construction time. Embedding the " +#~ "array of fields into the same allocation decreases the number of " +#~ "allocations, improving the memory management efficiency." +#~ msgstr "" +#~ "Δεσμεύει ένα νέο αντικείμενο Python χρησιμοποιώντας τον τύπο δομής C " +#~ "*TYPE* και το αντικείμενο τύπου Python *typeobj* (``PyTypeObject*``). Τα " +#~ "πεδία που δεν ορίζονται από την κεφαλίδα αντικειμένου Python δεν " +#~ "αρχικοποιούνται. Η δεσμευμένη μνήμη επιτρέπει τη δομή *TYPE* συν *size* " +#~ "(``Py_ssize_t``) πεδία του μεγέθους που δίνεται από το πεδίο :c:member:" +#~ "`~PyTypeObject.tp_itemsize` του *typeobj*. Αυτό είναι χρήσιμο για την " +#~ "υλοποίηση αντικειμένων όπως τις πλειάδες (tuples), τα οποία είναι σε θέση " +#~ "να προσδιορίσουν το μέγεθός τους κατά τη διάρκεια της κατασκευής. Η " +#~ "ενσωμάτωση του πίνακα πεδίων στην ίδια δέσμευση μειώνει τον αριθμό των " +#~ "δεσμεύσεων, βελτιώνοντας την αποδοτικότητα της διαχείρισης μνήμης." + +#~ msgid ":c:func:`PyModule_Create`" +#~ msgstr ":c:func:`PyModule_Create`" diff --git a/c-api/apiabiversion.po b/c-api/apiabiversion.po index 993e402d..cd0b791a 100644 --- a/c-api/apiabiversion.po +++ b/c-api/apiabiversion.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/arg.po b/c-api/arg.po index bc9d1f6e..c0a74cc0 100644 --- a/c-api/arg.po +++ b/c-api/arg.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -552,7 +552,7 @@ msgstr "" msgid "Allow :class:`bytearray` objects." msgstr "" -#: c-api/arg.rst:694 +#: c-api/arg.rst:695 msgid "``C`` (:class:`str` of length 1) [int]" msgstr "" @@ -562,7 +562,7 @@ msgid "" "1, to a C :c:expr:`int`." msgstr "" -#: c-api/arg.rst:701 +#: c-api/arg.rst:702 msgid "``f`` (:class:`float`) [float]" msgstr "" @@ -570,7 +570,7 @@ msgstr "" msgid "Convert a Python floating-point number to a C :c:expr:`float`." msgstr "" -#: c-api/arg.rst:698 +#: c-api/arg.rst:699 msgid "``d`` (:class:`float`) [double]" msgstr "" @@ -590,7 +590,7 @@ msgstr "" msgid "Other objects" msgstr "" -#: c-api/arg.rst:707 +#: c-api/arg.rst:708 msgid "``O`` (object) [PyObject \\*]" msgstr "" @@ -1124,44 +1124,42 @@ msgid "Convert a C :c:type:`Py_ssize_t` to a Python integer." msgstr "" #: c-api/arg.rst:687 -msgid "" -"Convert a C :c:expr:`int` to a Python :class:`bool` object. .. " -"versionadded:: 3.14" +msgid "Convert a C :c:expr:`int` to a Python :class:`bool` object." msgstr "" -#: c-api/arg.rst:690 +#: c-api/arg.rst:691 msgid "``c`` (:class:`bytes` of length 1) [char]" msgstr "" -#: c-api/arg.rst:691 +#: c-api/arg.rst:692 msgid "" "Convert a C :c:expr:`int` representing a byte to a Python :class:`bytes` " "object of length 1." msgstr "" -#: c-api/arg.rst:695 +#: c-api/arg.rst:696 msgid "" "Convert a C :c:expr:`int` representing a character to Python :class:`str` " "object of length 1." msgstr "" -#: c-api/arg.rst:699 +#: c-api/arg.rst:700 msgid "Convert a C :c:expr:`double` to a Python floating-point number." msgstr "" -#: c-api/arg.rst:702 +#: c-api/arg.rst:703 msgid "Convert a C :c:expr:`float` to a Python floating-point number." msgstr "" -#: c-api/arg.rst:704 +#: c-api/arg.rst:705 msgid "``D`` (:class:`complex`) [Py_complex \\*]" msgstr "" -#: c-api/arg.rst:705 +#: c-api/arg.rst:706 msgid "Convert a C :c:type:`Py_complex` structure to a Python complex number." msgstr "" -#: c-api/arg.rst:708 +#: c-api/arg.rst:709 msgid "" "Pass a Python object untouched but create a new :term:`strong reference` to " "it (i.e. its reference count is incremented by one). If the object passed in " @@ -1171,30 +1169,30 @@ msgid "" "no exception has been raised yet, :exc:`SystemError` is set." msgstr "" -#: c-api/arg.rst:717 +#: c-api/arg.rst:718 msgid "``S`` (object) [PyObject \\*]" msgstr "" -#: c-api/arg.rst:718 +#: c-api/arg.rst:719 msgid "Same as ``O``." msgstr "" -#: c-api/arg.rst:720 +#: c-api/arg.rst:721 msgid "``N`` (object) [PyObject \\*]" msgstr "" -#: c-api/arg.rst:721 +#: c-api/arg.rst:722 msgid "" "Same as ``O``, except it doesn't create a new :term:`strong reference`. " "Useful when the object is created by a call to an object constructor in the " "argument list." msgstr "" -#: c-api/arg.rst:725 +#: c-api/arg.rst:726 msgid "``O&`` (object) [*converter*, *anything*]" msgstr "" -#: c-api/arg.rst:726 +#: c-api/arg.rst:727 msgid "" "Convert *anything* to a Python object through a *converter* function. The " "function is called with *anything* (which should be compatible with :c:expr:" @@ -1202,44 +1200,44 @@ msgid "" "``NULL`` if an error occurred." msgstr "" -#: c-api/arg.rst:731 +#: c-api/arg.rst:732 msgid "``(items)`` (:class:`tuple`) [*matching-items*]" msgstr "" -#: c-api/arg.rst:732 +#: c-api/arg.rst:733 msgid "" "Convert a sequence of C values to a Python tuple with the same number of " "items." msgstr "" -#: c-api/arg.rst:734 +#: c-api/arg.rst:735 msgid "``[items]`` (:class:`list`) [*matching-items*]" msgstr "" -#: c-api/arg.rst:735 +#: c-api/arg.rst:736 msgid "" "Convert a sequence of C values to a Python list with the same number of " "items." msgstr "" -#: c-api/arg.rst:737 +#: c-api/arg.rst:738 msgid "``{items}`` (:class:`dict`) [*matching-items*]" msgstr "" -#: c-api/arg.rst:738 +#: c-api/arg.rst:739 msgid "" "Convert a sequence of C values to a Python dictionary. Each pair of " "consecutive C values adds one item to the dictionary, serving as key and " "value, respectively." msgstr "" -#: c-api/arg.rst:742 +#: c-api/arg.rst:743 msgid "" "If there is an error in the format string, the :exc:`SystemError` exception " "is set and ``NULL`` returned." msgstr "" -#: c-api/arg.rst:747 +#: c-api/arg.rst:748 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/bool.po b/c-api/bool.po index f1a4f914..2d4b2293 100644 --- a/c-api/bool.po +++ b/c-api/bool.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/buffer.po b/c-api/buffer.po index afff2202..3c640686 100644 --- a/c-api/buffer.po +++ b/c-api/buffer.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/bytearray.po b/c-api/bytearray.po index a7da13ab..cb13d06a 100644 --- a/c-api/bytearray.po +++ b/c-api/bytearray.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/bytes.po b/c-api/bytes.po index de123467..d5cc4e77 100644 --- a/c-api/bytes.po +++ b/c-api/bytes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/call.po b/c-api/call.po index 5395183f..f254d939 100644 --- a/c-api/call.po +++ b/c-api/call.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/capsule.po b/c-api/capsule.po index fc34abcc..77ad2c98 100644 --- a/c-api/capsule.po +++ b/c-api/capsule.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/cell.po b/c-api/cell.po index 6e78c28a..ae7f396c 100644 --- a/c-api/cell.po +++ b/c-api/cell.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/code.po b/c-api/code.po index 371ad6b6..e0c1345e 100644 --- a/c-api/code.po +++ b/c-api/code.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -212,7 +212,7 @@ msgstr "" #: c-api/code.rst:184 msgid "" "If *event* is ``PY_CODE_EVENT_CREATE``, then the callback is invoked after " -"`co` has been fully initialized. Otherwise, the callback is invoked before " +"*co* has been fully initialized. Otherwise, the callback is invoked before " "the destruction of *co* takes place, so the prior state of *co* can be " "inspected." msgstr "" diff --git a/c-api/codec.po b/c-api/codec.po index 92a77e69..19ebd7ac 100644 --- a/c-api/codec.po +++ b/c-api/codec.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/complex.po b/c-api/complex.po index 1429500c..219d710f 100644 --- a/c-api/complex.po +++ b/c-api/complex.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/concrete.po b/c-api/concrete.po index 53b98d5b..ecd69d68 100644 --- a/c-api/concrete.po +++ b/c-api/concrete.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/contextvars.po b/c-api/contextvars.po index 09b565eb..9de5127c 100644 --- a/c-api/contextvars.po +++ b/c-api/contextvars.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/conversion.po b/c-api/conversion.po index 8cd8b665..f23adbb6 100644 --- a/c-api/conversion.po +++ b/c-api/conversion.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/coro.po b/c-api/coro.po index f4259fd3..3117f8c6 100644 --- a/c-api/coro.po +++ b/c-api/coro.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/datetime.po b/c-api/datetime.po index 8f4cbef6..f03f03af 100644 --- a/c-api/datetime.po +++ b/c-api/datetime.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/descriptor.po b/c-api/descriptor.po index 4abc91f6..662169b0 100644 --- a/c-api/descriptor.po +++ b/c-api/descriptor.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/dict.po b/c-api/dict.po index 39915eb3..2635fbd3 100644 --- a/c-api/dict.po +++ b/c-api/dict.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/exceptions.po b/c-api/exceptions.po index 5e8aa57f..ecd12141 100644 --- a/c-api/exceptions.po +++ b/c-api/exceptions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1050,456 +1050,464 @@ msgid "" "all the variables:" msgstr "" -#: c-api/exceptions.rst:1175 c-api/exceptions.rst:1220 +#: c-api/exceptions.rst:1181 c-api/exceptions.rst:1227 msgid "C Name" msgstr "" -#: c-api/exceptions.rst:1220 +#: c-api/exceptions.rst:1227 msgid "Python Name" msgstr "" -#: c-api/exceptions.rst:1175 c-api/exceptions.rst:1220 +#: c-api/exceptions.rst:1181 c-api/exceptions.rst:1227 msgid "Notes" msgstr "" -#: c-api/exceptions.rst:1042 +#: c-api/exceptions.rst:1043 msgid ":c:data:`PyExc_BaseException`" msgstr "" -#: c-api/exceptions.rst:1042 +#: c-api/exceptions.rst:1043 msgid ":exc:`BaseException`" msgstr "" -#: c-api/exceptions.rst:1044 c-api/exceptions.rst:1092 -#: c-api/exceptions.rst:1104 +#: c-api/exceptions.rst:1045 c-api/exceptions.rst:1049 +#: c-api/exceptions.rst:1107 msgid "[1]_" msgstr "" -#: c-api/exceptions.rst:1044 +#: c-api/exceptions.rst:1045 +msgid ":c:data:`PyExc_BaseExceptionGroup`" +msgstr "" + +#: c-api/exceptions.rst:1045 +msgid ":exc:`BaseExceptionGroup`" +msgstr "" + +#: c-api/exceptions.rst:1047 msgid ":c:data:`PyExc_Exception`" msgstr "" -#: c-api/exceptions.rst:1044 +#: c-api/exceptions.rst:1047 msgid ":exc:`Exception`" msgstr "" -#: c-api/exceptions.rst:1046 +#: c-api/exceptions.rst:1049 msgid ":c:data:`PyExc_ArithmeticError`" msgstr "" -#: c-api/exceptions.rst:1046 +#: c-api/exceptions.rst:1049 msgid ":exc:`ArithmeticError`" msgstr "" -#: c-api/exceptions.rst:1048 +#: c-api/exceptions.rst:1051 msgid ":c:data:`PyExc_AssertionError`" msgstr "" -#: c-api/exceptions.rst:1048 +#: c-api/exceptions.rst:1051 msgid ":exc:`AssertionError`" msgstr "" -#: c-api/exceptions.rst:1050 +#: c-api/exceptions.rst:1053 msgid ":c:data:`PyExc_AttributeError`" msgstr "" -#: c-api/exceptions.rst:1050 +#: c-api/exceptions.rst:1053 msgid ":exc:`AttributeError`" msgstr "" -#: c-api/exceptions.rst:1052 +#: c-api/exceptions.rst:1055 msgid ":c:data:`PyExc_BlockingIOError`" msgstr "" -#: c-api/exceptions.rst:1052 +#: c-api/exceptions.rst:1055 msgid ":exc:`BlockingIOError`" msgstr "" -#: c-api/exceptions.rst:1054 +#: c-api/exceptions.rst:1057 msgid ":c:data:`PyExc_BrokenPipeError`" msgstr "" -#: c-api/exceptions.rst:1054 +#: c-api/exceptions.rst:1057 msgid ":exc:`BrokenPipeError`" msgstr "" -#: c-api/exceptions.rst:1056 +#: c-api/exceptions.rst:1059 msgid ":c:data:`PyExc_BufferError`" msgstr "" -#: c-api/exceptions.rst:1056 +#: c-api/exceptions.rst:1059 msgid ":exc:`BufferError`" msgstr "" -#: c-api/exceptions.rst:1058 +#: c-api/exceptions.rst:1061 msgid ":c:data:`PyExc_ChildProcessError`" msgstr "" -#: c-api/exceptions.rst:1058 +#: c-api/exceptions.rst:1061 msgid ":exc:`ChildProcessError`" msgstr "" -#: c-api/exceptions.rst:1060 +#: c-api/exceptions.rst:1063 msgid ":c:data:`PyExc_ConnectionAbortedError`" msgstr "" -#: c-api/exceptions.rst:1060 +#: c-api/exceptions.rst:1063 msgid ":exc:`ConnectionAbortedError`" msgstr "" -#: c-api/exceptions.rst:1062 +#: c-api/exceptions.rst:1065 msgid ":c:data:`PyExc_ConnectionError`" msgstr "" -#: c-api/exceptions.rst:1062 +#: c-api/exceptions.rst:1065 msgid ":exc:`ConnectionError`" msgstr "" -#: c-api/exceptions.rst:1064 +#: c-api/exceptions.rst:1067 msgid ":c:data:`PyExc_ConnectionRefusedError`" msgstr "" -#: c-api/exceptions.rst:1064 +#: c-api/exceptions.rst:1067 msgid ":exc:`ConnectionRefusedError`" msgstr "" -#: c-api/exceptions.rst:1066 +#: c-api/exceptions.rst:1069 msgid ":c:data:`PyExc_ConnectionResetError`" msgstr "" -#: c-api/exceptions.rst:1066 +#: c-api/exceptions.rst:1069 msgid ":exc:`ConnectionResetError`" msgstr "" -#: c-api/exceptions.rst:1068 +#: c-api/exceptions.rst:1071 msgid ":c:data:`PyExc_EOFError`" msgstr "" -#: c-api/exceptions.rst:1068 +#: c-api/exceptions.rst:1071 msgid ":exc:`EOFError`" msgstr "" -#: c-api/exceptions.rst:1070 +#: c-api/exceptions.rst:1073 msgid ":c:data:`PyExc_FileExistsError`" msgstr "" -#: c-api/exceptions.rst:1070 +#: c-api/exceptions.rst:1073 msgid ":exc:`FileExistsError`" msgstr "" -#: c-api/exceptions.rst:1072 +#: c-api/exceptions.rst:1075 msgid ":c:data:`PyExc_FileNotFoundError`" msgstr "" -#: c-api/exceptions.rst:1072 +#: c-api/exceptions.rst:1075 msgid ":exc:`FileNotFoundError`" msgstr "" -#: c-api/exceptions.rst:1074 +#: c-api/exceptions.rst:1077 msgid ":c:data:`PyExc_FloatingPointError`" msgstr "" -#: c-api/exceptions.rst:1074 +#: c-api/exceptions.rst:1077 msgid ":exc:`FloatingPointError`" msgstr "" -#: c-api/exceptions.rst:1076 +#: c-api/exceptions.rst:1079 msgid ":c:data:`PyExc_GeneratorExit`" msgstr "" -#: c-api/exceptions.rst:1076 +#: c-api/exceptions.rst:1079 msgid ":exc:`GeneratorExit`" msgstr "" -#: c-api/exceptions.rst:1078 +#: c-api/exceptions.rst:1081 msgid ":c:data:`PyExc_ImportError`" msgstr "" -#: c-api/exceptions.rst:1078 +#: c-api/exceptions.rst:1081 msgid ":exc:`ImportError`" msgstr "" -#: c-api/exceptions.rst:1080 +#: c-api/exceptions.rst:1083 msgid ":c:data:`PyExc_IndentationError`" msgstr "" -#: c-api/exceptions.rst:1080 +#: c-api/exceptions.rst:1083 msgid ":exc:`IndentationError`" msgstr "" -#: c-api/exceptions.rst:1082 +#: c-api/exceptions.rst:1085 msgid ":c:data:`PyExc_IndexError`" msgstr "" -#: c-api/exceptions.rst:1082 +#: c-api/exceptions.rst:1085 msgid ":exc:`IndexError`" msgstr "" -#: c-api/exceptions.rst:1084 +#: c-api/exceptions.rst:1087 msgid ":c:data:`PyExc_InterruptedError`" msgstr "" -#: c-api/exceptions.rst:1084 +#: c-api/exceptions.rst:1087 msgid ":exc:`InterruptedError`" msgstr "" -#: c-api/exceptions.rst:1086 +#: c-api/exceptions.rst:1089 msgid ":c:data:`PyExc_IsADirectoryError`" msgstr "" -#: c-api/exceptions.rst:1086 +#: c-api/exceptions.rst:1089 msgid ":exc:`IsADirectoryError`" msgstr "" -#: c-api/exceptions.rst:1088 +#: c-api/exceptions.rst:1091 msgid ":c:data:`PyExc_KeyError`" msgstr "" -#: c-api/exceptions.rst:1088 +#: c-api/exceptions.rst:1091 msgid ":exc:`KeyError`" msgstr "" -#: c-api/exceptions.rst:1090 +#: c-api/exceptions.rst:1093 msgid ":c:data:`PyExc_KeyboardInterrupt`" msgstr "" -#: c-api/exceptions.rst:1090 +#: c-api/exceptions.rst:1093 msgid ":exc:`KeyboardInterrupt`" msgstr "" -#: c-api/exceptions.rst:1092 +#: c-api/exceptions.rst:1095 msgid ":c:data:`PyExc_LookupError`" msgstr "" -#: c-api/exceptions.rst:1092 +#: c-api/exceptions.rst:1095 msgid ":exc:`LookupError`" msgstr "" -#: c-api/exceptions.rst:1094 +#: c-api/exceptions.rst:1097 msgid ":c:data:`PyExc_MemoryError`" msgstr "" -#: c-api/exceptions.rst:1094 +#: c-api/exceptions.rst:1097 msgid ":exc:`MemoryError`" msgstr "" -#: c-api/exceptions.rst:1096 +#: c-api/exceptions.rst:1099 msgid ":c:data:`PyExc_ModuleNotFoundError`" msgstr "" -#: c-api/exceptions.rst:1096 +#: c-api/exceptions.rst:1099 msgid ":exc:`ModuleNotFoundError`" msgstr "" -#: c-api/exceptions.rst:1098 +#: c-api/exceptions.rst:1101 msgid ":c:data:`PyExc_NameError`" msgstr "" -#: c-api/exceptions.rst:1098 +#: c-api/exceptions.rst:1101 msgid ":exc:`NameError`" msgstr "" -#: c-api/exceptions.rst:1100 +#: c-api/exceptions.rst:1103 msgid ":c:data:`PyExc_NotADirectoryError`" msgstr "" -#: c-api/exceptions.rst:1100 +#: c-api/exceptions.rst:1103 msgid ":exc:`NotADirectoryError`" msgstr "" -#: c-api/exceptions.rst:1102 +#: c-api/exceptions.rst:1105 msgid ":c:data:`PyExc_NotImplementedError`" msgstr "" -#: c-api/exceptions.rst:1102 +#: c-api/exceptions.rst:1105 msgid ":exc:`NotImplementedError`" msgstr "" -#: c-api/exceptions.rst:1104 +#: c-api/exceptions.rst:1107 msgid ":c:data:`PyExc_OSError`" msgstr "" -#: c-api/exceptions.rst:1104 +#: c-api/exceptions.rst:1107 msgid ":exc:`OSError`" msgstr "" -#: c-api/exceptions.rst:1106 +#: c-api/exceptions.rst:1109 msgid ":c:data:`PyExc_OverflowError`" msgstr "" -#: c-api/exceptions.rst:1106 +#: c-api/exceptions.rst:1109 msgid ":exc:`OverflowError`" msgstr "" -#: c-api/exceptions.rst:1108 +#: c-api/exceptions.rst:1111 msgid ":c:data:`PyExc_PermissionError`" msgstr "" -#: c-api/exceptions.rst:1108 +#: c-api/exceptions.rst:1111 msgid ":exc:`PermissionError`" msgstr "" -#: c-api/exceptions.rst:1110 +#: c-api/exceptions.rst:1113 msgid ":c:data:`PyExc_ProcessLookupError`" msgstr "" -#: c-api/exceptions.rst:1110 +#: c-api/exceptions.rst:1113 msgid ":exc:`ProcessLookupError`" msgstr "" -#: c-api/exceptions.rst:1112 +#: c-api/exceptions.rst:1115 msgid ":c:data:`PyExc_PythonFinalizationError`" msgstr "" -#: c-api/exceptions.rst:1112 +#: c-api/exceptions.rst:1115 msgid ":exc:`PythonFinalizationError`" msgstr "" -#: c-api/exceptions.rst:1114 +#: c-api/exceptions.rst:1117 msgid ":c:data:`PyExc_RecursionError`" msgstr "" -#: c-api/exceptions.rst:1114 +#: c-api/exceptions.rst:1117 msgid ":exc:`RecursionError`" msgstr "" -#: c-api/exceptions.rst:1116 +#: c-api/exceptions.rst:1119 msgid ":c:data:`PyExc_ReferenceError`" msgstr "" -#: c-api/exceptions.rst:1116 +#: c-api/exceptions.rst:1119 msgid ":exc:`ReferenceError`" msgstr "" -#: c-api/exceptions.rst:1118 +#: c-api/exceptions.rst:1121 msgid ":c:data:`PyExc_RuntimeError`" msgstr "" -#: c-api/exceptions.rst:1118 +#: c-api/exceptions.rst:1121 msgid ":exc:`RuntimeError`" msgstr "" -#: c-api/exceptions.rst:1120 +#: c-api/exceptions.rst:1123 msgid ":c:data:`PyExc_StopAsyncIteration`" msgstr "" -#: c-api/exceptions.rst:1120 +#: c-api/exceptions.rst:1123 msgid ":exc:`StopAsyncIteration`" msgstr "" -#: c-api/exceptions.rst:1122 +#: c-api/exceptions.rst:1125 msgid ":c:data:`PyExc_StopIteration`" msgstr "" -#: c-api/exceptions.rst:1122 +#: c-api/exceptions.rst:1125 msgid ":exc:`StopIteration`" msgstr "" -#: c-api/exceptions.rst:1124 +#: c-api/exceptions.rst:1127 msgid ":c:data:`PyExc_SyntaxError`" msgstr "" -#: c-api/exceptions.rst:1124 +#: c-api/exceptions.rst:1127 msgid ":exc:`SyntaxError`" msgstr "" -#: c-api/exceptions.rst:1126 +#: c-api/exceptions.rst:1129 msgid ":c:data:`PyExc_SystemError`" msgstr "" -#: c-api/exceptions.rst:1126 +#: c-api/exceptions.rst:1129 msgid ":exc:`SystemError`" msgstr "" -#: c-api/exceptions.rst:1128 +#: c-api/exceptions.rst:1131 msgid ":c:data:`PyExc_SystemExit`" msgstr "" -#: c-api/exceptions.rst:1128 +#: c-api/exceptions.rst:1131 msgid ":exc:`SystemExit`" msgstr "" -#: c-api/exceptions.rst:1130 +#: c-api/exceptions.rst:1133 msgid ":c:data:`PyExc_TabError`" msgstr "" -#: c-api/exceptions.rst:1130 +#: c-api/exceptions.rst:1133 msgid ":exc:`TabError`" msgstr "" -#: c-api/exceptions.rst:1132 +#: c-api/exceptions.rst:1135 msgid ":c:data:`PyExc_TimeoutError`" msgstr "" -#: c-api/exceptions.rst:1132 +#: c-api/exceptions.rst:1135 msgid ":exc:`TimeoutError`" msgstr "" -#: c-api/exceptions.rst:1134 +#: c-api/exceptions.rst:1137 msgid ":c:data:`PyExc_TypeError`" msgstr "" -#: c-api/exceptions.rst:1134 +#: c-api/exceptions.rst:1137 msgid ":exc:`TypeError`" msgstr "" -#: c-api/exceptions.rst:1136 +#: c-api/exceptions.rst:1139 msgid ":c:data:`PyExc_UnboundLocalError`" msgstr "" -#: c-api/exceptions.rst:1136 +#: c-api/exceptions.rst:1139 msgid ":exc:`UnboundLocalError`" msgstr "" -#: c-api/exceptions.rst:1138 +#: c-api/exceptions.rst:1141 msgid ":c:data:`PyExc_UnicodeDecodeError`" msgstr "" -#: c-api/exceptions.rst:1138 +#: c-api/exceptions.rst:1141 msgid ":exc:`UnicodeDecodeError`" msgstr "" -#: c-api/exceptions.rst:1140 +#: c-api/exceptions.rst:1143 msgid ":c:data:`PyExc_UnicodeEncodeError`" msgstr "" -#: c-api/exceptions.rst:1140 +#: c-api/exceptions.rst:1143 msgid ":exc:`UnicodeEncodeError`" msgstr "" -#: c-api/exceptions.rst:1142 +#: c-api/exceptions.rst:1145 msgid ":c:data:`PyExc_UnicodeError`" msgstr "" -#: c-api/exceptions.rst:1142 +#: c-api/exceptions.rst:1145 msgid ":exc:`UnicodeError`" msgstr "" -#: c-api/exceptions.rst:1144 +#: c-api/exceptions.rst:1147 msgid ":c:data:`PyExc_UnicodeTranslateError`" msgstr "" -#: c-api/exceptions.rst:1144 +#: c-api/exceptions.rst:1147 msgid ":exc:`UnicodeTranslateError`" msgstr "" -#: c-api/exceptions.rst:1146 +#: c-api/exceptions.rst:1149 msgid ":c:data:`PyExc_ValueError`" msgstr "" -#: c-api/exceptions.rst:1146 +#: c-api/exceptions.rst:1149 msgid ":exc:`ValueError`" msgstr "" -#: c-api/exceptions.rst:1148 +#: c-api/exceptions.rst:1151 msgid ":c:data:`PyExc_ZeroDivisionError`" msgstr "" -#: c-api/exceptions.rst:1148 +#: c-api/exceptions.rst:1151 msgid ":exc:`ZeroDivisionError`" msgstr "" -#: c-api/exceptions.rst:1151 +#: c-api/exceptions.rst:1154 msgid "" ":c:data:`PyExc_BlockingIOError`, :c:data:`PyExc_BrokenPipeError`, :c:data:" "`PyExc_ChildProcessError`, :c:data:`PyExc_ConnectionError`, :c:data:" @@ -1511,57 +1519,61 @@ msgid "" "`PyExc_TimeoutError` were introduced following :pep:`3151`." msgstr "" -#: c-api/exceptions.rst:1161 +#: c-api/exceptions.rst:1164 msgid ":c:data:`PyExc_StopAsyncIteration` and :c:data:`PyExc_RecursionError`." msgstr "" -#: c-api/exceptions.rst:1164 +#: c-api/exceptions.rst:1167 msgid ":c:data:`PyExc_ModuleNotFoundError`." msgstr "" -#: c-api/exceptions.rst:1167 +#: c-api/exceptions.rst:1170 +msgid ":c:data:`PyExc_BaseExceptionGroup`." +msgstr "" + +#: c-api/exceptions.rst:1173 msgid "These are compatibility aliases to :c:data:`PyExc_OSError`:" msgstr "" -#: c-api/exceptions.rst:1177 +#: c-api/exceptions.rst:1183 msgid ":c:data:`!PyExc_EnvironmentError`" msgstr "" -#: c-api/exceptions.rst:1179 +#: c-api/exceptions.rst:1185 msgid ":c:data:`!PyExc_IOError`" msgstr "" -#: c-api/exceptions.rst:1181 +#: c-api/exceptions.rst:1187 msgid ":c:data:`!PyExc_WindowsError`" msgstr "" -#: c-api/exceptions.rst:1181 +#: c-api/exceptions.rst:1187 msgid "[2]_" msgstr "" -#: c-api/exceptions.rst:1184 +#: c-api/exceptions.rst:1190 msgid "These aliases used to be separate exception types." msgstr "" -#: c-api/exceptions.rst:1248 +#: c-api/exceptions.rst:1260 msgid "Notes:" msgstr "" -#: c-api/exceptions.rst:1190 +#: c-api/exceptions.rst:1196 msgid "This is a base class for other standard exceptions." msgstr "" -#: c-api/exceptions.rst:1193 +#: c-api/exceptions.rst:1199 msgid "" "Only defined on Windows; protect code that uses this by testing that the " "preprocessor macro ``MS_WINDOWS`` is defined." msgstr "" -#: c-api/exceptions.rst:1199 +#: c-api/exceptions.rst:1205 msgid "Standard Warning Categories" msgstr "" -#: c-api/exceptions.rst:1201 +#: c-api/exceptions.rst:1207 msgid "" "All standard Python warning categories are available as global variables " "whose names are ``PyExc_`` followed by the Python exception name. These have " @@ -1569,103 +1581,115 @@ msgid "" "here are all the variables:" msgstr "" -#: c-api/exceptions.rst:1222 +#: c-api/exceptions.rst:1229 msgid ":c:data:`PyExc_Warning`" msgstr "" -#: c-api/exceptions.rst:1222 +#: c-api/exceptions.rst:1229 msgid ":exc:`Warning`" msgstr "" -#: c-api/exceptions.rst:1222 +#: c-api/exceptions.rst:1229 msgid "[3]_" msgstr "" -#: c-api/exceptions.rst:1224 +#: c-api/exceptions.rst:1231 msgid ":c:data:`PyExc_BytesWarning`" msgstr "" -#: c-api/exceptions.rst:1224 +#: c-api/exceptions.rst:1231 msgid ":exc:`BytesWarning`" msgstr "" -#: c-api/exceptions.rst:1226 +#: c-api/exceptions.rst:1233 msgid ":c:data:`PyExc_DeprecationWarning`" msgstr "" -#: c-api/exceptions.rst:1226 +#: c-api/exceptions.rst:1233 msgid ":exc:`DeprecationWarning`" msgstr "" -#: c-api/exceptions.rst:1228 +#: c-api/exceptions.rst:1235 +msgid ":c:data:`PyExc_EncodingWarning`" +msgstr "" + +#: c-api/exceptions.rst:1235 +msgid ":exc:`EncodingWarning`" +msgstr "" + +#: c-api/exceptions.rst:1237 msgid ":c:data:`PyExc_FutureWarning`" msgstr "" -#: c-api/exceptions.rst:1228 +#: c-api/exceptions.rst:1237 msgid ":exc:`FutureWarning`" msgstr "" -#: c-api/exceptions.rst:1230 +#: c-api/exceptions.rst:1239 msgid ":c:data:`PyExc_ImportWarning`" msgstr "" -#: c-api/exceptions.rst:1230 +#: c-api/exceptions.rst:1239 msgid ":exc:`ImportWarning`" msgstr "" -#: c-api/exceptions.rst:1232 +#: c-api/exceptions.rst:1241 msgid ":c:data:`PyExc_PendingDeprecationWarning`" msgstr "" -#: c-api/exceptions.rst:1232 +#: c-api/exceptions.rst:1241 msgid ":exc:`PendingDeprecationWarning`" msgstr "" -#: c-api/exceptions.rst:1234 +#: c-api/exceptions.rst:1243 msgid ":c:data:`PyExc_ResourceWarning`" msgstr "" -#: c-api/exceptions.rst:1234 +#: c-api/exceptions.rst:1243 msgid ":exc:`ResourceWarning`" msgstr "" -#: c-api/exceptions.rst:1236 +#: c-api/exceptions.rst:1245 msgid ":c:data:`PyExc_RuntimeWarning`" msgstr "" -#: c-api/exceptions.rst:1236 +#: c-api/exceptions.rst:1245 msgid ":exc:`RuntimeWarning`" msgstr "" -#: c-api/exceptions.rst:1238 +#: c-api/exceptions.rst:1247 msgid ":c:data:`PyExc_SyntaxWarning`" msgstr "" -#: c-api/exceptions.rst:1238 +#: c-api/exceptions.rst:1247 msgid ":exc:`SyntaxWarning`" msgstr "" -#: c-api/exceptions.rst:1240 +#: c-api/exceptions.rst:1249 msgid ":c:data:`PyExc_UnicodeWarning`" msgstr "" -#: c-api/exceptions.rst:1240 +#: c-api/exceptions.rst:1249 msgid ":exc:`UnicodeWarning`" msgstr "" -#: c-api/exceptions.rst:1242 +#: c-api/exceptions.rst:1251 msgid ":c:data:`PyExc_UserWarning`" msgstr "" -#: c-api/exceptions.rst:1242 +#: c-api/exceptions.rst:1251 msgid ":exc:`UserWarning`" msgstr "" -#: c-api/exceptions.rst:1245 +#: c-api/exceptions.rst:1254 msgid ":c:data:`PyExc_ResourceWarning`." msgstr "" -#: c-api/exceptions.rst:1251 +#: c-api/exceptions.rst:1257 +msgid ":c:data:`PyExc_EncodingWarning`." +msgstr "" + +#: c-api/exceptions.rst:1263 msgid "This is a base class for other standard warning categories." msgstr "" @@ -1693,6 +1717,10 @@ msgstr "" msgid "PyExc_BaseException (C var)" msgstr "" +#: c-api/exceptions.rst:983 +msgid "PyExc_BaseExceptionGroup (C var)" +msgstr "" + #: c-api/exceptions.rst:983 msgid "PyExc_Exception (C var)" msgstr "" @@ -1905,58 +1933,62 @@ msgstr "" msgid "PyExc_ZeroDivisionError (C var)" msgstr "" -#: c-api/exceptions.rst:1169 +#: c-api/exceptions.rst:1175 msgid "PyExc_EnvironmentError (C var)" msgstr "" -#: c-api/exceptions.rst:1169 +#: c-api/exceptions.rst:1175 msgid "PyExc_IOError (C var)" msgstr "" -#: c-api/exceptions.rst:1169 +#: c-api/exceptions.rst:1175 msgid "PyExc_WindowsError (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_Warning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_BytesWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_DeprecationWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 +msgid "PyExc_EncodingWarning (C var)" +msgstr "" + +#: c-api/exceptions.rst:1212 msgid "PyExc_FutureWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_ImportWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_PendingDeprecationWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_ResourceWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_RuntimeWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_SyntaxWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_UnicodeWarning (C var)" msgstr "" -#: c-api/exceptions.rst:1206 +#: c-api/exceptions.rst:1212 msgid "PyExc_UserWarning (C var)" msgstr "" diff --git a/c-api/extension-modules.po b/c-api/extension-modules.po new file mode 100644 index 00000000..5e36e113 --- /dev/null +++ b/c-api/extension-modules.po @@ -0,0 +1,354 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 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.14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: c-api/extension-modules.rst:6 +msgid "Defining extension modules" +msgstr "" + +#: c-api/extension-modules.rst:8 +msgid "" +"A C extension for CPython is a shared library (for example, a ``.so`` file " +"on Linux, ``.pyd`` DLL on Windows), which is loadable into the Python " +"process (for example, it is compiled with compatible compiler settings), and " +"which exports an :ref:`initialization function `." +msgstr "" + +#: c-api/extension-modules.rst:13 +msgid "" +"To be importable by default (that is, by :py:class:`importlib.machinery." +"ExtensionFileLoader`), the shared library must be available on :py:attr:`sys." +"path`, and must be named after the module name plus an extension listed in :" +"py:attr:`importlib.machinery.EXTENSION_SUFFIXES`." +msgstr "" + +#: c-api/extension-modules.rst:21 +msgid "" +"Building, packaging and distributing extension modules is best done with " +"third-party tools, and is out of scope of this document. One suitable tool " +"is Setuptools, whose documentation can be found at https://setuptools.pypa." +"io/en/latest/setuptools.html." +msgstr "" + +#: c-api/extension-modules.rst:26 +msgid "" +"Normally, the initialization function returns a module definition " +"initialized using :c:func:`PyModuleDef_Init`. This allows splitting the " +"creation process into several phases:" +msgstr "" + +#: c-api/extension-modules.rst:30 +msgid "" +"Before any substantial code is executed, Python can determine which " +"capabilities the module supports, and it can adjust the environment or " +"refuse loading an incompatible extension." +msgstr "" + +#: c-api/extension-modules.rst:33 +msgid "" +"By default, Python itself creates the module object -- that is, it does the " +"equivalent of :py:meth:`object.__new__` for classes. It also sets initial " +"attributes like :attr:`~module.__package__` and :attr:`~module.__loader__`." +msgstr "" + +#: c-api/extension-modules.rst:37 +msgid "" +"Afterwards, the module object is initialized using extension-specific code " +"-- the equivalent of :py:meth:`~object.__init__` on classes." +msgstr "" + +#: c-api/extension-modules.rst:40 +msgid "" +"This is called *multi-phase initialization* to distinguish it from the " +"legacy (but still supported) *single-phase initialization* scheme, where the " +"initialization function returns a fully constructed module. See the :ref:" +"`single-phase-initialization section below ` " +"for details." +msgstr "" + +#: c-api/extension-modules.rst:48 +msgid "Added support for multi-phase initialization (:pep:`489`)." +msgstr "" + +#: c-api/extension-modules.rst:52 +msgid "Multiple module instances" +msgstr "" + +#: c-api/extension-modules.rst:54 +msgid "" +"By default, extension modules are not singletons. For example, if the :py:" +"attr:`sys.modules` entry is removed and the module is re-imported, a new " +"module object is created, and typically populated with fresh method and type " +"objects. The old module is subject to normal garbage collection. This " +"mirrors the behavior of pure-Python modules." +msgstr "" + +#: c-api/extension-modules.rst:61 +msgid "" +"Additional module instances may be created in :ref:`sub-interpreters ` or after Python runtime reinitialization (:c:func:" +"`Py_Finalize` and :c:func:`Py_Initialize`). In these cases, sharing Python " +"objects between module instances would likely cause crashes or undefined " +"behavior." +msgstr "" + +#: c-api/extension-modules.rst:68 +msgid "" +"To avoid such issues, each instance of an extension module should be " +"*isolated*: changes to one instance should not implicitly affect the others, " +"and all state owned by the module, including references to Python objects, " +"should be specific to a particular module instance. See :ref:`isolating-" +"extensions-howto` for more details and a practical guide." +msgstr "" + +#: c-api/extension-modules.rst:74 +msgid "" +"A simpler way to avoid these issues is :ref:`raising an error on repeated " +"initialization `." +msgstr "" + +#: c-api/extension-modules.rst:77 +msgid "" +"All modules are expected to support :ref:`sub-interpreters `, or otherwise explicitly signal a lack of support. This is usually " +"achieved by isolation or blocking repeated initialization, as above. A " +"module may also be limited to the main interpreter using the :c:data:" +"`Py_mod_multiple_interpreters` slot." +msgstr "" + +#: c-api/extension-modules.rst:89 +msgid "Initialization function" +msgstr "" + +#: c-api/extension-modules.rst:91 +msgid "" +"The initialization function defined by an extension module has the following " +"signature:" +msgstr "" + +#: c-api/extension-modules.rst:96 +msgid "" +"Its name should be :samp:`PyInit_{}`, with ```` replaced by the " +"name of the module." +msgstr "" + +#: c-api/extension-modules.rst:99 +msgid "" +"For modules with ASCII-only names, the function must instead be named :samp:" +"`PyInit_{}`, with ```` replaced by the name of the module. When " +"using :ref:`multi-phase-initialization`, non-ASCII module names are allowed. " +"In this case, the initialization function name is :samp:`PyInitU_{}`, " +"with ```` encoded using Python's *punycode* encoding with hyphens " +"replaced by underscores. In Python:" +msgstr "" + +#: c-api/extension-modules.rst:106 +msgid "" +"def initfunc_name(name):\n" +" try:\n" +" suffix = b'_' + name.encode('ascii')\n" +" except UnicodeEncodeError:\n" +" suffix = b'U_' + name.encode('punycode').replace(b'-', b'_')\n" +" return b'PyInit' + suffix" +msgstr "" + +#: c-api/extension-modules.rst:115 +msgid "" +"It is recommended to define the initialization function using a helper macro:" +msgstr "" + +#: c-api/extension-modules.rst:119 +msgid "Declare an extension module initialization function. This macro:" +msgstr "" + +#: c-api/extension-modules.rst:122 +msgid "specifies the :c:expr:`PyObject*` return type," +msgstr "" + +#: c-api/extension-modules.rst:123 +msgid "adds any special linkage declarations required by the platform, and" +msgstr "" + +#: c-api/extension-modules.rst:124 +msgid "for C++, declares the function as ``extern \"C\"``." +msgstr "" + +#: c-api/extension-modules.rst:126 +msgid "For example, a module called ``spam`` would be defined like this::" +msgstr "" + +#: c-api/extension-modules.rst:128 +msgid "" +"static struct PyModuleDef spam_module = {\n" +" .m_base = PyModuleDef_HEAD_INIT,\n" +" .m_name = \"spam\",\n" +" ...\n" +"};\n" +"\n" +"PyMODINIT_FUNC\n" +"PyInit_spam(void)\n" +"{\n" +" return PyModuleDef_Init(&spam_module);\n" +"}" +msgstr "" + +#: c-api/extension-modules.rst:140 +msgid "" +"It is possible to export multiple modules from a single shared library by " +"defining multiple initialization functions. However, importing them requires " +"using symbolic links or a custom importer, because by default only the " +"function corresponding to the filename is found. See the `Multiple modules " +"in one library `__ section in :pep:`489` for details." +msgstr "" + +#: c-api/extension-modules.rst:147 +msgid "" +"The initialization function is typically the only non-\\ ``static`` item " +"defined in the module's C source." +msgstr "" + +#: c-api/extension-modules.rst:154 +msgid "Multi-phase initialization" +msgstr "" + +#: c-api/extension-modules.rst:156 +msgid "" +"Normally, the :ref:`initialization function ` " +"(``PyInit_modulename``) returns a :c:type:`PyModuleDef` instance with non-" +"``NULL`` :c:member:`~PyModuleDef.m_slots`. Before it is returned, the " +"``PyModuleDef`` instance must be initialized using the following function:" +msgstr "" + +#: c-api/extension-modules.rst:165 +msgid "" +"Ensure a module definition is a properly initialized Python object that " +"correctly reports its type and a reference count." +msgstr "" + +#: c-api/extension-modules.rst:168 +msgid "Return *def* cast to ``PyObject*``, or ``NULL`` if an error occurred." +msgstr "" + +#: c-api/extension-modules.rst:170 +msgid "" +"Calling this function is required for :ref:`multi-phase-initialization`. It " +"should not be used in other contexts." +msgstr "" + +#: c-api/extension-modules.rst:173 +msgid "" +"Note that Python assumes that ``PyModuleDef`` structures are statically " +"allocated. This function may return either a new reference or a borrowed " +"one; this reference must not be released." +msgstr "" + +#: c-api/extension-modules.rst:184 +msgid "Legacy single-phase initialization" +msgstr "" + +#: c-api/extension-modules.rst:187 +msgid "" +"Single-phase initialization is a legacy mechanism to initialize extension " +"modules, with known drawbacks and design flaws. Extension module authors are " +"encouraged to use multi-phase initialization instead." +msgstr "" + +#: c-api/extension-modules.rst:191 +msgid "" +"In single-phase initialization, the :ref:`initialization function ` (``PyInit_modulename``) should create, populate and return a " +"module object. This is typically done using :c:func:`PyModule_Create` and " +"functions like :c:func:`PyModule_AddObjectRef`." +msgstr "" + +#: c-api/extension-modules.rst:197 +msgid "" +"Single-phase initialization differs from the :ref:`default ` in the following ways:" +msgstr "" + +#: c-api/extension-modules.rst:200 +msgid "Single-phase modules are, or rather *contain*, “singletons”." +msgstr "" + +#: c-api/extension-modules.rst:202 +msgid "" +"When the module is first initialized, Python saves the contents of the " +"module's ``__dict__`` (that is, typically, the module's functions and types)." +msgstr "" + +#: c-api/extension-modules.rst:206 +msgid "" +"For subsequent imports, Python does not call the initialization function " +"again. Instead, it creates a new module object with a new ``__dict__``, and " +"copies the saved contents to it. For example, given a single-phase module " +"``_testsinglephase`` [#testsinglephase]_ that defines a function ``sum`` and " +"an exception class ``error``:" +msgstr "" + +#: c-api/extension-modules.rst:214 +msgid "" +">>> import sys\n" +">>> import _testsinglephase as one\n" +">>> del sys.modules['_testsinglephase']\n" +">>> import _testsinglephase as two\n" +">>> one is two\n" +"False\n" +">>> one.__dict__ is two.__dict__\n" +"False\n" +">>> one.sum is two.sum\n" +"True\n" +">>> one.error is two.error\n" +"True" +msgstr "" + +#: c-api/extension-modules.rst:229 +msgid "" +"The exact behavior should be considered a CPython implementation detail." +msgstr "" + +#: c-api/extension-modules.rst:231 +msgid "" +"To work around the fact that ``PyInit_modulename`` does not take a *spec* " +"argument, some state of the import machinery is saved and applied to the " +"first suitable module created during the ``PyInit_modulename`` call. " +"Specifically, when a sub-module is imported, this mechanism prepends the " +"parent package name to the name of the module." +msgstr "" + +#: c-api/extension-modules.rst:237 +msgid "" +"A single-phase ``PyInit_modulename`` function should create “its” module " +"object as soon as possible, before any other module objects can be created." +msgstr "" + +#: c-api/extension-modules.rst:240 +msgid "Non-ASCII module names (``PyInitU_modulename``) are not supported." +msgstr "" + +#: c-api/extension-modules.rst:242 +msgid "" +"Single-phase modules support module lookup functions like :c:func:" +"`PyState_FindModule`." +msgstr "" + +#: c-api/extension-modules.rst:245 +msgid "" +"``_testsinglephase`` is an internal module used \\ in CPython's self-test " +"suite; your installation may or may not \\ include it." +msgstr "" diff --git a/c-api/file.po b/c-api/file.po index dc0aec2b..92c99e61 100644 --- a/c-api/file.po +++ b/c-api/file.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/float.po b/c-api/float.po index 133d6b75..4b63ec4c 100644 --- a/c-api/float.po +++ b/c-api/float.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/frame.po b/c-api/frame.po index 35718c3f..0f68bb6f 100644 --- a/c-api/frame.po +++ b/c-api/frame.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/function.po b/c-api/function.po index 8b3780cc..5478479f 100644 --- a/c-api/function.po +++ b/c-api/function.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -199,7 +199,7 @@ msgstr "" #: c-api/function.rst:171 msgid "" "If *event* is ``PyFunction_EVENT_CREATE``, then the callback is invoked " -"after `func` has been fully initialized. Otherwise, the callback is invoked " +"after *func* has been fully initialized. Otherwise, the callback is invoked " "before the modification to *func* takes place, so the prior state of *func* " "can be inspected. The runtime is permitted to optimize away the creation of " "function objects when possible. In such cases no event will be emitted. " diff --git a/c-api/gcsupport.po b/c-api/gcsupport.po index f1aceada..dd6b56f8 100644 --- a/c-api/gcsupport.po +++ b/c-api/gcsupport.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -108,13 +108,52 @@ msgid "" "macro:`Py_TPFLAGS_HAVE_GC` flag set." msgstr "" -#: c-api/gcsupport.rst:62 +#: c-api/gcsupport.rst:84 +msgid "" +"Do not call this directly to allocate memory for an object; call the type's :" +"c:member:`~PyTypeObject.tp_alloc` slot instead." +msgstr "" + +#: c-api/gcsupport.rst:87 +msgid "" +"When populating a type's :c:member:`~PyTypeObject.tp_alloc` slot, :c:func:" +"`PyType_GenericAlloc` is preferred over a custom function that simply calls " +"this macro." +msgstr "" + +#: c-api/gcsupport.rst:91 +msgid "" +"Memory allocated by this macro must be freed with :c:func:`PyObject_GC_Del` " +"(usually called via the object's :c:member:`~PyTypeObject.tp_free` slot)." +msgstr "" + +#: c-api/gcsupport.rst:97 +msgid ":c:func:`PyObject_GC_Del`" +msgstr "" + +#: c-api/gcsupport.rst:74 +msgid ":c:macro:`PyObject_New`" +msgstr "" + +#: c-api/gcsupport.rst:99 c-api/gcsupport.rst:193 +msgid ":c:func:`PyType_GenericAlloc`" +msgstr "" + +#: c-api/gcsupport.rst:100 +msgid ":c:member:`~PyTypeObject.tp_alloc`" +msgstr "" + +#: c-api/gcsupport.rst:81 msgid "" "Analogous to :c:macro:`PyObject_NewVar` but for container objects with the :" "c:macro:`Py_TPFLAGS_HAVE_GC` flag set." msgstr "" -#: c-api/gcsupport.rst:67 +#: c-api/gcsupport.rst:98 +msgid ":c:macro:`PyObject_NewVar`" +msgstr "" + +#: c-api/gcsupport.rst:105 msgid "" "Analogous to :c:macro:`PyObject_GC_New` but allocates *extra_size* bytes at " "the end of the object (at offset :c:member:`~PyTypeObject.tp_basicsize`). " @@ -122,13 +161,20 @@ msgid "" "object header `." msgstr "" -#: c-api/gcsupport.rst:73 +#: c-api/gcsupport.rst:111 msgid "" "The extra data will be deallocated with the object, but otherwise it is not " "managed by Python." msgstr "" -#: c-api/gcsupport.rst:77 +#: c-api/gcsupport.rst:114 +msgid "" +"Memory allocated by this function must be freed with :c:func:" +"`PyObject_GC_Del` (usually called via the object's :c:member:`~PyTypeObject." +"tp_free` slot)." +msgstr "" + +#: c-api/gcsupport.rst:119 msgid "" "The function is marked as unstable because the final mechanism for reserving " "extra data after an instance is not yet decided. For allocating a variable " @@ -136,20 +182,20 @@ msgid "" "`~PyTypeObject.tp_itemsize` instead." msgstr "" -#: c-api/gcsupport.rst:88 +#: c-api/gcsupport.rst:130 msgid "" "Resize an object allocated by :c:macro:`PyObject_NewVar`. Returns the " "resized object of type ``TYPE*`` (refers to any C type) or ``NULL`` on " "failure." msgstr "" -#: c-api/gcsupport.rst:92 +#: c-api/gcsupport.rst:134 msgid "" "*op* must be of type :c:expr:`PyVarObject *` and must not be tracked by the " "collector yet. *newsize* must be of type :c:type:`Py_ssize_t`." msgstr "" -#: c-api/gcsupport.rst:99 +#: c-api/gcsupport.rst:141 msgid "" "Adds the object *op* to the set of container objects tracked by the " "collector. The collector can run at unexpected times so objects must be " @@ -158,45 +204,74 @@ msgid "" "usually near the end of the constructor." msgstr "" -#: c-api/gcsupport.rst:108 +#: c-api/gcsupport.rst:150 msgid "" "Returns non-zero if the object implements the garbage collector protocol, " "otherwise returns 0." msgstr "" -#: c-api/gcsupport.rst:111 +#: c-api/gcsupport.rst:153 msgid "" "The object cannot be tracked by the garbage collector if this function " "returns 0." msgstr "" -#: c-api/gcsupport.rst:116 +#: c-api/gcsupport.rst:158 msgid "" "Returns 1 if the object type of *op* implements the GC protocol and *op* is " "being currently tracked by the garbage collector and 0 otherwise." msgstr "" -#: c-api/gcsupport.rst:119 +#: c-api/gcsupport.rst:161 msgid "This is analogous to the Python function :func:`gc.is_tracked`." msgstr "" -#: c-api/gcsupport.rst:126 +#: c-api/gcsupport.rst:168 msgid "" "Returns 1 if the object type of *op* implements the GC protocol and *op* has " "been already finalized by the garbage collector and 0 otherwise." msgstr "" -#: c-api/gcsupport.rst:129 +#: c-api/gcsupport.rst:171 msgid "This is analogous to the Python function :func:`gc.is_finalized`." msgstr "" -#: c-api/gcsupport.rst:136 +#: c-api/gcsupport.rst:178 msgid "" "Releases memory allocated to an object using :c:macro:`PyObject_GC_New` or :" "c:macro:`PyObject_GC_NewVar`." msgstr "" -#: c-api/gcsupport.rst:142 +#: c-api/gcsupport.rst:181 +msgid "" +"Do not call this directly to free an object's memory; call the type's :c:" +"member:`~PyTypeObject.tp_free` slot instead." +msgstr "" + +#: c-api/gcsupport.rst:184 +msgid "" +"Do not use this for memory allocated by :c:macro:`PyObject_New`, :c:macro:" +"`PyObject_NewVar`, or related allocation functions; use :c:func:" +"`PyObject_Free` instead." +msgstr "" + +#: c-api/gcsupport.rst:190 +msgid ":c:func:`PyObject_Free` is the non-GC equivalent of this function." +msgstr "" + +#: c-api/gcsupport.rst:191 +msgid ":c:macro:`PyObject_GC_New`" +msgstr "" + +#: c-api/gcsupport.rst:192 +msgid ":c:macro:`PyObject_GC_NewVar`" +msgstr "" + +#: c-api/gcsupport.rst:194 +msgid ":c:member:`~PyTypeObject.tp_free`" +msgstr "" + +#: c-api/gcsupport.rst:199 msgid "" "Remove the object *op* from the set of container objects tracked by the " "collector. Note that :c:func:`PyObject_GC_Track` can be called again on " @@ -206,19 +281,19 @@ msgid "" "handler become invalid." msgstr "" -#: c-api/gcsupport.rst:151 +#: c-api/gcsupport.rst:208 msgid "" "The :c:func:`!_PyObject_GC_TRACK` and :c:func:`!_PyObject_GC_UNTRACK` macros " "have been removed from the public C API." msgstr "" -#: c-api/gcsupport.rst:154 +#: c-api/gcsupport.rst:211 msgid "" "The :c:member:`~PyTypeObject.tp_traverse` handler accepts a function " "parameter of this type:" msgstr "" -#: c-api/gcsupport.rst:159 +#: c-api/gcsupport.rst:216 msgid "" "Type of the visitor function passed to the :c:member:`~PyTypeObject." "tp_traverse` handler. The function should be called with an object to " @@ -228,13 +303,13 @@ msgid "" "users will need to write their own visitor functions." msgstr "" -#: c-api/gcsupport.rst:166 +#: c-api/gcsupport.rst:223 msgid "" "The :c:member:`~PyTypeObject.tp_traverse` handler must have the following " "type:" msgstr "" -#: c-api/gcsupport.rst:171 +#: c-api/gcsupport.rst:228 msgid "" "Traversal function for a container object. Implementations must call the " "*visit* function for each object directly contained by *self*, with the " @@ -244,7 +319,7 @@ msgid "" "returned immediately." msgstr "" -#: c-api/gcsupport.rst:178 +#: c-api/gcsupport.rst:235 msgid "" "To simplify writing :c:member:`~PyTypeObject.tp_traverse` handlers, a :c:" "func:`Py_VISIT` macro is provided. In order to use this macro, the :c:" @@ -252,14 +327,15 @@ msgid "" "exactly *visit* and *arg*:" msgstr "" -#: c-api/gcsupport.rst:185 +#: c-api/gcsupport.rst:242 msgid "" -"If *o* is not ``NULL``, call the *visit* callback, with arguments *o* and " -"*arg*. If *visit* returns a non-zero value, then return it. Using this " -"macro, :c:member:`~PyTypeObject.tp_traverse` handlers look like::" +"If the :c:expr:`PyObject *` *o* is not ``NULL``, call the *visit* callback, " +"with arguments *o* and *arg*. If *visit* returns a non-zero value, then " +"return it. Using this macro, :c:member:`~PyTypeObject.tp_traverse` handlers " +"look like::" msgstr "" -#: c-api/gcsupport.rst:190 +#: c-api/gcsupport.rst:247 msgid "" "static int\n" "my_traverse(Noddy *self, visitproc visit, void *arg)\n" @@ -270,13 +346,13 @@ msgid "" "}" msgstr "" -#: c-api/gcsupport.rst:198 +#: c-api/gcsupport.rst:255 msgid "" "The :c:member:`~PyTypeObject.tp_clear` handler must be of the :c:type:" "`inquiry` type, or ``NULL`` if the object is immutable." msgstr "" -#: c-api/gcsupport.rst:204 +#: c-api/gcsupport.rst:261 msgid "" "Drop references that may have created reference cycles. Immutable objects " "do not have to define this method since they can never directly create " @@ -286,23 +362,23 @@ msgid "" "in a reference cycle." msgstr "" -#: c-api/gcsupport.rst:213 +#: c-api/gcsupport.rst:270 msgid "Controlling the Garbage Collector State" msgstr "" -#: c-api/gcsupport.rst:215 +#: c-api/gcsupport.rst:272 msgid "" "The C-API provides the following functions for controlling garbage " "collection runs." msgstr "" -#: c-api/gcsupport.rst:220 +#: c-api/gcsupport.rst:277 msgid "" "Perform a full garbage collection, if the garbage collector is enabled. " "(Note that :func:`gc.collect` runs it unconditionally.)" msgstr "" -#: c-api/gcsupport.rst:223 +#: c-api/gcsupport.rst:280 msgid "" "Returns the number of collected + unreachable objects which cannot be " "collected. If the garbage collector is disabled or already collecting, " @@ -310,54 +386,54 @@ msgid "" "data:`sys.unraisablehook`. This function does not raise exceptions." msgstr "" -#: c-api/gcsupport.rst:233 +#: c-api/gcsupport.rst:290 msgid "" "Enable the garbage collector: similar to :func:`gc.enable`. Returns the " "previous state, 0 for disabled and 1 for enabled." msgstr "" -#: c-api/gcsupport.rst:241 +#: c-api/gcsupport.rst:298 msgid "" "Disable the garbage collector: similar to :func:`gc.disable`. Returns the " "previous state, 0 for disabled and 1 for enabled." msgstr "" -#: c-api/gcsupport.rst:249 +#: c-api/gcsupport.rst:306 msgid "" "Query the state of the garbage collector: similar to :func:`gc.isenabled`. " "Returns the current state, 0 for disabled and 1 for enabled." msgstr "" -#: c-api/gcsupport.rst:256 +#: c-api/gcsupport.rst:313 msgid "Querying Garbage Collector State" msgstr "" -#: c-api/gcsupport.rst:258 +#: c-api/gcsupport.rst:315 msgid "" "The C-API provides the following interface for querying information about " "the garbage collector." msgstr "" -#: c-api/gcsupport.rst:263 +#: c-api/gcsupport.rst:320 msgid "" "Run supplied *callback* on all live GC-capable objects. *arg* is passed " "through to all invocations of *callback*." msgstr "" -#: c-api/gcsupport.rst:267 +#: c-api/gcsupport.rst:324 msgid "" "If new objects are (de)allocated by the callback it is undefined if they " "will be visited." msgstr "" -#: c-api/gcsupport.rst:270 +#: c-api/gcsupport.rst:327 msgid "" "Garbage collection is disabled during operation. Explicitly running a " "collection in the callback may lead to undefined behaviour e.g. visiting the " "same objects multiple times or not at all." msgstr "" -#: c-api/gcsupport.rst:278 +#: c-api/gcsupport.rst:335 msgid "" "Type of the visitor function to be passed to :c:func:" "`PyUnstable_GC_VisitObjects`. *arg* is the same as the *arg* passed to " diff --git a/c-api/gen.po b/c-api/gen.po index ffc0d050..2c27a415 100644 --- a/c-api/gen.po +++ b/c-api/gen.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/hash.po b/c-api/hash.po index e35a6e4a..5b3cc691 100644 --- a/c-api/hash.po +++ b/c-api/hash.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/import.po b/c-api/import.po index 9c2172fe..3cb25b4e 100644 --- a/c-api/import.po +++ b/c-api/import.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/index.po b/c-api/index.po index 16882823..1cfed0a0 100644 --- a/c-api/index.po +++ b/c-api/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/init.po b/c-api/init.po index f15843c2..2b5ba9b9 100644 --- a/c-api/init.po +++ b/c-api/init.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -717,29 +717,18 @@ msgstr "" #: c-api/init.rst:501 msgid "" -"The return value will be ``0`` if the interpreter exits normally (i.e., " -"without an exception), ``1`` if the interpreter exits due to an exception, " -"or ``2`` if the argument list does not represent a valid Python command line." +"The return value is ``2`` if the argument list does not represent a valid " +"Python command line, and otherwise the same as :c:func:`Py_RunMain`." msgstr "" -#: c-api/init.rst:506 -msgid "" -"Note that if an otherwise unhandled :exc:`SystemExit` is raised, this " -"function will not return ``1``, but exit the process, as long as " -"``Py_InspectFlag`` is not set. If ``Py_InspectFlag`` is set, execution will " -"drop into the interactive Python prompt, at which point a second otherwise " -"unhandled :exc:`SystemExit` will still exit the process, while any other " -"means of exiting will set the return value as described above." -msgstr "" - -#: c-api/init.rst:513 +#: c-api/init.rst:504 msgid "" "In terms of the CPython runtime configuration APIs documented in the :ref:" "`runtime configuration ` section (and without accounting for " "error handling), ``Py_Main`` is approximately equivalent to::" msgstr "" -#: c-api/init.rst:517 +#: c-api/init.rst:508 msgid "" "PyConfig config;\n" "PyConfig_InitPythonConfig(&config);\n" @@ -750,7 +739,7 @@ msgid "" "Py_RunMain();" msgstr "" -#: c-api/init.rst:525 +#: c-api/init.rst:516 msgid "" "In normal usage, an embedding application will call this function *instead* " "of calling :c:func:`Py_Initialize`, :c:func:`Py_InitializeEx` or :c:func:" @@ -763,11 +752,11 @@ msgid "" "first initialized)." msgstr "" -#: c-api/init.rst:538 +#: c-api/init.rst:529 msgid "Executes the main module in a fully configured CPython runtime." msgstr "" -#: c-api/init.rst:540 +#: c-api/init.rst:531 msgid "" "Executes the command (:c:member:`PyConfig.run_command`), the script (:c:" "member:`PyConfig.run_filename`) or the module (:c:member:`PyConfig." @@ -776,65 +765,60 @@ msgid "" "``__main__`` module's global namespace." msgstr "" -#: c-api/init.rst:546 +#: c-api/init.rst:537 msgid "" "If :c:member:`PyConfig.inspect` is not set (the default), the return value " "will be ``0`` if the interpreter exits normally (that is, without raising an " -"exception), or ``1`` if the interpreter exits due to an exception. If an " -"otherwise unhandled :exc:`SystemExit` is raised, the function will " -"immediately exit the process instead of returning ``1``." +"exception), the exit status of an unhandled :exc:`SystemExit`, or ``1`` for " +"any other unhandled exception." msgstr "" -#: c-api/init.rst:552 +#: c-api/init.rst:542 msgid "" "If :c:member:`PyConfig.inspect` is set (such as when the :option:`-i` option " "is used), rather than returning when the interpreter exits, execution will " "instead resume in an interactive Python prompt (REPL) using the ``__main__`` " "module's global namespace. If the interpreter exited with an exception, it " "is immediately raised in the REPL session. The function return value is then " -"determined by the way the *REPL session* terminates: returning ``0`` if the " -"session terminates without raising an unhandled exception, exiting " -"immediately for an unhandled :exc:`SystemExit`, and returning ``1`` for any " -"other unhandled exception." +"determined by the way the *REPL session* terminates: ``0``, ``1``, or the " +"status of a :exc:`SystemExit`, as specified above." msgstr "" -#: c-api/init.rst:562 +#: c-api/init.rst:550 msgid "" -"This function always finalizes the Python interpreter regardless of whether " -"it returns a value or immediately exits the process due to an unhandled :exc:" -"`SystemExit` exception." +"This function always finalizes the Python interpreter before it returns." msgstr "" -#: c-api/init.rst:566 +#: c-api/init.rst:552 msgid "" "See :ref:`Python Configuration ` for an example of a " "customized Python that always runs in isolated mode using :c:func:" "`Py_RunMain`." msgstr "" -#: c-api/init.rst:572 +#: c-api/init.rst:558 msgid "" "Register an :mod:`atexit` callback for the target interpreter *interp*. This " "is similar to :c:func:`Py_AtExit`, but takes an explicit interpreter and " "data pointer for the callback." msgstr "" -#: c-api/init.rst:576 +#: c-api/init.rst:562 msgid "There must be an :term:`attached thread state` for *interp*." msgstr "" -#: c-api/init.rst:581 +#: c-api/init.rst:567 msgid "Process-wide parameters" msgstr "" -#: c-api/init.rst:591 +#: c-api/init.rst:577 msgid "" "This API is kept for backward compatibility: setting :c:member:`PyConfig." "program_name` should be used instead, see :ref:`Python Initialization " "Configuration `." msgstr "" -#: c-api/init.rst:595 +#: c-api/init.rst:581 msgid "" "This function should be called before :c:func:`Py_Initialize` is called for " "the first time, if it is called at all. It tells the interpreter the value " @@ -848,36 +832,36 @@ msgid "" "this storage." msgstr "" -#: c-api/init.rst:854 c-api/init.rst:916 +#: c-api/init.rst:840 c-api/init.rst:902 msgid "" "Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:expr:" "`wchar_t*` string." msgstr "" -#: c-api/init.rst:614 +#: c-api/init.rst:600 msgid "" "Return the program name set with :c:member:`PyConfig.program_name`, or the " "default. The returned string points into static storage; the caller should " "not modify its value." msgstr "" -#: c-api/init.rst:641 c-api/init.rst:713 c-api/init.rst:928 +#: c-api/init.rst:627 c-api/init.rst:699 c-api/init.rst:914 msgid "" "This function should not be called before :c:func:`Py_Initialize`, otherwise " "it returns ``NULL``." msgstr "" -#: c-api/init.rst:644 c-api/init.rst:716 c-api/init.rst:931 +#: c-api/init.rst:630 c-api/init.rst:702 c-api/init.rst:917 msgid "It now returns ``NULL`` if called before :c:func:`Py_Initialize`." msgstr "" -#: c-api/init.rst:719 +#: c-api/init.rst:705 msgid "" "Use :c:func:`PyConfig_Get(\"executable\") ` (:data:`sys." "executable`) instead." msgstr "" -#: c-api/init.rst:631 +#: c-api/init.rst:617 msgid "" "Return the *prefix* for installed platform-independent files. This is " "derived through a number of complicated rules from the program name set " @@ -891,7 +875,7 @@ msgid "" "See also the next function." msgstr "" -#: c-api/init.rst:647 +#: c-api/init.rst:633 msgid "" "Use :c:func:`PyConfig_Get(\"base_prefix\") ` (:data:`sys." "base_prefix`) instead. Use :c:func:`PyConfig_Get(\"prefix\") ` " @@ -899,7 +883,7 @@ msgid "" "handled." msgstr "" -#: c-api/init.rst:656 +#: c-api/init.rst:642 msgid "" "Return the *exec-prefix* for installed platform-*dependent* files. This is " "derived through a number of complicated rules from the program name set " @@ -913,7 +897,7 @@ msgid "" "useful on Unix." msgstr "" -#: c-api/init.rst:667 +#: c-api/init.rst:653 msgid "" "Background: The exec-prefix differs from the prefix when platform dependent " "files (such as executables and shared libraries) are installed in a " @@ -922,7 +906,7 @@ msgid "" "independent may be installed in :file:`/usr/local`." msgstr "" -#: c-api/init.rst:673 +#: c-api/init.rst:659 msgid "" "Generally speaking, a platform is a combination of hardware and software " "families, e.g. Sparc machines running the Solaris 2.x operating system are " @@ -936,7 +920,7 @@ msgid "" "independent from the Python version by which they were compiled!)." msgstr "" -#: c-api/init.rst:684 +#: c-api/init.rst:670 msgid "" "System administrators will know how to configure the :program:`mount` or :" "program:`automount` programs to share :file:`/usr/local` between platforms " @@ -944,7 +928,7 @@ msgid "" "platform." msgstr "" -#: c-api/init.rst:695 +#: c-api/init.rst:681 msgid "" "Use :c:func:`PyConfig_Get(\"base_exec_prefix\") ` (:data:`sys." "base_exec_prefix`) instead. Use :c:func:`PyConfig_Get(\"exec_prefix\") " @@ -952,7 +936,7 @@ msgid "" "` need to be handled." msgstr "" -#: c-api/init.rst:707 +#: c-api/init.rst:693 msgid "" "Return the full program name of the Python executable; this is computed as " "a side-effect of deriving the default module search path from the program " @@ -961,7 +945,7 @@ msgid "" "available to Python code as ``sys.executable``." msgstr "" -#: c-api/init.rst:730 +#: c-api/init.rst:716 msgid "" "Return the default module search path; this is computed from the program " "name (set by :c:member:`PyConfig.program_name`) and some environment " @@ -974,23 +958,23 @@ msgid "" "for loading modules." msgstr "" -#: c-api/init.rst:748 +#: c-api/init.rst:734 msgid "" "Use :c:func:`PyConfig_Get(\"module_search_paths\") ` (:data:" "`sys.path`) instead." msgstr "" -#: c-api/init.rst:754 +#: c-api/init.rst:740 msgid "" "Return the version of this Python interpreter. This is a string that looks " "something like ::" msgstr "" -#: c-api/init.rst:757 +#: c-api/init.rst:743 msgid "\"3.0a5+ (py3k:63103M, May 12 2008, 00:53:55) \\n[GCC 4.2.3]\"" msgstr "" -#: c-api/init.rst:761 +#: c-api/init.rst:747 msgid "" "The first word (up to the first space character) is the current Python " "version; the first characters are the major and minor version separated by a " @@ -999,11 +983,11 @@ msgid "" "version`." msgstr "" -#: c-api/init.rst:766 +#: c-api/init.rst:752 msgid "See also the :c:var:`Py_Version` constant." msgstr "" -#: c-api/init.rst:773 +#: c-api/init.rst:759 msgid "" "Return the platform identifier for the current platform. On Unix, this is " "formed from the \"official\" name of the operating system, converted to " @@ -1014,50 +998,50 @@ msgid "" "available to Python code as ``sys.platform``." msgstr "" -#: c-api/init.rst:784 +#: c-api/init.rst:770 msgid "" "Return the official copyright string for the current Python version, for " "example" msgstr "" -#: c-api/init.rst:786 +#: c-api/init.rst:772 msgid "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``" msgstr "" -#: c-api/init.rst:790 +#: c-api/init.rst:776 msgid "" "The returned string points into static storage; the caller should not modify " "its value. The value is available to Python code as ``sys.copyright``." msgstr "" -#: c-api/init.rst:796 +#: c-api/init.rst:782 msgid "" "Return an indication of the compiler used to build the current Python " "version, in square brackets, for example::" msgstr "" -#: c-api/init.rst:799 +#: c-api/init.rst:785 msgid "\"[GCC 2.7.2.2]\"" msgstr "" -#: c-api/init.rst:817 +#: c-api/init.rst:803 msgid "" "The returned string points into static storage; the caller should not modify " "its value. The value is available to Python code as part of the variable " "``sys.version``." msgstr "" -#: c-api/init.rst:810 +#: c-api/init.rst:796 msgid "" "Return information about the sequence number and build date and time of the " "current Python interpreter instance, for example ::" msgstr "" -#: c-api/init.rst:813 +#: c-api/init.rst:799 msgid "\"#67, Aug 1 1997, 22:34:28\"" msgstr "" -#: c-api/init.rst:829 +#: c-api/init.rst:815 msgid "" "This API is kept for backward compatibility: setting :c:member:`PyConfig." "argv`, :c:member:`PyConfig.parse_argv` and :c:member:`PyConfig.safe_path` " @@ -1065,7 +1049,7 @@ msgid "" "config>`." msgstr "" -#: c-api/init.rst:834 +#: c-api/init.rst:820 msgid "" "Set :data:`sys.argv` based on *argc* and *argv*. These parameters are " "similar to those passed to the program's :c:func:`main` function with the " @@ -1076,84 +1060,84 @@ msgid "" "fatal condition is signalled using :c:func:`Py_FatalError`." msgstr "" -#: c-api/init.rst:842 +#: c-api/init.rst:828 msgid "" "If *updatepath* is zero, this is all the function does. If *updatepath* is " "non-zero, the function also modifies :data:`sys.path` according to the " "following algorithm:" msgstr "" -#: c-api/init.rst:846 +#: c-api/init.rst:832 msgid "" "If the name of an existing script is passed in ``argv[0]``, the absolute " "path of the directory where the script is located is prepended to :data:`sys." "path`." msgstr "" -#: c-api/init.rst:849 +#: c-api/init.rst:835 msgid "" "Otherwise (that is, if *argc* is ``0`` or ``argv[0]`` doesn't point to an " "existing file name), an empty string is prepended to :data:`sys.path`, which " "is the same as prepending the current working directory (``\".\"``)." msgstr "" -#: c-api/init.rst:893 +#: c-api/init.rst:879 msgid "" "See also :c:member:`PyConfig.orig_argv` and :c:member:`PyConfig.argv` " "members of the :ref:`Python Initialization Configuration `." msgstr "" -#: c-api/init.rst:861 +#: c-api/init.rst:847 msgid "" "It is recommended that applications embedding the Python interpreter for " "purposes other than executing a single script pass ``0`` as *updatepath*, " "and update :data:`sys.path` themselves if desired. See :cve:`2008-5983`." msgstr "" -#: c-api/init.rst:866 +#: c-api/init.rst:852 msgid "" "On versions before 3.1.3, you can achieve the same effect by manually " "popping the first :data:`sys.path` element after having called :c:func:" "`PySys_SetArgv`, for example using::" msgstr "" -#: c-api/init.rst:870 +#: c-api/init.rst:856 msgid "PyRun_SimpleString(\"import sys; sys.path.pop(0)\\n\");" msgstr "" -#: c-api/init.rst:882 +#: c-api/init.rst:868 msgid "" "This API is kept for backward compatibility: setting :c:member:`PyConfig." "argv` and :c:member:`PyConfig.parse_argv` should be used instead, see :ref:" "`Python Initialization Configuration `." msgstr "" -#: c-api/init.rst:886 +#: c-api/init.rst:872 msgid "" "This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set to " "``1`` unless the :program:`python` interpreter was started with the :option:" "`-I`." msgstr "" -#: c-api/init.rst:896 +#: c-api/init.rst:882 msgid "The *updatepath* value depends on :option:`-I`." msgstr "" -#: c-api/init.rst:903 +#: c-api/init.rst:889 msgid "" "This API is kept for backward compatibility: setting :c:member:`PyConfig." "home` should be used instead, see :ref:`Python Initialization Configuration " "`." msgstr "" -#: c-api/init.rst:907 +#: c-api/init.rst:893 msgid "" "Set the default \"home\" directory, that is, the location of the standard " "Python libraries. See :envvar:`PYTHONHOME` for the meaning of the argument " "string." msgstr "" -#: c-api/init.rst:911 +#: c-api/init.rst:897 msgid "" "The argument should point to a zero-terminated character string in static " "storage whose contents will not change for the duration of the program's " @@ -1161,24 +1145,24 @@ msgid "" "this storage." msgstr "" -#: c-api/init.rst:924 +#: c-api/init.rst:910 msgid "" "Return the default \"home\", that is, the value set by :c:member:`PyConfig." "home`, or the value of the :envvar:`PYTHONHOME` environment variable if it " "is set." msgstr "" -#: c-api/init.rst:934 +#: c-api/init.rst:920 msgid "" "Use :c:func:`PyConfig_Get(\"home\") ` or the :envvar:" "`PYTHONHOME` environment variable instead." msgstr "" -#: c-api/init.rst:942 +#: c-api/init.rst:928 msgid "Thread State and the Global Interpreter Lock" msgstr "" -#: c-api/init.rst:949 +#: c-api/init.rst:935 msgid "" "Unless on a :term:`free-threaded ` build of :term:`CPython`, " "the Python interpreter is not fully thread-safe. In order to support multi-" @@ -1191,7 +1175,7 @@ msgid "" "once instead of twice." msgstr "" -#: c-api/init.rst:960 +#: c-api/init.rst:946 msgid "" "Therefore, the rule exists that only the thread that has acquired the :term:" "`GIL` may operate on Python objects or call Python/C API functions. In order " @@ -1201,7 +1185,7 @@ msgid "" "a file, so that other Python threads can run in the meantime." msgstr "" -#: c-api/init.rst:970 +#: c-api/init.rst:956 msgid "" "The Python interpreter keeps some thread-specific bookkeeping information " "inside a data structure called :c:type:`PyThreadState`, known as a :term:" @@ -1210,7 +1194,7 @@ msgid "" "be :term:`attached `." msgstr "" -#: c-api/init.rst:975 +#: c-api/init.rst:961 msgid "" "A thread can only have one :term:`attached thread state` at a time. An " "attached thread state is typically analogous with holding the :term:`GIL`, " @@ -1221,7 +1205,7 @@ msgid "" "attached thread state to call most of the C API." msgstr "" -#: c-api/init.rst:982 +#: c-api/init.rst:968 msgid "" "In general, there will always be an :term:`attached thread state` when using " "Python's C API. Only in some specific cases (such as in a :c:macro:" @@ -1230,46 +1214,46 @@ msgid "" "``NULL``." msgstr "" -#: c-api/init.rst:988 +#: c-api/init.rst:974 msgid "Detaching the thread state from extension code" msgstr "" -#: c-api/init.rst:990 +#: c-api/init.rst:976 msgid "" "Most extension code manipulating the :term:`thread state` has the following " "simple structure::" msgstr "" -#: c-api/init.rst:993 +#: c-api/init.rst:979 msgid "" "Save the thread state in a local variable.\n" "... Do some blocking I/O operation ...\n" "Restore the thread state from the local variable." msgstr "" -#: c-api/init.rst:997 +#: c-api/init.rst:983 msgid "This is so common that a pair of macros exists to simplify it::" msgstr "" -#: c-api/init.rst:999 +#: c-api/init.rst:985 msgid "" "Py_BEGIN_ALLOW_THREADS\n" "... Do some blocking I/O operation ...\n" "Py_END_ALLOW_THREADS" msgstr "" -#: c-api/init.rst:1007 +#: c-api/init.rst:993 msgid "" "The :c:macro:`Py_BEGIN_ALLOW_THREADS` macro opens a new block and declares a " "hidden local variable; the :c:macro:`Py_END_ALLOW_THREADS` macro closes the " "block." msgstr "" -#: c-api/init.rst:1011 +#: c-api/init.rst:997 msgid "The block above expands to the following code::" msgstr "" -#: c-api/init.rst:1013 +#: c-api/init.rst:999 msgid "" "PyThreadState *_save;\n" "\n" @@ -1278,11 +1262,11 @@ msgid "" "PyEval_RestoreThread(_save);" msgstr "" -#: c-api/init.rst:1023 +#: c-api/init.rst:1009 msgid "Here is how these functions work:" msgstr "" -#: c-api/init.rst:1025 +#: c-api/init.rst:1011 msgid "" "The :term:`attached thread state` holds the :term:`GIL` for the entire " "interpreter. When detaching the :term:`attached thread state`, the :term:" @@ -1297,7 +1281,7 @@ msgid "" "can be called again." msgstr "" -#: c-api/init.rst:1035 +#: c-api/init.rst:1021 msgid "" "For :term:`free-threaded ` builds, the :term:`GIL` is " "normally out of the question, but detaching the :term:`thread state " @@ -1307,7 +1291,7 @@ msgid "" "parallelism." msgstr "" -#: c-api/init.rst:1041 +#: c-api/init.rst:1027 msgid "" "Calling system I/O functions is the most common use case for detaching the :" "term:`thread state `, but it can also be useful " @@ -1318,11 +1302,11 @@ msgid "" "compressing or hashing data." msgstr "" -#: c-api/init.rst:1052 +#: c-api/init.rst:1038 msgid "Non-Python created threads" msgstr "" -#: c-api/init.rst:1054 +#: c-api/init.rst:1040 msgid "" "When threads are created using the dedicated Python APIs (such as the :mod:" "`threading` module), a thread state is automatically associated to them and " @@ -1332,7 +1316,7 @@ msgid "" "term:`attached thread state`." msgstr "" -#: c-api/init.rst:1061 +#: c-api/init.rst:1047 msgid "" "If you need to call Python code from these threads (often this will be part " "of a callback API provided by the aforementioned third-party library), you " @@ -1342,14 +1326,14 @@ msgid "" "state>`, and finally free it." msgstr "" -#: c-api/init.rst:1068 +#: c-api/init.rst:1054 msgid "" "The :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` functions " "do all of the above automatically. The typical idiom for calling into " "Python from a C thread is::" msgstr "" -#: c-api/init.rst:1072 +#: c-api/init.rst:1058 msgid "" "PyGILState_STATE gstate;\n" "gstate = PyGILState_Ensure();\n" @@ -1362,20 +1346,60 @@ msgid "" "PyGILState_Release(gstate);" msgstr "" -#: c-api/init.rst:1082 +#: c-api/init.rst:1068 msgid "" "Note that the ``PyGILState_*`` functions assume there is only one global " "interpreter (created automatically by :c:func:`Py_Initialize`). Python " "supports the creation of additional interpreters (using :c:func:" "`Py_NewInterpreter`), but mixing multiple interpreters and the " -"``PyGILState_*`` API is unsupported." +"``PyGILState_*`` API is unsupported. This is because :c:func:" +"`PyGILState_Ensure` and similar functions default to :term:`attaching " +"` a :term:`thread state` for the main interpreter, " +"meaning that the thread can't safely interact with the calling " +"subinterpreter." msgstr "" -#: c-api/init.rst:1092 +#: c-api/init.rst:1078 +msgid "Supporting subinterpreters in non-Python threads" +msgstr "" + +#: c-api/init.rst:1080 +msgid "" +"If you would like to support subinterpreters with non-Python created " +"threads, you must use the ``PyThreadState_*`` API instead of the traditional " +"``PyGILState_*`` API." +msgstr "" + +#: c-api/init.rst:1084 +msgid "" +"In particular, you must store the interpreter state from the calling " +"function and pass it to :c:func:`PyThreadState_New`, which will ensure that " +"the :term:`thread state` is targeting the correct interpreter::" +msgstr "" + +#: c-api/init.rst:1088 +msgid "" +"/* The return value of PyInterpreterState_Get() from the\n" +" function that created this thread. */\n" +"PyInterpreterState *interp = ThreadData->interp;\n" +"PyThreadState *tstate = PyThreadState_New(interp);\n" +"PyThreadState_Swap(tstate);\n" +"\n" +"/* GIL of the subinterpreter is now held.\n" +" Perform Python actions here. */\n" +"result = CallSomeFunction();\n" +"/* evaluate result or handle exception */\n" +"\n" +"/* Destroy the thread state. No Python API allowed beyond this point. */\n" +"PyThreadState_Clear(tstate);\n" +"PyThreadState_DeleteCurrent();" +msgstr "" + +#: c-api/init.rst:1106 msgid "Cautions about fork()" msgstr "" -#: c-api/init.rst:1094 +#: c-api/init.rst:1108 msgid "" "Another important thing to note about threads is their behaviour in the face " "of the C :c:func:`fork` call. On most systems with :c:func:`fork`, after a " @@ -1384,7 +1408,7 @@ msgid "" "CPython's runtime." msgstr "" -#: c-api/init.rst:1100 +#: c-api/init.rst:1114 msgid "" "The fact that only the \"current\" thread remains means any locks held by " "other threads will never be released. Python solves this for :func:`os.fork` " @@ -1401,7 +1425,7 @@ msgid "" "locks, but is not always able to." msgstr "" -#: c-api/init.rst:1115 +#: c-api/init.rst:1129 msgid "" "The fact that all other threads go away also means that CPython's runtime " "state there must be cleaned up properly, which :func:`os.fork` does. This " @@ -1414,11 +1438,11 @@ msgid "" "called immediately after." msgstr "" -#: c-api/init.rst:1129 +#: c-api/init.rst:1143 msgid "Cautions regarding runtime finalization" msgstr "" -#: c-api/init.rst:1131 +#: c-api/init.rst:1145 msgid "" "In the late stage of :term:`interpreter shutdown`, after attempting to wait " "for non-daemon threads to exit (though this can be interrupted by :class:" @@ -1429,7 +1453,7 @@ msgid "" "acquire the :term:`GIL`." msgstr "" -#: c-api/init.rst:1139 +#: c-api/init.rst:1153 msgid "" "If any thread, other than the finalization thread, attempts to attach a :" "term:`thread state` during finalization, either explicitly or implicitly, " @@ -1439,7 +1463,7 @@ msgid "" "by the blocked thread, or otherwise waits on the blocked thread." msgstr "" -#: c-api/init.rst:1146 +#: c-api/init.rst:1160 msgid "" "Gross? Yes. This prevents random crashes and/or unexpectedly skipped C++ " "finalizations further up the call stack when such threads were forcibly " @@ -1451,17 +1475,17 @@ msgid "" "error handling." msgstr "" -#: c-api/init.rst:1156 +#: c-api/init.rst:1170 msgid "High-level API" msgstr "" -#: c-api/init.rst:1158 +#: c-api/init.rst:1172 msgid "" "These are the most commonly used types and functions when writing C " "extension code, or when embedding the Python interpreter:" msgstr "" -#: c-api/init.rst:1163 +#: c-api/init.rst:1177 msgid "" "This data structure represents the state shared by a number of cooperating " "threads. Threads belonging to the same interpreter share their module " @@ -1469,7 +1493,7 @@ msgid "" "in this structure." msgstr "" -#: c-api/init.rst:1168 +#: c-api/init.rst:1182 msgid "" "Threads belonging to different interpreters initially share nothing, except " "process state like available memory, open file descriptors and such. The " @@ -1477,54 +1501,54 @@ msgid "" "which interpreter they belong." msgstr "" -#: c-api/init.rst:1176 +#: c-api/init.rst:1190 msgid "" "This data structure represents the state of a single thread. The only " "public data member is:" msgstr "" -#: c-api/init.rst:1181 +#: c-api/init.rst:1195 msgid "This thread's interpreter state." msgstr "" -#: c-api/init.rst:1192 +#: c-api/init.rst:1206 msgid "Deprecated function which does nothing." msgstr "" -#: c-api/init.rst:1194 +#: c-api/init.rst:1208 msgid "" "In Python 3.6 and older, this function created the GIL if it didn't exist." msgstr "" -#: c-api/init.rst:1196 +#: c-api/init.rst:1210 msgid "The function now does nothing." msgstr "" -#: c-api/init.rst:1199 +#: c-api/init.rst:1213 msgid "" "This function is now called by :c:func:`Py_Initialize()`, so you don't have " "to call it yourself anymore." msgstr "" -#: c-api/init.rst:1203 +#: c-api/init.rst:1217 msgid "" "This function cannot be called before :c:func:`Py_Initialize()` anymore." msgstr "" -#: c-api/init.rst:1213 +#: c-api/init.rst:1227 msgid "" "Detach the :term:`attached thread state` and return it. The thread will have " "no :term:`thread state` upon returning." msgstr "" -#: c-api/init.rst:1219 +#: c-api/init.rst:1233 msgid "" "Set the :term:`attached thread state` to *tstate*. The passed :term:`thread " "state` **should not** be :term:`attached `, otherwise " "deadlock ensues. *tstate* will be attached upon returning." msgstr "" -#: c-api/init.rst:1291 c-api/init.rst:1582 +#: c-api/init.rst:1609 msgid "" "Calling this function from a thread when the runtime is finalizing will hang " "the thread until the program exits, even if the thread was not created by " @@ -1532,13 +1556,13 @@ msgid "" "details." msgstr "" -#: c-api/init.rst:1296 c-api/init.rst:1592 +#: c-api/init.rst:1314 c-api/init.rst:1619 msgid "" "Hangs the current thread, rather than terminating it, if called while the " "interpreter is finalizing." msgstr "" -#: c-api/init.rst:1235 +#: c-api/init.rst:1249 msgid "" "Return the :term:`attached thread state`. If the thread has no attached " "thread state, (such as when inside of :c:macro:`Py_BEGIN_ALLOW_THREADS` " @@ -1546,42 +1570,48 @@ msgid "" "``NULL``)." msgstr "" -#: c-api/init.rst:1240 +#: c-api/init.rst:1254 msgid "See also :c:func:`PyThreadState_GetUnchecked`." msgstr "" -#: c-api/init.rst:1244 +#: c-api/init.rst:1258 msgid "" "Similar to :c:func:`PyThreadState_Get`, but don't kill the process with a " "fatal error if it is NULL. The caller is responsible to check if the result " "is NULL." msgstr "" -#: c-api/init.rst:1248 +#: c-api/init.rst:1262 msgid "" "In Python 3.5 to 3.12, the function was private and known as " "``_PyThreadState_UncheckedGet()``." msgstr "" -#: c-api/init.rst:1255 +#: c-api/init.rst:1269 msgid "" "Set the :term:`attached thread state` to *tstate*, and return the :term:" "`thread state` that was attached prior to calling." msgstr "" -#: c-api/init.rst:1258 +#: c-api/init.rst:1272 msgid "" "This function is safe to call without an :term:`attached thread state`; it " "will simply return ``NULL`` indicating that there was no prior thread state." msgstr "" -#: c-api/init.rst:1265 +#: c-api/init.rst:1279 +msgid "" +"Similar to :c:func:`PyGILState_Ensure`, this function will hang the thread " +"if the runtime is finalizing." +msgstr "" + +#: c-api/init.rst:1283 msgid "" "The following functions use thread-local storage, and are not compatible " "with sub-interpreters:" msgstr "" -#: c-api/init.rst:1270 +#: c-api/init.rst:1288 msgid "" "Ensure that the current thread is ready to call the Python C API regardless " "of the current state of Python, or of the :term:`attached thread state`. " @@ -1594,7 +1624,7 @@ msgid "" "is acceptable." msgstr "" -#: c-api/init.rst:1280 +#: c-api/init.rst:1298 msgid "" "The return value is an opaque \"handle\" to the :term:`attached thread " "state` when :c:func:`PyGILState_Ensure` was called, and must be passed to :c:" @@ -1604,14 +1634,22 @@ msgid "" "to :c:func:`PyGILState_Release`." msgstr "" -#: c-api/init.rst:1287 +#: c-api/init.rst:1305 msgid "" "When the function returns, there will be an :term:`attached thread state` " "and the thread will be able to call arbitrary Python code. Failure is a " "fatal error." msgstr "" -#: c-api/init.rst:1302 +#: c-api/init.rst:1309 +msgid "" +"Calling this function when the runtime is finalizing is unsafe. Doing so " +"will either hang the thread until the program ends, or fully crash the " +"interpreter in rare cases. Refer to :ref:`cautions-regarding-runtime-" +"finalization` for more details." +msgstr "" + +#: c-api/init.rst:1320 msgid "" "Release any resources previously acquired. After this call, Python's state " "will be the same as it was prior to the corresponding :c:func:" @@ -1619,13 +1657,13 @@ msgid "" "caller, hence the use of the GILState API)." msgstr "" -#: c-api/init.rst:1307 +#: c-api/init.rst:1325 msgid "" "Every call to :c:func:`PyGILState_Ensure` must be matched by a call to :c:" "func:`PyGILState_Release` on the same thread." msgstr "" -#: c-api/init.rst:1313 +#: c-api/init.rst:1330 msgid "" "Get the :term:`attached thread state` for this thread. May return ``NULL`` " "if no GILState API has been used on the current thread. Note that the main " @@ -1633,24 +1671,40 @@ msgid "" "been made on the main thread. This is mainly a helper/diagnostic function." msgstr "" -#: c-api/init.rst:1323 +#: c-api/init.rst:1336 +msgid "" +"This function does not account for :term:`thread states ` " +"created by something other than :c:func:`PyGILState_Ensure` (such as :c:func:" +"`PyThreadState_New`). Prefer :c:func:`PyThreadState_Get` or :c:func:" +"`PyThreadState_GetUnchecked` for most cases." +msgstr "" + +#: c-api/init.rst:1345 msgid "" "Return ``1`` if the current thread is holding the :term:`GIL` and ``0`` " "otherwise. This function can be called from any thread at any time. Only if " -"it has had its Python thread state initialized and currently is holding the :" -"term:`GIL` will it return ``1``. This is mainly a helper/diagnostic " -"function. It can be useful for example in callback contexts or memory " -"allocation functions when knowing that the :term:`GIL` is locked can allow " -"the caller to perform sensitive actions or otherwise behave differently." +"it has had its :term:`thread state ` initialized via :" +"c:func:`PyGILState_Ensure` will it return ``1``. This is mainly a helper/" +"diagnostic function. It can be useful for example in callback contexts or " +"memory allocation functions when knowing that the :term:`GIL` is locked can " +"allow the caller to perform sensitive actions or otherwise behave " +"differently." +msgstr "" + +#: c-api/init.rst:1355 +msgid "" +"If the current Python process has ever created a subinterpreter, this " +"function will *always* return ``1``. Prefer :c:func:" +"`PyThreadState_GetUnchecked` for most cases." msgstr "" -#: c-api/init.rst:1335 +#: c-api/init.rst:1362 msgid "" "The following macros are normally used without a trailing semicolon; look " "for example usage in the Python source distribution." msgstr "" -#: c-api/init.rst:1341 +#: c-api/init.rst:1368 msgid "" "This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();" "``. Note that it contains an opening brace; it must be matched with a " @@ -1658,7 +1712,7 @@ msgid "" "discussion of this macro." msgstr "" -#: c-api/init.rst:1349 +#: c-api/init.rst:1376 msgid "" "This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it " "contains a closing brace; it must be matched with an earlier :c:macro:" @@ -1666,60 +1720,60 @@ msgid "" "macro." msgstr "" -#: c-api/init.rst:1357 +#: c-api/init.rst:1384 msgid "" "This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to :" "c:macro:`Py_END_ALLOW_THREADS` without the closing brace." msgstr "" -#: c-api/init.rst:1363 +#: c-api/init.rst:1390 msgid "" "This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to :" "c:macro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable " "declaration." msgstr "" -#: c-api/init.rst:1369 +#: c-api/init.rst:1396 msgid "Low-level API" msgstr "" -#: c-api/init.rst:1371 +#: c-api/init.rst:1398 msgid "" "All of the following functions must be called after :c:func:`Py_Initialize`." msgstr "" -#: c-api/init.rst:1373 +#: c-api/init.rst:1400 msgid "" ":c:func:`Py_Initialize()` now initializes the :term:`GIL` and sets an :term:" "`attached thread state`." msgstr "" -#: c-api/init.rst:1380 +#: c-api/init.rst:1407 msgid "" "Create a new interpreter state object. An :term:`attached thread state` is " "not needed, but may optionally exist if it is necessary to serialize calls " "to this function." msgstr "" -#: c-api/init.rst:1384 +#: c-api/init.rst:1411 msgid "" "Raises an :ref:`auditing event ` ``cpython." "PyInterpreterState_New`` with no arguments." msgstr "" -#: c-api/init.rst:1389 +#: c-api/init.rst:1416 msgid "" "Reset all information in an interpreter state object. There must be an :" "term:`attached thread state` for the the interpreter." msgstr "" -#: c-api/init.rst:1392 +#: c-api/init.rst:1419 msgid "" "Raises an :ref:`auditing event ` ``cpython." "PyInterpreterState_Clear`` with no arguments." msgstr "" -#: c-api/init.rst:1397 +#: c-api/init.rst:1424 msgid "" "Destroy an interpreter state object. There **should not** be an :term:" "`attached thread state` for the target interpreter. The interpreter state " @@ -1727,162 +1781,162 @@ msgid "" "`PyInterpreterState_Clear`." msgstr "" -#: c-api/init.rst:1404 +#: c-api/init.rst:1431 msgid "" "Create a new thread state object belonging to the given interpreter object. " "An :term:`attached thread state` is not needed." msgstr "" -#: c-api/init.rst:1409 +#: c-api/init.rst:1436 msgid "" "Reset all information in a :term:`thread state` object. *tstate* must be :" "term:`attached `" msgstr "" -#: c-api/init.rst:1412 +#: c-api/init.rst:1439 msgid "" "This function now calls the :c:member:`PyThreadState.on_delete` callback. " "Previously, that happened in :c:func:`PyThreadState_Delete`." msgstr "" -#: c-api/init.rst:1416 +#: c-api/init.rst:1443 msgid "The :c:member:`PyThreadState.on_delete` callback was removed." msgstr "" -#: c-api/init.rst:1422 +#: c-api/init.rst:1449 msgid "" "Destroy a :term:`thread state` object. *tstate* should not be :term:" "`attached ` to any thread. *tstate* must have been " "reset with a previous call to :c:func:`PyThreadState_Clear`." msgstr "" -#: c-api/init.rst:1430 +#: c-api/init.rst:1457 msgid "" "Detach the :term:`attached thread state` (which must have been reset with a " "previous call to :c:func:`PyThreadState_Clear`) and then destroy it." msgstr "" -#: c-api/init.rst:1433 +#: c-api/init.rst:1460 msgid "" "No :term:`thread state` will be :term:`attached ` " "upon returning." msgstr "" -#: c-api/init.rst:1438 +#: c-api/init.rst:1465 msgid "Get the current frame of the Python thread state *tstate*." msgstr "" -#: c-api/init.rst:1440 +#: c-api/init.rst:1467 msgid "" "Return a :term:`strong reference`. Return ``NULL`` if no frame is currently " "executing." msgstr "" -#: c-api/init.rst:1443 +#: c-api/init.rst:1470 msgid "See also :c:func:`PyEval_GetFrame`." msgstr "" -#: c-api/init.rst:1454 c-api/init.rst:1463 +#: c-api/init.rst:1481 c-api/init.rst:1490 msgid "" "*tstate* must not be ``NULL``, and must be :term:`attached `." msgstr "" -#: c-api/init.rst:1452 +#: c-api/init.rst:1479 msgid "" "Get the unique :term:`thread state` identifier of the Python thread state " "*tstate*." msgstr "" -#: c-api/init.rst:1461 +#: c-api/init.rst:1488 msgid "Get the interpreter of the Python thread state *tstate*." msgstr "" -#: c-api/init.rst:1470 +#: c-api/init.rst:1497 msgid "Suspend tracing and profiling in the Python thread state *tstate*." msgstr "" -#: c-api/init.rst:1472 +#: c-api/init.rst:1499 msgid "Resume them using the :c:func:`PyThreadState_LeaveTracing` function." msgstr "" -#: c-api/init.rst:1479 +#: c-api/init.rst:1506 msgid "" "Resume tracing and profiling in the Python thread state *tstate* suspended " "by the :c:func:`PyThreadState_EnterTracing` function." msgstr "" -#: c-api/init.rst:1482 +#: c-api/init.rst:1509 msgid "" "See also :c:func:`PyEval_SetTrace` and :c:func:`PyEval_SetProfile` functions." msgstr "" -#: c-api/init.rst:1490 +#: c-api/init.rst:1517 msgid "Get the current interpreter." msgstr "" -#: c-api/init.rst:1492 +#: c-api/init.rst:1519 msgid "" "Issue a fatal error if there no :term:`attached thread state`. It cannot " "return NULL." msgstr "" -#: c-api/init.rst:1500 +#: c-api/init.rst:1527 msgid "" "Return the interpreter's unique ID. If there was any error in doing so then " "``-1`` is returned and an error is set." msgstr "" -#: c-api/init.rst:2090 c-api/init.rst:2116 c-api/init.rst:2123 +#: c-api/init.rst:2117 c-api/init.rst:2143 c-api/init.rst:2150 msgid "The caller must have an :term:`attached thread state`." msgstr "" -#: c-api/init.rst:1510 +#: c-api/init.rst:1537 msgid "" "Return a dictionary in which interpreter-specific data may be stored. If " "this function returns ``NULL`` then no exception has been raised and the " "caller should assume no interpreter-specific dict is available." msgstr "" -#: c-api/init.rst:1514 +#: c-api/init.rst:1541 msgid "" "This is not a replacement for :c:func:`PyModule_GetState()`, which " "extensions should use to store interpreter-specific state information." msgstr "" -#: c-api/init.rst:1522 +#: c-api/init.rst:1549 msgid "Type of a frame evaluation function." msgstr "" -#: c-api/init.rst:1524 +#: c-api/init.rst:1551 msgid "" "The *throwflag* parameter is used by the ``throw()`` method of generators: " "if non-zero, handle the current exception." msgstr "" -#: c-api/init.rst:1527 +#: c-api/init.rst:1554 msgid "The function now takes a *tstate* parameter." msgstr "" -#: c-api/init.rst:1530 +#: c-api/init.rst:1557 msgid "" "The *frame* parameter changed from ``PyFrameObject*`` to " "``_PyInterpreterFrame*``." msgstr "" -#: c-api/init.rst:1535 +#: c-api/init.rst:1562 msgid "Get the frame evaluation function." msgstr "" -#: c-api/init.rst:1545 +#: c-api/init.rst:1572 msgid "See the :pep:`523` \"Adding a frame evaluation API to CPython\"." msgstr "" -#: c-api/init.rst:1543 +#: c-api/init.rst:1570 msgid "Set the frame evaluation function." msgstr "" -#: c-api/init.rst:1552 +#: c-api/init.rst:1579 msgid "" "Return a dictionary in which extensions can store thread-specific state " "information. Each extension should use a unique key to use to store state " @@ -1892,7 +1946,7 @@ msgid "" "thread state is attached." msgstr "" -#: c-api/init.rst:1562 +#: c-api/init.rst:1589 msgid "" "Asynchronously raise an exception in a thread. The *id* argument is the " "thread id of the target thread; *exc* is the exception object to be raised. " @@ -1904,54 +1958,54 @@ msgid "" "is cleared. This raises no exceptions." msgstr "" -#: c-api/init.rst:1570 +#: c-api/init.rst:1597 msgid "" "The type of the *id* parameter changed from :c:expr:`long` to :c:expr:" "`unsigned long`." msgstr "" -#: c-api/init.rst:1576 +#: c-api/init.rst:1603 msgid "" ":term:`Attach ` *tstate* to the current thread, which " "must not be ``NULL`` or already :term:`attached `." msgstr "" -#: c-api/init.rst:1579 +#: c-api/init.rst:1606 msgid "" "The calling thread must not already have an :term:`attached thread state`." msgstr "" -#: c-api/init.rst:1587 +#: c-api/init.rst:1614 msgid "" "Updated to be consistent with :c:func:`PyEval_RestoreThread`, :c:func:" "`Py_END_ALLOW_THREADS`, and :c:func:`PyGILState_Ensure`, and terminate the " "current thread if called while the interpreter is finalizing." msgstr "" -#: c-api/init.rst:1596 +#: c-api/init.rst:1623 msgid "" ":c:func:`PyEval_RestoreThread` is a higher-level function which is always " "available (even when threads have not been initialized)." msgstr "" -#: c-api/init.rst:1602 +#: c-api/init.rst:1629 msgid "" "Detach the :term:`attached thread state`. The *tstate* argument, which must " "not be ``NULL``, is only used to check that it represents the :term:" "`attached thread state` --- if it isn't, a fatal error is reported." msgstr "" -#: c-api/init.rst:1607 +#: c-api/init.rst:1634 msgid "" ":c:func:`PyEval_SaveThread` is a higher-level function which is always " "available (even when threads have not been initialized)." msgstr "" -#: c-api/init.rst:1614 +#: c-api/init.rst:1641 msgid "Sub-interpreter support" msgstr "" -#: c-api/init.rst:1616 +#: c-api/init.rst:1643 msgid "" "While in most uses, you will only embed a single Python interpreter, there " "are cases where you need to create several independent interpreters in the " @@ -1959,7 +2013,7 @@ msgid "" "to do that." msgstr "" -#: c-api/init.rst:1621 +#: c-api/init.rst:1648 msgid "" "The \"main\" interpreter is the first one created when the runtime " "initializes. It is usually the only Python interpreter in a process. Unlike " @@ -1970,31 +2024,31 @@ msgid "" "returns a pointer to its state." msgstr "" -#: c-api/init.rst:1628 +#: c-api/init.rst:1655 msgid "" "You can switch between sub-interpreters using the :c:func:" "`PyThreadState_Swap` function. You can create and destroy them using the " "following functions:" msgstr "" -#: c-api/init.rst:1634 +#: c-api/init.rst:1661 msgid "" "Structure containing most parameters to configure a sub-interpreter. Its " "values are used only in :c:func:`Py_NewInterpreterFromConfig` and never " "modified by the runtime." msgstr "" -#: c-api/init.rst:1640 +#: c-api/init.rst:1667 msgid "Structure fields:" msgstr "" -#: c-api/init.rst:1644 +#: c-api/init.rst:1671 msgid "" "If this is ``0`` then the sub-interpreter will use its own \"object\" " "allocator state. Otherwise it will use (share) the main interpreter's." msgstr "" -#: c-api/init.rst:1648 +#: c-api/init.rst:1675 msgid "" "If this is ``0`` then :c:member:`~PyInterpreterConfig." "check_multi_interp_extensions` must be ``1`` (non-zero). If this is ``1`` " @@ -2002,44 +2056,44 @@ msgid "" "`PyInterpreterConfig_OWN_GIL`." msgstr "" -#: c-api/init.rst:1656 +#: c-api/init.rst:1683 msgid "" "If this is ``0`` then the runtime will not support forking the process in " "any thread where the sub-interpreter is currently active. Otherwise fork is " "unrestricted." msgstr "" -#: c-api/init.rst:1660 +#: c-api/init.rst:1687 msgid "" "Note that the :mod:`subprocess` module still works when fork is disallowed." msgstr "" -#: c-api/init.rst:1665 +#: c-api/init.rst:1692 msgid "" "If this is ``0`` then the runtime will not support replacing the current " "process via exec (e.g. :func:`os.execv`) in any thread where the sub-" "interpreter is currently active. Otherwise exec is unrestricted." msgstr "" -#: c-api/init.rst:1670 +#: c-api/init.rst:1697 msgid "" "Note that the :mod:`subprocess` module still works when exec is disallowed." msgstr "" -#: c-api/init.rst:1675 +#: c-api/init.rst:1702 msgid "" "If this is ``0`` then the sub-interpreter's :mod:`threading` module won't " "create threads. Otherwise threads are allowed." msgstr "" -#: c-api/init.rst:1681 +#: c-api/init.rst:1708 msgid "" "If this is ``0`` then the sub-interpreter's :mod:`threading` module won't " "create daemon threads. Otherwise daemon threads are allowed (as long as :c:" "member:`~PyInterpreterConfig.allow_threads` is non-zero)." msgstr "" -#: c-api/init.rst:1688 +#: c-api/init.rst:1715 msgid "" "If this is ``0`` then all extension modules may be imported, including " "legacy (single-phase init) modules, in any thread where the sub-interpreter " @@ -2048,37 +2102,37 @@ msgid "" "`Py_mod_multiple_interpreters`.)" msgstr "" -#: c-api/init.rst:1695 +#: c-api/init.rst:1722 msgid "" "This must be ``1`` (non-zero) if :c:member:`~PyInterpreterConfig." "use_main_obmalloc` is ``0``." msgstr "" -#: c-api/init.rst:1700 +#: c-api/init.rst:1727 msgid "" "This determines the operation of the GIL for the sub-interpreter. It may be " "one of the following:" msgstr "" -#: c-api/init.rst:1707 +#: c-api/init.rst:1734 msgid "Use the default selection (:c:macro:`PyInterpreterConfig_SHARED_GIL`)." msgstr "" -#: c-api/init.rst:1711 +#: c-api/init.rst:1738 msgid "Use (share) the main interpreter's GIL." msgstr "" -#: c-api/init.rst:1715 +#: c-api/init.rst:1742 msgid "Use the sub-interpreter's own GIL." msgstr "" -#: c-api/init.rst:1717 +#: c-api/init.rst:1744 msgid "" "If this is :c:macro:`PyInterpreterConfig_OWN_GIL` then :c:member:" "`PyInterpreterConfig.use_main_obmalloc` must be ``0``." msgstr "" -#: c-api/init.rst:1731 +#: c-api/init.rst:1758 msgid "" "Create a new sub-interpreter. This is an (almost) totally separate " "environment for the execution of Python code. In particular, the new " @@ -2091,13 +2145,13 @@ msgid "" "underlying file descriptors)." msgstr "" -#: c-api/init.rst:1741 +#: c-api/init.rst:1768 msgid "" "The given *config* controls the options with which the interpreter is " "initialized." msgstr "" -#: c-api/init.rst:1744 +#: c-api/init.rst:1771 msgid "" "Upon success, *tstate_p* will be set to the first :term:`thread state` " "created in the new sub-interpreter. This thread state is :term:`attached " @@ -2108,7 +2162,7 @@ msgid "" "not exist." msgstr "" -#: c-api/init.rst:1753 +#: c-api/init.rst:1780 msgid "" "Like all other Python/C API functions, an :term:`attached thread state` must " "be present before calling this function, but it might be detached upon " @@ -2121,13 +2175,13 @@ msgid "" "will remain detached." msgstr "" -#: c-api/init.rst:1764 +#: c-api/init.rst:1791 msgid "" "Sub-interpreters are most effective when isolated from each other, with " "certain functionality restricted::" msgstr "" -#: c-api/init.rst:1767 +#: c-api/init.rst:1794 msgid "" "PyInterpreterConfig config = {\n" " .use_main_obmalloc = 0,\n" @@ -2145,7 +2199,7 @@ msgid "" "}" msgstr "" -#: c-api/init.rst:1782 +#: c-api/init.rst:1809 msgid "" "Note that the config is used only briefly and does not get modified. During " "initialization the config's values are converted into various :c:type:" @@ -2153,11 +2207,11 @@ msgid "" "internally on the :c:type:`PyInterpreterState`." msgstr "" -#: c-api/init.rst:1791 +#: c-api/init.rst:1818 msgid "Extension modules are shared between (sub-)interpreters as follows:" msgstr "" -#: c-api/init.rst:1793 +#: c-api/init.rst:1820 msgid "" "For modules using multi-phase initialization, e.g. :c:func:" "`PyModule_FromDefAndSpec`, a separate module object is created and " @@ -2165,7 +2219,7 @@ msgid "" "are shared between these module objects." msgstr "" -#: c-api/init.rst:1799 +#: c-api/init.rst:1826 msgid "" "For modules using single-phase initialization, e.g. :c:func:" "`PyModule_Create`, the first time a particular extension is imported, it is " @@ -2177,7 +2231,7 @@ msgid "" "might cause unwanted behavior (see `Bugs and caveats`_ below)." msgstr "" -#: c-api/init.rst:1810 +#: c-api/init.rst:1837 msgid "" "Note that this is different from what happens when an extension is imported " "after the interpreter has been completely re-initialized by calling :c:func:" @@ -2187,7 +2241,7 @@ msgid "" "shared between these modules." msgstr "" -#: c-api/init.rst:1830 +#: c-api/init.rst:1857 msgid "" "Create a new sub-interpreter. This is essentially just a wrapper around :c:" "func:`Py_NewInterpreterFromConfig` with a config that preserves the existing " @@ -2196,7 +2250,7 @@ msgid "" "single-phase init modules." msgstr "" -#: c-api/init.rst:1842 +#: c-api/init.rst:1869 msgid "" "Destroy the (sub-)interpreter represented by the given :term:`thread state`. " "The given thread state must be :term:`attached `. " @@ -2204,17 +2258,17 @@ msgid "" "thread states associated with this interpreter are destroyed." msgstr "" -#: c-api/init.rst:1847 +#: c-api/init.rst:1874 msgid "" ":c:func:`Py_FinalizeEx` will destroy all sub-interpreters that haven't been " "explicitly destroyed at that point." msgstr "" -#: c-api/init.rst:1852 +#: c-api/init.rst:1879 msgid "A Per-Interpreter GIL" msgstr "" -#: c-api/init.rst:1854 +#: c-api/init.rst:1881 msgid "" "Using :c:func:`Py_NewInterpreterFromConfig` you can create a sub-interpreter " "that is completely isolated from other interpreters, including having its " @@ -2226,7 +2280,7 @@ msgid "" "just using threads. (See :pep:`554`.)" msgstr "" -#: c-api/init.rst:1864 +#: c-api/init.rst:1891 msgid "" "Using an isolated interpreter requires vigilance in preserving that " "isolation. That especially means not sharing any objects or mutable state " @@ -2240,7 +2294,7 @@ msgid "" "builtin objects." msgstr "" -#: c-api/init.rst:1875 +#: c-api/init.rst:1902 msgid "" "If you preserve isolation then you will have access to proper multi-core " "computing without the complications that come with free-threading. Failure " @@ -2248,7 +2302,7 @@ msgid "" "threading, including races and hard-to-debug crashes." msgstr "" -#: c-api/init.rst:1880 +#: c-api/init.rst:1907 msgid "" "Aside from that, one of the main challenges of using multiple isolated " "interpreters is how to communicate between them safely (not break isolation) " @@ -2258,11 +2312,11 @@ msgid "" "sharing) data between interpreters." msgstr "" -#: c-api/init.rst:1891 +#: c-api/init.rst:1918 msgid "Bugs and caveats" msgstr "" -#: c-api/init.rst:1893 +#: c-api/init.rst:1920 msgid "" "Because sub-interpreters (and the main interpreter) are part of the same " "process, the insulation between them isn't perfect --- for example, using " @@ -2275,7 +2329,7 @@ msgid "" "should be avoided if possible." msgstr "" -#: c-api/init.rst:1903 +#: c-api/init.rst:1930 msgid "" "Special care should be taken to avoid sharing user-defined functions, " "methods, instances or classes between sub-interpreters, since import " @@ -2284,7 +2338,7 @@ msgid "" "objects from which the above are reachable." msgstr "" -#: c-api/init.rst:1909 +#: c-api/init.rst:1936 msgid "" "Also note that combining this functionality with ``PyGILState_*`` APIs is " "delicate, because these APIs assume a bijection between Python thread states " @@ -2296,25 +2350,25 @@ msgid "" "created threads will probably be broken when using sub-interpreters." msgstr "" -#: c-api/init.rst:1920 +#: c-api/init.rst:1947 msgid "Asynchronous Notifications" msgstr "" -#: c-api/init.rst:1922 +#: c-api/init.rst:1949 msgid "" "A mechanism is provided to make asynchronous notifications to the main " "interpreter thread. These notifications take the form of a function pointer " "and a void pointer argument." msgstr "" -#: c-api/init.rst:1929 +#: c-api/init.rst:1956 msgid "" "Schedule a function to be called from the main interpreter thread. On " "success, ``0`` is returned and *func* is queued for being called in the main " "thread. On failure, ``-1`` is returned without setting any exception." msgstr "" -#: c-api/init.rst:1933 +#: c-api/init.rst:1960 msgid "" "When successfully queued, *func* will be *eventually* called from the main " "interpreter thread with the argument *arg*. It will be called " @@ -2322,17 +2376,17 @@ msgid "" "these conditions met:" msgstr "" -#: c-api/init.rst:1938 +#: c-api/init.rst:1965 msgid "on a :term:`bytecode` boundary;" msgstr "" -#: c-api/init.rst:1939 +#: c-api/init.rst:1966 msgid "" "with the main thread holding an :term:`attached thread state` (*func* can " "therefore use the full C API)." msgstr "" -#: c-api/init.rst:1942 +#: c-api/init.rst:1969 msgid "" "*func* must return ``0`` on success, or ``-1`` on failure with an exception " "set. *func* won't be interrupted to perform another asynchronous " @@ -2340,7 +2394,7 @@ msgid "" "if the :term:`thread state ` is detached." msgstr "" -#: c-api/init.rst:1947 +#: c-api/init.rst:1974 msgid "" "This function doesn't need an :term:`attached thread state`. However, to " "call this function in a subinterpreter, the caller must have an :term:" @@ -2348,7 +2402,7 @@ msgid "" "be called from the wrong interpreter." msgstr "" -#: c-api/init.rst:1952 +#: c-api/init.rst:1979 msgid "" "This is a low-level function, only useful for very special cases. There is " "no guarantee that *func* will be called as quick as possible. If the main " @@ -2358,7 +2412,7 @@ msgid "" "`PyGILState API`." msgstr "" -#: c-api/init.rst:1961 +#: c-api/init.rst:1988 msgid "" "If this function is called in a subinterpreter, the function *func* is now " "scheduled to be called from the subinterpreter, rather than being called " @@ -2366,18 +2420,18 @@ msgid "" "scheduled calls." msgstr "" -#: c-api/init.rst:1970 +#: c-api/init.rst:1997 msgid "Profiling and Tracing" msgstr "" -#: c-api/init.rst:1975 +#: c-api/init.rst:2002 msgid "" "The Python interpreter provides some low-level support for attaching " "profiling and execution tracing facilities. These are used for profiling, " "debugging, and coverage analysis tools." msgstr "" -#: c-api/init.rst:1979 +#: c-api/init.rst:2006 msgid "" "This C interface allows the profiling or tracing code to avoid the overhead " "of calling through Python-level callable objects, making a direct C function " @@ -2387,7 +2441,7 @@ msgid "" "reported to the Python-level trace functions in previous versions." msgstr "" -#: c-api/init.rst:1989 +#: c-api/init.rst:2016 msgid "" "The type of the trace function registered using :c:func:`PyEval_SetProfile` " "and :c:func:`PyEval_SetTrace`. The first parameter is the object passed to " @@ -2399,64 +2453,64 @@ msgid "" "value of *what*:" msgstr "" -#: c-api/init.rst:1998 +#: c-api/init.rst:2025 msgid "Value of *what*" msgstr "" -#: c-api/init.rst:1998 +#: c-api/init.rst:2025 msgid "Meaning of *arg*" msgstr "" -#: c-api/init.rst:2000 +#: c-api/init.rst:2027 msgid ":c:data:`PyTrace_CALL`" msgstr "" -#: c-api/init.rst:2005 c-api/init.rst:2016 +#: c-api/init.rst:2032 c-api/init.rst:2043 msgid "Always :c:data:`Py_None`." msgstr "" -#: c-api/init.rst:2002 +#: c-api/init.rst:2029 msgid ":c:data:`PyTrace_EXCEPTION`" msgstr "" -#: c-api/init.rst:2002 +#: c-api/init.rst:2029 msgid "Exception information as returned by :func:`sys.exc_info`." msgstr "" -#: c-api/init.rst:2005 +#: c-api/init.rst:2032 msgid ":c:data:`PyTrace_LINE`" msgstr "" -#: c-api/init.rst:2007 +#: c-api/init.rst:2034 msgid ":c:data:`PyTrace_RETURN`" msgstr "" -#: c-api/init.rst:2007 +#: c-api/init.rst:2034 msgid "" "Value being returned to the caller, or ``NULL`` if caused by an exception." msgstr "" -#: c-api/init.rst:2010 +#: c-api/init.rst:2037 msgid ":c:data:`PyTrace_C_CALL`" msgstr "" -#: c-api/init.rst:2012 c-api/init.rst:2014 +#: c-api/init.rst:2039 c-api/init.rst:2041 msgid "Function object being called." msgstr "" -#: c-api/init.rst:2012 +#: c-api/init.rst:2039 msgid ":c:data:`PyTrace_C_EXCEPTION`" msgstr "" -#: c-api/init.rst:2014 +#: c-api/init.rst:2041 msgid ":c:data:`PyTrace_C_RETURN`" msgstr "" -#: c-api/init.rst:2016 +#: c-api/init.rst:2043 msgid ":c:data:`PyTrace_OPCODE`" msgstr "" -#: c-api/init.rst:2021 +#: c-api/init.rst:2048 msgid "" "The value of the *what* parameter to a :c:type:`Py_tracefunc` function when " "a new call to a function or method is being reported, or a new entry into a " @@ -2465,7 +2519,7 @@ msgid "" "the corresponding frame." msgstr "" -#: c-api/init.rst:2030 +#: c-api/init.rst:2057 msgid "" "The value of the *what* parameter to a :c:type:`Py_tracefunc` function when " "an exception has been raised. The callback function is called with this " @@ -2477,7 +2531,7 @@ msgid "" "profiler." msgstr "" -#: c-api/init.rst:2041 +#: c-api/init.rst:2068 msgid "" "The value passed as the *what* parameter to a :c:type:`Py_tracefunc` " "function (but not a profiling function) when a line-number event is being " @@ -2485,31 +2539,31 @@ msgid "" "f_trace_lines` to *0* on that frame." msgstr "" -#: c-api/init.rst:2049 +#: c-api/init.rst:2076 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a call is about to return." msgstr "" -#: c-api/init.rst:2055 +#: c-api/init.rst:2082 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a C function is about to be called." msgstr "" -#: c-api/init.rst:2061 +#: c-api/init.rst:2088 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a C function has raised an exception." msgstr "" -#: c-api/init.rst:2067 +#: c-api/init.rst:2094 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a C function has returned." msgstr "" -#: c-api/init.rst:2073 +#: c-api/init.rst:2100 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions (but " "not profiling functions) when a new opcode is about to be executed. This " @@ -2517,7 +2571,7 @@ msgid "" "attr:`~frame.f_trace_opcodes` to *1* on the frame." msgstr "" -#: c-api/init.rst:2081 +#: c-api/init.rst:2108 msgid "" "Set the profiler function to *func*. The *obj* parameter is passed to the " "function as its first parameter, and may be any Python object, or ``NULL``. " @@ -2527,24 +2581,24 @@ msgid "" "`PyTrace_LINE` :c:data:`PyTrace_OPCODE` and :c:data:`PyTrace_EXCEPTION`." msgstr "" -#: c-api/init.rst:2088 +#: c-api/init.rst:2115 msgid "See also the :func:`sys.setprofile` function." msgstr "" -#: c-api/init.rst:2094 +#: c-api/init.rst:2121 msgid "" "Like :c:func:`PyEval_SetProfile` but sets the profile function in all " "running threads belonging to the current interpreter instead of the setting " "it only on the current thread." msgstr "" -#: c-api/init.rst:2099 +#: c-api/init.rst:2126 msgid "" "As :c:func:`PyEval_SetProfile`, this function ignores any exceptions raised " "while setting the profile functions in all threads." msgstr "" -#: c-api/init.rst:2107 +#: c-api/init.rst:2134 msgid "" "Set the tracing function to *func*. This is similar to :c:func:" "`PyEval_SetProfile`, except the tracing function does receive line-number " @@ -2555,28 +2609,28 @@ msgid "" "*what* parameter." msgstr "" -#: c-api/init.rst:2114 +#: c-api/init.rst:2141 msgid "See also the :func:`sys.settrace` function." msgstr "" -#: c-api/init.rst:2120 +#: c-api/init.rst:2147 msgid "" "Like :c:func:`PyEval_SetTrace` but sets the tracing function in all running " "threads belonging to the current interpreter instead of the setting it only " "on the current thread." msgstr "" -#: c-api/init.rst:2125 +#: c-api/init.rst:2152 msgid "" "As :c:func:`PyEval_SetTrace`, this function ignores any exceptions raised " "while setting the trace functions in all threads." msgstr "" -#: c-api/init.rst:2131 +#: c-api/init.rst:2158 msgid "Reference tracing" msgstr "" -#: c-api/init.rst:2137 +#: c-api/init.rst:2164 msgid "" "The type of the trace function registered using :c:func:" "`PyRefTracer_SetTracer`. The first parameter is a Python object that has " @@ -2586,19 +2640,19 @@ msgid "" "provided when :c:func:`PyRefTracer_SetTracer` was called." msgstr "" -#: c-api/init.rst:2147 +#: c-api/init.rst:2174 msgid "" "The value for the *event* parameter to :c:type:`PyRefTracer` functions when " "a Python object has been created." msgstr "" -#: c-api/init.rst:2152 +#: c-api/init.rst:2179 msgid "" "The value for the *event* parameter to :c:type:`PyRefTracer` functions when " "a Python object has been destroyed." msgstr "" -#: c-api/init.rst:2157 +#: c-api/init.rst:2184 msgid "" "Register a reference tracer function. The function will be called when a new " "Python has been created or when an object is going to be destroyed. If " @@ -2607,7 +2661,7 @@ msgid "" "return ``-1`` on error." msgstr "" -#: c-api/init.rst:2163 +#: c-api/init.rst:2190 msgid "" "Not that tracer functions **must not** create Python objects inside or " "otherwise the call will be re-entrant. The tracer also **must not** clear " @@ -2615,12 +2669,12 @@ msgid "" "active every time the tracer function is called." msgstr "" -#: c-api/init.rst:2179 +#: c-api/init.rst:2206 msgid "" "There must be an :term:`attached thread state` when calling this function." msgstr "" -#: c-api/init.rst:2174 +#: c-api/init.rst:2201 msgid "" "Get the registered reference tracer function and the value of the opaque " "data pointer that was registered when :c:func:`PyRefTracer_SetTracer` was " @@ -2628,48 +2682,48 @@ msgid "" "set the **data** pointer to NULL." msgstr "" -#: c-api/init.rst:2186 +#: c-api/init.rst:2213 msgid "Advanced Debugger Support" msgstr "" -#: c-api/init.rst:2191 +#: c-api/init.rst:2218 msgid "" "These functions are only intended to be used by advanced debugging tools." msgstr "" -#: c-api/init.rst:2196 +#: c-api/init.rst:2223 msgid "" "Return the interpreter state object at the head of the list of all such " "objects." msgstr "" -#: c-api/init.rst:2201 +#: c-api/init.rst:2228 msgid "Return the main interpreter state object." msgstr "" -#: c-api/init.rst:2206 +#: c-api/init.rst:2233 msgid "" "Return the next interpreter state object after *interp* from the list of all " "such objects." msgstr "" -#: c-api/init.rst:2212 +#: c-api/init.rst:2239 msgid "" "Return the pointer to the first :c:type:`PyThreadState` object in the list " "of threads associated with the interpreter *interp*." msgstr "" -#: c-api/init.rst:2218 +#: c-api/init.rst:2245 msgid "" "Return the next thread state object after *tstate* from the list of all such " "objects belonging to the same :c:type:`PyInterpreterState` object." msgstr "" -#: c-api/init.rst:2225 +#: c-api/init.rst:2252 msgid "Thread Local Storage Support" msgstr "" -#: c-api/init.rst:2229 +#: c-api/init.rst:2256 msgid "" "The Python interpreter provides low-level support for thread-local storage " "(TLS) which wraps the underlying native TLS implementation to support the " @@ -2679,19 +2733,19 @@ msgid "" "thread." msgstr "" -#: c-api/init.rst:2236 +#: c-api/init.rst:2263 msgid "" "A :term:`thread state` does *not* need to be :term:`attached ` when calling these functions; they suppl their own locking." msgstr "" -#: c-api/init.rst:2239 +#: c-api/init.rst:2266 msgid "" "Note that :file:`Python.h` does not include the declaration of the TLS APIs, " "you need to include :file:`pythread.h` to use thread-local storage." msgstr "" -#: c-api/init.rst:2243 +#: c-api/init.rst:2270 msgid "" "None of these API functions handle memory management on behalf of the :c:" "expr:`void*` values. You need to allocate and deallocate them yourself. If " @@ -2699,22 +2753,22 @@ msgid "" "don't do refcount operations on them either." msgstr "" -#: c-api/init.rst:2251 +#: c-api/init.rst:2278 msgid "Thread Specific Storage (TSS) API" msgstr "" -#: c-api/init.rst:2253 +#: c-api/init.rst:2280 msgid "" "TSS API is introduced to supersede the use of the existing TLS API within " "the CPython interpreter. This API uses a new type :c:type:`Py_tss_t` " "instead of :c:expr:`int` to represent thread keys." msgstr "" -#: c-api/init.rst:2259 +#: c-api/init.rst:2286 msgid "\"A New C-API for Thread-Local Storage in CPython\" (:pep:`539`)" msgstr "" -#: c-api/init.rst:2264 +#: c-api/init.rst:2291 msgid "" "This data structure represents the state of a thread key, the definition of " "which may depend on the underlying TLS implementation, and it has an " @@ -2722,52 +2776,52 @@ msgid "" "public members in this structure." msgstr "" -#: c-api/init.rst:2269 +#: c-api/init.rst:2296 msgid "" "When :ref:`Py_LIMITED_API ` is not defined, static allocation of " "this type by :c:macro:`Py_tss_NEEDS_INIT` is allowed." msgstr "" -#: c-api/init.rst:2275 +#: c-api/init.rst:2302 msgid "" "This macro expands to the initializer for :c:type:`Py_tss_t` variables. Note " "that this macro won't be defined with :ref:`Py_LIMITED_API `." msgstr "" -#: c-api/init.rst:2280 +#: c-api/init.rst:2307 msgid "Dynamic Allocation" msgstr "" -#: c-api/init.rst:2282 +#: c-api/init.rst:2309 msgid "" "Dynamic allocation of the :c:type:`Py_tss_t`, required in extension modules " "built with :ref:`Py_LIMITED_API `, where static allocation of this " "type is not possible due to its implementation being opaque at build time." msgstr "" -#: c-api/init.rst:2289 +#: c-api/init.rst:2316 msgid "" "Return a value which is the same state as a value initialized with :c:macro:" "`Py_tss_NEEDS_INIT`, or ``NULL`` in the case of dynamic allocation failure." msgstr "" -#: c-api/init.rst:2296 +#: c-api/init.rst:2323 msgid "" "Free the given *key* allocated by :c:func:`PyThread_tss_alloc`, after first " "calling :c:func:`PyThread_tss_delete` to ensure any associated thread locals " "have been unassigned. This is a no-op if the *key* argument is ``NULL``." msgstr "" -#: c-api/init.rst:2302 +#: c-api/init.rst:2329 msgid "" "A freed key becomes a dangling pointer. You should reset the key to ``NULL``." msgstr "" -#: c-api/init.rst:2307 +#: c-api/init.rst:2334 msgid "Methods" msgstr "" -#: c-api/init.rst:2309 +#: c-api/init.rst:2336 msgid "" "The parameter *key* of these functions must not be ``NULL``. Moreover, the " "behaviors of :c:func:`PyThread_tss_set` and :c:func:`PyThread_tss_get` are " @@ -2775,13 +2829,13 @@ msgid "" "func:`PyThread_tss_create`." msgstr "" -#: c-api/init.rst:2317 +#: c-api/init.rst:2344 msgid "" "Return a non-zero value if the given :c:type:`Py_tss_t` has been initialized " "by :c:func:`PyThread_tss_create`." msgstr "" -#: c-api/init.rst:2323 +#: c-api/init.rst:2350 msgid "" "Return a zero value on successful initialization of a TSS key. The behavior " "is undefined if the value pointed to by the *key* argument is not " @@ -2790,7 +2844,7 @@ msgid "" "no-op and immediately returns success." msgstr "" -#: c-api/init.rst:2332 +#: c-api/init.rst:2359 msgid "" "Destroy a TSS key to forget the values associated with the key across all " "threads, and change the key's initialization state to uninitialized. A " @@ -2799,31 +2853,31 @@ msgid "" "key -- calling it on an already destroyed key is a no-op." msgstr "" -#: c-api/init.rst:2341 +#: c-api/init.rst:2368 msgid "" "Return a zero value to indicate successfully associating a :c:expr:`void*` " "value with a TSS key in the current thread. Each thread has a distinct " "mapping of the key to a :c:expr:`void*` value." msgstr "" -#: c-api/init.rst:2348 +#: c-api/init.rst:2375 msgid "" "Return the :c:expr:`void*` value associated with a TSS key in the current " "thread. This returns ``NULL`` if no value is associated with the key in the " "current thread." msgstr "" -#: c-api/init.rst:2356 +#: c-api/init.rst:2383 msgid "Thread Local Storage (TLS) API" msgstr "" -#: c-api/init.rst:2358 +#: c-api/init.rst:2385 msgid "" "This API is superseded by :ref:`Thread Specific Storage (TSS) API `." msgstr "" -#: c-api/init.rst:2363 +#: c-api/init.rst:2390 msgid "" "This version of the API does not support platforms where the native TLS key " "is defined in a way that cannot be safely cast to ``int``. On such " @@ -2832,45 +2886,45 @@ msgid "" "platforms." msgstr "" -#: c-api/init.rst:2368 +#: c-api/init.rst:2395 msgid "" "Due to the compatibility problem noted above, this version of the API should " "not be used in new code." msgstr "" -#: c-api/init.rst:2379 +#: c-api/init.rst:2406 msgid "Synchronization Primitives" msgstr "" -#: c-api/init.rst:2381 +#: c-api/init.rst:2408 msgid "The C-API provides a basic mutual exclusion lock." msgstr "" -#: c-api/init.rst:2385 +#: c-api/init.rst:2412 msgid "" "A mutual exclusion lock. The :c:type:`!PyMutex` should be initialized to " "zero to represent the unlocked state. For example::" msgstr "" -#: c-api/init.rst:2388 +#: c-api/init.rst:2415 msgid "PyMutex mutex = {0};" msgstr "" -#: c-api/init.rst:2390 +#: c-api/init.rst:2417 msgid "" "Instances of :c:type:`!PyMutex` should not be copied or moved. Both the " "contents and address of a :c:type:`!PyMutex` are meaningful, and it must " "remain at a fixed, writable location in memory." msgstr "" -#: c-api/init.rst:2396 +#: c-api/init.rst:2423 msgid "" "A :c:type:`!PyMutex` currently occupies one byte, but the size should be " "considered unstable. The size may change in future Python releases without " "a deprecation period." msgstr "" -#: c-api/init.rst:2404 +#: c-api/init.rst:2431 msgid "" "Lock mutex *m*. If another thread has already locked it, the calling thread " "will block until the mutex is unlocked. While blocked, the thread will " @@ -2878,17 +2932,17 @@ msgid "" "exists." msgstr "" -#: c-api/init.rst:2412 +#: c-api/init.rst:2439 msgid "" "Unlock mutex *m*. The mutex must be locked --- otherwise, the function will " "issue a fatal error." msgstr "" -#: c-api/init.rst:2420 +#: c-api/init.rst:2447 msgid "Python Critical Section API" msgstr "" -#: c-api/init.rst:2422 +#: c-api/init.rst:2449 msgid "" "The critical section API provides a deadlock avoidance layer on top of per-" "object locks for :term:`free-threaded ` CPython. They are " @@ -2896,7 +2950,7 @@ msgid "" "no-ops in versions of Python with the global interpreter lock." msgstr "" -#: c-api/init.rst:2427 +#: c-api/init.rst:2454 msgid "" "Critical sections avoid deadlocks by implicitly suspending active critical " "sections and releasing the locks during calls to :c:func:" @@ -2906,7 +2960,7 @@ msgid "" "-- they are useful because their behavior is similar to the :term:`GIL`." msgstr "" -#: c-api/init.rst:2434 +#: c-api/init.rst:2461 msgid "" "The functions and structs used by the macros are exposed for cases where C " "macros are not available. They should only be used as in the given macro " @@ -2914,7 +2968,7 @@ msgid "" "future Python versions." msgstr "" -#: c-api/init.rst:2441 +#: c-api/init.rst:2468 msgid "" "Operations that need to lock two objects at once must use :c:macro:" "`Py_BEGIN_CRITICAL_SECTION2`. You *cannot* use nested critical sections to " @@ -2923,11 +2977,11 @@ msgid "" "lock more than two objects at once." msgstr "" -#: c-api/init.rst:2447 +#: c-api/init.rst:2474 msgid "Example usage::" msgstr "" -#: c-api/init.rst:2449 +#: c-api/init.rst:2476 msgid "" "static PyObject *\n" "set_field(MyObject *self, PyObject *value)\n" @@ -2939,7 +2993,7 @@ msgid "" "}" msgstr "" -#: c-api/init.rst:2458 +#: c-api/init.rst:2485 msgid "" "In the above example, :c:macro:`Py_SETREF` calls :c:macro:`Py_DECREF`, which " "can call arbitrary code through an object's deallocation function. The " @@ -2949,60 +3003,60 @@ msgid "" "`PyEval_SaveThread`." msgstr "" -#: c-api/init.rst:2466 +#: c-api/init.rst:2493 msgid "" "Acquires the per-object lock for the object *op* and begins a critical " "section." msgstr "" -#: c-api/init.rst:2483 c-api/init.rst:2512 +#: c-api/init.rst:2510 c-api/init.rst:2539 msgid "In the free-threaded build, this macro expands to::" msgstr "" -#: c-api/init.rst:2471 +#: c-api/init.rst:2498 msgid "" "{\n" " PyCriticalSection _py_cs;\n" " PyCriticalSection_Begin(&_py_cs, (PyObject*)(op))" msgstr "" -#: c-api/init.rst:2504 +#: c-api/init.rst:2531 msgid "In the default build, this macro expands to ``{``." msgstr "" -#: c-api/init.rst:2481 +#: c-api/init.rst:2508 msgid "Ends the critical section and releases the per-object lock." msgstr "" -#: c-api/init.rst:2485 +#: c-api/init.rst:2512 msgid "" " PyCriticalSection_End(&_py_cs);\n" "}" msgstr "" -#: c-api/init.rst:2517 +#: c-api/init.rst:2544 msgid "In the default build, this macro expands to ``}``." msgstr "" -#: c-api/init.rst:2494 +#: c-api/init.rst:2521 msgid "" "Acquires the per-objects locks for the objects *a* and *b* and begins a " "critical section. The locks are acquired in a consistent order (lowest " "address first) to avoid lock ordering deadlocks." msgstr "" -#: c-api/init.rst:2500 +#: c-api/init.rst:2527 msgid "" "{\n" " PyCriticalSection2 _py_cs2;\n" " PyCriticalSection2_Begin(&_py_cs2, (PyObject*)(a), (PyObject*)(b))" msgstr "" -#: c-api/init.rst:2510 +#: c-api/init.rst:2537 msgid "Ends the critical section and releases the per-object locks." msgstr "" -#: c-api/init.rst:2514 +#: c-api/init.rst:2541 msgid "" " PyCriticalSection2_End(&_py_cs2);\n" "}" @@ -3016,146 +3070,146 @@ msgstr "" msgid "modules (in module sys)" msgstr "" -#: c-api/init.rst:726 +#: c-api/init.rst:712 msgid "path (in module sys)" msgstr "" -#: c-api/init.rst:726 c-api/init.rst:1723 c-api/init.rst:1822 +#: c-api/init.rst:712 c-api/init.rst:1750 c-api/init.rst:1849 msgid "module" msgstr "" -#: c-api/init.rst:1723 c-api/init.rst:1822 +#: c-api/init.rst:1750 c-api/init.rst:1849 msgid "builtins" msgstr "" -#: c-api/init.rst:1723 c-api/init.rst:1822 +#: c-api/init.rst:1750 c-api/init.rst:1849 msgid "__main__" msgstr "" -#: c-api/init.rst:1723 c-api/init.rst:1822 +#: c-api/init.rst:1750 c-api/init.rst:1849 msgid "sys" msgstr "" -#: c-api/init.rst:726 +#: c-api/init.rst:712 msgid "search" msgstr "" -#: c-api/init.rst:726 +#: c-api/init.rst:712 msgid "path" msgstr "" -#: c-api/init.rst:1787 c-api/init.rst:1840 +#: c-api/init.rst:1814 c-api/init.rst:1867 msgid "Py_FinalizeEx (C function)" msgstr "" -#: c-api/init.rst:586 +#: c-api/init.rst:572 msgid "Py_Initialize()" msgstr "" -#: c-api/init.rst:824 +#: c-api/init.rst:810 msgid "main()" msgstr "" -#: c-api/init.rst:586 +#: c-api/init.rst:572 msgid "Py_GetPath()" msgstr "" -#: c-api/init.rst:704 +#: c-api/init.rst:690 msgid "executable (in module sys)" msgstr "" -#: c-api/init.rst:801 c-api/init.rst:815 +#: c-api/init.rst:787 c-api/init.rst:801 msgid "version (in module sys)" msgstr "" -#: c-api/init.rst:771 +#: c-api/init.rst:757 msgid "platform (in module sys)" msgstr "" -#: c-api/init.rst:788 +#: c-api/init.rst:774 msgid "copyright (in module sys)" msgstr "" -#: c-api/init.rst:824 +#: c-api/init.rst:810 msgid "Py_FatalError()" msgstr "" -#: c-api/init.rst:824 +#: c-api/init.rst:810 msgid "argv (in module sys)" msgstr "" -#: c-api/init.rst:944 +#: c-api/init.rst:930 msgid "global interpreter lock" msgstr "" -#: c-api/init.rst:944 +#: c-api/init.rst:930 msgid "interpreter lock" msgstr "" -#: c-api/init.rst:944 +#: c-api/init.rst:930 msgid "lock, interpreter" msgstr "" -#: c-api/init.rst:958 +#: c-api/init.rst:944 msgid "setswitchinterval (in module sys)" msgstr "" -#: c-api/init.rst:967 +#: c-api/init.rst:953 msgid "PyThreadState (C type)" msgstr "" -#: c-api/init.rst:1003 +#: c-api/init.rst:989 msgid "Py_BEGIN_ALLOW_THREADS (C macro)" msgstr "" -#: c-api/init.rst:1003 +#: c-api/init.rst:989 msgid "Py_END_ALLOW_THREADS (C macro)" msgstr "" -#: c-api/init.rst:1019 +#: c-api/init.rst:1005 msgid "PyEval_RestoreThread (C function)" msgstr "" -#: c-api/init.rst:1019 +#: c-api/init.rst:1005 msgid "PyEval_SaveThread (C function)" msgstr "" -#: c-api/init.rst:1186 +#: c-api/init.rst:1200 msgid "PyEval_AcquireThread()" msgstr "" -#: c-api/init.rst:1186 +#: c-api/init.rst:1200 msgid "PyEval_ReleaseThread()" msgstr "" -#: c-api/init.rst:1186 +#: c-api/init.rst:1200 msgid "PyEval_SaveThread()" msgstr "" -#: c-api/init.rst:1186 +#: c-api/init.rst:1200 msgid "PyEval_RestoreThread()" msgstr "" -#: c-api/init.rst:1208 +#: c-api/init.rst:1222 msgid "_thread" msgstr "" -#: c-api/init.rst:1822 +#: c-api/init.rst:1849 msgid "stdout (in module sys)" msgstr "" -#: c-api/init.rst:1822 +#: c-api/init.rst:1849 msgid "stderr (in module sys)" msgstr "" -#: c-api/init.rst:1822 +#: c-api/init.rst:1849 msgid "stdin (in module sys)" msgstr "" -#: c-api/init.rst:1787 +#: c-api/init.rst:1814 msgid "Py_Initialize (C function)" msgstr "" -#: c-api/init.rst:1817 +#: c-api/init.rst:1844 msgid "close (in module os)" msgstr "" diff --git a/c-api/init_config.po b/c-api/init_config.po index abb72e1a..0f5ad363 100644 --- a/c-api/init_config.po +++ b/c-api/init_config.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/intro.po b/c-api/intro.po index 820ff008..019d7a7c 100644 --- a/c-api/intro.po +++ b/c-api/intro.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -168,143 +168,113 @@ msgstr "" #: c-api/intro.rst:113 msgid "" "Several useful macros are defined in the Python header files. Many are " -"defined closer to where they are useful (e.g. :c:macro:`Py_RETURN_NONE`). " -"Others of a more general utility are defined here. This is not necessarily " -"a complete listing." +"defined closer to where they are useful (for example, :c:macro:" +"`Py_RETURN_NONE`, :c:macro:`PyMODINIT_FUNC`). Others of a more general " +"utility are defined here. This is not necessarily a complete listing." msgstr "" -#: c-api/intro.rst:120 -msgid "" -"Declare an extension module ``PyInit`` initialization function. The function " -"return type is :c:expr:`PyObject*`. The macro declares any special linkage " -"declarations required by the platform, and for C++ declares the function as " -"``extern \"C\"``." -msgstr "" - -#: c-api/intro.rst:125 -msgid "" -"The initialization function must be named :samp:`PyInit_{name}`, where " -"*name* is the name of the module, and should be the only non-\\ ``static`` " -"item defined in the module file. Example::" -msgstr "" - -#: c-api/intro.rst:129 -msgid "" -"static struct PyModuleDef spam_module = {\n" -" PyModuleDef_HEAD_INIT,\n" -" .m_name = \"spam\",\n" -" ...\n" -"};\n" -"\n" -"PyMODINIT_FUNC\n" -"PyInit_spam(void)\n" -"{\n" -" return PyModule_Create(&spam_module);\n" -"}" -msgstr "" - -#: c-api/intro.rst:144 +#: c-api/intro.rst:122 msgid "Return the absolute value of ``x``." msgstr "" -#: c-api/intro.rst:150 +#: c-api/intro.rst:128 msgid "" "Ask the compiler to always inline a static inline function. The compiler can " "ignore it and decide to not inline the function." msgstr "" -#: c-api/intro.rst:153 +#: c-api/intro.rst:131 msgid "" "It can be used to inline performance critical static inline functions when " "building Python in debug mode with function inlining disabled. For example, " "MSC disables function inlining when building in debug mode." msgstr "" -#: c-api/intro.rst:157 +#: c-api/intro.rst:135 msgid "" "Marking blindly a static inline function with Py_ALWAYS_INLINE can result in " "worse performances (due to increased code size for example). The compiler is " "usually smarter than the developer for the cost/benefit analysis." msgstr "" -#: c-api/intro.rst:161 +#: c-api/intro.rst:139 msgid "" "If Python is :ref:`built in debug mode ` (if the :c:macro:" "`Py_DEBUG` macro is defined), the :c:macro:`Py_ALWAYS_INLINE` macro does " "nothing." msgstr "" -#: c-api/intro.rst:164 +#: c-api/intro.rst:142 msgid "It must be specified before the function return type. Usage::" msgstr "" -#: c-api/intro.rst:166 +#: c-api/intro.rst:144 msgid "static inline Py_ALWAYS_INLINE int random(void) { return 4; }" msgstr "" -#: c-api/intro.rst:172 +#: c-api/intro.rst:150 msgid "" "Argument must be a character or an integer in the range [-128, 127] or [0, " "255]. This macro returns ``c`` cast to an ``unsigned char``." msgstr "" -#: c-api/intro.rst:177 +#: c-api/intro.rst:155 msgid "" "Use this for deprecated declarations. The macro must be placed before the " "symbol name." msgstr "" -#: c-api/intro.rst:266 c-api/intro.rst:284 +#: c-api/intro.rst:244 c-api/intro.rst:262 msgid "Example::" msgstr "" -#: c-api/intro.rst:182 +#: c-api/intro.rst:160 msgid "Py_DEPRECATED(3.8) PyAPI_FUNC(int) Py_OldFunction(void);" msgstr "" -#: c-api/intro.rst:184 +#: c-api/intro.rst:162 msgid "MSVC support was added." msgstr "" -#: c-api/intro.rst:189 +#: c-api/intro.rst:167 msgid "" "Like ``getenv(s)``, but returns ``NULL`` if :option:`-E` was passed on the " "command line (see :c:member:`PyConfig.use_environment`)." msgstr "" -#: c-api/intro.rst:194 +#: c-api/intro.rst:172 msgid "Return the maximum value between ``x`` and ``y``." msgstr "" -#: c-api/intro.rst:200 +#: c-api/intro.rst:178 msgid "Return the size of a structure (``type``) ``member`` in bytes." msgstr "" -#: c-api/intro.rst:206 +#: c-api/intro.rst:184 msgid "Return the minimum value between ``x`` and ``y``." msgstr "" -#: c-api/intro.rst:212 +#: c-api/intro.rst:190 msgid "" "Disable inlining on a function. For example, it reduces the C stack " "consumption: useful on LTO+PGO builds which heavily inline code (see :issue:" "`33720`)." msgstr "" -#: c-api/intro.rst:216 +#: c-api/intro.rst:194 msgid "Usage::" msgstr "" -#: c-api/intro.rst:218 +#: c-api/intro.rst:196 msgid "Py_NO_INLINE static int random(void) { return 4; }" msgstr "" -#: c-api/intro.rst:224 +#: c-api/intro.rst:202 msgid "" "Convert ``x`` to a C string. E.g. ``Py_STRINGIFY(123)`` returns ``\"123\"``." msgstr "" -#: c-api/intro.rst:231 +#: c-api/intro.rst:209 msgid "" "Use this when you have a code path that cannot be reached by design. For " "example, in the ``default:`` clause in a ``switch`` statement for which all " @@ -312,20 +282,20 @@ msgid "" "where you might be tempted to put an ``assert(0)`` or ``abort()`` call." msgstr "" -#: c-api/intro.rst:236 +#: c-api/intro.rst:214 msgid "" "In release mode, the macro helps the compiler to optimize the code, and " "avoids a warning about unreachable code. For example, the macro is " "implemented with ``__builtin_unreachable()`` on GCC in release mode." msgstr "" -#: c-api/intro.rst:240 +#: c-api/intro.rst:218 msgid "" "A use for ``Py_UNREACHABLE()`` is following a call a function that never " "returns but that is not declared :c:macro:`_Py_NO_RETURN`." msgstr "" -#: c-api/intro.rst:243 +#: c-api/intro.rst:221 msgid "" "If a code path is very unlikely code but can be reached under exceptional " "case, this macro must not be used. For example, under low memory condition " @@ -334,25 +304,25 @@ msgid "" "reported to caller, :c:func:`Py_FatalError` can be used." msgstr "" -#: c-api/intro.rst:253 +#: c-api/intro.rst:231 msgid "" "Use this for unused arguments in a function definition to silence compiler " "warnings. Example: ``int func(int a, int Py_UNUSED(b)) { return a; }``." msgstr "" -#: c-api/intro.rst:260 +#: c-api/intro.rst:238 msgid "" "Creates a variable with name ``name`` that can be used in docstrings. If " "Python is built without docstrings, the value will be empty." msgstr "" -#: c-api/intro.rst:263 +#: c-api/intro.rst:241 msgid "" "Use :c:macro:`PyDoc_STRVAR` for docstrings to support building Python " "without docstrings, as specified in :pep:`7`." msgstr "" -#: c-api/intro.rst:268 +#: c-api/intro.rst:246 msgid "" "PyDoc_STRVAR(pop_doc, \"Remove and return the rightmost element.\");\n" "\n" @@ -363,19 +333,19 @@ msgid "" "}" msgstr "" -#: c-api/intro.rst:278 +#: c-api/intro.rst:256 msgid "" "Creates a docstring for the given input string or an empty string if " "docstrings are disabled." msgstr "" -#: c-api/intro.rst:281 +#: c-api/intro.rst:259 msgid "" "Use :c:macro:`PyDoc_STR` in specifying docstrings to support building Python " "without docstrings, as specified in :pep:`7`." msgstr "" -#: c-api/intro.rst:286 +#: c-api/intro.rst:264 msgid "" "static PyMethodDef pysqlite_row_methods[] = {\n" " {\"keys\", (PyCFunction)pysqlite_row_keys, METH_NOARGS,\n" @@ -384,11 +354,11 @@ msgid "" "};" msgstr "" -#: c-api/intro.rst:296 +#: c-api/intro.rst:274 msgid "Objects, Types and Reference Counts" msgstr "" -#: c-api/intro.rst:300 +#: c-api/intro.rst:278 msgid "" "Most Python/C API functions have one or more arguments as well as a return " "value of type :c:expr:`PyObject*`. This type is a pointer to an opaque data " @@ -403,7 +373,7 @@ msgid "" "objects." msgstr "" -#: c-api/intro.rst:311 +#: c-api/intro.rst:289 msgid "" "All Python objects (even Python integers) have a :dfn:`type` and a :dfn:" "`reference count`. An object's type determines what kind of object it is (e." @@ -414,11 +384,11 @@ msgid "" "a Python list." msgstr "" -#: c-api/intro.rst:322 +#: c-api/intro.rst:300 msgid "Reference Counts" msgstr "" -#: c-api/intro.rst:324 +#: c-api/intro.rst:302 msgid "" "The reference count is important because today's computers have a finite " "(and often severely limited) memory size; it counts how many different " @@ -433,7 +403,7 @@ msgid "" "that.\")" msgstr "" -#: c-api/intro.rst:341 +#: c-api/intro.rst:319 msgid "" "Reference counts are always manipulated explicitly. The normal way is to " "use the macro :c:func:`Py_INCREF` to take a new reference to an object (i.e. " @@ -452,7 +422,7 @@ msgid "" "increment is a simple operation." msgstr "" -#: c-api/intro.rst:357 +#: c-api/intro.rst:335 msgid "" "It is not necessary to hold a :term:`strong reference` (i.e. increment the " "reference count) for every local variable that contains a pointer to an " @@ -470,7 +440,7 @@ msgid "" "reference to every argument for the duration of the call." msgstr "" -#: c-api/intro.rst:373 +#: c-api/intro.rst:351 msgid "" "However, a common pitfall is to extract an object from a list and hold on to " "it for a while without taking a new reference. Some other operation might " @@ -481,7 +451,7 @@ msgid "" "`Py_DECREF`, so almost any operation is potentially dangerous." msgstr "" -#: c-api/intro.rst:381 +#: c-api/intro.rst:359 msgid "" "A safe approach is to always use the generic operations (functions whose " "name begins with ``PyObject_``, ``PyNumber_``, ``PySequence_`` or " @@ -491,11 +461,11 @@ msgid "" "when they are done with the result; this soon becomes second nature." msgstr "" -#: c-api/intro.rst:392 +#: c-api/intro.rst:370 msgid "Reference Count Details" msgstr "" -#: c-api/intro.rst:394 +#: c-api/intro.rst:372 msgid "" "The reference count behavior of functions in the Python/C API is best " "explained in terms of *ownership of references*. Ownership pertains to " @@ -512,7 +482,7 @@ msgid "" "`borrowed reference`." msgstr "" -#: c-api/intro.rst:407 +#: c-api/intro.rst:385 msgid "" "Conversely, when a calling function passes in a reference to an object, " "there are two possibilities: the function *steals* a reference to the " @@ -521,7 +491,7 @@ msgid "" "reference, and you are not responsible for it any longer." msgstr "" -#: c-api/intro.rst:417 +#: c-api/intro.rst:395 msgid "" "Few functions steal references; the two notable exceptions are :c:func:" "`PyList_SetItem` and :c:func:`PyTuple_SetItem`, which steal a reference to " @@ -533,7 +503,7 @@ msgid "" "below)::" msgstr "" -#: c-api/intro.rst:425 +#: c-api/intro.rst:403 msgid "" "PyObject *t;\n" "\n" @@ -543,7 +513,7 @@ msgid "" "PyTuple_SetItem(t, 2, PyUnicode_FromString(\"three\"));" msgstr "" -#: c-api/intro.rst:432 +#: c-api/intro.rst:410 msgid "" "Here, :c:func:`PyLong_FromLong` returns a new reference which is immediately " "stolen by :c:func:`PyTuple_SetItem`. When you want to keep using an object " @@ -551,7 +521,7 @@ msgid "" "another reference before calling the reference-stealing function." msgstr "" -#: c-api/intro.rst:437 +#: c-api/intro.rst:415 msgid "" "Incidentally, :c:func:`PyTuple_SetItem` is the *only* way to set tuple " "items; :c:func:`PySequence_SetItem` and :c:func:`PyObject_SetItem` refuse to " @@ -559,13 +529,13 @@ msgid "" "func:`PyTuple_SetItem` for tuples that you are creating yourself." msgstr "" -#: c-api/intro.rst:442 +#: c-api/intro.rst:420 msgid "" "Equivalent code for populating a list can be written using :c:func:" "`PyList_New` and :c:func:`PyList_SetItem`." msgstr "" -#: c-api/intro.rst:445 +#: c-api/intro.rst:423 msgid "" "However, in practice, you will rarely use these ways of creating and " "populating a tuple or list. There's a generic function, :c:func:" @@ -574,7 +544,7 @@ msgid "" "be replaced by the following (which also takes care of the error checking)::" msgstr "" -#: c-api/intro.rst:451 +#: c-api/intro.rst:429 msgid "" "PyObject *tuple, *list;\n" "\n" @@ -582,7 +552,7 @@ msgid "" "list = Py_BuildValue(\"[iis]\", 1, 2, \"three\");" msgstr "" -#: c-api/intro.rst:456 +#: c-api/intro.rst:434 msgid "" "It is much more common to use :c:func:`PyObject_SetItem` and friends with " "items whose references you are only borrowing, like arguments that were " @@ -593,7 +563,7 @@ msgid "" "sequence) to a given item::" msgstr "" -#: c-api/intro.rst:463 +#: c-api/intro.rst:441 msgid "" "int\n" "set_all(PyObject *target, PyObject *item)\n" @@ -617,7 +587,7 @@ msgid "" "}" msgstr "" -#: c-api/intro.rst:486 +#: c-api/intro.rst:464 msgid "" "The situation is slightly different for function return values. While " "passing a reference to most functions does not change your ownership " @@ -630,7 +600,7 @@ msgid "" "becomes the owner of the reference)." msgstr "" -#: c-api/intro.rst:495 +#: c-api/intro.rst:473 msgid "" "It is important to realize that whether you own a reference returned by a " "function depends on which function you call only --- *the plumage* (the type " @@ -641,14 +611,14 @@ msgid "" "the same arguments), you do own a reference to the returned object." msgstr "" -#: c-api/intro.rst:507 +#: c-api/intro.rst:485 msgid "" "Here is an example of how you could write a function that computes the sum " "of the items in a list of integers; once using :c:func:`PyList_GetItem`, " "and once using :c:func:`PySequence_GetItem`. ::" msgstr "" -#: c-api/intro.rst:511 +#: c-api/intro.rst:489 msgid "" "long\n" "sum_list(PyObject *list)\n" @@ -673,7 +643,7 @@ msgid "" "}" msgstr "" -#: c-api/intro.rst:537 +#: c-api/intro.rst:515 msgid "" "long\n" "sum_sequence(PyObject *sequence)\n" @@ -704,11 +674,11 @@ msgid "" "}" msgstr "" -#: c-api/intro.rst:571 +#: c-api/intro.rst:549 msgid "Types" msgstr "" -#: c-api/intro.rst:573 +#: c-api/intro.rst:551 msgid "" "There are few other data types that play a significant role in the Python/C " "API; most are simple C types such as :c:expr:`int`, :c:expr:`long`, :c:expr:" @@ -719,7 +689,7 @@ msgid "" "that use them." msgstr "" -#: c-api/intro.rst:583 +#: c-api/intro.rst:561 msgid "" "A signed integral type such that ``sizeof(Py_ssize_t) == sizeof(size_t)``. " "C99 doesn't define such a thing directly (size_t is an unsigned integral " @@ -727,11 +697,11 @@ msgid "" "positive value of type :c:type:`Py_ssize_t`." msgstr "" -#: c-api/intro.rst:592 +#: c-api/intro.rst:570 msgid "Exceptions" msgstr "" -#: c-api/intro.rst:594 +#: c-api/intro.rst:572 msgid "" "The Python programmer only needs to deal with exceptions if specific error " "handling is required; unhandled exceptions are automatically propagated to " @@ -740,7 +710,7 @@ msgid "" "stack traceback." msgstr "" -#: c-api/intro.rst:602 +#: c-api/intro.rst:580 msgid "" "For C programmers, however, error checking always has to be explicit. All " "functions in the Python/C API can raise exceptions, unless an explicit claim " @@ -755,7 +725,7 @@ msgid "" "explicitly documented." msgstr "" -#: c-api/intro.rst:617 +#: c-api/intro.rst:595 msgid "" "Exception state is maintained in per-thread storage (this is equivalent to " "using global storage in an unthreaded application). A thread can be in one " @@ -768,7 +738,7 @@ msgid "" "clears the exception state." msgstr "" -#: c-api/intro.rst:627 +#: c-api/intro.rst:605 msgid "" "The full exception state consists of three objects (all of which can be " "``NULL``): the exception type, the corresponding exception value, and the " @@ -781,7 +751,7 @@ msgid "" "``sys.exc_info()`` and friends." msgstr "" -#: c-api/intro.rst:639 +#: c-api/intro.rst:617 msgid "" "Note that starting with Python 1.5, the preferred, thread-safe way to access " "the exception state from Python code is to call the function :func:`sys." @@ -795,7 +765,7 @@ msgid "" "referenced by the stack frames in the traceback." msgstr "" -#: c-api/intro.rst:650 +#: c-api/intro.rst:628 msgid "" "As a general principle, a function that calls another function to perform " "some task should check whether the called function raised an exception, and " @@ -806,7 +776,7 @@ msgid "" "of the error." msgstr "" -#: c-api/intro.rst:659 +#: c-api/intro.rst:637 msgid "" "A simple example of detecting exceptions and passing them on is shown in " "the :c:func:`!sum_sequence` example above. It so happens that this example " @@ -815,7 +785,7 @@ msgid "" "why you like Python, we show the equivalent Python code::" msgstr "" -#: c-api/intro.rst:665 +#: c-api/intro.rst:643 msgid "" "def incr_item(dict, key):\n" " try:\n" @@ -825,11 +795,11 @@ msgid "" " dict[key] = item + 1" msgstr "" -#: c-api/intro.rst:674 +#: c-api/intro.rst:652 msgid "Here is the corresponding C code, in all its glory::" msgstr "" -#: c-api/intro.rst:676 +#: c-api/intro.rst:654 msgid "" "int\n" "incr_item(PyObject *dict, PyObject *key)\n" @@ -875,7 +845,7 @@ msgid "" "}" msgstr "" -#: c-api/intro.rst:726 +#: c-api/intro.rst:704 msgid "" "This example represents an endorsed use of the ``goto`` statement in C! It " "illustrates the use of :c:func:`PyErr_ExceptionMatches` and :c:func:" @@ -888,11 +858,11 @@ msgid "" "success after the final call made is successful." msgstr "" -#: c-api/intro.rst:740 +#: c-api/intro.rst:718 msgid "Embedding Python" msgstr "" -#: c-api/intro.rst:742 +#: c-api/intro.rst:720 msgid "" "The one important task that only embedders (as opposed to extension writers) " "of the Python interpreter have to worry about is the initialization, and " @@ -900,7 +870,7 @@ msgid "" "the interpreter can only be used after the interpreter has been initialized." msgstr "" -#: c-api/intro.rst:755 +#: c-api/intro.rst:733 msgid "" "The basic initialization function is :c:func:`Py_Initialize`. This " "initializes the table of loaded modules, and creates the fundamental " @@ -908,7 +878,7 @@ msgid "" "initializes the module search path (``sys.path``)." msgstr "" -#: c-api/intro.rst:760 +#: c-api/intro.rst:738 msgid "" ":c:func:`Py_Initialize` does not set the \"script argument list\" (``sys." "argv``). If this variable is needed by Python code that will be executed " @@ -916,7 +886,7 @@ msgid "" "must be set: see :ref:`Python Initialization Configuration `." msgstr "" -#: c-api/intro.rst:765 +#: c-api/intro.rst:743 msgid "" "On most systems (in particular, on Unix and Windows, although the details " "are slightly different), :c:func:`Py_Initialize` calculates the module " @@ -928,7 +898,7 @@ msgid "" "on the shell command search path (the environment variable :envvar:`PATH`)." msgstr "" -#: c-api/intro.rst:774 +#: c-api/intro.rst:752 msgid "" "For instance, if the Python executable is found in :file:`/usr/local/bin/" "python`, it will assume that the libraries are in :file:`/usr/local/lib/" @@ -939,7 +909,7 @@ msgid "" "in front of the standard path by setting :envvar:`PYTHONPATH`." msgstr "" -#: c-api/intro.rst:788 +#: c-api/intro.rst:766 msgid "" "The embedding application can steer the search by setting :c:member:" "`PyConfig.program_name` *before* calling :c:func:`Py_InitializeFromConfig`. " @@ -950,7 +920,7 @@ msgid "" "func:`Py_GetProgramFullPath` (all defined in :file:`Modules/getpath.c`)." msgstr "" -#: c-api/intro.rst:799 +#: c-api/intro.rst:777 msgid "" "Sometimes, it is desirable to \"uninitialize\" Python. For instance, the " "application may want to start over (make another call to :c:func:" @@ -964,18 +934,18 @@ msgid "" "released." msgstr "" -#: c-api/intro.rst:813 +#: c-api/intro.rst:791 msgid "Debugging Builds" msgstr "" -#: c-api/intro.rst:815 +#: c-api/intro.rst:793 msgid "" "Python can be built with several macros to enable extra checks of the " "interpreter and extension modules. These checks tend to add a large amount " "of overhead to the runtime so they are not enabled by default." msgstr "" -#: c-api/intro.rst:819 +#: c-api/intro.rst:797 msgid "" "A full list of the various types of debugging builds is in the file :file:" "`Misc/SpecialBuilds.txt` in the Python source distribution. Builds are " @@ -985,7 +955,7 @@ msgid "" "section." msgstr "" -#: c-api/intro.rst:827 +#: c-api/intro.rst:805 msgid "" "Compiling the interpreter with the :c:macro:`!Py_DEBUG` macro defined " "produces what is generally meant by :ref:`a debug build of Python `." msgstr "" -#: c-api/intro.rst:838 +#: c-api/intro.rst:816 msgid "" "Defining :c:macro:`Py_TRACE_REFS` enables reference tracing (see the :option:" "`configure --with-trace-refs option <--with-trace-refs>`). When defined, a " @@ -1012,132 +982,206 @@ msgid "" "this happens after every statement run by the interpreter.)" msgstr "" -#: c-api/intro.rst:845 +#: c-api/intro.rst:823 msgid "" "Please refer to :file:`Misc/SpecialBuilds.txt` in the Python source " "distribution for more detailed information." msgstr "" -#: c-api/intro.rst:298 +#: c-api/intro.rst:830 +msgid "Recommended third party tools" +msgstr "" + +#: c-api/intro.rst:832 +msgid "" +"The following third party tools offer both simpler and more sophisticated " +"approaches to creating C, C++ and Rust extensions for Python:" +msgstr "" + +#: c-api/intro.rst:835 +msgid "`Cython `_" +msgstr "" + +#: c-api/intro.rst:836 +msgid "`cffi `_" +msgstr "" + +#: c-api/intro.rst:837 +msgid "`HPy `_" +msgstr "" + +#: c-api/intro.rst:838 +msgid "`nanobind `_ (C++)" +msgstr "" + +#: c-api/intro.rst:839 +msgid "`Numba `_" +msgstr "" + +#: c-api/intro.rst:840 +msgid "`pybind11 `_ (C++)" +msgstr "" + +#: c-api/intro.rst:841 +msgid "`PyO3 `_ (Rust)" +msgstr "" + +#: c-api/intro.rst:842 +msgid "`SWIG `_" +msgstr "" + +#: c-api/intro.rst:844 +msgid "" +"Using tools such as these can help avoid writing code that is tightly bound " +"to a particular version of CPython, avoid reference counting errors, and " +"focus more on your own code than on using the CPython API. In general, new " +"versions of Python can be supported by updating the tool, and your code will " +"often use newer and more efficient APIs automatically. Some tools also " +"support compiling for other implementations of Python from a single set of " +"sources." +msgstr "" + +#: c-api/intro.rst:851 +msgid "" +"These projects are not supported by the same people who maintain Python, and " +"issues need to be raised with the projects directly. Remember to check that " +"the project is still maintained and supported, as the list above may become " +"outdated." +msgstr "" + +#: c-api/intro.rst:858 +msgid "" +"`Python Packaging User Guide: Binary Extensions `_" +msgstr "" + +#: c-api/intro.rst:859 +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 "" + +#: c-api/intro.rst:276 msgid "object" msgstr "" -#: c-api/intro.rst:298 +#: c-api/intro.rst:276 msgid "type" msgstr "" -#: c-api/intro.rst:337 +#: c-api/intro.rst:315 msgid "Py_INCREF (C function)" msgstr "" -#: c-api/intro.rst:337 +#: c-api/intro.rst:315 msgid "Py_DECREF (C function)" msgstr "" -#: c-api/intro.rst:413 +#: c-api/intro.rst:391 msgid "PyList_SetItem (C function)" msgstr "" -#: c-api/intro.rst:413 +#: c-api/intro.rst:391 msgid "PyTuple_SetItem (C function)" msgstr "" -#: c-api/intro.rst:484 +#: c-api/intro.rst:462 msgid "set_all()" msgstr "" -#: c-api/intro.rst:503 +#: c-api/intro.rst:481 msgid "PyList_GetItem (C function)" msgstr "" -#: c-api/intro.rst:503 +#: c-api/intro.rst:481 msgid "PySequence_GetItem (C function)" msgstr "" -#: c-api/intro.rst:533 +#: c-api/intro.rst:511 msgid "sum_list()" msgstr "" -#: c-api/intro.rst:657 +#: c-api/intro.rst:635 msgid "sum_sequence()" msgstr "" -#: c-api/intro.rst:600 +#: c-api/intro.rst:578 msgid "PyErr_Occurred (C function)" msgstr "" -#: c-api/intro.rst:613 +#: c-api/intro.rst:591 msgid "PyErr_SetString (C function)" msgstr "" -#: c-api/intro.rst:721 +#: c-api/intro.rst:699 msgid "PyErr_Clear (C function)" msgstr "" -#: c-api/intro.rst:637 +#: c-api/intro.rst:615 msgid "exc_info (in module sys)" msgstr "" -#: c-api/intro.rst:719 +#: c-api/intro.rst:697 msgid "incr_item()" msgstr "" -#: c-api/intro.rst:721 +#: c-api/intro.rst:699 msgid "PyErr_ExceptionMatches (C function)" msgstr "" -#: c-api/intro.rst:721 +#: c-api/intro.rst:699 msgid "Py_XDECREF (C function)" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "Py_Initialize (C function)" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "module" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "builtins" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "__main__" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "sys" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "search" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "path" msgstr "" -#: c-api/intro.rst:747 +#: c-api/intro.rst:725 msgid "path (in module sys)" msgstr "" -#: c-api/intro.rst:782 +#: c-api/intro.rst:760 msgid "Py_GetPath (C function)" msgstr "" -#: c-api/intro.rst:782 +#: c-api/intro.rst:760 msgid "Py_GetPrefix (C function)" msgstr "" -#: c-api/intro.rst:782 +#: c-api/intro.rst:760 msgid "Py_GetExecPrefix (C function)" msgstr "" -#: c-api/intro.rst:782 +#: c-api/intro.rst:760 msgid "Py_GetProgramFullPath (C function)" msgstr "" -#: c-api/intro.rst:797 +#: c-api/intro.rst:775 msgid "Py_IsInitialized (C function)" msgstr "" diff --git a/c-api/iter.po b/c-api/iter.po index 8bb7b5aa..72d8bd95 100644 --- a/c-api/iter.po +++ b/c-api/iter.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/iterator.po b/c-api/iterator.po index 3b837f85..4d300363 100644 --- a/c-api/iterator.po +++ b/c-api/iterator.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/lifecycle.po b/c-api/lifecycle.po new file mode 100644 index 00000000..dd7d7eba --- /dev/null +++ b/c-api/lifecycle.po @@ -0,0 +1,358 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 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.14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: c-api/lifecycle.rst:6 +msgid "Object Life Cycle" +msgstr "" + +#: c-api/lifecycle.rst:8 +msgid "" +"This section explains how a type's slots relate to each other throughout the " +"life of an object. It is not intended to be a complete canonical reference " +"for the slots; instead, refer to the slot-specific documentation in :ref:" +"`type-structs` for details about a particular slot." +msgstr "" + +#: c-api/lifecycle.rst:15 +msgid "Life Events" +msgstr "" + +#: c-api/lifecycle.rst:17 +msgid "" +"The figure below illustrates the order of events that can occur throughout " +"an object's life. An arrow from *A* to *B* indicates that event *B* can " +"occur after event *A* has occurred, with the arrow's label indicating the " +"condition that must be true for *B* to occur after *A*." +msgstr "" + +#: c-api/lifecycle.rst:62 +msgid "Diagram showing events in an object's life. Explained in detail below." +msgstr "" + +#: c-api/lifecycle.rst:70 +msgid "Explanation:" +msgstr "" + +#: c-api/lifecycle.rst:72 +msgid "When a new object is constructed by calling its type:" +msgstr "" + +#: c-api/lifecycle.rst:74 +msgid ":c:member:`~PyTypeObject.tp_new` is called to create a new object." +msgstr "" + +#: c-api/lifecycle.rst:75 +msgid "" +":c:member:`~PyTypeObject.tp_alloc` is directly called by :c:member:" +"`~PyTypeObject.tp_new` to allocate the memory for the new object." +msgstr "" + +#: c-api/lifecycle.rst:78 +msgid "" +":c:member:`~PyTypeObject.tp_init` initializes the newly created object. :c:" +"member:`!tp_init` can be called again to re-initialize an object, if " +"desired. The :c:member:`!tp_init` call can also be skipped entirely, for " +"example by Python code calling :py:meth:`~object.__new__`." +msgstr "" + +#: c-api/lifecycle.rst:83 +msgid "After :c:member:`!tp_init` completes, the object is ready to use." +msgstr "" + +#: c-api/lifecycle.rst:84 +msgid "Some time after the last reference to an object is removed:" +msgstr "" + +#: c-api/lifecycle.rst:86 +msgid "" +"If an object is not marked as *finalized*, it might be finalized by marking " +"it as *finalized* and calling its :c:member:`~PyTypeObject.tp_finalize` " +"function. Python does *not* finalize an object when the last reference to " +"it is deleted; use :c:func:`PyObject_CallFinalizerFromDealloc` to ensure " +"that :c:member:`~PyTypeObject.tp_finalize` is always called." +msgstr "" + +#: c-api/lifecycle.rst:92 +msgid "" +"If the object is marked as finalized, :c:member:`~PyTypeObject.tp_clear` " +"might be called by the garbage collector to clear references held by the " +"object. It is *not* called when the object's reference count reaches zero." +msgstr "" + +#: c-api/lifecycle.rst:96 +msgid "" +":c:member:`~PyTypeObject.tp_dealloc` is called to destroy the object. To " +"avoid code duplication, :c:member:`~PyTypeObject.tp_dealloc` typically calls " +"into :c:member:`~PyTypeObject.tp_clear` to free up the object's references." +msgstr "" + +#: c-api/lifecycle.rst:100 +msgid "" +"When :c:member:`~PyTypeObject.tp_dealloc` finishes object destruction, it " +"directly calls :c:member:`~PyTypeObject.tp_free` (usually set to :c:func:" +"`PyObject_Free` or :c:func:`PyObject_GC_Del` automatically as appropriate " +"for the type) to deallocate the memory." +msgstr "" + +#: c-api/lifecycle.rst:105 +msgid "" +"The :c:member:`~PyTypeObject.tp_finalize` function is permitted to add a " +"reference to the object if desired. If it does, the object is " +"*resurrected*, preventing its pending destruction. (Only :c:member:`!" +"tp_finalize` is allowed to resurrect an object; :c:member:`~PyTypeObject." +"tp_clear` and :c:member:`~PyTypeObject.tp_dealloc` cannot without calling " +"into :c:member:`!tp_finalize`.) Resurrecting an object may or may not cause " +"the object's *finalized* mark to be removed. Currently, Python does not " +"remove the *finalized* mark from a resurrected object if it supports garbage " +"collection (i.e., the :c:macro:`Py_TPFLAGS_HAVE_GC` flag is set) but does " +"remove the mark if the object does not support garbage collection; either or " +"both of these behaviors may change in the future." +msgstr "" + +#: c-api/lifecycle.rst:118 +msgid "" +":c:member:`~PyTypeObject.tp_dealloc` can optionally call :c:member:" +"`~PyTypeObject.tp_finalize` via :c:func:`PyObject_CallFinalizerFromDealloc` " +"if it wishes to reuse that code to help with object destruction. This is " +"recommended because it guarantees that :c:member:`!tp_finalize` is always " +"called before destruction. See the :c:member:`~PyTypeObject.tp_dealloc` " +"documentation for example code." +msgstr "" + +#: c-api/lifecycle.rst:125 +msgid "" +"If the object is a member of a :term:`cyclic isolate` and either :c:member:" +"`~PyTypeObject.tp_clear` fails to break the reference cycle or the cyclic " +"isolate is not detected (perhaps :func:`gc.disable` was called, or the :c:" +"macro:`Py_TPFLAGS_HAVE_GC` flag was erroneously omitted in one of the " +"involved types), the objects remain indefinitely uncollectable (they " +"\"leak\"). See :data:`gc.garbage`." +msgstr "" + +#: c-api/lifecycle.rst:132 +msgid "" +"If the object is marked as supporting garbage collection (the :c:macro:" +"`Py_TPFLAGS_HAVE_GC` flag is set in :c:member:`~PyTypeObject.tp_flags`), the " +"following events are also possible:" +msgstr "" + +#: c-api/lifecycle.rst:136 +msgid "" +"The garbage collector occasionally calls :c:member:`~PyTypeObject." +"tp_traverse` to identify :term:`cyclic isolates `." +msgstr "" + +#: c-api/lifecycle.rst:139 +msgid "" +"When the garbage collector discovers a :term:`cyclic isolate`, it finalizes " +"one of the objects in the group by marking it as *finalized* and calling " +"its :c:member:`~PyTypeObject.tp_finalize` function, if it has one. This " +"repeats until the cyclic isolate doesn't exist or all of the objects have " +"been finalized." +msgstr "" + +#: c-api/lifecycle.rst:144 +msgid "" +":c:member:`~PyTypeObject.tp_finalize` is permitted to resurrect the object " +"by adding a reference from outside the :term:`cyclic isolate`. The new " +"reference causes the group of objects to no longer form a cyclic isolate " +"(the reference cycle may still exist, but if it does the objects are no " +"longer isolated)." +msgstr "" + +#: c-api/lifecycle.rst:149 +msgid "" +"When the garbage collector discovers a :term:`cyclic isolate` and all of the " +"objects in the group have already been marked as *finalized*, the garbage " +"collector clears one or more of the uncleared objects in the group (possibly " +"concurrently) by calling each's :c:member:`~PyTypeObject.tp_clear` " +"function. This repeats as long as the cyclic isolate still exists and not " +"all of the objects have been cleared." +msgstr "" + +#: c-api/lifecycle.rst:158 +msgid "Cyclic Isolate Destruction" +msgstr "" + +#: c-api/lifecycle.rst:160 +msgid "" +"Listed below are the stages of life of a hypothetical :term:`cyclic isolate` " +"that continues to exist after each member object is finalized or cleared. " +"It is a memory leak if a cyclic isolate progresses through all of these " +"stages; it should vanish once all objects are cleared, if not sooner. A " +"cyclic isolate can vanish either because the reference cycle is broken or " +"because the objects are no longer isolated due to finalizer resurrection " +"(see :c:member:`~PyTypeObject.tp_finalize`)." +msgstr "" + +#: c-api/lifecycle.rst:168 +msgid "" +"**Reachable** (not yet a cyclic isolate): All objects are in their normal, " +"reachable state. A reference cycle could exist, but an external reference " +"means the objects are not yet isolated." +msgstr "" + +#: c-api/lifecycle.rst:171 +msgid "" +"**Unreachable but consistent:** The final reference from outside the cyclic " +"group of objects has been removed, causing the objects to become isolated " +"(thus a cyclic isolate is born). None of the group's objects have been " +"finalized or cleared yet. The cyclic isolate remains at this stage until " +"some future run of the garbage collector (not necessarily the next run " +"because the next run might not scan every object)." +msgstr "" + +#: c-api/lifecycle.rst:177 +msgid "" +"**Mix of finalized and not finalized:** Objects in a cyclic isolate are " +"finalized one at a time, which means that there is a period of time when the " +"cyclic isolate is composed of a mix of finalized and non-finalized objects. " +"Finalization order is unspecified, so it can appear random. A finalized " +"object must behave in a sane manner when non-finalized objects interact with " +"it, and a non-finalized object must be able to tolerate the finalization of " +"an arbitrary subset of its referents." +msgstr "" + +#: c-api/lifecycle.rst:184 +msgid "" +"**All finalized:** All objects in a cyclic isolate are finalized before any " +"of them are cleared." +msgstr "" + +#: c-api/lifecycle.rst:186 +msgid "" +"**Mix of finalized and cleared:** The objects can be cleared serially or " +"concurrently (but with the :term:`GIL` held); either way, some will finish " +"before others. A finalized object must be able to tolerate the clearing of " +"a subset of its referents. :pep:`442` calls this stage \"cyclic trash\"." +msgstr "" + +#: c-api/lifecycle.rst:190 +msgid "" +"**Leaked:** If a cyclic isolate still exists after all objects in the group " +"have been finalized and cleared, then the objects remain indefinitely " +"uncollectable (see :data:`gc.garbage`). It is a bug if a cyclic isolate " +"reaches this stage---it means the :c:member:`~PyTypeObject.tp_clear` methods " +"of the participating objects have failed to break the reference cycle as " +"required." +msgstr "" + +#: c-api/lifecycle.rst:197 +msgid "" +"If :c:member:`~PyTypeObject.tp_clear` did not exist, then Python would have " +"no way to safely break a reference cycle. Simply destroying an object in a " +"cyclic isolate would result in a dangling pointer, triggering undefined " +"behavior when an object referencing the destroyed object is itself " +"destroyed. The clearing step makes object destruction a two-phase process: " +"first :c:member:`~PyTypeObject.tp_clear` is called to partially destroy the " +"objects enough to detangle them from each other, then :c:member:" +"`~PyTypeObject.tp_dealloc` is called to complete the destruction." +msgstr "" + +#: c-api/lifecycle.rst:206 +msgid "" +"Unlike clearing, finalization is not a phase of destruction. A finalized " +"object must still behave properly by continuing to fulfill its design " +"contracts. An object's finalizer is allowed to execute arbitrary Python " +"code, and is even allowed to prevent the impending destruction by adding a " +"reference. The finalizer is only related to destruction by call order---if " +"it runs, it runs before destruction, which starts with :c:member:" +"`~PyTypeObject.tp_clear` (if called) and concludes with :c:member:" +"`~PyTypeObject.tp_dealloc`." +msgstr "" + +#: c-api/lifecycle.rst:214 +msgid "" +"The finalization step is not necessary to safely reclaim the objects in a " +"cyclic isolate, but its existence makes it easier to design types that " +"behave in a sane manner when objects are cleared. Clearing an object might " +"necessarily leave it in a broken, partially destroyed state---it might be " +"unsafe to call any of the cleared object's methods or access any of its " +"attributes. With finalization, only finalized objects can possibly interact " +"with cleared objects; non-finalized objects are guaranteed to interact with " +"only non-cleared (but potentially finalized) objects." +msgstr "" + +#: c-api/lifecycle.rst:223 +msgid "To summarize the possible interactions:" +msgstr "" + +#: c-api/lifecycle.rst:225 +msgid "" +"A non-finalized object might have references to or from non-finalized and " +"finalized objects, but not to or from cleared objects." +msgstr "" + +#: c-api/lifecycle.rst:227 +msgid "" +"A finalized object might have references to or from non-finalized, " +"finalized, and cleared objects." +msgstr "" + +#: c-api/lifecycle.rst:229 +msgid "" +"A cleared object might have references to or from finalized and cleared " +"objects, but not to or from non-finalized objects." +msgstr "" + +#: c-api/lifecycle.rst:232 +msgid "" +"Without any reference cycles, an object can be simply destroyed once its " +"last reference is deleted; the finalization and clearing steps are not " +"necessary to safely reclaim unused objects. However, it can be useful to " +"automatically call :c:member:`~PyTypeObject.tp_finalize` and :c:member:" +"`~PyTypeObject.tp_clear` before destruction anyway because type design is " +"simplified when all objects always experience the same series of events " +"regardless of whether they participated in a cyclic isolate. Python " +"currently only calls :c:member:`~PyTypeObject.tp_finalize` and :c:member:" +"`~PyTypeObject.tp_clear` as needed to destroy a cyclic isolate; this may " +"change in a future version." +msgstr "" + +#: c-api/lifecycle.rst:244 +msgid "Functions" +msgstr "" + +#: c-api/lifecycle.rst:246 +msgid "To allocate and free memory, see :ref:`allocating-objects`." +msgstr "" + +#: c-api/lifecycle.rst:251 +msgid "" +"Finalizes the object as described in :c:member:`~PyTypeObject.tp_finalize`. " +"Call this function (or :c:func:`PyObject_CallFinalizerFromDealloc`) instead " +"of calling :c:member:`~PyTypeObject.tp_finalize` directly because this " +"function may deduplicate multiple calls to :c:member:`!tp_finalize`. " +"Currently, calls are only deduplicated if the type supports garbage " +"collection (i.e., the :c:macro:`Py_TPFLAGS_HAVE_GC` flag is set); this may " +"change in the future." +msgstr "" + +#: c-api/lifecycle.rst:262 +msgid "" +"Same as :c:func:`PyObject_CallFinalizer` but meant to be called at the " +"beginning of the object's destructor (:c:member:`~PyTypeObject.tp_dealloc`). " +"There must not be any references to the object. If the object's finalizer " +"resurrects the object, this function returns -1; no further destruction " +"should happen. Otherwise, this function returns 0 and destruction can " +"continue normally." +msgstr "" + +#: c-api/lifecycle.rst:271 +msgid ":c:member:`~PyTypeObject.tp_dealloc` for example code." +msgstr "" diff --git a/c-api/list.po b/c-api/list.po index 9cf81633..ac6372b4 100644 --- a/c-api/list.po +++ b/c-api/list.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/long.po b/c-api/long.po index 689ad85c..f35ab52e 100644 --- a/c-api/long.po +++ b/c-api/long.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/mapping.po b/c-api/mapping.po index 71a67bc7..dcca8519 100644 --- a/c-api/mapping.po +++ b/c-api/mapping.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/marshal.po b/c-api/marshal.po index 007b63d2..4132989f 100644 --- a/c-api/marshal.po +++ b/c-api/marshal.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/memory.po b/c-api/memory.po index e94a73d9..6d5f60fe 100644 --- a/c-api/memory.po +++ b/c-api/memory.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -460,282 +460,316 @@ msgid "" "called before, undefined behavior occurs." msgstr "" -#: c-api/memory.rst:383 +#: c-api/memory.rst:379 +msgid "" +"Do not call this directly to free an object's memory; call the type's :c:" +"member:`~PyTypeObject.tp_free` slot instead." +msgstr "" + +#: c-api/memory.rst:382 +msgid "" +"Do not use this for memory allocated by :c:macro:`PyObject_GC_New` or :c:" +"macro:`PyObject_GC_NewVar`; use :c:func:`PyObject_GC_Del` instead." +msgstr "" + +#: c-api/memory.rst:387 +msgid "" +":c:func:`PyObject_GC_Del` is the equivalent of this function for memory " +"allocated by types that support garbage collection." +msgstr "" + +#: c-api/memory.rst:486 +msgid ":c:func:`PyObject_Malloc`" +msgstr "" + +#: c-api/memory.rst:487 +msgid ":c:func:`PyObject_Realloc`" +msgstr "" + +#: c-api/memory.rst:488 +msgid ":c:func:`PyObject_Calloc`" +msgstr "" + +#: c-api/memory.rst:392 +msgid ":c:macro:`PyObject_New`" +msgstr "" + +#: c-api/memory.rst:393 +msgid ":c:macro:`PyObject_NewVar`" +msgstr "" + +#: c-api/memory.rst:394 +msgid ":c:func:`PyType_GenericAlloc`" +msgstr "" + +#: c-api/memory.rst:395 +msgid ":c:member:`~PyTypeObject.tp_free`" +msgstr "" + +#: c-api/memory.rst:401 msgid "Default Memory Allocators" msgstr "" -#: c-api/memory.rst:385 +#: c-api/memory.rst:403 msgid "Default memory allocators:" msgstr "" -#: c-api/memory.rst:388 +#: c-api/memory.rst:406 msgid "Configuration" msgstr "" -#: c-api/memory.rst:388 +#: c-api/memory.rst:406 msgid "Name" msgstr "" -#: c-api/memory.rst:388 +#: c-api/memory.rst:406 msgid "PyMem_RawMalloc" msgstr "" -#: c-api/memory.rst:388 +#: c-api/memory.rst:406 msgid "PyMem_Malloc" msgstr "" -#: c-api/memory.rst:388 +#: c-api/memory.rst:406 msgid "PyObject_Malloc" msgstr "" -#: c-api/memory.rst:390 +#: c-api/memory.rst:408 msgid "Release build" msgstr "" -#: c-api/memory.rst:390 +#: c-api/memory.rst:408 msgid "``\"pymalloc\"``" msgstr "" -#: c-api/memory.rst:392 +#: c-api/memory.rst:410 msgid "``malloc``" msgstr "" -#: c-api/memory.rst:390 +#: c-api/memory.rst:408 msgid "``pymalloc``" msgstr "" -#: c-api/memory.rst:391 +#: c-api/memory.rst:409 msgid "Debug build" msgstr "" -#: c-api/memory.rst:391 +#: c-api/memory.rst:409 msgid "``\"pymalloc_debug\"``" msgstr "" -#: c-api/memory.rst:393 +#: c-api/memory.rst:411 msgid "``malloc`` + debug" msgstr "" -#: c-api/memory.rst:391 +#: c-api/memory.rst:409 msgid "``pymalloc`` + debug" msgstr "" -#: c-api/memory.rst:392 +#: c-api/memory.rst:410 msgid "Release build, without pymalloc" msgstr "" -#: c-api/memory.rst:392 +#: c-api/memory.rst:410 msgid "``\"malloc\"``" msgstr "" -#: c-api/memory.rst:393 +#: c-api/memory.rst:411 msgid "Debug build, without pymalloc" msgstr "" -#: c-api/memory.rst:393 +#: c-api/memory.rst:411 msgid "``\"malloc_debug\"``" msgstr "" -#: c-api/memory.rst:396 +#: c-api/memory.rst:414 msgid "Legend:" msgstr "" -#: c-api/memory.rst:398 +#: c-api/memory.rst:416 msgid "Name: value for :envvar:`PYTHONMALLOC` environment variable." msgstr "" -#: c-api/memory.rst:399 +#: c-api/memory.rst:417 msgid "" "``malloc``: system allocators from the standard C library, C functions: :c:" "func:`malloc`, :c:func:`calloc`, :c:func:`realloc` and :c:func:`free`." msgstr "" -#: c-api/memory.rst:401 +#: c-api/memory.rst:419 msgid "``pymalloc``: :ref:`pymalloc memory allocator `." msgstr "" -#: c-api/memory.rst:402 +#: c-api/memory.rst:420 msgid "" "``mimalloc``: :ref:`mimalloc memory allocator `. The pymalloc " "allocator will be used if mimalloc support isn't available." msgstr "" -#: c-api/memory.rst:404 +#: c-api/memory.rst:422 msgid "" "\"+ debug\": with :ref:`debug hooks on the Python memory allocators `." msgstr "" -#: c-api/memory.rst:406 +#: c-api/memory.rst:424 msgid "\"Debug build\": :ref:`Python build in debug mode `." msgstr "" -#: c-api/memory.rst:411 +#: c-api/memory.rst:429 msgid "Customize Memory Allocators" msgstr "" -#: c-api/memory.rst:417 +#: c-api/memory.rst:435 msgid "" "Structure used to describe a memory block allocator. The structure has the " "following fields:" msgstr "" -#: c-api/memory.rst:668 +#: c-api/memory.rst:686 msgid "Field" msgstr "" -#: c-api/memory.rst:668 +#: c-api/memory.rst:686 msgid "Meaning" msgstr "" -#: c-api/memory.rst:670 +#: c-api/memory.rst:688 msgid "``void *ctx``" msgstr "" -#: c-api/memory.rst:670 +#: c-api/memory.rst:688 msgid "user context passed as first argument" msgstr "" -#: c-api/memory.rst:425 +#: c-api/memory.rst:443 msgid "``void* malloc(void *ctx, size_t size)``" msgstr "" -#: c-api/memory.rst:425 +#: c-api/memory.rst:443 msgid "allocate a memory block" msgstr "" -#: c-api/memory.rst:427 +#: c-api/memory.rst:445 msgid "``void* calloc(void *ctx, size_t nelem, size_t elsize)``" msgstr "" -#: c-api/memory.rst:427 +#: c-api/memory.rst:445 msgid "allocate a memory block initialized with zeros" msgstr "" -#: c-api/memory.rst:430 +#: c-api/memory.rst:448 msgid "``void* realloc(void *ctx, void *ptr, size_t new_size)``" msgstr "" -#: c-api/memory.rst:430 +#: c-api/memory.rst:448 msgid "allocate or resize a memory block" msgstr "" -#: c-api/memory.rst:432 +#: c-api/memory.rst:450 msgid "``void free(void *ctx, void *ptr)``" msgstr "" -#: c-api/memory.rst:432 +#: c-api/memory.rst:450 msgid "free a memory block" msgstr "" -#: c-api/memory.rst:435 +#: c-api/memory.rst:453 msgid "" "The :c:type:`!PyMemAllocator` structure was renamed to :c:type:" "`PyMemAllocatorEx` and a new ``calloc`` field was added." msgstr "" -#: c-api/memory.rst:442 +#: c-api/memory.rst:460 msgid "Enum used to identify an allocator domain. Domains:" msgstr "" -#: c-api/memory.rst:457 c-api/memory.rst:466 +#: c-api/memory.rst:475 c-api/memory.rst:484 msgid "Functions:" msgstr "" -#: c-api/memory.rst:450 +#: c-api/memory.rst:468 msgid ":c:func:`PyMem_RawMalloc`" msgstr "" -#: c-api/memory.rst:451 +#: c-api/memory.rst:469 msgid ":c:func:`PyMem_RawRealloc`" msgstr "" -#: c-api/memory.rst:452 +#: c-api/memory.rst:470 msgid ":c:func:`PyMem_RawCalloc`" msgstr "" -#: c-api/memory.rst:453 +#: c-api/memory.rst:471 msgid ":c:func:`PyMem_RawFree`" msgstr "" -#: c-api/memory.rst:459 +#: c-api/memory.rst:477 msgid ":c:func:`PyMem_Malloc`," msgstr "" -#: c-api/memory.rst:460 +#: c-api/memory.rst:478 msgid ":c:func:`PyMem_Realloc`" msgstr "" -#: c-api/memory.rst:461 +#: c-api/memory.rst:479 msgid ":c:func:`PyMem_Calloc`" msgstr "" -#: c-api/memory.rst:462 +#: c-api/memory.rst:480 msgid ":c:func:`PyMem_Free`" msgstr "" -#: c-api/memory.rst:468 -msgid ":c:func:`PyObject_Malloc`" -msgstr "" - -#: c-api/memory.rst:469 -msgid ":c:func:`PyObject_Realloc`" -msgstr "" - -#: c-api/memory.rst:470 -msgid ":c:func:`PyObject_Calloc`" -msgstr "" - -#: c-api/memory.rst:471 +#: c-api/memory.rst:489 msgid ":c:func:`PyObject_Free`" msgstr "" -#: c-api/memory.rst:475 +#: c-api/memory.rst:493 msgid "Get the memory block allocator of the specified domain." msgstr "" -#: c-api/memory.rst:480 +#: c-api/memory.rst:498 msgid "Set the memory block allocator of the specified domain." msgstr "" -#: c-api/memory.rst:482 +#: c-api/memory.rst:500 msgid "" "The new allocator must return a distinct non-``NULL`` pointer when " "requesting zero bytes." msgstr "" -#: c-api/memory.rst:485 +#: c-api/memory.rst:503 msgid "" "For the :c:macro:`PYMEM_DOMAIN_RAW` domain, the allocator must be thread-" "safe: a :term:`thread state` is not :term:`attached ` " "when the allocator is called." msgstr "" -#: c-api/memory.rst:489 +#: c-api/memory.rst:507 msgid "" "For the remaining domains, the allocator must also be thread-safe: the " "allocator may be called in different interpreters that do not share a :term:" "`GIL`." msgstr "" -#: c-api/memory.rst:493 +#: c-api/memory.rst:511 msgid "" "If the new allocator is not a hook (does not call the previous allocator), " "the :c:func:`PyMem_SetupDebugHooks` function must be called to reinstall the " "debug hooks on top on the new allocator." msgstr "" -#: c-api/memory.rst:497 +#: c-api/memory.rst:515 msgid "" "See also :c:member:`PyPreConfig.allocator` and :ref:`Preinitialize Python " "with PyPreConfig `." msgstr "" -#: c-api/memory.rst:502 +#: c-api/memory.rst:520 msgid ":c:func:`PyMem_SetAllocator` does have the following contract:" msgstr "" -#: c-api/memory.rst:504 +#: c-api/memory.rst:522 msgid "" "It can be called after :c:func:`Py_PreInitialize` and before :c:func:" "`Py_InitializeFromConfig` to install a custom memory allocator. There are no " @@ -745,7 +779,7 @@ msgid "" "allocator domains ` for more information." msgstr "" -#: c-api/memory.rst:512 +#: c-api/memory.rst:530 msgid "" "If called after Python has finish initializing (after :c:func:" "`Py_InitializeFromConfig` has been called) the allocator **must** wrap the " @@ -753,21 +787,21 @@ msgid "" "arbitrary one is **not supported**." msgstr "" -#: c-api/memory.rst:517 +#: c-api/memory.rst:535 msgid "All allocators must be thread-safe." msgstr "" -#: c-api/memory.rst:523 +#: c-api/memory.rst:541 msgid "" "Setup :ref:`debug hooks in the Python memory allocators ` " "to detect memory errors." msgstr "" -#: c-api/memory.rst:530 +#: c-api/memory.rst:548 msgid "Debug hooks on the Python memory allocators" msgstr "" -#: c-api/memory.rst:532 +#: c-api/memory.rst:550 msgid "" "When :ref:`Python is built in debug mode `, the :c:func:" "`PyMem_SetupDebugHooks` function is called at the :ref:`Python " @@ -775,19 +809,19 @@ msgid "" "allocators to detect memory errors." msgstr "" -#: c-api/memory.rst:537 +#: c-api/memory.rst:555 msgid "" "The :envvar:`PYTHONMALLOC` environment variable can be used to install debug " "hooks on a Python compiled in release mode (ex: ``PYTHONMALLOC=debug``)." msgstr "" -#: c-api/memory.rst:540 +#: c-api/memory.rst:558 msgid "" "The :c:func:`PyMem_SetupDebugHooks` function can be used to set debug hooks " "after calling :c:func:`PyMem_SetAllocator`." msgstr "" -#: c-api/memory.rst:543 +#: c-api/memory.rst:561 msgid "" "These debug hooks fill dynamically allocated memory blocks with special, " "recognizable bit patterns. Newly allocated memory is filled with the byte " @@ -797,25 +831,25 @@ msgid "" "these bytes are unlikely to be valid addresses, floats, or ASCII strings." msgstr "" -#: c-api/memory.rst:550 +#: c-api/memory.rst:568 msgid "Runtime checks:" msgstr "" -#: c-api/memory.rst:552 +#: c-api/memory.rst:570 msgid "" "Detect API violations. For example, detect if :c:func:`PyObject_Free` is " "called on a memory block allocated by :c:func:`PyMem_Malloc`." msgstr "" -#: c-api/memory.rst:554 +#: c-api/memory.rst:572 msgid "Detect write before the start of the buffer (buffer underflow)." msgstr "" -#: c-api/memory.rst:555 +#: c-api/memory.rst:573 msgid "Detect write after the end of the buffer (buffer overflow)." msgstr "" -#: c-api/memory.rst:556 +#: c-api/memory.rst:574 msgid "" "Check that there is an :term:`attached thread state` when allocator " "functions of :c:macro:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) " @@ -823,7 +857,7 @@ msgid "" "called." msgstr "" -#: c-api/memory.rst:561 +#: c-api/memory.rst:579 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 " @@ -831,7 +865,7 @@ msgid "" "memory block was traced." msgstr "" -#: c-api/memory.rst:566 +#: c-api/memory.rst:584 msgid "" "Let *S* = ``sizeof(size_t)``. ``2*S`` bytes are added at each end of each " "block of *N* bytes requested. The memory layout is like so, where p " @@ -841,49 +875,49 @@ msgid "" "from a Python slice):" msgstr "" -#: c-api/memory.rst:572 +#: c-api/memory.rst:590 msgid "``p[-2*S:-S]``" msgstr "" -#: c-api/memory.rst:573 +#: c-api/memory.rst:591 msgid "" "Number of bytes originally asked for. This is a size_t, big-endian (easier " "to read in a memory dump)." msgstr "" -#: c-api/memory.rst:575 +#: c-api/memory.rst:593 msgid "``p[-S]``" msgstr "" -#: c-api/memory.rst:576 +#: c-api/memory.rst:594 msgid "API identifier (ASCII character):" msgstr "" -#: c-api/memory.rst:578 +#: c-api/memory.rst:596 msgid "``'r'`` for :c:macro:`PYMEM_DOMAIN_RAW`." msgstr "" -#: c-api/memory.rst:579 +#: c-api/memory.rst:597 msgid "``'m'`` for :c:macro:`PYMEM_DOMAIN_MEM`." msgstr "" -#: c-api/memory.rst:580 +#: c-api/memory.rst:598 msgid "``'o'`` for :c:macro:`PYMEM_DOMAIN_OBJ`." msgstr "" -#: c-api/memory.rst:582 +#: c-api/memory.rst:600 msgid "``p[-S+1:0]``" msgstr "" -#: c-api/memory.rst:583 +#: c-api/memory.rst:601 msgid "Copies of PYMEM_FORBIDDENBYTE. Used to catch under- writes and reads." msgstr "" -#: c-api/memory.rst:585 +#: c-api/memory.rst:603 msgid "``p[0:N]``" msgstr "" -#: c-api/memory.rst:586 +#: c-api/memory.rst:604 msgid "" "The requested memory, filled with copies of PYMEM_CLEANBYTE, used to catch " "reference to uninitialized memory. When a realloc-like function is called " @@ -894,25 +928,25 @@ msgid "" "bytes are also filled with PYMEM_DEADBYTE." msgstr "" -#: c-api/memory.rst:594 +#: c-api/memory.rst:612 msgid "``p[N:N+S]``" msgstr "" -#: c-api/memory.rst:595 +#: c-api/memory.rst:613 msgid "Copies of PYMEM_FORBIDDENBYTE. Used to catch over- writes and reads." msgstr "" -#: c-api/memory.rst:597 +#: c-api/memory.rst:615 msgid "``p[N+S:N+2*S]``" msgstr "" -#: c-api/memory.rst:598 +#: c-api/memory.rst:616 msgid "" "Only used if the ``PYMEM_DEBUG_SERIALNO`` macro is defined (not defined by " "default)." msgstr "" -#: c-api/memory.rst:601 +#: c-api/memory.rst:619 msgid "" "A serial number, incremented by 1 on each call to a malloc-like or realloc-" "like function. Big-endian :c:type:`size_t`. If \"bad memory\" is detected " @@ -922,7 +956,7 @@ msgid "" "number is incremented, and exists so you can set such a breakpoint easily." msgstr "" -#: c-api/memory.rst:608 +#: c-api/memory.rst:626 msgid "" "A realloc-like or free-like function first checks that the " "PYMEM_FORBIDDENBYTE bytes at each end are intact. If they've been altered, " @@ -935,7 +969,7 @@ msgid "" "getting used)." msgstr "" -#: c-api/memory.rst:617 +#: c-api/memory.rst:635 msgid "" "The :c:func:`PyMem_SetupDebugHooks` function now also works on Python " "compiled in release mode. On error, the debug hooks now use :mod:" @@ -945,7 +979,7 @@ msgid "" "domains are called." msgstr "" -#: c-api/memory.rst:625 +#: c-api/memory.rst:643 msgid "" "Byte patterns ``0xCB`` (``PYMEM_CLEANBYTE``), ``0xDB`` (``PYMEM_DEADBYTE``) " "and ``0xFB`` (``PYMEM_FORBIDDENBYTE``) have been replaced with ``0xCD``, " @@ -953,11 +987,11 @@ msgid "" "``malloc()`` and ``free()``." msgstr "" -#: c-api/memory.rst:635 +#: c-api/memory.rst:653 msgid "The pymalloc allocator" msgstr "" -#: c-api/memory.rst:637 +#: c-api/memory.rst:655 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 " @@ -966,75 +1000,75 @@ msgid "" "`PyMem_RawRealloc` for allocations larger than 512 bytes." msgstr "" -#: c-api/memory.rst:643 +#: c-api/memory.rst:661 msgid "" "*pymalloc* is the :ref:`default allocator ` of " "the :c:macro:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) and :c:macro:" "`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) domains." msgstr "" -#: c-api/memory.rst:647 +#: c-api/memory.rst:665 msgid "The arena allocator uses the following functions:" msgstr "" -#: c-api/memory.rst:649 +#: c-api/memory.rst:667 msgid ":c:func:`!VirtualAlloc` and :c:func:`!VirtualFree` on Windows," msgstr "" -#: c-api/memory.rst:650 +#: c-api/memory.rst:668 msgid ":c:func:`!mmap` and :c:func:`!munmap` if available," msgstr "" -#: c-api/memory.rst:651 +#: c-api/memory.rst:669 msgid ":c:func:`malloc` and :c:func:`free` otherwise." msgstr "" -#: c-api/memory.rst:653 +#: c-api/memory.rst:671 msgid "" "This allocator is disabled if Python is configured with the :option:`--" "without-pymalloc` option. It can also be disabled at runtime using the :" "envvar:`PYTHONMALLOC` environment variable (ex: ``PYTHONMALLOC=malloc``)." msgstr "" -#: c-api/memory.rst:658 +#: c-api/memory.rst:676 msgid "Customize pymalloc Arena Allocator" msgstr "" -#: c-api/memory.rst:664 +#: c-api/memory.rst:682 msgid "" "Structure used to describe an arena allocator. The structure has three " "fields:" msgstr "" -#: c-api/memory.rst:672 +#: c-api/memory.rst:690 msgid "``void* alloc(void *ctx, size_t size)``" msgstr "" -#: c-api/memory.rst:672 +#: c-api/memory.rst:690 msgid "allocate an arena of size bytes" msgstr "" -#: c-api/memory.rst:674 +#: c-api/memory.rst:692 msgid "``void free(void *ctx, void *ptr, size_t size)``" msgstr "" -#: c-api/memory.rst:674 +#: c-api/memory.rst:692 msgid "free an arena" msgstr "" -#: c-api/memory.rst:679 +#: c-api/memory.rst:697 msgid "Get the arena allocator." msgstr "" -#: c-api/memory.rst:683 +#: c-api/memory.rst:701 msgid "Set the arena allocator." msgstr "" -#: c-api/memory.rst:688 +#: c-api/memory.rst:706 msgid "The mimalloc allocator" msgstr "" -#: c-api/memory.rst:692 +#: c-api/memory.rst:710 msgid "" "Python supports the mimalloc allocator when the underlying platform support " "is available. mimalloc \"is a general purpose allocator with excellent " @@ -1042,46 +1076,46 @@ msgid "" "runtime systems of the Koka and Lean languages.\"" msgstr "" -#: c-api/memory.rst:697 +#: c-api/memory.rst:715 msgid "tracemalloc C API" msgstr "" -#: c-api/memory.rst:703 +#: c-api/memory.rst:721 msgid "Track an allocated memory block in the :mod:`tracemalloc` module." msgstr "" -#: c-api/memory.rst:705 +#: c-api/memory.rst:723 msgid "" "Return ``0`` on success, return ``-1`` on error (failed to allocate memory " "to store the trace). Return ``-2`` if tracemalloc is disabled." msgstr "" -#: c-api/memory.rst:708 +#: c-api/memory.rst:726 msgid "If memory block is already tracked, update the existing trace." msgstr "" -#: c-api/memory.rst:712 +#: c-api/memory.rst:730 msgid "" "Untrack an allocated memory block in the :mod:`tracemalloc` module. Do " "nothing if the block was not tracked." msgstr "" -#: c-api/memory.rst:715 +#: c-api/memory.rst:733 msgid "Return ``-2`` if tracemalloc is disabled, otherwise return ``0``." msgstr "" -#: c-api/memory.rst:721 +#: c-api/memory.rst:739 msgid "Examples" msgstr "" -#: c-api/memory.rst:723 +#: c-api/memory.rst:741 msgid "" "Here is the example from section :ref:`memoryoverview`, rewritten so that " "the I/O buffer is allocated from the Python heap by using the first function " "set::" msgstr "" -#: c-api/memory.rst:726 +#: c-api/memory.rst:744 msgid "" "PyObject *res;\n" "char *buf = (char *) PyMem_Malloc(BUFSIZ); /* for I/O */\n" @@ -1094,11 +1128,11 @@ msgid "" "return res;" msgstr "" -#: c-api/memory.rst:736 +#: c-api/memory.rst:754 msgid "The same code using the type-oriented function set::" msgstr "" -#: c-api/memory.rst:738 +#: c-api/memory.rst:756 msgid "" "PyObject *res;\n" "char *buf = PyMem_New(char, BUFSIZ); /* for I/O */\n" @@ -1111,7 +1145,7 @@ msgid "" "return res;" msgstr "" -#: c-api/memory.rst:748 +#: c-api/memory.rst:766 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 " @@ -1121,7 +1155,7 @@ msgid "" "different allocators operating on different heaps. ::" msgstr "" -#: c-api/memory.rst:755 +#: c-api/memory.rst:773 msgid "" "char *buf1 = PyMem_New(char, BUFSIZ);\n" "char *buf2 = (char *) malloc(BUFSIZ);\n" @@ -1132,14 +1166,14 @@ msgid "" "free(buf1); /* Fatal -- should be PyMem_Free() */" msgstr "" -#: c-api/memory.rst:763 +#: c-api/memory.rst:781 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:macro:" "`PyObject_New`, :c:macro:`PyObject_NewVar` and :c:func:`PyObject_Free`." msgstr "" -#: c-api/memory.rst:767 +#: c-api/memory.rst:785 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 5318d7e5..eaab4e2a 100644 --- a/c-api/memoryview.po +++ b/c-api/memoryview.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/method.po b/c-api/method.po index bf9ab3d4..5bea97ac 100644 --- a/c-api/method.po +++ b/c-api/method.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/module.po b/c-api/module.po index 3bc09358..c926c7b4 100644 --- a/c-api/module.po +++ b/c-api/module.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -48,7 +48,7 @@ msgid "" "setting a :attr:`~module.__file__` attribute." msgstr "" -#: c-api/module.rst:272 c-api/module.rst:474 +#: c-api/module.rst:416 c-api/module.rst:443 msgid "Return ``NULL`` with an exception set on error." msgstr "" @@ -126,103 +126,119 @@ msgid "" msgstr "" #: c-api/module.rst:133 -msgid "Initializing C modules" +msgid "Module definitions" msgstr "" #: c-api/module.rst:135 msgid "" -"Modules objects are usually created from extension modules (shared libraries " -"which export an initialization function), or compiled-in modules (where the " -"initialization function is added using :c:func:`PyImport_AppendInittab`). " -"See :ref:`building` or :ref:`extending-with-embedding` for details." +"The functions in the previous section work on any module object, including " +"modules imported from Python code." msgstr "" -#: c-api/module.rst:140 +#: c-api/module.rst:138 msgid "" -"The initialization function can either pass a module definition instance to :" -"c:func:`PyModule_Create`, and return the resulting module object, or request " -"\"multi-phase initialization\" by returning the definition struct itself." +"Modules defined using the C API typically use a *module definition*, :c:type:" +"`PyModuleDef` -- a statically allocated, constant “description\" of how a " +"module should be created." msgstr "" -#: c-api/module.rst:146 +#: c-api/module.rst:142 +msgid "" +"The definition is usually used to define an extension's “main” module object " +"(see :ref:`extension-modules` for details). It is also used to :ref:`create " +"extension modules dynamically `." +msgstr "" + +#: c-api/module.rst:147 +msgid "" +"Unlike :c:func:`PyModule_New`, the definition allows management of *module " +"state* -- a piece of memory that is allocated and cleared together with the " +"module object. Unlike the module's Python attributes, Python code cannot " +"replace or delete data stored in module state." +msgstr "" + +#: c-api/module.rst:155 msgid "" "The module definition struct, which holds all information needed to create a " -"module object. There is usually only one statically initialized variable of " -"this type for each module." +"module object. This structure must be statically allocated (or be otherwise " +"guaranteed to be valid while any modules created from it exist). Usually, " +"there is only one variable of this type for each extension module." msgstr "" -#: c-api/module.rst:152 +#: c-api/module.rst:163 msgid "Always initialize this member to :c:macro:`PyModuleDef_HEAD_INIT`." msgstr "" -#: c-api/module.rst:156 +#: c-api/module.rst:167 msgid "Name for the new module." msgstr "" -#: c-api/module.rst:160 +#: c-api/module.rst:171 msgid "" "Docstring for the module; usually a docstring variable created with :c:macro:" "`PyDoc_STRVAR` is used." msgstr "" -#: c-api/module.rst:165 +#: c-api/module.rst:176 msgid "" "Module state may be kept in a per-module memory area that can be retrieved " "with :c:func:`PyModule_GetState`, rather than in static globals. This makes " "modules safe for use in multiple sub-interpreters." msgstr "" -#: c-api/module.rst:169 +#: c-api/module.rst:180 msgid "" "This memory area is allocated based on *m_size* on module creation, and " "freed when the module object is deallocated, after the :c:member:" "`~PyModuleDef.m_free` function has been called, if present." msgstr "" -#: c-api/module.rst:173 +#: c-api/module.rst:184 msgid "" -"Setting ``m_size`` to ``-1`` means that the module does not support sub-" -"interpreters, because it has global state." +"Setting it to a non-negative value means that the module can be re-" +"initialized and specifies the additional amount of memory it requires for " +"its state." msgstr "" -#: c-api/module.rst:176 +#: c-api/module.rst:188 msgid "" -"Setting it to a non-negative value means that the module can be re-" -"initialized and specifies the additional amount of memory it requires for " -"its state. Non-negative ``m_size`` is required for multi-phase " -"initialization." +"Setting ``m_size`` to ``-1`` means that the module does not support sub-" +"interpreters, because it has global state. Negative ``m_size`` is only " +"allowed when using :ref:`legacy single-phase initialization ` or when :ref:`creating modules dynamically `." msgstr "" -#: c-api/module.rst:181 +#: c-api/module.rst:194 msgid "See :PEP:`3121` for more details." msgstr "" -#: c-api/module.rst:185 +#: c-api/module.rst:198 msgid "" "A pointer to a table of module-level functions, described by :c:type:" "`PyMethodDef` values. Can be ``NULL`` if no functions are present." msgstr "" -#: c-api/module.rst:190 +#: c-api/module.rst:203 msgid "" "An array of slot definitions for multi-phase initialization, terminated by a " -"``{0, NULL}`` entry. When using single-phase initialization, *m_slots* must " -"be ``NULL``." +"``{0, NULL}`` entry. When using legacy single-phase initialization, " +"*m_slots* must be ``NULL``." msgstr "" -#: c-api/module.rst:196 +#: c-api/module.rst:209 msgid "" "Prior to version 3.5, this member was always set to ``NULL``, and was " "defined as:" msgstr "" -#: c-api/module.rst:203 +#: c-api/module.rst:216 msgid "" "A traversal function to call during GC traversal of the module object, or " "``NULL`` if not needed." msgstr "" -#: c-api/module.rst:221 c-api/module.rst:242 +#: c-api/module.rst:234 c-api/module.rst:255 msgid "" "This function is not called if the module state was requested but is not " "allocated yet. This is the case immediately after the module is created and " @@ -232,17 +248,17 @@ msgid "" "`PyModule_GetState`) is ``NULL``." msgstr "" -#: c-api/module.rst:234 c-api/module.rst:249 +#: c-api/module.rst:247 c-api/module.rst:262 msgid "No longer called before the module state is allocated." msgstr "" -#: c-api/module.rst:218 +#: c-api/module.rst:231 msgid "" "A clear function to call during GC clearing of the module object, or " "``NULL`` if not needed." msgstr "" -#: c-api/module.rst:228 +#: c-api/module.rst:241 msgid "" "Like :c:member:`PyTypeObject.tp_clear`, this function is not *always* called " "before a module is deallocated. For example, when reference counting is " @@ -251,151 +267,55 @@ msgid "" "directly." msgstr "" -#: c-api/module.rst:239 +#: c-api/module.rst:252 msgid "" "A function to call during deallocation of the module object, or ``NULL`` if " "not needed." msgstr "" -#: c-api/module.rst:253 -msgid "Single-phase initialization" -msgstr "" - -#: c-api/module.rst:255 -msgid "" -"The module initialization function may create and return the module object " -"directly. This is referred to as \"single-phase initialization\", and uses " -"one of the following two module creation functions:" -msgstr "" - -#: c-api/module.rst:261 -msgid "" -"Create a new module object, given the definition in *def*. This behaves " -"like :c:func:`PyModule_Create2` with *module_api_version* set to :c:macro:" -"`PYTHON_API_VERSION`." -msgstr "" - -#: c-api/module.rst:268 -msgid "" -"Create a new module object, given the definition in *def*, assuming the API " -"version *module_api_version*. If that version does not match the version of " -"the running interpreter, a :exc:`RuntimeWarning` is emitted." -msgstr "" - -#: c-api/module.rst:276 -msgid "" -"Most uses of this function should be using :c:func:`PyModule_Create` " -"instead; only use this if you are sure you need it." -msgstr "" - -#: c-api/module.rst:279 -msgid "" -"Before it is returned from in the initialization function, the resulting " -"module object is typically populated using functions like :c:func:" -"`PyModule_AddObjectRef`." +#: c-api/module.rst:267 +msgid "Module slots" msgstr "" -#: c-api/module.rst:285 -msgid "Multi-phase initialization" -msgstr "" - -#: c-api/module.rst:287 -msgid "" -"An alternate way to specify extensions is to request \"multi-phase " -"initialization\". Extension modules created this way behave more like Python " -"modules: the initialization is split between the *creation phase*, when the " -"module object is created, and the *execution phase*, when it is populated. " -"The distinction is similar to the :py:meth:`!__new__` and :py:meth:`!" -"__init__` methods of classes." -msgstr "" - -#: c-api/module.rst:294 -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-" -"imported, a new module object is created, and the old module is subject to " -"normal garbage collection -- as with Python modules. By default, multiple " -"modules created from the same definition should be independent: changes to " -"one should not affect the others. This means that all state should be " -"specific to the module object (using e.g. using :c:func:" -"`PyModule_GetState`), or its contents (such as the module's :attr:`~object." -"__dict__` or individual classes created with :c:func:`PyType_FromSpec`)." -msgstr "" - -#: c-api/module.rst:304 -msgid "" -"All modules created using multi-phase initialization are expected to " -"support :ref:`sub-interpreters `. Making sure " -"multiple modules are independent is typically enough to achieve this." -msgstr "" - -#: c-api/module.rst:308 -msgid "" -"To request multi-phase initialization, the initialization function " -"(PyInit_modulename) returns a :c:type:`PyModuleDef` instance with non-empty :" -"c:member:`~PyModuleDef.m_slots`. Before it is returned, the ``PyModuleDef`` " -"instance must be initialized with the following function:" -msgstr "" - -#: c-api/module.rst:315 -msgid "" -"Ensures a module definition is a properly initialized Python object that " -"correctly reports its type and reference count." -msgstr "" - -#: c-api/module.rst:318 -msgid "Returns *def* cast to ``PyObject*``, or ``NULL`` if an error occurred." -msgstr "" - -#: c-api/module.rst:322 -msgid "" -"The *m_slots* member of the module definition must point to an array of " -"``PyModuleDef_Slot`` structures:" -msgstr "" - -#: c-api/module.rst:329 +#: c-api/module.rst:273 msgid "A slot ID, chosen from the available values explained below." msgstr "" -#: c-api/module.rst:333 +#: c-api/module.rst:277 msgid "Value of the slot, whose meaning depends on the slot ID." msgstr "" -#: c-api/module.rst:337 -msgid "The *m_slots* array must be terminated by a slot with id 0." -msgstr "" - -#: c-api/module.rst:339 +#: c-api/module.rst:281 msgid "The available slot types are:" msgstr "" -#: c-api/module.rst:343 +#: c-api/module.rst:285 msgid "" "Specifies a function that is called to create the module object itself. The " "*value* pointer of this slot must point to a function of the signature:" msgstr "" -#: c-api/module.rst:350 +#: c-api/module.rst:292 msgid "" "The function receives a :py:class:`~importlib.machinery.ModuleSpec` " "instance, as defined in :PEP:`451`, and the module definition. It should " "return a new module object, or set an error and return ``NULL``." msgstr "" -#: c-api/module.rst:355 +#: c-api/module.rst:297 msgid "" "This function should be kept minimal. In particular, it should not call " "arbitrary Python code, as trying to import the same module again may result " "in an infinite loop." msgstr "" -#: c-api/module.rst:359 +#: c-api/module.rst:301 msgid "" "Multiple ``Py_mod_create`` slots may not be specified in one module " "definition." msgstr "" -#: c-api/module.rst:362 +#: c-api/module.rst:304 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 " @@ -404,7 +324,7 @@ msgid "" "through symlinks, all while sharing a single module definition." msgstr "" -#: c-api/module.rst:368 +#: c-api/module.rst:310 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 " @@ -414,7 +334,7 @@ msgid "" "``Py_mod_create``." msgstr "" -#: c-api/module.rst:377 +#: c-api/module.rst:319 msgid "" "Specifies a function that is called to *execute* the module. This is " "equivalent to executing the code of a Python module: typically, this " @@ -422,61 +342,61 @@ msgid "" "function is:" msgstr "" -#: c-api/module.rst:386 +#: c-api/module.rst:328 msgid "" "If multiple ``Py_mod_exec`` slots are specified, they are processed in the " "order they appear in the *m_slots* array." msgstr "" -#: c-api/module.rst:424 +#: c-api/module.rst:366 msgid "Specifies one of the following values:" msgstr "" -#: c-api/module.rst:397 +#: c-api/module.rst:339 msgid "The module does not support being imported in subinterpreters." msgstr "" -#: c-api/module.rst:401 +#: c-api/module.rst:343 msgid "" "The module supports being imported in subinterpreters, but only when they " "share the main interpreter's GIL. (See :ref:`isolating-extensions-howto`.)" msgstr "" -#: c-api/module.rst:407 +#: c-api/module.rst:349 msgid "" "The module supports being imported in subinterpreters, even when they have " "their own GIL. (See :ref:`isolating-extensions-howto`.)" msgstr "" -#: c-api/module.rst:411 +#: c-api/module.rst:353 msgid "" "This slot determines whether or not importing this module in a " "subinterpreter will fail." msgstr "" -#: c-api/module.rst:414 +#: c-api/module.rst:356 msgid "" "Multiple ``Py_mod_multiple_interpreters`` slots may not be specified in one " "module definition." msgstr "" -#: c-api/module.rst:417 +#: c-api/module.rst:359 msgid "" "If ``Py_mod_multiple_interpreters`` is not specified, the import machinery " "defaults to ``Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED``." msgstr "" -#: c-api/module.rst:430 +#: c-api/module.rst:372 msgid "" "The module depends on the presence of the global interpreter lock (GIL), and " "may access global state without synchronization." msgstr "" -#: c-api/module.rst:435 +#: c-api/module.rst:377 msgid "The module is safe to run without an active GIL." msgstr "" -#: c-api/module.rst:437 +#: c-api/module.rst:379 msgid "" "This slot is ignored by Python builds not configured with :option:`--disable-" "gil`. Otherwise, it determines whether or not importing this module will " @@ -484,41 +404,64 @@ msgid "" "threaded-cpython` for more detail." msgstr "" -#: c-api/module.rst:442 +#: c-api/module.rst:384 msgid "" "Multiple ``Py_mod_gil`` slots may not be specified in one module definition." msgstr "" -#: c-api/module.rst:444 +#: c-api/module.rst:386 msgid "" "If ``Py_mod_gil`` is not specified, the import machinery defaults to " "``Py_MOD_GIL_USED``." msgstr "" -#: c-api/module.rst:449 -msgid "See :PEP:`489` for more details on multi-phase initialization." +#: c-api/module.rst:395 +msgid "Creating extension modules dynamically" msgstr "" -#: c-api/module.rst:452 -msgid "Low-level module creation functions" +#: c-api/module.rst:397 +msgid "" +"The following functions may be used to create a module outside of an " +"extension's :ref:`initialization function `. They are " +"also used in :ref:`single-phase initialization `." msgstr "" -#: c-api/module.rst:454 +#: c-api/module.rst:404 msgid "" -"The following functions are called under the hood when using multi-phase " -"initialization. They can be used directly, for example when creating module " -"objects dynamically. Note that both ``PyModule_FromDefAndSpec`` and " -"``PyModule_ExecDef`` must be called to fully initialize a module." +"Create a new module object, given the definition in *def*. This is a macro " +"that calls :c:func:`PyModule_Create2` with *module_api_version* set to :c:" +"macro:`PYTHON_API_VERSION`, or to :c:macro:`PYTHON_ABI_VERSION` if using " +"the :ref:`limited API `." msgstr "" -#: c-api/module.rst:461 +#: c-api/module.rst:412 msgid "" -"Create a new module object, given the definition in *def* and the ModuleSpec " -"*spec*. This behaves like :c:func:`PyModule_FromDefAndSpec2` with " -"*module_api_version* set to :c:macro:`PYTHON_API_VERSION`." +"Create a new module object, given the definition in *def*, assuming the API " +"version *module_api_version*. If that version does not match the version of " +"the running interpreter, a :exc:`RuntimeWarning` is emitted." msgstr "" -#: c-api/module.rst:469 +#: c-api/module.rst:418 +msgid "" +"This function does not support slots. The :c:member:`~PyModuleDef.m_slots` " +"member of *def* must be ``NULL``." +msgstr "" + +#: c-api/module.rst:424 +msgid "" +"Most uses of this function should be using :c:func:`PyModule_Create` " +"instead; only use this if you are sure you need it." +msgstr "" + +#: c-api/module.rst:429 +msgid "" +"This macro calls :c:func:`PyModule_FromDefAndSpec2` with " +"*module_api_version* set to :c:macro:`PYTHON_API_VERSION`, or to :c:macro:" +"`PYTHON_ABI_VERSION` if using the :ref:`limited API `." +msgstr "" + +#: c-api/module.rst:438 msgid "" "Create a new module object, given the definition in *def* and the ModuleSpec " "*spec*, assuming the API version *module_api_version*. If that version does " @@ -526,63 +469,65 @@ msgid "" "emitted." msgstr "" -#: c-api/module.rst:478 +#: c-api/module.rst:445 +msgid "" +"Note that this does not process execution slots (:c:data:`Py_mod_exec`). " +"Both ``PyModule_FromDefAndSpec`` and ``PyModule_ExecDef`` must be called to " +"fully initialize a module." +msgstr "" + +#: c-api/module.rst:451 msgid "" "Most uses of this function should be using :c:func:`PyModule_FromDefAndSpec` " "instead; only use this if you are sure you need it." msgstr "" -#: c-api/module.rst:485 +#: c-api/module.rst:458 msgid "Process any execution slots (:c:data:`Py_mod_exec`) given in *def*." msgstr "" -#: c-api/module.rst:491 -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``." +#: c-api/module.rst:464 +msgid "The C API version. Defined for backwards compatibility." msgstr "" -#: c-api/module.rst:500 +#: c-api/module.rst:473 msgid "" -"Add the functions from the ``NULL`` terminated *functions* array to " -"*module*. Refer to the :c:type:`PyMethodDef` documentation for details on " -"individual entries (due to the lack of a shared module namespace, module " -"level \"functions\" implemented in C typically receive the module as their " -"first parameter, making them similar to instance methods on Python classes). " -"This function is called automatically when creating a module from " -"``PyModuleDef``, using either ``PyModule_Create`` or " -"``PyModule_FromDefAndSpec``." +"Currently, this constant is not updated in new Python versions, and is not " +"useful for versioning. This may change in the future." msgstr "" -#: c-api/module.rst:512 +#: c-api/module.rst:471 +msgid "Defined as ``3`` for backwards compatibility." +msgstr "" + +#: c-api/module.rst:478 msgid "Support functions" msgstr "" -#: c-api/module.rst:514 +#: c-api/module.rst:480 msgid "" -"The module initialization function (if using single phase initialization) or " -"a function called from a module execution slot (if using multi-phase " -"initialization), can use the following functions to help initialize the " -"module state:" +"The following functions are provided to help initialize a module state. They " +"are intended for a module's execution slots (:c:data:`Py_mod_exec`), the " +"initialization function for legacy :ref:`single-phase initialization `, or code that creates modules dynamically." msgstr "" -#: c-api/module.rst:521 +#: c-api/module.rst:488 msgid "" "Add an object to *module* as *name*. This is a convenience function which " "can be used from the module's initialization function." msgstr "" -#: c-api/module.rst:524 +#: c-api/module.rst:491 msgid "" "On success, return ``0``. On error, raise an exception and return ``-1``." msgstr "" -#: c-api/module.rst:577 c-api/module.rst:604 +#: c-api/module.rst:544 c-api/module.rst:571 msgid "Example usage::" msgstr "" -#: c-api/module.rst:528 +#: c-api/module.rst:495 msgid "" "static int\n" "add_spam(PyObject *module, int value)\n" @@ -597,20 +542,20 @@ msgid "" " }" msgstr "" -#: c-api/module.rst:540 +#: c-api/module.rst:507 msgid "" "To be convenient, the function accepts ``NULL`` *value* with an exception " "set. In this case, return ``-1`` and just leave the raised exception " "unchanged." msgstr "" -#: c-api/module.rst:544 +#: c-api/module.rst:511 msgid "" "The example can also be written without checking explicitly if *obj* is " "``NULL``::" msgstr "" -#: c-api/module.rst:547 +#: c-api/module.rst:514 msgid "" "static int\n" "add_spam(PyObject *module, int value)\n" @@ -622,13 +567,13 @@ msgid "" " }" msgstr "" -#: c-api/module.rst:556 +#: c-api/module.rst:523 msgid "" "Note that ``Py_XDECREF()`` should be used instead of ``Py_DECREF()`` in this " "case, since *obj* can be ``NULL``." msgstr "" -#: c-api/module.rst:559 +#: c-api/module.rst:526 msgid "" "The number of different *name* strings passed to this function should be " "kept small, usually by only using statically allocated strings as *name*. " @@ -638,7 +583,7 @@ msgid "" "internally to create a key object." msgstr "" -#: c-api/module.rst:572 +#: c-api/module.rst:539 msgid "" "Similar to :c:func:`PyModule_AddObjectRef`, but \"steals\" a reference to " "*value*. It can be called with a result of function that returns a new " @@ -646,39 +591,39 @@ msgid "" "variable." msgstr "" -#: c-api/module.rst:579 +#: c-api/module.rst:546 msgid "" "if (PyModule_Add(module, \"spam\", PyBytes_FromString(value)) < 0) {\n" " goto error;\n" "}" msgstr "" -#: c-api/module.rst:588 +#: c-api/module.rst:555 msgid "" "Similar to :c:func:`PyModule_AddObjectRef`, but steals a reference to " "*value* on success (if it returns ``0``)." msgstr "" -#: c-api/module.rst:591 +#: c-api/module.rst:558 msgid "" "The new :c:func:`PyModule_Add` or :c:func:`PyModule_AddObjectRef` functions " "are recommended, since it is easy to introduce reference leaks by misusing " "the :c:func:`PyModule_AddObject` function." msgstr "" -#: c-api/module.rst:598 +#: c-api/module.rst:565 msgid "" "Unlike other functions that steal references, ``PyModule_AddObject()`` only " "releases the reference to *value* **on success**." msgstr "" -#: c-api/module.rst:601 +#: c-api/module.rst:568 msgid "" "This means that its return value must be checked, and calling code must :c:" "func:`Py_XDECREF` *value* manually on error." msgstr "" -#: c-api/module.rst:606 +#: c-api/module.rst:573 msgid "" "PyObject *obj = PyBytes_FromString(value);\n" "if (PyModule_AddObject(module, \"spam\", obj) < 0) {\n" @@ -692,24 +637,24 @@ msgid "" "// Py_XDECREF(obj) is not needed here." msgstr "" -#: c-api/module.rst:619 +#: c-api/module.rst:586 msgid ":c:func:`PyModule_AddObject` is :term:`soft deprecated`." msgstr "" -#: c-api/module.rst:624 +#: c-api/module.rst:591 msgid "" "Add an integer constant to *module* as *name*. This convenience function " "can be used from the module's initialization function. Return ``-1`` with an " "exception set on error, ``0`` on success." msgstr "" -#: c-api/module.rst:628 +#: c-api/module.rst:595 msgid "" "This is a convenience function that calls :c:func:`PyLong_FromLong` and :c:" "func:`PyModule_AddObjectRef`; see their documentation for details." msgstr "" -#: c-api/module.rst:634 +#: c-api/module.rst:601 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 " @@ -717,14 +662,14 @@ msgid "" "on success." msgstr "" -#: c-api/module.rst:639 +#: c-api/module.rst:606 msgid "" "This is a convenience function that calls :c:func:" "`PyUnicode_InternFromString` and :c:func:`PyModule_AddObjectRef`; see their " "documentation for details." msgstr "" -#: c-api/module.rst:646 +#: c-api/module.rst:613 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 " @@ -732,11 +677,11 @@ msgid "" "with an exception set on error, ``0`` on success." msgstr "" -#: c-api/module.rst:654 +#: c-api/module.rst:621 msgid "Add a string constant to *module*." msgstr "" -#: c-api/module.rst:658 +#: c-api/module.rst:625 msgid "" "Add a type object to *module*. The type object is finalized by calling " "internally :c:func:`PyType_Ready`. The name of the type object is taken from " @@ -744,36 +689,64 @@ msgid "" "``-1`` with an exception set on error, ``0`` on success." msgstr "" -#: c-api/module.rst:668 +#: c-api/module.rst:635 +msgid "" +"Add the functions from the ``NULL`` terminated *functions* array to " +"*module*. Refer to the :c:type:`PyMethodDef` documentation for details on " +"individual entries (due to the lack of a shared module namespace, module " +"level \"functions\" implemented in C typically receive the module as their " +"first parameter, making them similar to instance methods on Python classes)." +msgstr "" + +#: c-api/module.rst:641 +msgid "" +"This function is called automatically when creating a module from " +"``PyModuleDef`` (such as when using :ref:`multi-phase-initialization`, " +"``PyModule_Create``, or ``PyModule_FromDefAndSpec``). Some module authors " +"may prefer defining functions in multiple :c:type:`PyMethodDef` arrays; in " +"that case they should call this function directly." +msgstr "" + +#: c-api/module.rst:652 +msgid "" +"Set the docstring for *module* to *docstring*. This function is called " +"automatically when creating a module from ``PyModuleDef`` (such as when " +"using :ref:`multi-phase-initialization`, ``PyModule_Create``, or " +"``PyModule_FromDefAndSpec``)." +msgstr "" + +#: c-api/module.rst:661 msgid "" "Indicate that *module* does or does not support running without the global " "interpreter lock (GIL), using one of the values from :c:macro:`Py_mod_gil`. " -"It must be called during *module*'s initialization function. If this " -"function is not called during module initialization, the import machinery " -"assumes the module does not support running without the GIL. This function " -"is only available in Python builds configured with :option:`--disable-gil`. " -"Return ``-1`` with an exception set on error, ``0`` on success." +"It must be called during *module*'s initialization function when using :ref:" +"`single-phase-initialization`. If this function is not called during module " +"initialization, the import machinery assumes the module does not support " +"running without the GIL. This function is only available in Python builds " +"configured with :option:`--disable-gil`. Return ``-1`` with an exception set " +"on error, ``0`` on success." msgstr "" -#: c-api/module.rst:681 -msgid "Module lookup" +#: c-api/module.rst:675 +msgid "Module lookup (single-phase initialization)" msgstr "" -#: c-api/module.rst:683 +#: c-api/module.rst:677 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." +"The legacy :ref:`single-phase initialization ` " +"initialization scheme creates singleton modules that can be looked up in the " +"context of the current interpreter. This allows the module object to be " +"retrieved later with only a reference to the module definition." msgstr "" -#: c-api/module.rst:687 +#: c-api/module.rst:682 msgid "" "These functions will not work on modules created using multi-phase " "initialization, since multiple such modules can be created from a single " "definition." msgstr "" -#: c-api/module.rst:692 +#: c-api/module.rst:687 msgid "" "Returns the module object that was created from *def* for the current " "interpreter. This method requires that the module object has been attached " @@ -782,20 +755,21 @@ msgid "" "to the interpreter state yet, it returns ``NULL``." msgstr "" -#: c-api/module.rst:699 +#: c-api/module.rst:694 msgid "" "Attaches the module object passed to the function to the interpreter state. " "This allows the module object to be accessible via :c:func:" "`PyState_FindModule`." msgstr "" -#: c-api/module.rst:702 +#: c-api/module.rst:697 msgid "Only effective on modules created using single-phase initialization." msgstr "" -#: c-api/module.rst:704 +#: c-api/module.rst:699 msgid "" -"Python calls ``PyState_AddModule`` automatically after importing a module, " +"Python calls ``PyState_AddModule`` automatically after importing a module " +"that uses :ref:`single-phase initialization `, " "so it is unnecessary (but harmless) to call it from module initialization " "code. An explicit call is needed only if the module's own init code " "subsequently calls ``PyState_FindModule``. The function is mainly intended " @@ -804,15 +778,21 @@ msgid "" "state updates)." msgstr "" -#: c-api/module.rst:723 +#: c-api/module.rst:708 +msgid "" +"If a module was attached previously using the same *def*, it is replaced by " +"the new *module*." +msgstr "" + +#: c-api/module.rst:722 msgid "The caller must have an :term:`attached thread state`." msgstr "" -#: c-api/module.rst:714 +#: c-api/module.rst:713 msgid "Return ``-1`` with an exception set on error, ``0`` on success." msgstr "" -#: c-api/module.rst:720 +#: c-api/module.rst:719 msgid "" "Removes the module object created from *def* from the interpreter state. " "Return ``-1`` with an exception set on error, ``0`` on success." diff --git a/c-api/monitoring.po b/c-api/monitoring.po index 4a57bd2d..72ea2ef1 100644 --- a/c-api/monitoring.po +++ b/c-api/monitoring.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/none.po b/c-api/none.po index 1d5679c3..c719f3a2 100644 --- a/c-api/none.po +++ b/c-api/none.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/number.po b/c-api/number.po index a60e4841..f5640bd0 100644 --- a/c-api/number.po +++ b/c-api/number.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/object.po b/c-api/object.po index 55a10a62..50105219 100644 --- a/c-api/object.po +++ b/c-api/object.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/objimpl.po b/c-api/objimpl.po index b3fa8cfb..8f80a93c 100644 --- a/c-api/objimpl.po +++ b/c-api/objimpl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/perfmaps.po b/c-api/perfmaps.po index ddd2ee0e..0ada290f 100644 --- a/c-api/perfmaps.po +++ b/c-api/perfmaps.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/refcounting.po b/c-api/refcounting.po index ba21ba0c..f7f8f227 100644 --- a/c-api/refcounting.po +++ b/c-api/refcounting.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -284,7 +284,7 @@ msgstr "" #: c-api/refcounting.rst:213 msgid "" -"That arranges to set *dst* to *src* _before_ releasing the reference to the " +"That arranges to set *dst* to *src* *before* releasing the reference to the " "old value of *dst*, so that any code triggered as a side-effect of *dst* " "getting torn down no longer believes *dst* points to a valid object." msgstr "" diff --git a/c-api/reflection.po b/c-api/reflection.po index 4a348a66..fd7c6c8b 100644 --- a/c-api/reflection.po +++ b/c-api/reflection.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/sequence.po b/c-api/sequence.po index 60ddd602..c309dc92 100644 --- a/c-api/sequence.po +++ b/c-api/sequence.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/set.po b/c-api/set.po index e8866195..bbe10037 100644 --- a/c-api/set.po +++ b/c-api/set.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/slice.po b/c-api/slice.po index 2fcf4504..e1718c6c 100644 --- a/c-api/slice.po +++ b/c-api/slice.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/stable.po b/c-api/stable.po index 6c1bbdec..d751f01e 100644 --- a/c-api/stable.po +++ b/c-api/stable.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -91,22 +91,22 @@ msgid "" "spend extra effort adjusting to changes." msgstr "" -#: c-api/stable.rst:56 +#: c-api/stable.rst:57 msgid "Stable Application Binary Interface" msgstr "" -#: c-api/stable.rst:58 +#: c-api/stable.rst:59 msgid "" "For simplicity, this document talks about *extensions*, but the Limited API " "and Stable ABI work the same way for all uses of the API – for example, " "embedding Python." msgstr "" -#: c-api/stable.rst:65 +#: c-api/stable.rst:66 msgid "Limited C API" msgstr "" -#: c-api/stable.rst:67 +#: c-api/stable.rst:68 msgid "" "Python 3.2 introduced the *Limited API*, a subset of Python's C API. " "Extensions that only use the Limited API can be compiled once and be loaded " @@ -114,13 +114,13 @@ msgid "" "below `." msgstr "" -#: c-api/stable.rst:74 +#: c-api/stable.rst:75 msgid "" "Define this macro before including ``Python.h`` to opt in to only use the " "Limited API, and to select the Limited API version." msgstr "" -#: c-api/stable.rst:77 +#: c-api/stable.rst:78 msgid "" "Define ``Py_LIMITED_API`` to the value of :c:macro:`PY_VERSION_HEX` " "corresponding to the lowest Python version your extension supports. The " @@ -128,30 +128,30 @@ msgid "" "specified one onward, and can use Limited API introduced up to that version." msgstr "" -#: c-api/stable.rst:83 +#: c-api/stable.rst:84 msgid "" "Rather than using the ``PY_VERSION_HEX`` macro directly, hardcode a minimum " "minor version (e.g. ``0x030A0000`` for Python 3.10) for stability when " "compiling with future Python versions." msgstr "" -#: c-api/stable.rst:87 +#: c-api/stable.rst:88 msgid "" "You can also define ``Py_LIMITED_API`` to ``3``. This works the same as " "``0x03020000`` (Python 3.2, the version that introduced Limited API)." msgstr "" -#: c-api/stable.rst:94 +#: c-api/stable.rst:95 msgid "Stable ABI" msgstr "" -#: c-api/stable.rst:96 +#: c-api/stable.rst:97 msgid "" "To enable this, Python provides a *Stable ABI*: a set of symbols that will " "remain ABI-compatible across Python 3.x versions." msgstr "" -#: c-api/stable.rst:101 +#: c-api/stable.rst:102 msgid "" "The Stable ABI prevents ABI issues, like linker errors due to missing " "symbols or data corruption due to changes in structure layouts or function " @@ -160,21 +160,21 @@ msgid "" "details." msgstr "" -#: c-api/stable.rst:107 +#: c-api/stable.rst:108 msgid "" "The Stable ABI contains symbols exposed in the :ref:`Limited API `, but also other ones – for example, functions necessary to support " "older versions of the Limited API." msgstr "" -#: c-api/stable.rst:111 +#: c-api/stable.rst:112 msgid "" "On Windows, extensions that use the Stable ABI should be linked against " "``python3.dll`` rather than a version-specific library such as ``python39." "dll``." msgstr "" -#: c-api/stable.rst:115 +#: c-api/stable.rst:116 msgid "" "On some platforms, Python will look for and load shared library files named " "with the ``abi3`` tag (e.g. ``mymodule.abi3.so``). It does not check if such " @@ -183,31 +183,31 @@ msgid "" "not installed for lower versions of Python." msgstr "" -#: c-api/stable.rst:122 +#: c-api/stable.rst:123 msgid "" "All functions in the Stable ABI are present as functions in Python's shared " "library, not solely as macros. This makes them usable from languages that " "don't use the C preprocessor." msgstr "" -#: c-api/stable.rst:128 +#: c-api/stable.rst:129 msgid "Limited API Scope and Performance" msgstr "" -#: c-api/stable.rst:130 +#: c-api/stable.rst:131 msgid "" "The goal for the Limited API is to allow everything that is possible with " "the full C API, but possibly with a performance penalty." msgstr "" -#: c-api/stable.rst:133 +#: c-api/stable.rst:134 msgid "" "For example, while :c:func:`PyList_GetItem` is available, its “unsafe” macro " "variant :c:func:`PyList_GET_ITEM` is not. The macro can be faster because it " "can rely on version-specific implementation details of the list object." msgstr "" -#: c-api/stable.rst:138 +#: c-api/stable.rst:139 msgid "" "Without ``Py_LIMITED_API`` defined, some C API functions are inlined or " "replaced by macros. Defining ``Py_LIMITED_API`` disables this inlining, " @@ -215,7 +215,7 @@ msgid "" "reducing performance." msgstr "" -#: c-api/stable.rst:143 +#: c-api/stable.rst:144 msgid "" "By leaving out the ``Py_LIMITED_API`` definition, it is possible to compile " "a Limited API extension with a version-specific ABI. This can improve " @@ -225,11 +225,11 @@ msgid "" "of an upcoming Python version." msgstr "" -#: c-api/stable.rst:152 +#: c-api/stable.rst:153 msgid "Limited API Caveats" msgstr "" -#: c-api/stable.rst:154 +#: c-api/stable.rst:155 msgid "" "Note that compiling with ``Py_LIMITED_API`` is *not* a complete guarantee " "that code conforms to the :ref:`Limited API ` or the :ref:" @@ -237,7 +237,7 @@ msgid "" "an API also includes other issues, such as expected semantics." msgstr "" -#: c-api/stable.rst:159 +#: c-api/stable.rst:160 msgid "" "One issue that ``Py_LIMITED_API`` does not guard against is calling a " "function with arguments that are invalid in a lower Python version. For " @@ -247,19 +247,19 @@ msgid "" "crash. A similar argument works for fields of structs." msgstr "" -#: c-api/stable.rst:166 +#: c-api/stable.rst:167 msgid "" "Another issue is that some struct fields are currently not hidden when " "``Py_LIMITED_API`` is defined, even though they're part of the Limited API." msgstr "" -#: c-api/stable.rst:169 +#: c-api/stable.rst:170 msgid "" "For these reasons, we recommend testing an extension with *all* minor Python " "versions it supports, and preferably to build with the *lowest* such version." msgstr "" -#: c-api/stable.rst:172 +#: c-api/stable.rst:173 msgid "" "We also recommend reviewing documentation of all used API to check if it is " "explicitly part of the Limited API. Even with ``Py_LIMITED_API`` defined, a " @@ -267,7 +267,7 @@ msgid "" "unintentionally, as bugs)." msgstr "" -#: c-api/stable.rst:177 +#: c-api/stable.rst:178 msgid "" "Also note that the Limited API is not necessarily stable: compiling with " "``Py_LIMITED_API`` with Python 3.8 means that the extension will run with " @@ -276,11 +276,11 @@ msgid "" "that the Stable ABI stays stable." msgstr "" -#: c-api/stable.rst:187 +#: c-api/stable.rst:188 msgid "Platform Considerations" msgstr "" -#: c-api/stable.rst:189 +#: c-api/stable.rst:190 msgid "" "ABI stability depends not only on Python, but also on the compiler used, " "lower-level libraries and compiler options. For the purposes of the :ref:" @@ -288,7 +288,7 @@ msgid "" "depend on the OS type and processor architecture" msgstr "" -#: c-api/stable.rst:194 +#: c-api/stable.rst:195 msgid "" "It is the responsibility of each particular distributor of Python to ensure " "that all Python versions on a particular platform are built in a way that " @@ -296,11 +296,11 @@ msgid "" "releases from ``python.org`` and many third-party distributors." msgstr "" -#: c-api/stable.rst:204 +#: c-api/stable.rst:205 msgid "Contents of Limited API" msgstr "" -#: c-api/stable.rst:207 +#: c-api/stable.rst:208 msgid "" "Currently, the :ref:`Limited API ` includes the following " "items:" diff --git a/c-api/structures.po b/c-api/structures.po index 970141c7..247d920f 100644 --- a/c-api/structures.po +++ b/c-api/structures.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/sys.po b/c-api/sys.po index bdd72865..84d1373f 100644 --- a/c-api/sys.po +++ b/c-api/sys.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/time.po b/c-api/time.po index e5aec016..37e6684c 100644 --- a/c-api/time.po +++ b/c-api/time.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/tuple.po b/c-api/tuple.po index b35789ff..22299644 100644 --- a/c-api/tuple.po +++ b/c-api/tuple.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/type.po b/c-api/type.po index ab2fd58a..4c825543 100644 --- a/c-api/type.po +++ b/c-api/type.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -171,18 +171,37 @@ msgstr "" #: c-api/type.rst:154 msgid "" "Generic handler for the :c:member:`~PyTypeObject.tp_alloc` slot of a type " -"object. Use Python's default memory allocation mechanism to allocate a new " -"instance and initialize all its contents to ``NULL``." +"object. Uses Python's default memory allocation mechanism to allocate " +"memory for a new instance, zeros the memory, then initializes the memory as " +"if by calling :c:func:`PyObject_Init` or :c:func:`PyObject_InitVar`." msgstr "" -#: c-api/type.rst:160 +#: c-api/type.rst:159 +msgid "" +"Do not call this directly to allocate memory for an object; call the type's :" +"c:member:`~PyTypeObject.tp_alloc` slot instead." +msgstr "" + +#: c-api/type.rst:162 +msgid "" +"For types that support garbage collection (i.e., the :c:macro:" +"`Py_TPFLAGS_HAVE_GC` flag is set), this function behaves like :c:macro:" +"`PyObject_GC_New` or :c:macro:`PyObject_GC_NewVar` (except the memory is " +"guaranteed to be zeroed before initialization), and should be paired with :c:" +"func:`PyObject_GC_Del` in :c:member:`~PyTypeObject.tp_free`. Otherwise, it " +"behaves like :c:macro:`PyObject_New` or :c:macro:`PyObject_NewVar` (except " +"the memory is guaranteed to be zeroed before initialization) and should be " +"paired with :c:func:`PyObject_Free` in :c:member:`~PyTypeObject.tp_free`." +msgstr "" + +#: c-api/type.rst:174 msgid "" "Generic handler for the :c:member:`~PyTypeObject.tp_new` slot of a type " -"object. Create a new instance using the type's :c:member:`~PyTypeObject." -"tp_alloc` slot." +"object. Creates a new instance using the type's :c:member:`~PyTypeObject." +"tp_alloc` slot and returns the resulting object." msgstr "" -#: c-api/type.rst:165 +#: c-api/type.rst:180 msgid "" "Finalize a type object. This should be called on all type objects to finish " "their initialization. This function is responsible for adding inherited " @@ -190,7 +209,7 @@ msgid "" "and sets an exception on error." msgstr "" -#: c-api/type.rst:171 +#: c-api/type.rst:186 msgid "" "If some of the base classes implements the GC protocol and the provided type " "does not include the :c:macro:`Py_TPFLAGS_HAVE_GC` in its flags, then the GC " @@ -201,32 +220,32 @@ msgid "" "handle." msgstr "" -#: c-api/type.rst:181 +#: c-api/type.rst:196 msgid "" "Return the type's name. Equivalent to getting the type's :attr:`~type." "__name__` attribute." msgstr "" -#: c-api/type.rst:188 +#: c-api/type.rst:203 msgid "" "Return the type's qualified name. Equivalent to getting the type's :attr:" "`~type.__qualname__` attribute." msgstr "" -#: c-api/type.rst:195 +#: c-api/type.rst:210 msgid "" "Return the type's fully qualified name. Equivalent to ``f\"{type.__module__}." "{type.__qualname__}\"``, or :attr:`type.__qualname__` if :attr:`type." "__module__` is not a string or is equal to ``\"builtins\"``." msgstr "" -#: c-api/type.rst:203 +#: c-api/type.rst:218 msgid "" "Return the type's module name. Equivalent to getting the :attr:`type." "__module__` attribute." msgstr "" -#: c-api/type.rst:210 +#: c-api/type.rst:225 msgid "" "Return the function pointer stored in the given slot. If the result is " "``NULL``, this indicates that either the slot is ``NULL``, or that the " @@ -234,30 +253,30 @@ msgid "" "result pointer into the appropriate function type." msgstr "" -#: c-api/type.rst:216 +#: c-api/type.rst:231 msgid "" "See :c:member:`PyType_Slot.slot` for possible values of the *slot* argument." msgstr "" -#: c-api/type.rst:220 +#: c-api/type.rst:235 msgid "" ":c:func:`PyType_GetSlot` can now accept all types. Previously, it was " "limited to :ref:`heap types `." msgstr "" -#: c-api/type.rst:226 +#: c-api/type.rst:241 msgid "" "Return the module object associated with the given type when the type was " "created using :c:func:`PyType_FromModuleAndSpec`." msgstr "" -#: c-api/type.rst:249 +#: c-api/type.rst:264 msgid "" "If no module is associated with the given type, sets :py:class:`TypeError` " "and returns ``NULL``." msgstr "" -#: c-api/type.rst:232 +#: c-api/type.rst:247 msgid "" "This function is usually used to get the module in which a method is " "defined. Note that in such a method, ``PyType_GetModule(Py_TYPE(self))`` may " @@ -268,31 +287,31 @@ msgid "" "type:`!PyCMethod` cannot be used." msgstr "" -#: c-api/type.rst:245 +#: c-api/type.rst:260 msgid "" "Return the state of the module object associated with the given type. This " "is a shortcut for calling :c:func:`PyModule_GetState()` on the result of :c:" "func:`PyType_GetModule`." msgstr "" -#: c-api/type.rst:252 +#: c-api/type.rst:267 msgid "" "If the *type* has an associated module but its state is ``NULL``, returns " "``NULL`` without setting an exception." msgstr "" -#: c-api/type.rst:259 +#: c-api/type.rst:274 msgid "" "Find the first superclass whose module was created from the given :c:type:" "`PyModuleDef` *def*, and return that module." msgstr "" -#: c-api/type.rst:262 +#: c-api/type.rst:277 msgid "" "If no module is found, raises a :py:class:`TypeError` and returns ``NULL``." msgstr "" -#: c-api/type.rst:264 +#: c-api/type.rst:279 msgid "" "This function is intended to be used together with :c:func:" "`PyModule_GetState()` to get module state from slot methods (such as :c:" @@ -301,78 +320,85 @@ msgid "" "type:`PyCMethod` calling convention." msgstr "" -#: c-api/type.rst:274 +#: c-api/type.rst:285 +msgid "" +"The returned reference is :term:`borrowed ` from *type*, " +"and will be valid as long as you hold a reference to *type*. Do not release " +"it with :c:func:`Py_DECREF` or similar." +msgstr "" + +#: c-api/type.rst:293 msgid "" "Find the first superclass in *type*'s :term:`method resolution order` whose :" "c:macro:`Py_tp_token` token is equal to the given one." msgstr "" -#: c-api/type.rst:277 +#: c-api/type.rst:296 msgid "" "If found, set *\\*result* to a new :term:`strong reference` to it and return " "``1``." msgstr "" -#: c-api/type.rst:279 +#: c-api/type.rst:298 msgid "If not found, set *\\*result* to ``NULL`` and return ``0``." msgstr "" -#: c-api/type.rst:280 +#: c-api/type.rst:299 msgid "" "On error, set *\\*result* to ``NULL`` and return ``-1`` with an exception " "set." msgstr "" -#: c-api/type.rst:283 +#: c-api/type.rst:302 msgid "" "The *result* argument may be ``NULL``, in which case *\\*result* is not set. " "Use this if you need only the return value." msgstr "" -#: c-api/type.rst:286 +#: c-api/type.rst:305 msgid "The *token* argument may not be ``NULL``." msgstr "" -#: c-api/type.rst:292 +#: c-api/type.rst:311 msgid "Attempt to assign a version tag to the given type." msgstr "" -#: c-api/type.rst:294 +#: c-api/type.rst:313 msgid "" "Returns 1 if the type already had a valid version tag or a new one was " "assigned, or 0 if a new tag could not be assigned." msgstr "" -#: c-api/type.rst:301 +#: c-api/type.rst:320 msgid "Creating Heap-Allocated Types" msgstr "" -#: c-api/type.rst:303 +#: c-api/type.rst:322 msgid "" "The following functions and structs are used to create :ref:`heap types " "`." msgstr "" -#: c-api/type.rst:308 +#: c-api/type.rst:327 msgid "" "Create and return a :ref:`heap type ` from the *spec* (see :c:" "macro:`Py_TPFLAGS_HEAPTYPE`)." msgstr "" -#: c-api/type.rst:311 +#: c-api/type.rst:330 msgid "" "The metaclass *metaclass* is used to construct the resulting type object. " "When *metaclass* is ``NULL``, the metaclass is derived from *bases* (or " "*Py_tp_base[s]* slots if *bases* is ``NULL``, see below)." msgstr "" -#: c-api/type.rst:315 +#: c-api/type.rst:334 msgid "" "Metaclasses that override :c:member:`~PyTypeObject.tp_new` are not " "supported, except if ``tp_new`` is ``NULL``." msgstr "" -#: c-api/type.rst:318 +#: c-api/type.rst:337 msgid "" "The *bases* argument can be used to specify base classes; it can either be " "only one class or a tuple of classes. If *bases* is ``NULL``, the " @@ -381,7 +407,7 @@ msgid "" "derives from :class:`object`." msgstr "" -#: c-api/type.rst:324 +#: c-api/type.rst:343 msgid "" "The *module* argument can be used to record the module in which the new " "class is defined. It must be a module object or ``NULL``. If not ``NULL``, " @@ -390,11 +416,11 @@ msgid "" "subclasses; it must be specified for each class individually." msgstr "" -#: c-api/type.rst:331 +#: c-api/type.rst:350 msgid "This function calls :c:func:`PyType_Ready` on the new type." msgstr "" -#: c-api/type.rst:333 +#: c-api/type.rst:352 msgid "" "Note that this function does *not* fully match the behavior of calling :py:" "class:`type() ` or using the :keyword:`class` statement. With user-" @@ -403,108 +429,108 @@ msgid "" "Specifically:" msgstr "" -#: c-api/type.rst:340 +#: c-api/type.rst:359 msgid "" ":py:meth:`~object.__new__` is not called on the new class (and it must be " "set to ``type.__new__``)." msgstr "" -#: c-api/type.rst:342 +#: c-api/type.rst:361 msgid ":py:meth:`~object.__init__` is not called on the new class." msgstr "" -#: c-api/type.rst:343 +#: c-api/type.rst:362 msgid ":py:meth:`~object.__init_subclass__` is not called on any bases." msgstr "" -#: c-api/type.rst:344 +#: c-api/type.rst:363 msgid ":py:meth:`~object.__set_name__` is not called on new descriptors." msgstr "" -#: c-api/type.rst:350 +#: c-api/type.rst:369 msgid "Equivalent to ``PyType_FromMetaclass(NULL, module, spec, bases)``." msgstr "" -#: c-api/type.rst:356 +#: c-api/type.rst:375 msgid "" "The function now accepts a single class as the *bases* argument and ``NULL`` " "as the ``tp_doc`` slot." msgstr "" -#: c-api/type.rst:382 +#: c-api/type.rst:401 msgid "" "The function now finds and uses a metaclass corresponding to the provided " "base classes. Previously, only :class:`type` instances were returned." msgstr "" -#: c-api/type.rst:385 c-api/type.rst:405 +#: c-api/type.rst:404 c-api/type.rst:424 msgid "" "The :c:member:`~PyTypeObject.tp_new` of the metaclass is *ignored*. which " "may result in incomplete initialization. Creating classes whose metaclass " "overrides :c:member:`~PyTypeObject.tp_new` is deprecated." msgstr "" -#: c-api/type.rst:392 c-api/type.rst:412 +#: c-api/type.rst:411 c-api/type.rst:431 msgid "" "Creating classes whose metaclass overrides :c:member:`~PyTypeObject.tp_new` " "is no longer allowed." msgstr "" -#: c-api/type.rst:376 +#: c-api/type.rst:395 msgid "Equivalent to ``PyType_FromMetaclass(NULL, NULL, spec, bases)``." msgstr "" -#: c-api/type.rst:397 +#: c-api/type.rst:416 msgid "Equivalent to ``PyType_FromMetaclass(NULL, NULL, spec, NULL)``." msgstr "" -#: c-api/type.rst:401 +#: c-api/type.rst:420 msgid "" "The function now finds and uses a metaclass corresponding to the base " "classes provided in *Py_tp_base[s]* slots. Previously, only :class:`type` " "instances were returned." msgstr "" -#: c-api/type.rst:417 +#: c-api/type.rst:436 msgid "" "Make a type immutable: set the :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` flag." msgstr "" -#: c-api/type.rst:419 +#: c-api/type.rst:438 msgid "All base classes of *type* must be immutable." msgstr "" -#: c-api/type.rst:421 +#: c-api/type.rst:440 msgid "On success, return ``0``. On error, set an exception and return ``-1``." msgstr "" -#: c-api/type.rst:424 +#: c-api/type.rst:443 msgid "" "The type must not be used before it's made immutable. For example, type " "instances must not be created before the type is made immutable." msgstr "" -#: c-api/type.rst:440 +#: c-api/type.rst:459 msgid "Structure defining a type's behavior." msgstr "" -#: c-api/type.rst:444 +#: c-api/type.rst:463 msgid "Name of the type, used to set :c:member:`PyTypeObject.tp_name`." msgstr "" -#: c-api/type.rst:448 +#: c-api/type.rst:467 msgid "" "If positive, specifies the size of the instance in bytes. It is used to set :" "c:member:`PyTypeObject.tp_basicsize`." msgstr "" -#: c-api/type.rst:451 +#: c-api/type.rst:470 msgid "" "If zero, specifies that :c:member:`~PyTypeObject.tp_basicsize` should be " "inherited." msgstr "" -#: c-api/type.rst:454 +#: c-api/type.rst:473 msgid "" "If negative, the absolute value specifies how much space instances of the " "class need *in addition* to the superclass. Use :c:func:" @@ -514,17 +540,17 @@ msgid "" "requirements." msgstr "" -#: c-api/type.rst:464 +#: c-api/type.rst:483 msgid "Previously, this field could not be negative." msgstr "" -#: c-api/type.rst:468 +#: c-api/type.rst:487 msgid "" "Size of one element of a variable-size type, in bytes. Used to set :c:member:" "`PyTypeObject.tp_itemsize`. See ``tp_itemsize`` documentation for caveats." msgstr "" -#: c-api/type.rst:472 +#: c-api/type.rst:491 msgid "" "If zero, :c:member:`~PyTypeObject.tp_itemsize` is inherited. Extending " "arbitrary variable-sized classes is dangerous, since some types use a fixed " @@ -533,58 +559,58 @@ msgid "" "only possible in the following situations:" msgstr "" -#: c-api/type.rst:479 +#: c-api/type.rst:498 msgid "" "The base is not variable-sized (its :c:member:`~PyTypeObject.tp_itemsize`)." msgstr "" -#: c-api/type.rst:481 +#: c-api/type.rst:500 msgid "" "The requested :c:member:`PyType_Spec.basicsize` is positive, suggesting that " "the memory layout of the base class is known." msgstr "" -#: c-api/type.rst:483 +#: c-api/type.rst:502 msgid "" "The requested :c:member:`PyType_Spec.basicsize` is zero, suggesting that the " "subclass does not access the instance's memory directly." msgstr "" -#: c-api/type.rst:486 +#: c-api/type.rst:505 msgid "With the :c:macro:`Py_TPFLAGS_ITEMS_AT_END` flag." msgstr "" -#: c-api/type.rst:490 +#: c-api/type.rst:509 msgid "Type flags, used to set :c:member:`PyTypeObject.tp_flags`." msgstr "" -#: c-api/type.rst:492 +#: c-api/type.rst:511 msgid "" "If the ``Py_TPFLAGS_HEAPTYPE`` flag is not set, :c:func:" "`PyType_FromSpecWithBases` sets it automatically." msgstr "" -#: c-api/type.rst:497 +#: c-api/type.rst:516 msgid "" "Array of :c:type:`PyType_Slot` structures. Terminated by the special slot " "value ``{0, NULL}``." msgstr "" -#: c-api/type.rst:500 +#: c-api/type.rst:519 msgid "Each slot ID should be specified at most once." msgstr "" -#: c-api/type.rst:510 +#: c-api/type.rst:529 msgid "" "Structure defining optional functionality of a type, containing a slot ID " "and a value pointer." msgstr "" -#: c-api/type.rst:515 +#: c-api/type.rst:534 msgid "A slot ID." msgstr "" -#: c-api/type.rst:517 +#: c-api/type.rst:536 msgid "" "Slot IDs are named like the field names of the structures :c:type:" "`PyTypeObject`, :c:type:`PyNumberMethods`, :c:type:`PySequenceMethods`, :c:" @@ -592,52 +618,52 @@ msgid "" "prefix. For example, use:" msgstr "" -#: c-api/type.rst:523 +#: c-api/type.rst:542 msgid "``Py_tp_dealloc`` to set :c:member:`PyTypeObject.tp_dealloc`" msgstr "" -#: c-api/type.rst:524 +#: c-api/type.rst:543 msgid "``Py_nb_add`` to set :c:member:`PyNumberMethods.nb_add`" msgstr "" -#: c-api/type.rst:525 +#: c-api/type.rst:544 msgid "``Py_sq_length`` to set :c:member:`PySequenceMethods.sq_length`" msgstr "" -#: c-api/type.rst:527 +#: c-api/type.rst:546 msgid "" "An additional slot is supported that does not correspond to a :c:type:`!" "PyTypeObject` struct field:" msgstr "" -#: c-api/type.rst:530 +#: c-api/type.rst:549 msgid ":c:data:`Py_tp_token`" msgstr "" -#: c-api/type.rst:532 +#: c-api/type.rst:551 msgid "" "The following “offset” fields cannot be set using :c:type:`PyType_Slot`:" msgstr "" -#: c-api/type.rst:534 +#: c-api/type.rst:553 msgid "" ":c:member:`~PyTypeObject.tp_weaklistoffset` (use :c:macro:" "`Py_TPFLAGS_MANAGED_WEAKREF` instead if possible)" msgstr "" -#: c-api/type.rst:536 +#: c-api/type.rst:555 msgid "" ":c:member:`~PyTypeObject.tp_dictoffset` (use :c:macro:" "`Py_TPFLAGS_MANAGED_DICT` instead if possible)" msgstr "" -#: c-api/type.rst:538 +#: c-api/type.rst:557 msgid "" ":c:member:`~PyTypeObject.tp_vectorcall_offset` (use " "``\"__vectorcalloffset__\"`` in :ref:`PyMemberDef `)" msgstr "" -#: c-api/type.rst:542 +#: c-api/type.rst:561 msgid "" "If it is not possible to switch to a ``MANAGED`` flag (for example, for " "vectorcall or to support Python older than 3.12), specify the offset in :c:" @@ -645,109 +671,109 @@ msgid "" "documentation ` for details." msgstr "" -#: c-api/type.rst:548 +#: c-api/type.rst:567 msgid "" "The following internal fields cannot be set at all when creating a heap type:" msgstr "" -#: c-api/type.rst:551 +#: c-api/type.rst:570 msgid "" ":c:member:`~PyTypeObject.tp_dict`, :c:member:`~PyTypeObject.tp_mro`, :c:" "member:`~PyTypeObject.tp_cache`, :c:member:`~PyTypeObject.tp_subclasses`, " "and :c:member:`~PyTypeObject.tp_weaklist`." msgstr "" -#: c-api/type.rst:557 +#: c-api/type.rst:576 msgid "" "Setting :c:data:`Py_tp_bases` or :c:data:`Py_tp_base` may be problematic on " "some platforms. To avoid issues, use the *bases* argument of :c:func:" "`PyType_FromSpecWithBases` instead." msgstr "" -#: c-api/type.rst:562 +#: c-api/type.rst:581 msgid "Slots in :c:type:`PyBufferProcs` may be set in the unlimited API." msgstr "" -#: c-api/type.rst:565 +#: c-api/type.rst:584 msgid "" ":c:member:`~PyBufferProcs.bf_getbuffer` and :c:member:`~PyBufferProcs." "bf_releasebuffer` are now available under the :ref:`limited API `." msgstr "" -#: c-api/type.rst:570 +#: c-api/type.rst:589 msgid "" "The field :c:member:`~PyTypeObject.tp_vectorcall` can now set using " "``Py_tp_vectorcall``. See the field's documentation for details." msgstr "" -#: c-api/type.rst:577 +#: c-api/type.rst:596 msgid "" "The desired value of the slot. In most cases, this is a pointer to a " "function." msgstr "" -#: c-api/type.rst:580 +#: c-api/type.rst:599 msgid "*pfunc* values may not be ``NULL``, except for the following slots:" msgstr "" -#: c-api/type.rst:582 +#: c-api/type.rst:601 msgid "``Py_tp_doc``" msgstr "" -#: c-api/type.rst:583 +#: c-api/type.rst:602 msgid "" ":c:data:`Py_tp_token` (for clarity, prefer :c:data:`Py_TP_USE_SPEC` rather " "than ``NULL``)" msgstr "" -#: c-api/type.rst:588 +#: c-api/type.rst:607 msgid "" "A :c:member:`~PyType_Slot.slot` that records a static memory layout ID for a " "class." msgstr "" -#: c-api/type.rst:591 +#: c-api/type.rst:610 msgid "" "If the :c:type:`PyType_Spec` of the class is statically allocated, the token " "can be set to the spec using the special value :c:data:`Py_TP_USE_SPEC`:" msgstr "" -#: c-api/type.rst:595 +#: c-api/type.rst:614 msgid "" "static PyType_Slot foo_slots[] = {\n" " {Py_tp_token, Py_TP_USE_SPEC}," msgstr "" -#: c-api/type.rst:600 +#: c-api/type.rst:619 msgid "It can also be set to an arbitrary pointer, but you must ensure that:" msgstr "" -#: c-api/type.rst:602 +#: c-api/type.rst:621 msgid "" "The pointer outlives the class, so it's not reused for something else while " "the class exists." msgstr "" -#: c-api/type.rst:604 +#: c-api/type.rst:623 msgid "" "It \"belongs\" to the extension module where the class lives, so it will not " "clash with other extensions." msgstr "" -#: c-api/type.rst:607 +#: c-api/type.rst:626 msgid "" "Use :c:func:`PyType_GetBaseByToken` to check if a class's superclass has a " "given token -- that is, check whether the memory layout is compatible." msgstr "" -#: c-api/type.rst:610 +#: c-api/type.rst:629 msgid "" "To get the token for a given class (without considering superclasses), use :" "c:func:`PyType_GetSlot` with ``Py_tp_token``." msgstr "" -#: c-api/type.rst:619 +#: c-api/type.rst:638 msgid "" "Used as a value with :c:data:`Py_tp_token` to set the token to the class's :" "c:type:`PyType_Spec`. Expands to ``NULL``." diff --git a/c-api/typehints.po b/c-api/typehints.po index 0bd934e3..4a178450 100644 --- a/c-api/typehints.po +++ b/c-api/typehints.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/typeobj.po b/c-api/typeobj.po index 2dcef47e..4931341e 100644 --- a/c-api/typeobj.po +++ b/c-api/typeobj.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -115,7 +115,7 @@ msgid ":c:member:`~PyTypeObject.tp_basicsize`" msgstr "" #: c-api/typeobj.rst:46 c-api/typeobj.rst:52 c-api/typeobj.rst:120 -#: c-api/typeobj.rst:416 +#: c-api/typeobj.rst:417 msgid ":c:type:`Py_ssize_t`" msgstr "" @@ -127,7 +127,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_dealloc`" msgstr "" -#: c-api/typeobj.rst:142 c-api/typeobj.rst:346 +#: c-api/typeobj.rst:142 c-api/typeobj.rst:347 msgid ":c:type:`destructor`" msgstr "" @@ -139,7 +139,7 @@ msgstr "" msgid "(:c:member:`~PyTypeObject.tp_getattr`)" msgstr "" -#: c-api/typeobj.rst:370 +#: c-api/typeobj.rst:371 msgid ":c:type:`getattrfunc`" msgstr "" @@ -156,7 +156,7 @@ msgstr "" msgid "(:c:member:`~PyTypeObject.tp_setattr`)" msgstr "" -#: c-api/typeobj.rst:375 +#: c-api/typeobj.rst:376 msgid ":c:type:`setattrfunc`" msgstr "" @@ -172,7 +172,7 @@ msgstr "" msgid ":c:type:`PyAsyncMethods` *" msgstr "" -#: c-api/typeobj.rst:64 c-api/typeobj.rst:68 +#: c-api/typeobj.rst:64 c-api/typeobj.rst:68 c-api/typeobj.rst:82 msgid ":ref:`sub-slots`" msgstr "" @@ -184,7 +184,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_repr`" msgstr "" -#: c-api/typeobj.rst:74 c-api/typeobj.rst:368 +#: c-api/typeobj.rst:74 c-api/typeobj.rst:369 msgid ":c:type:`reprfunc`" msgstr "" @@ -220,7 +220,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_hash`" msgstr "" -#: c-api/typeobj.rst:404 +#: c-api/typeobj.rst:405 msgid ":c:type:`hashfunc`" msgstr "" @@ -232,7 +232,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_call`" msgstr "" -#: c-api/typeobj.rst:237 c-api/typeobj.rst:440 +#: c-api/typeobj.rst:237 c-api/typeobj.rst:441 msgid ":c:type:`ternaryfunc`" msgstr "" @@ -252,7 +252,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_getattro`" msgstr "" -#: c-api/typeobj.rst:381 +#: c-api/typeobj.rst:382 msgid ":c:type:`getattrofunc`" msgstr "" @@ -260,7 +260,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_setattro`" msgstr "" -#: c-api/typeobj.rst:386 +#: c-api/typeobj.rst:387 msgid ":c:type:`setattrofunc`" msgstr "" @@ -297,7 +297,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_traverse`" msgstr "" -#: c-api/typeobj.rst:350 +#: c-api/typeobj.rst:351 msgid ":c:type:`traverseproc`" msgstr "" @@ -305,7 +305,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_clear`" msgstr "" -#: c-api/typeobj.rst:130 c-api/typeobj.rst:429 +#: c-api/typeobj.rst:130 c-api/typeobj.rst:430 msgid ":c:type:`inquiry`" msgstr "" @@ -313,7 +313,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_richcompare`" msgstr "" -#: c-api/typeobj.rst:406 +#: c-api/typeobj.rst:407 msgid ":c:type:`richcmpfunc`" msgstr "" @@ -329,7 +329,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_iter`" msgstr "" -#: c-api/typeobj.rst:412 +#: c-api/typeobj.rst:413 msgid ":c:type:`getiterfunc`" msgstr "" @@ -341,7 +341,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_iternext`" msgstr "" -#: c-api/typeobj.rst:414 +#: c-api/typeobj.rst:415 msgid ":c:type:`iternextfunc`" msgstr "" @@ -390,9 +390,9 @@ msgid ":c:member:`~PyTypeObject.tp_dict`" msgstr "" #: c-api/typeobj.rst:113 c-api/typeobj.rst:134 c-api/typeobj.rst:140 -#: c-api/typeobj.rst:346 c-api/typeobj.rst:368 c-api/typeobj.rst:381 -#: c-api/typeobj.rst:404 c-api/typeobj.rst:412 c-api/typeobj.rst:416 -#: c-api/typeobj.rst:431 c-api/typeobj.rst:440 c-api/typeobj.rst:446 +#: c-api/typeobj.rst:347 c-api/typeobj.rst:369 c-api/typeobj.rst:382 +#: c-api/typeobj.rst:405 c-api/typeobj.rst:413 c-api/typeobj.rst:417 +#: c-api/typeobj.rst:432 c-api/typeobj.rst:441 c-api/typeobj.rst:447 msgid ":c:type:`PyObject` *" msgstr "" @@ -404,7 +404,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_descr_get`" msgstr "" -#: c-api/typeobj.rst:392 +#: c-api/typeobj.rst:393 msgid ":c:type:`descrgetfunc`" msgstr "" @@ -416,7 +416,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_descr_set`" msgstr "" -#: c-api/typeobj.rst:398 +#: c-api/typeobj.rst:399 msgid ":c:type:`descrsetfunc`" msgstr "" @@ -432,7 +432,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_init`" msgstr "" -#: c-api/typeobj.rst:362 +#: c-api/typeobj.rst:363 msgid ":c:type:`initproc`" msgstr "" @@ -444,7 +444,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_alloc`" msgstr "" -#: c-api/typeobj.rst:341 +#: c-api/typeobj.rst:342 msgid ":c:type:`allocfunc`" msgstr "" @@ -452,7 +452,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_new`" msgstr "" -#: c-api/typeobj.rst:356 +#: c-api/typeobj.rst:357 msgid ":c:type:`newfunc`" msgstr "" @@ -464,7 +464,7 @@ msgstr "" msgid ":c:member:`~PyTypeObject.tp_free`" msgstr "" -#: c-api/typeobj.rst:348 +#: c-api/typeobj.rst:349 msgid ":c:type:`freefunc`" msgstr "" @@ -500,7 +500,7 @@ msgstr "" msgid "[:c:member:`~PyTypeObject.tp_subclasses`]" msgstr "" -#: c-api/typeobj.rst:138 c-api/typeobj.rst:348 +#: c-api/typeobj.rst:138 c-api/typeobj.rst:349 msgid "void *" msgstr "" @@ -630,7 +630,7 @@ msgid ":c:member:`~PyAsyncMethods.am_await`" msgstr "" #: c-api/typeobj.rst:206 c-api/typeobj.rst:242 c-api/typeobj.rst:246 -#: c-api/typeobj.rst:277 c-api/typeobj.rst:291 c-api/typeobj.rst:431 +#: c-api/typeobj.rst:277 c-api/typeobj.rst:291 c-api/typeobj.rst:432 msgid ":c:type:`unaryfunc`" msgstr "" @@ -670,7 +670,7 @@ msgstr "" #: c-api/typeobj.rst:232 c-api/typeobj.rst:252 c-api/typeobj.rst:257 #: c-api/typeobj.rst:262 c-api/typeobj.rst:267 c-api/typeobj.rst:272 #: c-api/typeobj.rst:283 c-api/typeobj.rst:287 c-api/typeobj.rst:293 -#: c-api/typeobj.rst:302 c-api/typeobj.rst:322 c-api/typeobj.rst:435 +#: c-api/typeobj.rst:302 c-api/typeobj.rst:322 c-api/typeobj.rst:436 msgid ":c:type:`binaryfunc`" msgstr "" @@ -958,7 +958,7 @@ msgstr "" msgid ":c:member:`~PyMappingMethods.mp_length`" msgstr "" -#: c-api/typeobj.rst:309 c-api/typeobj.rst:416 +#: c-api/typeobj.rst:309 c-api/typeobj.rst:417 msgid ":c:type:`lenfunc`" msgstr "" @@ -978,7 +978,7 @@ msgstr "" msgid ":c:member:`~PyMappingMethods.mp_ass_subscript`" msgstr "" -#: c-api/typeobj.rst:462 +#: c-api/typeobj.rst:463 msgid ":c:type:`objobjargproc`" msgstr "" @@ -1002,7 +1002,7 @@ msgstr "" msgid ":c:member:`~PySequenceMethods.sq_repeat`" msgstr "" -#: c-api/typeobj.rst:315 c-api/typeobj.rst:446 +#: c-api/typeobj.rst:315 c-api/typeobj.rst:447 msgid ":c:type:`ssizeargfunc`" msgstr "" @@ -1018,7 +1018,7 @@ msgstr "" msgid ":c:member:`~PySequenceMethods.sq_ass_item`" msgstr "" -#: c-api/typeobj.rst:451 +#: c-api/typeobj.rst:452 msgid ":c:type:`ssizeobjargproc`" msgstr "" @@ -1030,7 +1030,7 @@ msgstr "" msgid ":c:member:`~PySequenceMethods.sq_contains`" msgstr "" -#: c-api/typeobj.rst:457 +#: c-api/typeobj.rst:458 msgid ":c:type:`objobjproc`" msgstr "" @@ -1054,6 +1054,10 @@ msgstr "" msgid ":c:func:`getbufferproc`" msgstr "" +#: c-api/typeobj.rst:328 +msgid "__buffer__" +msgstr "" + #: c-api/typeobj.rst:330 msgid ":c:member:`~PyBufferProcs.bf_releasebuffer`" msgstr "" @@ -1062,23 +1066,27 @@ msgstr "" msgid ":c:func:`releasebufferproc`" msgstr "" -#: c-api/typeobj.rst:336 +#: c-api/typeobj.rst:330 +msgid "__release_\\ buffer\\__" +msgstr "" + +#: c-api/typeobj.rst:337 msgid "slot typedefs" msgstr "" -#: c-api/typeobj.rst:339 +#: c-api/typeobj.rst:340 msgid "typedef" msgstr "" -#: c-api/typeobj.rst:339 +#: c-api/typeobj.rst:340 msgid "Parameter Types" msgstr "" -#: c-api/typeobj.rst:339 +#: c-api/typeobj.rst:340 msgid "Return Type" msgstr "" -#: c-api/typeobj.rst:348 c-api/typeobj.rst:424 +#: c-api/typeobj.rst:349 c-api/typeobj.rst:425 msgid "void" msgstr "" @@ -1086,16 +1094,16 @@ msgstr "" msgid ":c:type:`visitproc`" msgstr "" -#: c-api/typeobj.rst:350 c-api/typeobj.rst:375 c-api/typeobj.rst:398 -#: c-api/typeobj.rst:429 c-api/typeobj.rst:457 c-api/typeobj.rst:462 +#: c-api/typeobj.rst:351 c-api/typeobj.rst:376 c-api/typeobj.rst:399 +#: c-api/typeobj.rst:430 c-api/typeobj.rst:458 c-api/typeobj.rst:463 msgid "int" msgstr "" -#: c-api/typeobj.rst:404 +#: c-api/typeobj.rst:405 msgid "Py_hash_t" msgstr "" -#: c-api/typeobj.rst:418 +#: c-api/typeobj.rst:419 msgid ":c:type:`getbufferproc`" msgstr "" @@ -1103,26 +1111,26 @@ msgstr "" msgid ":c:type:`Py_buffer` *" msgstr "" -#: c-api/typeobj.rst:424 +#: c-api/typeobj.rst:425 msgid ":c:type:`releasebufferproc`" msgstr "" -#: c-api/typeobj.rst:469 +#: c-api/typeobj.rst:470 msgid "See :ref:`slot-typedefs` below for more detail." msgstr "" -#: c-api/typeobj.rst:473 +#: c-api/typeobj.rst:474 msgid "PyTypeObject Definition" msgstr "" -#: c-api/typeobj.rst:475 +#: c-api/typeobj.rst:476 msgid "" "The structure definition for :c:type:`PyTypeObject` can be found in :file:" "`Include/cpython/object.h`. For convenience of reference, this repeats the " "definition found there:" msgstr "" -#: c-api/typeobj.rst:481 +#: c-api/typeobj.rst:482 msgid "" "typedef struct _typeobject {\n" " PyObject_VAR_HEAD\n" @@ -1221,11 +1229,11 @@ msgid "" "} PyTypeObject;\n" msgstr "" -#: c-api/typeobj.rst:485 +#: c-api/typeobj.rst:486 msgid "PyObject Slots" msgstr "" -#: c-api/typeobj.rst:487 +#: c-api/typeobj.rst:488 msgid "" "The type object structure extends the :c:type:`PyVarObject` structure. The :" "c:member:`~PyVarObject.ob_size` field is used for dynamic types (created by :" @@ -1235,7 +1243,7 @@ msgid "" "the :c:member:`~PyVarObject.ob_size` field." msgstr "" -#: c-api/typeobj.rst:496 +#: c-api/typeobj.rst:497 msgid "" "This is the type object's reference count, initialized to ``1`` by the " "``PyObject_HEAD_INIT`` macro. Note that for :ref:`statically allocated type " @@ -1245,25 +1253,25 @@ msgid "" "instances *do* count as references." msgstr "" -#: c-api/typeobj.rst:526 c-api/typeobj.rst:587 c-api/typeobj.rst:746 -#: c-api/typeobj.rst:804 c-api/typeobj.rst:839 c-api/typeobj.rst:880 -#: c-api/typeobj.rst:904 c-api/typeobj.rst:959 c-api/typeobj.rst:1000 -#: c-api/typeobj.rst:1045 c-api/typeobj.rst:1101 c-api/typeobj.rst:1122 -#: c-api/typeobj.rst:1146 c-api/typeobj.rst:1187 c-api/typeobj.rst:1218 -#: c-api/typeobj.rst:1284 c-api/typeobj.rst:1324 c-api/typeobj.rst:1376 -#: c-api/typeobj.rst:1488 c-api/typeobj.rst:1624 c-api/typeobj.rst:1685 -#: c-api/typeobj.rst:1721 c-api/typeobj.rst:1750 c-api/typeobj.rst:1812 -#: c-api/typeobj.rst:1856 c-api/typeobj.rst:1929 c-api/typeobj.rst:1987 -#: c-api/typeobj.rst:2041 c-api/typeobj.rst:2082 c-api/typeobj.rst:2109 -#: c-api/typeobj.rst:2140 c-api/typeobj.rst:2225 +#: c-api/typeobj.rst:527 c-api/typeobj.rst:588 c-api/typeobj.rst:808 +#: c-api/typeobj.rst:870 c-api/typeobj.rst:905 c-api/typeobj.rst:946 +#: c-api/typeobj.rst:970 c-api/typeobj.rst:1025 c-api/typeobj.rst:1066 +#: c-api/typeobj.rst:1111 c-api/typeobj.rst:1167 c-api/typeobj.rst:1188 +#: c-api/typeobj.rst:1212 c-api/typeobj.rst:1253 c-api/typeobj.rst:1284 +#: c-api/typeobj.rst:1350 c-api/typeobj.rst:1390 c-api/typeobj.rst:1442 +#: c-api/typeobj.rst:1559 c-api/typeobj.rst:1768 c-api/typeobj.rst:1829 +#: c-api/typeobj.rst:1865 c-api/typeobj.rst:1894 c-api/typeobj.rst:1956 +#: c-api/typeobj.rst:2000 c-api/typeobj.rst:2073 c-api/typeobj.rst:2130 +#: c-api/typeobj.rst:2191 c-api/typeobj.rst:2232 c-api/typeobj.rst:2259 +#: c-api/typeobj.rst:2290 c-api/typeobj.rst:2490 msgid "**Inheritance:**" msgstr "" -#: c-api/typeobj.rst:545 c-api/typeobj.rst:589 +#: c-api/typeobj.rst:546 c-api/typeobj.rst:590 msgid "This field is not inherited by subtypes." msgstr "" -#: c-api/typeobj.rst:510 +#: c-api/typeobj.rst:511 msgid "" "This is the type's type, in other words its metatype. It is initialized by " "the argument to the ``PyObject_HEAD_INIT`` macro, and its value should " @@ -1275,11 +1283,11 @@ msgid "" "doing anything else. This is typically done like this::" msgstr "" -#: c-api/typeobj.rst:519 +#: c-api/typeobj.rst:520 msgid "Foo_Type.ob_type = &PyType_Type;" msgstr "" -#: c-api/typeobj.rst:521 +#: c-api/typeobj.rst:522 msgid "" "This should be done before any instances of the type are created. :c:func:" "`PyType_Ready` checks if :c:member:`~PyObject.ob_type` is ``NULL``, and if " @@ -1287,33 +1295,33 @@ msgid "" "class. :c:func:`PyType_Ready` will not change this field if it is non-zero." msgstr "" -#: c-api/typeobj.rst:748 c-api/typeobj.rst:961 c-api/typeobj.rst:1687 -#: c-api/typeobj.rst:1840 c-api/typeobj.rst:1931 c-api/typeobj.rst:2175 +#: c-api/typeobj.rst:810 c-api/typeobj.rst:1027 c-api/typeobj.rst:1831 +#: c-api/typeobj.rst:1984 c-api/typeobj.rst:2075 c-api/typeobj.rst:2434 msgid "This field is inherited by subtypes." msgstr "" -#: c-api/typeobj.rst:532 +#: c-api/typeobj.rst:533 msgid "PyVarObject Slots" msgstr "" -#: c-api/typeobj.rst:536 +#: c-api/typeobj.rst:537 msgid "" "For :ref:`statically allocated type objects `, this should be " "initialized to zero. For :ref:`dynamically allocated type objects `, this field has a special internal meaning." msgstr "" -#: c-api/typeobj.rst:540 +#: c-api/typeobj.rst:541 msgid "" "This field should be accessed using the :c:func:`Py_SIZE()` and :c:func:" "`Py_SET_SIZE()` macros." msgstr "" -#: c-api/typeobj.rst:549 +#: c-api/typeobj.rst:550 msgid "PyTypeObject Slots" msgstr "" -#: c-api/typeobj.rst:551 +#: c-api/typeobj.rst:552 msgid "" "Each slot has a section describing inheritance. If :c:func:`PyType_Ready` " "may set a value when the field is set to ``NULL`` then there will also be a " @@ -1321,7 +1329,7 @@ msgid "" "`PyBaseObject_Type` and :c:data:`PyType_Type` effectively act as defaults.)" msgstr "" -#: c-api/typeobj.rst:558 +#: c-api/typeobj.rst:559 msgid "" "Pointer to a NUL-terminated string containing the name of the type. For " "types that are accessible as module globals, the string should be the full " @@ -1333,14 +1341,14 @@ msgid "" "tp_name` initializer ``\"P.Q.M.T\"``." msgstr "" -#: c-api/typeobj.rst:566 +#: c-api/typeobj.rst:567 msgid "" "For :ref:`dynamically allocated type objects `, this should just " "be the type name, and the module name explicitly stored in the type dict as " "the value for key ``'__module__'``." msgstr "" -#: c-api/typeobj.rst:571 +#: c-api/typeobj.rst:572 msgid "" "For :ref:`statically allocated type objects `, the *tp_name* " "field should contain a dot. Everything before the last dot is made " @@ -1348,7 +1356,7 @@ msgid "" "the last dot is made accessible as the :attr:`~type.__name__` attribute." msgstr "" -#: c-api/typeobj.rst:577 +#: c-api/typeobj.rst:578 msgid "" "If no dot is present, the entire :c:member:`~PyTypeObject.tp_name` field is " "made accessible as the :attr:`~type.__name__` attribute, and the :attr:" @@ -1358,19 +1366,19 @@ msgid "" "created with pydoc." msgstr "" -#: c-api/typeobj.rst:583 +#: c-api/typeobj.rst:584 msgid "" "This field must not be ``NULL``. It is the only required field in :c:func:" "`PyTypeObject` (other than potentially :c:member:`~PyTypeObject." "tp_itemsize`)." msgstr "" -#: c-api/typeobj.rst:595 +#: c-api/typeobj.rst:596 msgid "" "These fields allow calculating the size in bytes of instances of the type." msgstr "" -#: c-api/typeobj.rst:597 +#: c-api/typeobj.rst:598 msgid "" "There are two kinds of types: types with fixed-length instances have a zero :" "c:member:`!tp_itemsize` field, types with variable-length instances have a " @@ -1380,7 +1388,7 @@ msgid "" "`PyUnstable_Object_GC_NewWithExtraData`.)" msgstr "" -#: c-api/typeobj.rst:604 +#: c-api/typeobj.rst:605 msgid "" "For a type with variable-length instances, the instances must have an :c:" "member:`~PyVarObject.ob_size` field, and the instance size is :c:member:`!" @@ -1388,7 +1396,7 @@ msgid "" "\"length\" of the object." msgstr "" -#: c-api/typeobj.rst:609 +#: c-api/typeobj.rst:610 msgid "" "Functions like :c:func:`PyObject_NewVar` will take the value of N as an " "argument, and store in the instance's :c:member:`~PyVarObject.ob_size` " @@ -1399,13 +1407,13 @@ msgid "" "`PyLong_Export`." msgstr "" -#: c-api/typeobj.rst:619 +#: c-api/typeobj.rst:620 msgid "" "The :c:member:`~PyVarObject.ob_size` field should be accessed using the :c:" "func:`Py_SIZE()` and :c:func:`Py_SET_SIZE()` macros." msgstr "" -#: c-api/typeobj.rst:622 +#: c-api/typeobj.rst:623 msgid "" "Also, the presence of an :c:member:`~PyVarObject.ob_size` field in the " "instance layout doesn't mean that the instance structure is variable-length. " @@ -1415,13 +1423,13 @@ msgid "" "`PyList_Size` instead.)" msgstr "" -#: c-api/typeobj.rst:629 +#: c-api/typeobj.rst:630 msgid "" "The :c:member:`!tp_basicsize` includes size needed for data of the type's :c:" "member:`~PyTypeObject.tp_base`, plus any extra data needed by each instance." msgstr "" -#: c-api/typeobj.rst:633 +#: c-api/typeobj.rst:634 msgid "" "The correct way to set :c:member:`!tp_basicsize` is to use the ``sizeof`` " "operator on the struct used to declare the instance layout. This struct must " @@ -1430,7 +1438,7 @@ msgid "" "tp_basicsize`." msgstr "" -#: c-api/typeobj.rst:639 +#: c-api/typeobj.rst:640 msgid "" "Since every type is a subtype of :py:type:`object`, this struct must " "include :c:type:`PyObject` or :c:type:`PyVarObject` (depending on whether :c:" @@ -1439,23 +1447,23 @@ msgid "" "respectively." msgstr "" -#: c-api/typeobj.rst:645 +#: c-api/typeobj.rst:646 msgid "" "The basic size does not include the GC header size, as that header is not " "part of :c:macro:`PyObject_HEAD`." msgstr "" -#: c-api/typeobj.rst:648 +#: c-api/typeobj.rst:649 msgid "" "For cases where struct used to declare the base type is unknown, see :c:" "member:`PyType_Spec.basicsize` and :c:func:`PyType_FromMetaclass`." msgstr "" -#: c-api/typeobj.rst:651 +#: c-api/typeobj.rst:652 msgid "Notes about alignment:" msgstr "" -#: c-api/typeobj.rst:653 +#: c-api/typeobj.rst:654 msgid "" ":c:member:`!tp_basicsize` must be a multiple of ``_Alignof(PyObject)``. When " "using ``sizeof`` on a ``struct`` that includes :c:macro:`PyObject_HEAD`, as " @@ -1464,7 +1472,7 @@ msgid "" "you." msgstr "" -#: c-api/typeobj.rst:658 +#: c-api/typeobj.rst:659 msgid "" "If the variable items require a particular alignment, :c:member:`!" "tp_basicsize` and :c:member:`!tp_itemsize` must each be a multiple of that " @@ -1472,14 +1480,14 @@ msgid "" "your responsibility that both fields are a multiple of ``_Alignof(double)``." msgstr "" -#: c-api/typeobj.rst:667 +#: c-api/typeobj.rst:668 msgid "" "These fields are inherited separately by subtypes. (That is, if the field is " "set to zero, :c:func:`PyType_Ready` will copy the value from the base type, " "indicating that the instances do not need additional storage.)" msgstr "" -#: c-api/typeobj.rst:672 +#: c-api/typeobj.rst:673 msgid "" "If the base type has a non-zero :c:member:`~PyTypeObject.tp_itemsize`, it is " "generally not safe to set :c:member:`~PyTypeObject.tp_itemsize` to a " @@ -1487,110 +1495,211 @@ msgid "" "implementation of the base type)." msgstr "" -#: c-api/typeobj.rst:679 +#: c-api/typeobj.rst:680 msgid "" -"A pointer to the instance destructor function. This function must be " -"defined unless the type guarantees that its instances will never be " -"deallocated (as is the case for the singletons ``None`` and ``Ellipsis``). " -"The function signature is::" +"A pointer to the instance destructor function. The function signature is::" msgstr "" -#: c-api/typeobj.rst:683 +#: c-api/typeobj.rst:682 msgid "void tp_dealloc(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:685 +#: c-api/typeobj.rst:684 msgid "" -"The destructor function is called by the :c:func:`Py_DECREF` and :c:func:" -"`Py_XDECREF` macros when the new reference count is zero. At this point, " -"the instance is still in existence, but there are no references to it. The " -"destructor function should free all references which the instance owns, free " -"all memory buffers owned by the instance (using the freeing function " -"corresponding to the allocation function used to allocate the buffer), and " -"call the type's :c:member:`~PyTypeObject.tp_free` function. If the type is " -"not subtypable (doesn't have the :c:macro:`Py_TPFLAGS_BASETYPE` flag bit " -"set), it is permissible to call the object deallocator directly instead of " -"via :c:member:`~PyTypeObject.tp_free`. The object deallocator should be the " -"one used to allocate the instance; this is normally :c:func:`PyObject_Free` " -"if the instance was allocated using :c:macro:`PyObject_New` or :c:macro:" -"`PyObject_NewVar`, or :c:func:`PyObject_GC_Del` if the instance was " -"allocated using :c:macro:`PyObject_GC_New` or :c:macro:`PyObject_GC_NewVar`." +"The destructor function should remove all references which the instance owns " +"(e.g., call :c:func:`Py_CLEAR`), free all memory buffers owned by the " +"instance, and call the type's :c:member:`~PyTypeObject.tp_free` function to " +"free the object itself." msgstr "" -#: c-api/typeobj.rst:700 +#: c-api/typeobj.rst:689 msgid "" -"If the type supports garbage collection (has the :c:macro:" -"`Py_TPFLAGS_HAVE_GC` flag bit set), the destructor should call :c:func:" -"`PyObject_GC_UnTrack` before clearing any member fields." +"If you may call functions that may set the error indicator, you must use :c:" +"func:`PyErr_GetRaisedException` and :c:func:`PyErr_SetRaisedException` to " +"ensure you don't clobber a preexisting error indicator (the deallocation " +"could have occurred while processing a different error):" msgstr "" -#: c-api/typeobj.rst:704 +#: c-api/typeobj.rst:694 msgid "" "static void\n" -"foo_dealloc(PyObject *op)\n" +"foo_dealloc(foo_object *self)\n" "{\n" -" foo_object *self = (foo_object *) op;\n" -" PyObject_GC_UnTrack(self);\n" -" Py_CLEAR(self->ref);\n" -" Py_TYPE(self)->tp_free(self);\n" +" PyObject *et, *ev, *etb;\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +" ...\n" +" PyErr_SetRaisedException(exc);\n" "}" msgstr "" +#: c-api/typeobj.rst:705 +msgid "" +"The dealloc handler itself must not raise an exception; if it hits an error " +"case it should call :c:func:`PyErr_FormatUnraisable` to log (and clear) an " +"unraisable exception." +msgstr "" + +#: c-api/typeobj.rst:709 +msgid "No guarantees are made about when an object is destroyed, except:" +msgstr "" + +#: c-api/typeobj.rst:711 +msgid "" +"Python will destroy an object immediately or some time after the final " +"reference to the object is deleted, unless its finalizer (:c:member:" +"`~PyTypeObject.tp_finalize`) subsequently resurrects the object." +msgstr "" + #: c-api/typeobj.rst:715 msgid "" -"Finally, if the type is heap allocated (:c:macro:`Py_TPFLAGS_HEAPTYPE`), the " +"An object will not be destroyed while it is being automatically finalized (:" +"c:member:`~PyTypeObject.tp_finalize`) or automatically cleared (:c:member:" +"`~PyTypeObject.tp_clear`)." +msgstr "" + +#: c-api/typeobj.rst:719 +msgid "" +"CPython currently destroys an object immediately from :c:func:`Py_DECREF` " +"when the new reference count is zero, but this may change in a future " +"version." +msgstr "" + +#: c-api/typeobj.rst:723 +msgid "" +"It is recommended to call :c:func:`PyObject_CallFinalizerFromDealloc` at the " +"beginning of :c:member:`!tp_dealloc` to guarantee that the object is always " +"finalized before destruction." +msgstr "" + +#: c-api/typeobj.rst:727 +msgid "" +"If the type supports garbage collection (the :c:macro:`Py_TPFLAGS_HAVE_GC` " +"flag is set), the destructor should call :c:func:`PyObject_GC_UnTrack` " +"before clearing any member fields." +msgstr "" + +#: c-api/typeobj.rst:731 +msgid "" +"It is permissible to call :c:member:`~PyTypeObject.tp_clear` from :c:member:" +"`!tp_dealloc` to reduce code duplication and to guarantee that the object is " +"always cleared before destruction. Beware that :c:member:`!tp_clear` might " +"have already been called." +msgstr "" + +#: c-api/typeobj.rst:736 +msgid "" +"If the type is heap allocated (:c:macro:`Py_TPFLAGS_HEAPTYPE`), the " "deallocator should release the owned reference to its type object (via :c:" -"func:`Py_DECREF`) after calling the type deallocator. In order to avoid " -"dangling pointers, the recommended way to achieve this is:" +"func:`Py_DECREF`) after calling the type deallocator. See the example code " +"below.::" msgstr "" -#: c-api/typeobj.rst:721 +#: c-api/typeobj.rst:741 msgid "" "static void\n" "foo_dealloc(PyObject *op)\n" "{\n" -" PyTypeObject *tp = Py_TYPE(op);\n" -" // free references and buffers here\n" -" tp->tp_free(op);\n" -" Py_DECREF(tp);\n" +" foo_object *self = (foo_object *) op;\n" +" PyObject_GC_UnTrack(self);\n" +" Py_CLEAR(self->ref);\n" +" Py_TYPE(self)->tp_free(self);\n" "}" msgstr "" -#: c-api/typeobj.rst:734 +#: c-api/typeobj.rst:750 msgid "" -"In a garbage collected Python, :c:member:`!tp_dealloc` may be called from " -"any Python thread, not just the thread which created the object (if the " -"object becomes part of a refcount cycle, that cycle might be collected by a " -"garbage collection on any thread). This is not a problem for Python API " -"calls, since the thread on which :c:member:`!tp_dealloc` is called with an :" -"term:`attached thread state`. However, if the object being destroyed in " -"turn destroys objects from some other C or C++ library, care should be taken " -"to ensure that destroying those objects on the thread which called :c:member:" -"`!tp_dealloc` will not violate any assumptions of the library." +":c:member:`!tp_dealloc` must leave the exception status unchanged. If it " +"needs to call something that might raise an exception, the exception state " +"must be backed up first and restored later (after logging any exceptions " +"with :c:func:`PyErr_WriteUnraisable`)." msgstr "" -#: c-api/typeobj.rst:753 +#: c-api/typeobj.rst:755 +msgid "Example::" +msgstr "" + +#: c-api/typeobj.rst:757 +msgid "" +"static void\n" +"foo_dealloc(PyObject *self)\n" +"{\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +"\n" +" if (PyObject_CallFinalizerFromDealloc(self) < 0) {\n" +" // self was resurrected.\n" +" goto done;\n" +" }\n" +"\n" +" PyTypeObject *tp = Py_TYPE(self);\n" +"\n" +" if (tp->tp_flags & Py_TPFLAGS_HAVE_GC) {\n" +" PyObject_GC_UnTrack(self);\n" +" }\n" +"\n" +" // Optional, but convenient to avoid code duplication.\n" +" if (tp->tp_clear && tp->tp_clear(self) < 0) {\n" +" PyErr_WriteUnraisable(self);\n" +" }\n" +"\n" +" // Any additional destruction goes here.\n" +"\n" +" tp->tp_free(self);\n" +" self = NULL; // In case PyErr_WriteUnraisable() is called below.\n" +"\n" +" if (tp->tp_flags & Py_TPFLAGS_HEAPTYPE) {\n" +" Py_CLEAR(tp);\n" +" }\n" +"\n" +"done:\n" +" // Optional, if something was called that might have raised an\n" +" // exception.\n" +" if (PyErr_Occurred()) {\n" +" PyErr_WriteUnraisable(self);\n" +" }\n" +" PyErr_SetRaisedException(exc);\n" +"}" +msgstr "" + +#: c-api/typeobj.rst:796 +msgid "" +":c:member:`!tp_dealloc` may be called from any Python thread, not just the " +"thread which created the object (if the object becomes part of a refcount " +"cycle, that cycle might be collected by a garbage collection on any " +"thread). This is not a problem for Python API calls, since the thread on " +"which :c:member:`!tp_dealloc` is called with an :term:`attached thread " +"state`. However, if the object being destroyed in turn destroys objects " +"from some other C library, care should be taken to ensure that destroying " +"those objects on the thread which called :c:member:`!tp_dealloc` will not " +"violate any assumptions of the library." +msgstr "" + +#: c-api/typeobj.rst:1714 c-api/typeobj.rst:2447 +msgid "" +":ref:`life-cycle` for details about how this slot relates to other slots." +msgstr "" + +#: c-api/typeobj.rst:819 msgid "" "An optional offset to a per-instance function that implements calling the " "object using the :ref:`vectorcall protocol `, a more efficient " "alternative of the simpler :c:member:`~PyTypeObject.tp_call`." msgstr "" -#: c-api/typeobj.rst:758 +#: c-api/typeobj.rst:824 msgid "" "This field is only used if the flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` is " "set. If so, this must be a positive integer containing the offset in the " "instance of a :c:type:`vectorcallfunc` pointer." msgstr "" -#: c-api/typeobj.rst:762 +#: c-api/typeobj.rst:828 msgid "" "The *vectorcallfunc* pointer may be ``NULL``, in which case the instance " "behaves as if :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` was not set: calling the " "instance falls back to :c:member:`~PyTypeObject.tp_call`." msgstr "" -#: c-api/typeobj.rst:766 +#: c-api/typeobj.rst:832 msgid "" "Any class that sets ``Py_TPFLAGS_HAVE_VECTORCALL`` must also set :c:member:" "`~PyTypeObject.tp_call` and make sure its behaviour is consistent with the " @@ -1598,13 +1707,13 @@ msgid "" "`PyVectorcall_Call`." msgstr "" -#: c-api/typeobj.rst:773 +#: c-api/typeobj.rst:839 msgid "" "Before version 3.8, this slot was named ``tp_print``. In Python 2.x, it was " "used for printing to a file. In Python 3.0 to 3.7, it was unused." msgstr "" -#: c-api/typeobj.rst:779 +#: c-api/typeobj.rst:845 msgid "" "Before version 3.12, it was not recommended for :ref:`mutable heap types " "` to implement the vectorcall protocol. When a user sets :attr:" @@ -1614,7 +1723,7 @@ msgid "" "`Py_TPFLAGS_HAVE_VECTORCALL` flag." msgstr "" -#: c-api/typeobj.rst:789 +#: c-api/typeobj.rst:855 msgid "" "This field is always inherited. However, the :c:macro:" "`Py_TPFLAGS_HAVE_VECTORCALL` flag is not always inherited. If it's not set, " @@ -1622,11 +1731,11 @@ msgid "" "func:`PyVectorcall_Call` is explicitly called." msgstr "" -#: c-api/typeobj.rst:798 +#: c-api/typeobj.rst:864 msgid "An optional pointer to the get-attribute-string function." msgstr "" -#: c-api/typeobj.rst:800 +#: c-api/typeobj.rst:866 msgid "" "This field is deprecated. When it is defined, it should point to a function " "that acts the same as the :c:member:`~PyTypeObject.tp_getattro` function, " @@ -1634,13 +1743,13 @@ msgid "" "attribute name." msgstr "" -#: c-api/typeobj.rst:1002 +#: c-api/typeobj.rst:1068 msgid "" "Group: :c:member:`~PyTypeObject.tp_getattr`, :c:member:`~PyTypeObject." "tp_getattro`" msgstr "" -#: c-api/typeobj.rst:808 +#: c-api/typeobj.rst:874 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_getattro`: a subtype inherits both :c:member:`~PyTypeObject.tp_getattr` " @@ -1649,12 +1758,12 @@ msgid "" "tp_getattro` are both ``NULL``." msgstr "" -#: c-api/typeobj.rst:1015 +#: c-api/typeobj.rst:1081 msgid "" "An optional pointer to the function for setting and deleting attributes." msgstr "" -#: c-api/typeobj.rst:817 +#: c-api/typeobj.rst:883 msgid "" "This field is deprecated. When it is defined, it should point to a function " "that acts the same as the :c:member:`~PyTypeObject.tp_setattro` function, " @@ -1662,13 +1771,13 @@ msgid "" "attribute name." msgstr "" -#: c-api/typeobj.rst:1028 +#: c-api/typeobj.rst:1094 msgid "" "Group: :c:member:`~PyTypeObject.tp_setattr`, :c:member:`~PyTypeObject." "tp_setattro`" msgstr "" -#: c-api/typeobj.rst:825 +#: c-api/typeobj.rst:891 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_setattro`: a subtype inherits both :c:member:`~PyTypeObject.tp_setattr` " @@ -1677,38 +1786,38 @@ msgid "" "tp_setattro` are both ``NULL``." msgstr "" -#: c-api/typeobj.rst:832 +#: c-api/typeobj.rst:898 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement :term:`awaitable` and :term:`asynchronous iterator` " "protocols at the C-level. See :ref:`async-structs` for details." msgstr "" -#: c-api/typeobj.rst:836 +#: c-api/typeobj.rst:902 msgid "Formerly known as ``tp_compare`` and ``tp_reserved``." msgstr "" -#: c-api/typeobj.rst:841 +#: c-api/typeobj.rst:907 msgid "" "The :c:member:`~PyTypeObject.tp_as_async` field is not inherited, but the " "contained fields are inherited individually." msgstr "" -#: c-api/typeobj.rst:849 +#: c-api/typeobj.rst:915 msgid "" "An optional pointer to a function that implements the built-in function :" "func:`repr`." msgstr "" -#: c-api/typeobj.rst:852 +#: c-api/typeobj.rst:918 msgid "The signature is the same as for :c:func:`PyObject_Repr`::" msgstr "" -#: c-api/typeobj.rst:854 +#: c-api/typeobj.rst:920 msgid "PyObject *tp_repr(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:856 +#: c-api/typeobj.rst:922 msgid "" "The function must return a string or a Unicode object. Ideally, this " "function should return a string that, when passed to :func:`eval`, given a " @@ -1717,80 +1826,80 @@ msgid "" "``'>'`` from which both the type and the value of the object can be deduced." msgstr "" -#: c-api/typeobj.rst:946 c-api/typeobj.rst:1008 c-api/typeobj.rst:1076 -#: c-api/typeobj.rst:1667 c-api/typeobj.rst:1817 c-api/typeobj.rst:1933 -#: c-api/typeobj.rst:1993 c-api/typeobj.rst:2045 +#: c-api/typeobj.rst:1012 c-api/typeobj.rst:1074 c-api/typeobj.rst:1142 +#: c-api/typeobj.rst:1811 c-api/typeobj.rst:1961 c-api/typeobj.rst:2077 +#: c-api/typeobj.rst:2136 c-api/typeobj.rst:2195 msgid "**Default:**" msgstr "" -#: c-api/typeobj.rst:869 +#: c-api/typeobj.rst:935 msgid "" "When this field is not set, a string of the form ``<%s object at %p>`` is " "returned, where ``%s`` is replaced by the type name, and ``%p`` by the " "object's memory address." msgstr "" -#: c-api/typeobj.rst:876 +#: c-api/typeobj.rst:942 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement the number protocol. These fields are documented " "in :ref:`number-structs`." msgstr "" -#: c-api/typeobj.rst:882 +#: c-api/typeobj.rst:948 msgid "" "The :c:member:`~PyTypeObject.tp_as_number` field is not inherited, but the " "contained fields are inherited individually." msgstr "" -#: c-api/typeobj.rst:888 +#: c-api/typeobj.rst:954 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement the sequence protocol. These fields are documented " "in :ref:`sequence-structs`." msgstr "" -#: c-api/typeobj.rst:894 +#: c-api/typeobj.rst:960 msgid "" "The :c:member:`~PyTypeObject.tp_as_sequence` field is not inherited, but the " "contained fields are inherited individually." msgstr "" -#: c-api/typeobj.rst:900 +#: c-api/typeobj.rst:966 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement the mapping protocol. These fields are documented " "in :ref:`mapping-structs`." msgstr "" -#: c-api/typeobj.rst:906 +#: c-api/typeobj.rst:972 msgid "" "The :c:member:`~PyTypeObject.tp_as_mapping` field is not inherited, but the " "contained fields are inherited individually." msgstr "" -#: c-api/typeobj.rst:914 +#: c-api/typeobj.rst:980 msgid "" "An optional pointer to a function that implements the built-in function :" "func:`hash`." msgstr "" -#: c-api/typeobj.rst:917 +#: c-api/typeobj.rst:983 msgid "The signature is the same as for :c:func:`PyObject_Hash`::" msgstr "" -#: c-api/typeobj.rst:919 +#: c-api/typeobj.rst:985 msgid "Py_hash_t tp_hash(PyObject *);" msgstr "" -#: c-api/typeobj.rst:921 +#: c-api/typeobj.rst:987 msgid "" "The value ``-1`` should not be returned as a normal return value; when an " "error occurs during the computation of the hash value, the function should " "set an exception and return ``-1``." msgstr "" -#: c-api/typeobj.rst:925 +#: c-api/typeobj.rst:991 msgid "" "When this field is not set (*and* :c:member:`~PyTypeObject.tp_richcompare` " "is not set), an attempt to take the hash of the object raises :exc:" @@ -1798,7 +1907,7 @@ msgid "" "`PyObject_HashNotImplemented`." msgstr "" -#: c-api/typeobj.rst:929 +#: c-api/typeobj.rst:995 msgid "" "This field can be set explicitly to :c:func:`PyObject_HashNotImplemented` to " "block inheritance of the hash method from a parent type. This is interpreted " @@ -1809,13 +1918,13 @@ msgid "" "`PyObject_HashNotImplemented`." msgstr "" -#: c-api/typeobj.rst:1626 +#: c-api/typeobj.rst:1770 msgid "" "Group: :c:member:`~PyTypeObject.tp_hash`, :c:member:`~PyTypeObject." "tp_richcompare`" msgstr "" -#: c-api/typeobj.rst:941 +#: c-api/typeobj.rst:1007 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_richcompare`: a subtype inherits both of :c:member:`~PyTypeObject." @@ -1824,22 +1933,22 @@ msgid "" "are both ``NULL``." msgstr "" -#: c-api/typeobj.rst:948 +#: c-api/typeobj.rst:1014 msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericHash`." msgstr "" -#: c-api/typeobj.rst:953 +#: c-api/typeobj.rst:1019 msgid "" "An optional pointer to a function that implements calling the object. This " "should be ``NULL`` if the object is not callable. The signature is the same " "as for :c:func:`PyObject_Call`::" msgstr "" -#: c-api/typeobj.rst:957 +#: c-api/typeobj.rst:1023 msgid "PyObject *tp_call(PyObject *self, PyObject *args, PyObject *kwargs);" msgstr "" -#: c-api/typeobj.rst:966 +#: c-api/typeobj.rst:1032 msgid "" "An optional pointer to a function that implements the built-in operation :" "func:`str`. (Note that :class:`str` is a type now, and :func:`str` calls " @@ -1848,15 +1957,15 @@ msgid "" "this handler.)" msgstr "" -#: c-api/typeobj.rst:971 +#: c-api/typeobj.rst:1037 msgid "The signature is the same as for :c:func:`PyObject_Str`::" msgstr "" -#: c-api/typeobj.rst:973 +#: c-api/typeobj.rst:1039 msgid "PyObject *tp_str(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:975 +#: c-api/typeobj.rst:1041 msgid "" "The function must return a string or a Unicode object. It should be a " "\"friendly\" string representation of the object, as this is the " @@ -1864,32 +1973,32 @@ msgid "" "function." msgstr "" -#: c-api/typeobj.rst:985 +#: c-api/typeobj.rst:1051 msgid "" "When this field is not set, :c:func:`PyObject_Repr` is called to return a " "string representation." msgstr "" -#: c-api/typeobj.rst:991 +#: c-api/typeobj.rst:1057 msgid "An optional pointer to the get-attribute function." msgstr "" -#: c-api/typeobj.rst:993 +#: c-api/typeobj.rst:1059 msgid "The signature is the same as for :c:func:`PyObject_GetAttr`::" msgstr "" -#: c-api/typeobj.rst:995 +#: c-api/typeobj.rst:1061 msgid "PyObject *tp_getattro(PyObject *self, PyObject *attr);" msgstr "" -#: c-api/typeobj.rst:997 +#: c-api/typeobj.rst:1063 msgid "" "It is usually convenient to set this field to :c:func:" "`PyObject_GenericGetAttr`, which implements the normal way of looking for " "object attributes." msgstr "" -#: c-api/typeobj.rst:1004 +#: c-api/typeobj.rst:1070 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_getattr`: a subtype inherits both :c:member:`~PyTypeObject.tp_getattr` " @@ -1898,19 +2007,19 @@ msgid "" "tp_getattro` are both ``NULL``." msgstr "" -#: c-api/typeobj.rst:1010 +#: c-api/typeobj.rst:1076 msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericGetAttr`." msgstr "" -#: c-api/typeobj.rst:1017 +#: c-api/typeobj.rst:1083 msgid "The signature is the same as for :c:func:`PyObject_SetAttr`::" msgstr "" -#: c-api/typeobj.rst:1019 +#: c-api/typeobj.rst:1085 msgid "int tp_setattro(PyObject *self, PyObject *attr, PyObject *value);" msgstr "" -#: c-api/typeobj.rst:1021 +#: c-api/typeobj.rst:1087 msgid "" "In addition, setting *value* to ``NULL`` to delete an attribute must be " "supported. It is usually convenient to set this field to :c:func:" @@ -1918,7 +2027,7 @@ msgid "" "attributes." msgstr "" -#: c-api/typeobj.rst:1030 +#: c-api/typeobj.rst:1096 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_setattr`: a subtype inherits both :c:member:`~PyTypeObject.tp_setattr` " @@ -1927,24 +2036,24 @@ msgid "" "tp_setattro` are both ``NULL``." msgstr "" -#: c-api/typeobj.rst:1036 +#: c-api/typeobj.rst:1102 msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericSetAttr`." msgstr "" -#: c-api/typeobj.rst:1041 +#: c-api/typeobj.rst:1107 msgid "" "Pointer to an additional structure that contains fields relevant only to " "objects which implement the buffer interface. These fields are documented " "in :ref:`buffer-structs`." msgstr "" -#: c-api/typeobj.rst:1047 +#: c-api/typeobj.rst:1113 msgid "" "The :c:member:`~PyTypeObject.tp_as_buffer` field is not inherited, but the " "contained fields are inherited individually." msgstr "" -#: c-api/typeobj.rst:1053 +#: c-api/typeobj.rst:1119 msgid "" "This field is a bit mask of various flags. Some flags indicate variant " "semantics for certain situations; others are used to indicate that certain " @@ -1956,7 +2065,7 @@ msgid "" "accessed and must be considered to have a zero or ``NULL`` value instead." msgstr "" -#: c-api/typeobj.rst:1063 +#: c-api/typeobj.rst:1129 msgid "" "Inheritance of this field is complicated. Most flag bits are inherited " "individually, i.e. if the base type has a flag bit set, the subtype inherits " @@ -1971,17 +2080,17 @@ msgid "" "the subtype exist and have ``NULL`` values." msgstr "" -#: c-api/typeobj.rst:1078 +#: c-api/typeobj.rst:1144 msgid "" ":c:data:`PyBaseObject_Type` uses ``Py_TPFLAGS_DEFAULT | " "Py_TPFLAGS_BASETYPE``." msgstr "" -#: c-api/typeobj.rst:1081 +#: c-api/typeobj.rst:1147 msgid "**Bit Masks:**" msgstr "" -#: c-api/typeobj.rst:1085 +#: c-api/typeobj.rst:1151 msgid "" "The following bit masks are currently defined; these can be ORed together " "using the ``|`` operator to form the value of the :c:member:`~PyTypeObject." @@ -1990,7 +2099,7 @@ msgid "" "zero." msgstr "" -#: c-api/typeobj.rst:1092 +#: c-api/typeobj.rst:1158 msgid "" "This bit is set when the type object itself is allocated on the heap, for " "example, types created dynamically using :c:func:`PyType_FromSpec`. In this " @@ -2003,46 +2112,46 @@ msgid "" "reference cycle with their own module object." msgstr "" -#: c-api/typeobj.rst:1114 c-api/typeobj.rst:1134 c-api/typeobj.rst:1166 +#: c-api/typeobj.rst:1180 c-api/typeobj.rst:1200 c-api/typeobj.rst:1232 msgid "???" msgstr "" -#: c-api/typeobj.rst:1108 +#: c-api/typeobj.rst:1174 msgid "" "This bit is set when the type can be used as the base type of another type. " "If this bit is clear, the type cannot be subtyped (similar to a \"final\" " "class in Java)." msgstr "" -#: c-api/typeobj.rst:1119 +#: c-api/typeobj.rst:1185 msgid "" "This bit is set when the type object has been fully initialized by :c:func:" "`PyType_Ready`." msgstr "" -#: c-api/typeobj.rst:1129 +#: c-api/typeobj.rst:1195 msgid "" "This bit is set while :c:func:`PyType_Ready` is in the process of " "initializing the type object." msgstr "" -#: c-api/typeobj.rst:1139 +#: c-api/typeobj.rst:1205 msgid "" "This bit is set when the object supports garbage collection. If this bit is " -"set, instances must be created using :c:macro:`PyObject_GC_New` and " -"destroyed using :c:func:`PyObject_GC_Del`. More information in section :ref:" -"`supporting-cycle-detection`. This bit also implies that the GC-related " -"fields :c:member:`~PyTypeObject.tp_traverse` and :c:member:`~PyTypeObject." -"tp_clear` are present in the type object." +"set, memory for new instances (see :c:member:`~PyTypeObject.tp_alloc`) must " +"be allocated using :c:macro:`PyObject_GC_New` or :c:func:" +"`PyType_GenericAlloc` and deallocated (see :c:member:`~PyTypeObject." +"tp_free`) using :c:func:`PyObject_GC_Del`. More information in section :ref:" +"`supporting-cycle-detection`." msgstr "" -#: c-api/typeobj.rst:1490 c-api/typeobj.rst:1565 +#: c-api/typeobj.rst:1561 c-api/typeobj.rst:1705 msgid "" "Group: :c:macro:`Py_TPFLAGS_HAVE_GC`, :c:member:`~PyTypeObject." "tp_traverse`, :c:member:`~PyTypeObject.tp_clear`" msgstr "" -#: c-api/typeobj.rst:1150 +#: c-api/typeobj.rst:1216 msgid "" "The :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is inherited together with the :c:" "member:`~PyTypeObject.tp_traverse` and :c:member:`~PyTypeObject.tp_clear` " @@ -2052,105 +2161,106 @@ msgid "" "values." msgstr "" -#: c-api/typeobj.rst:1160 +#: c-api/typeobj.rst:1226 msgid "" "This is a bitmask of all the bits that pertain to the existence of certain " "fields in the type object and its extension structures. Currently, it " "includes the following bits: :c:macro:`Py_TPFLAGS_HAVE_STACKLESS_EXTENSION`." msgstr "" -#: c-api/typeobj.rst:1171 +#: c-api/typeobj.rst:1237 msgid "This bit indicates that objects behave like unbound methods." msgstr "" -#: c-api/typeobj.rst:1173 +#: c-api/typeobj.rst:1239 msgid "If this flag is set for ``type(meth)``, then:" msgstr "" -#: c-api/typeobj.rst:1175 +#: c-api/typeobj.rst:1241 msgid "" "``meth.__get__(obj, cls)(*args, **kwds)`` (with ``obj`` not None) must be " "equivalent to ``meth(obj, *args, **kwds)``." msgstr "" -#: c-api/typeobj.rst:1178 +#: c-api/typeobj.rst:1244 msgid "" "``meth.__get__(None, cls)(*args, **kwds)`` must be equivalent to " "``meth(*args, **kwds)``." msgstr "" -#: c-api/typeobj.rst:1181 +#: c-api/typeobj.rst:1247 msgid "" "This flag enables an optimization for typical method calls like ``obj." "meth()``: it avoids creating a temporary \"bound method\" object for ``obj." "meth``." msgstr "" -#: c-api/typeobj.rst:1189 +#: c-api/typeobj.rst:1255 msgid "" "This flag is never inherited by types without the :c:macro:" "`Py_TPFLAGS_IMMUTABLETYPE` flag set. For extension types, it is inherited " "whenever :c:member:`~PyTypeObject.tp_descr_get` is inherited." msgstr "" -#: c-api/typeobj.rst:1195 +#: c-api/typeobj.rst:1261 msgid "" -"This bit indicates that instances of the class have a `~object.__dict__` " -"attribute, and that the space for the dictionary is managed by the VM." +"This bit indicates that instances of the class have a :attr:`~object." +"__dict__` attribute, and that the space for the dictionary is managed by the " +"VM." msgstr "" -#: c-api/typeobj.rst:1198 +#: c-api/typeobj.rst:1264 msgid "If this flag is set, :c:macro:`Py_TPFLAGS_HAVE_GC` should also be set." msgstr "" -#: c-api/typeobj.rst:1200 +#: c-api/typeobj.rst:1266 msgid "" "The type traverse function must call :c:func:`PyObject_VisitManagedDict` and " "its clear function must call :c:func:`PyObject_ClearManagedDict`." msgstr "" -#: c-api/typeobj.rst:1207 +#: c-api/typeobj.rst:1273 msgid "" "This flag is inherited unless the :c:member:`~PyTypeObject.tp_dictoffset` " "field is set in a superclass." msgstr "" -#: c-api/typeobj.rst:1213 +#: c-api/typeobj.rst:1279 msgid "" "This bit indicates that instances of the class should be weakly " "referenceable." msgstr "" -#: c-api/typeobj.rst:1220 +#: c-api/typeobj.rst:1286 msgid "" "This flag is inherited unless the :c:member:`~PyTypeObject." "tp_weaklistoffset` field is set in a superclass." msgstr "" -#: c-api/typeobj.rst:1226 +#: c-api/typeobj.rst:1292 msgid "" "Only usable with variable-size types, i.e. ones with non-zero :c:member:" "`~PyTypeObject.tp_itemsize`." msgstr "" -#: c-api/typeobj.rst:1229 +#: c-api/typeobj.rst:1295 msgid "" "Indicates that the variable-sized portion of an instance of this type is at " "the end of the instance's memory area, at an offset of ``Py_TYPE(obj)-" ">tp_basicsize`` (which may be different in each subclass)." msgstr "" -#: c-api/typeobj.rst:1234 +#: c-api/typeobj.rst:1300 msgid "" "When setting this flag, be sure that all superclasses either use this memory " "layout, or are not variable-sized. Python does not check this." msgstr "" -#: c-api/typeobj.rst:1242 +#: c-api/typeobj.rst:1308 msgid "This flag is inherited." msgstr "" -#: c-api/typeobj.rst:1256 +#: c-api/typeobj.rst:1322 msgid "" "These flags are used by functions such as :c:func:`PyLong_Check` to quickly " "determine if a type is a subclass of a built-in type; such specific checks " @@ -2160,90 +2270,90 @@ msgid "" "behave differently depending on what kind of check is used." msgstr "" -#: c-api/typeobj.rst:1267 +#: c-api/typeobj.rst:1333 msgid "" "This bit is set when the :c:member:`~PyTypeObject.tp_finalize` slot is " "present in the type structure." msgstr "" -#: c-api/typeobj.rst:1272 +#: c-api/typeobj.rst:1338 msgid "" "This flag isn't necessary anymore, as the interpreter assumes the :c:member:" "`~PyTypeObject.tp_finalize` slot is always present in the type structure." msgstr "" -#: c-api/typeobj.rst:1280 +#: c-api/typeobj.rst:1346 msgid "" "This bit is set when the class implements the :ref:`vectorcall protocol " "`. See :c:member:`~PyTypeObject.tp_vectorcall_offset` for " "details." msgstr "" -#: c-api/typeobj.rst:1286 +#: c-api/typeobj.rst:1352 msgid "" "This bit is inherited if :c:member:`~PyTypeObject.tp_call` is also inherited." msgstr "" -#: c-api/typeobj.rst:1293 +#: c-api/typeobj.rst:1359 msgid "" "This flag is now removed from a class when the class's :py:meth:`~object." "__call__` method is reassigned." msgstr "" -#: c-api/typeobj.rst:1296 +#: c-api/typeobj.rst:1362 msgid "This flag can now be inherited by mutable classes." msgstr "" -#: c-api/typeobj.rst:1300 +#: c-api/typeobj.rst:1366 msgid "" "This bit is set for type objects that are immutable: type attributes cannot " "be set nor deleted." msgstr "" -#: c-api/typeobj.rst:1302 +#: c-api/typeobj.rst:1368 msgid "" ":c:func:`PyType_Ready` automatically applies this flag to :ref:`static types " "`." msgstr "" -#: c-api/typeobj.rst:1307 +#: c-api/typeobj.rst:1373 msgid "This flag is not inherited." msgstr "" -#: c-api/typeobj.rst:1313 +#: c-api/typeobj.rst:1379 msgid "" "Disallow creating instances of the type: set :c:member:`~PyTypeObject." "tp_new` to NULL and don't create the ``__new__`` key in the type dictionary." msgstr "" -#: c-api/typeobj.rst:1317 +#: c-api/typeobj.rst:1383 msgid "" "The flag must be set before creating the type, not after. For example, it " "must be set before :c:func:`PyType_Ready` is called on the type." msgstr "" -#: c-api/typeobj.rst:1320 +#: c-api/typeobj.rst:1386 msgid "" "The flag is set automatically on :ref:`static types ` if :c:" "member:`~PyTypeObject.tp_base` is NULL or ``&PyBaseObject_Type`` and :c:" "member:`~PyTypeObject.tp_new` is NULL." msgstr "" -#: c-api/typeobj.rst:1326 +#: c-api/typeobj.rst:1392 msgid "" "This flag is not inherited. However, subclasses will not be instantiable " "unless they provide a non-NULL :c:member:`~PyTypeObject.tp_new` (which is " "only possible via the C API)." msgstr "" -#: c-api/typeobj.rst:1333 +#: c-api/typeobj.rst:1399 msgid "" "To disallow instantiating a class directly but allow instantiating its " "subclasses (e.g. for an :term:`abstract base class`), do not use this flag. " "Instead, make :c:member:`~PyTypeObject.tp_new` only succeed for subclasses." msgstr "" -#: c-api/typeobj.rst:1344 +#: c-api/typeobj.rst:1410 msgid "" "This bit indicates that instances of the class may match mapping patterns " "when used as the subject of a :keyword:`match` block. It is automatically " @@ -2251,23 +2361,23 @@ msgid "" "unset when registering :class:`collections.abc.Sequence`." msgstr "" -#: c-api/typeobj.rst:1373 +#: c-api/typeobj.rst:1439 msgid "" ":c:macro:`Py_TPFLAGS_MAPPING` and :c:macro:`Py_TPFLAGS_SEQUENCE` are " "mutually exclusive; it is an error to enable both flags simultaneously." msgstr "" -#: c-api/typeobj.rst:1356 +#: c-api/typeobj.rst:1422 msgid "" "This flag is inherited by types that do not already set :c:macro:" "`Py_TPFLAGS_SEQUENCE`." msgstr "" -#: c-api/typeobj.rst:1381 +#: c-api/typeobj.rst:1447 msgid ":pep:`634` -- Structural Pattern Matching: Specification" msgstr "" -#: c-api/typeobj.rst:1366 +#: c-api/typeobj.rst:1432 msgid "" "This bit indicates that instances of the class may match sequence patterns " "when used as the subject of a :keyword:`match` block. It is automatically " @@ -2275,53 +2385,53 @@ msgid "" "unset when registering :class:`collections.abc.Mapping`." msgstr "" -#: c-api/typeobj.rst:1378 +#: c-api/typeobj.rst:1444 msgid "" "This flag is inherited by types that do not already set :c:macro:" "`Py_TPFLAGS_MAPPING`." msgstr "" -#: c-api/typeobj.rst:1388 +#: c-api/typeobj.rst:1454 msgid "" "Internal. Do not set or unset this flag. To indicate that a class has " "changed call :c:func:`PyType_Modified`" msgstr "" -#: c-api/typeobj.rst:1392 +#: c-api/typeobj.rst:1458 msgid "" "This flag is present in header files, but is not be used. It will be removed " "in a future version of CPython" msgstr "" -#: c-api/typeobj.rst:1398 +#: c-api/typeobj.rst:1464 msgid "" "An optional pointer to a NUL-terminated C string giving the docstring for " "this type object. This is exposed as the :attr:`~type.__doc__` attribute on " "the type and instances of the type." msgstr "" -#: c-api/typeobj.rst:1404 +#: c-api/typeobj.rst:1470 msgid "This field is *not* inherited by subtypes." msgstr "" -#: c-api/typeobj.rst:1409 +#: c-api/typeobj.rst:1475 msgid "" "An optional pointer to a traversal function for the garbage collector. This " "is only used if the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is set. The " "signature is::" msgstr "" -#: c-api/typeobj.rst:1412 +#: c-api/typeobj.rst:1478 msgid "int tp_traverse(PyObject *self, visitproc visit, void *arg);" msgstr "" -#: c-api/typeobj.rst:1560 +#: c-api/typeobj.rst:1700 msgid "" "More information about Python's garbage collection scheme can be found in " "section :ref:`supporting-cycle-detection`." msgstr "" -#: c-api/typeobj.rst:1417 +#: c-api/typeobj.rst:1483 msgid "" "The :c:member:`~PyTypeObject.tp_traverse` pointer is used by the garbage " "collector to detect reference cycles. A typical implementation of a :c:" @@ -2331,7 +2441,7 @@ msgid "" "`!_thread` extension module::" msgstr "" -#: c-api/typeobj.rst:1423 +#: c-api/typeobj.rst:1489 msgid "" "static int\n" "local_traverse(PyObject *op, visitproc visit, void *arg)\n" @@ -2344,7 +2454,7 @@ msgid "" "}" msgstr "" -#: c-api/typeobj.rst:1433 +#: c-api/typeobj.rst:1499 msgid "" "Note that :c:func:`Py_VISIT` is called only on those members that can " "participate in reference cycles. Although there is also a ``self->key`` " @@ -2352,47 +2462,47 @@ msgid "" "part of a reference cycle." msgstr "" -#: c-api/typeobj.rst:1437 +#: c-api/typeobj.rst:1503 msgid "" "On the other hand, even if you know a member can never be part of a cycle, " "as a debugging aid you may want to visit it anyway just so the :mod:`gc` " "module's :func:`~gc.get_referents` function will include it." msgstr "" -#: c-api/typeobj.rst:1441 +#: c-api/typeobj.rst:1507 msgid "" "Heap types (:c:macro:`Py_TPFLAGS_HEAPTYPE`) must visit their type with::" msgstr "" -#: c-api/typeobj.rst:1443 +#: c-api/typeobj.rst:1509 msgid "Py_VISIT(Py_TYPE(self));" msgstr "" -#: c-api/typeobj.rst:1445 +#: c-api/typeobj.rst:1511 msgid "" "It is only needed since Python 3.9. To support Python 3.8 and older, this " "line must be conditional::" msgstr "" -#: c-api/typeobj.rst:1448 +#: c-api/typeobj.rst:1514 msgid "" "#if PY_VERSION_HEX >= 0x03090000\n" " Py_VISIT(Py_TYPE(self));\n" "#endif" msgstr "" -#: c-api/typeobj.rst:1452 +#: c-api/typeobj.rst:1518 msgid "" "If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit is set in the :c:member:" "`~PyTypeObject.tp_flags` field, the traverse function must call :c:func:" "`PyObject_VisitManagedDict` like this::" msgstr "" -#: c-api/typeobj.rst:1456 +#: c-api/typeobj.rst:1522 msgid "PyObject_VisitManagedDict((PyObject*)self, visit, arg);" msgstr "" -#: c-api/typeobj.rst:1459 +#: c-api/typeobj.rst:1525 msgid "" "When implementing :c:member:`~PyTypeObject.tp_traverse`, only the members " "that the instance *owns* (by having :term:`strong references ` hold a reference to " "their type. Their traversal function must therefore either visit :c:func:" @@ -2421,14 +2531,20 @@ msgid "" "superclass). If they do not, the type object may not be garbage-collected." msgstr "" -#: c-api/typeobj.rst:1483 +#: c-api/typeobj.rst:1549 +msgid "" +"The :c:member:`~PyTypeObject.tp_traverse` function can be called from any " +"thread." +msgstr "" + +#: c-api/typeobj.rst:1554 msgid "" "Heap-allocated types are expected to visit ``Py_TYPE(self)`` in " "``tp_traverse``. In earlier versions of Python, due to `bug 40217 `_, doing this may lead to crashes in subclasses." msgstr "" -#: c-api/typeobj.rst:1492 +#: c-api/typeobj.rst:1563 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_clear` and the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :c:" @@ -2436,33 +2552,161 @@ msgid "" "are all inherited from the base type if they are all zero in the subtype." msgstr "" -#: c-api/typeobj.rst:1500 -msgid "" -"An optional pointer to a clear function for the garbage collector. This is " -"only used if the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is set. The " -"signature is::" +#: c-api/typeobj.rst:1571 +msgid "An optional pointer to a clear function. The signature is::" msgstr "" -#: c-api/typeobj.rst:1503 +#: c-api/typeobj.rst:1573 msgid "int tp_clear(PyObject *);" msgstr "" -#: c-api/typeobj.rst:1505 +#: c-api/typeobj.rst:1575 +msgid "" +"The purpose of this function is to break reference cycles that are causing " +"a :term:`cyclic isolate` so that the objects can be safely destroyed. A " +"cleared object is a partially destroyed object; the object is not obligated " +"to satisfy design invariants held during normal use." +msgstr "" + +#: c-api/typeobj.rst:1580 +msgid "" +":c:member:`!tp_clear` does not need to delete references to objects that " +"can't participate in reference cycles, such as Python strings or Python " +"integers. However, it may be convenient to clear all references, and write " +"the type's :c:member:`~PyTypeObject.tp_dealloc` function to invoke :c:member:" +"`!tp_clear` to avoid code duplication. (Beware that :c:member:`!tp_clear` " +"might have already been called. Prefer calling idempotent functions like :c:" +"func:`Py_CLEAR`.)" +msgstr "" + +#: c-api/typeobj.rst:1588 +msgid "" +"Any non-trivial cleanup should be performed in :c:member:`~PyTypeObject." +"tp_finalize` instead of :c:member:`!tp_clear`." +msgstr "" + +#: c-api/typeobj.rst:1593 msgid "" -"The :c:member:`~PyTypeObject.tp_clear` member function is used to break " -"reference cycles in cyclic garbage detected by the garbage collector. Taken " -"together, all :c:member:`~PyTypeObject.tp_clear` functions in the system " -"must combine to break all reference cycles. This is subtle, and if in any " -"doubt supply a :c:member:`~PyTypeObject.tp_clear` function. For example, " -"the tuple type does not implement a :c:member:`~PyTypeObject.tp_clear` " -"function, because it's possible to prove that no reference cycle can be " -"composed entirely of tuples. Therefore the :c:member:`~PyTypeObject." -"tp_clear` functions of other types must be sufficient to break any cycle " +"If :c:member:`!tp_clear` fails to break a reference cycle then the objects " +"in the :term:`cyclic isolate` may remain indefinitely uncollectable " +"(\"leak\"). See :data:`gc.garbage`." +msgstr "" + +#: c-api/typeobj.rst:1599 +msgid "" +"Referents (direct and indirect) might have already been cleared; they are " +"not guaranteed to be in a consistent state." +msgstr "" + +#: c-api/typeobj.rst:1604 +msgid "" +"The :c:member:`~PyTypeObject.tp_clear` function can be called from any " +"thread." +msgstr "" + +#: c-api/typeobj.rst:1609 +msgid "" +"An object is not guaranteed to be automatically cleared before its " +"destructor (:c:member:`~PyTypeObject.tp_dealloc`) is called." +msgstr "" + +#: c-api/typeobj.rst:1612 +msgid "" +"This function differs from the destructor (:c:member:`~PyTypeObject." +"tp_dealloc`) in the following ways:" +msgstr "" + +#: c-api/typeobj.rst:1615 +msgid "" +"The purpose of clearing an object is to remove references to other objects " +"that might participate in a reference cycle. The purpose of the destructor, " +"on the other hand, is a superset: it must release *all* resources it owns, " +"including references to objects that cannot participate in a reference cycle " +"(e.g., integers) as well as the object's own memory (by calling :c:member:" +"`~PyTypeObject.tp_free`)." +msgstr "" + +#: c-api/typeobj.rst:1621 +msgid "" +"When :c:member:`!tp_clear` is called, other objects might still hold " +"references to the object being cleared. Because of this, :c:member:`!" +"tp_clear` must not deallocate the object's own memory (:c:member:" +"`~PyTypeObject.tp_free`). The destructor, on the other hand, is only called " +"when no (strong) references exist, and as such, must safely destroy the " +"object itself by deallocating it." +msgstr "" + +#: c-api/typeobj.rst:1627 +msgid "" +":c:member:`!tp_clear` might never be automatically called. An object's " +"destructor, on the other hand, will be automatically called some time after " +"the object becomes unreachable (i.e., either there are no references to the " +"object or the object is a member of a :term:`cyclic isolate`)." +msgstr "" + +#: c-api/typeobj.rst:1632 +msgid "" +"No guarantees are made about when, if, or how often Python automatically " +"clears an object, except:" +msgstr "" + +#: c-api/typeobj.rst:1635 +msgid "" +"Python will not automatically clear an object if it is reachable, i.e., " +"there is a reference to it and it is not a member of a :term:`cyclic " +"isolate`." +msgstr "" + +#: c-api/typeobj.rst:1638 +msgid "" +"Python will not automatically clear an object if it has not been " +"automatically finalized (see :c:member:`~PyTypeObject.tp_finalize`). (If " +"the finalizer resurrected the object, the object may or may not be " +"automatically finalized again before it is cleared.)" +msgstr "" + +#: c-api/typeobj.rst:1642 +msgid "" +"If an object is a member of a :term:`cyclic isolate`, Python will not " +"automatically clear it if any member of the cyclic isolate has not yet been " +"automatically finalized (:c:member:`~PyTypeObject.tp_finalize`)." +msgstr "" + +#: c-api/typeobj.rst:1645 +msgid "" +"Python will not destroy an object until after any automatic calls to its :c:" +"member:`!tp_clear` function have returned. This ensures that the act of " +"breaking a reference cycle does not invalidate the ``self`` pointer while :c:" +"member:`!tp_clear` is still executing." +msgstr "" + +#: c-api/typeobj.rst:1649 +msgid "" +"Python will not automatically call :c:member:`!tp_clear` multiple times " +"concurrently." +msgstr "" + +#: c-api/typeobj.rst:1652 +msgid "" +"CPython currently only automatically clears objects as needed to break " +"reference cycles in a :term:`cyclic isolate`, but future versions might " +"clear objects regularly before their destruction." +msgstr "" + +#: c-api/typeobj.rst:1656 +msgid "" +"Taken together, all :c:member:`~PyTypeObject.tp_clear` functions in the " +"system must combine to break all reference cycles. This is subtle, and if " +"in any doubt supply a :c:member:`~PyTypeObject.tp_clear` function. For " +"example, the tuple type does not implement a :c:member:`~PyTypeObject." +"tp_clear` function, because it's possible to prove that no reference cycle " +"can be composed entirely of tuples. Therefore the :c:member:`~PyTypeObject." +"tp_clear` functions of other types are responsible for breaking any cycle " "containing a tuple. This isn't immediately obvious, and there's rarely a " "good reason to avoid implementing :c:member:`~PyTypeObject.tp_clear`." msgstr "" -#: c-api/typeobj.rst:1515 +#: c-api/typeobj.rst:1667 msgid "" "Implementations of :c:member:`~PyTypeObject.tp_clear` should drop the " "instance's references to those of its members that may be Python objects, " @@ -2470,7 +2714,7 @@ msgid "" "example::" msgstr "" -#: c-api/typeobj.rst:1519 +#: c-api/typeobj.rst:1671 msgid "" "static int\n" "local_clear(PyObject *op)\n" @@ -2484,7 +2728,7 @@ msgid "" "}" msgstr "" -#: c-api/typeobj.rst:1530 +#: c-api/typeobj.rst:1682 msgid "" "The :c:func:`Py_CLEAR` macro should be used, because clearing references is " "delicate: the reference to the contained object must not be released (via :" @@ -2499,36 +2743,18 @@ msgid "" "performs the operations in a safe order." msgstr "" -#: c-api/typeobj.rst:1542 +#: c-api/typeobj.rst:1694 msgid "" "If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit is set in the :c:member:" "`~PyTypeObject.tp_flags` field, the traverse function must call :c:func:" "`PyObject_ClearManagedDict` like this::" msgstr "" -#: c-api/typeobj.rst:1546 +#: c-api/typeobj.rst:1698 msgid "PyObject_ClearManagedDict((PyObject*)self);" msgstr "" -#: c-api/typeobj.rst:1548 -msgid "" -"Note that :c:member:`~PyTypeObject.tp_clear` is not *always* called before " -"an instance is deallocated. For example, when reference counting is enough " -"to determine that an object is no longer used, the cyclic garbage collector " -"is not involved and :c:member:`~PyTypeObject.tp_dealloc` is called directly." -msgstr "" - -#: c-api/typeobj.rst:1554 -msgid "" -"Because the goal of :c:member:`~PyTypeObject.tp_clear` functions is to break " -"reference cycles, it's not necessary to clear contained objects like Python " -"strings or Python integers, which can't participate in reference cycles. On " -"the other hand, it may be convenient to clear all contained Python objects, " -"and write the type's :c:member:`~PyTypeObject.tp_dealloc` function to " -"invoke :c:member:`~PyTypeObject.tp_clear`." -msgstr "" - -#: c-api/typeobj.rst:1567 +#: c-api/typeobj.rst:1707 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_traverse` and the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :" @@ -2536,22 +2762,22 @@ msgid "" "are all inherited from the base type if they are all zero in the subtype." msgstr "" -#: c-api/typeobj.rst:1575 +#: c-api/typeobj.rst:1719 msgid "" "An optional pointer to the rich comparison function, whose signature is::" msgstr "" -#: c-api/typeobj.rst:1577 +#: c-api/typeobj.rst:1721 msgid "PyObject *tp_richcompare(PyObject *self, PyObject *other, int op);" msgstr "" -#: c-api/typeobj.rst:1579 +#: c-api/typeobj.rst:1723 msgid "" "The first parameter is guaranteed to be an instance of the type that is " "defined by :c:type:`PyTypeObject`." msgstr "" -#: c-api/typeobj.rst:1582 +#: c-api/typeobj.rst:1726 msgid "" "The function should return the result of the comparison (usually ``Py_True`` " "or ``Py_False``). If the comparison is undefined, it must return " @@ -2559,50 +2785,50 @@ msgid "" "set an exception condition." msgstr "" -#: c-api/typeobj.rst:1587 +#: c-api/typeobj.rst:1731 msgid "" "The following constants are defined to be used as the third argument for :c:" "member:`~PyTypeObject.tp_richcompare` and for :c:func:`PyObject_RichCompare`:" msgstr "" -#: c-api/typeobj.rst:1593 +#: c-api/typeobj.rst:1737 msgid "Constant" msgstr "" -#: c-api/typeobj.rst:1593 +#: c-api/typeobj.rst:1737 msgid "Comparison" msgstr "" -#: c-api/typeobj.rst:1595 +#: c-api/typeobj.rst:1739 msgid "``<``" msgstr "" -#: c-api/typeobj.rst:1597 +#: c-api/typeobj.rst:1741 msgid "``<=``" msgstr "" -#: c-api/typeobj.rst:1599 +#: c-api/typeobj.rst:1743 msgid "``==``" msgstr "" -#: c-api/typeobj.rst:1601 +#: c-api/typeobj.rst:1745 msgid "``!=``" msgstr "" -#: c-api/typeobj.rst:1603 +#: c-api/typeobj.rst:1747 msgid "``>``" msgstr "" -#: c-api/typeobj.rst:1605 +#: c-api/typeobj.rst:1749 msgid "``>=``" msgstr "" -#: c-api/typeobj.rst:1608 +#: c-api/typeobj.rst:1752 msgid "" "The following macro is defined to ease writing rich comparison functions:" msgstr "" -#: c-api/typeobj.rst:1612 +#: c-api/typeobj.rst:1756 msgid "" "Return ``Py_True`` or ``Py_False`` from the function, depending on the " "result of a comparison. VAL_A and VAL_B must be orderable by C comparison " @@ -2610,15 +2836,15 @@ msgid "" "specifies the requested operation, as for :c:func:`PyObject_RichCompare`." msgstr "" -#: c-api/typeobj.rst:1618 +#: c-api/typeobj.rst:1762 msgid "The returned value is a new :term:`strong reference`." msgstr "" -#: c-api/typeobj.rst:1620 +#: c-api/typeobj.rst:1764 msgid "On error, sets an exception and returns ``NULL`` from the function." msgstr "" -#: c-api/typeobj.rst:1628 +#: c-api/typeobj.rst:1772 msgid "" "This field is inherited by subtypes together with :c:member:`~PyTypeObject." "tp_hash`: a subtype inherits :c:member:`~PyTypeObject.tp_richcompare` and :c:" @@ -2626,7 +2852,7 @@ msgid "" "tp_richcompare` and :c:member:`~PyTypeObject.tp_hash` are both ``NULL``." msgstr "" -#: c-api/typeobj.rst:1635 +#: c-api/typeobj.rst:1779 msgid "" ":c:data:`PyBaseObject_Type` provides a :c:member:`~PyTypeObject." "tp_richcompare` implementation, which may be inherited. However, if only :c:" @@ -2635,13 +2861,13 @@ msgid "" "comparisons." msgstr "" -#: c-api/typeobj.rst:1644 +#: c-api/typeobj.rst:1788 msgid "" "While this field is still supported, :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` " "should be used instead, if at all possible." msgstr "" -#: c-api/typeobj.rst:1647 +#: c-api/typeobj.rst:1791 msgid "" "If the instances of this type are weakly referenceable, this field is " "greater than zero and contains the offset in the instance structure of the " @@ -2651,19 +2877,19 @@ msgid "" "`PyObject*` which is initialized to ``NULL``." msgstr "" -#: c-api/typeobj.rst:1654 +#: c-api/typeobj.rst:1798 msgid "" "Do not confuse this field with :c:member:`~PyTypeObject.tp_weaklist`; that " "is the list head for weak references to the type object itself." msgstr "" -#: c-api/typeobj.rst:1657 +#: c-api/typeobj.rst:1801 msgid "" "It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` bit " "and :c:member:`~PyTypeObject.tp_weaklistoffset`." msgstr "" -#: c-api/typeobj.rst:1662 +#: c-api/typeobj.rst:1806 msgid "" "This field is inherited by subtypes, but see the rules listed below. A " "subtype may override this offset; this means that the subtype uses a " @@ -2672,7 +2898,7 @@ msgid "" "not be a problem." msgstr "" -#: c-api/typeobj.rst:1669 +#: c-api/typeobj.rst:1813 msgid "" "If the :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` bit is set in the :c:member:" "`~PyTypeObject.tp_flags` field, then :c:member:`~PyTypeObject." @@ -2680,32 +2906,32 @@ msgid "" "unsafe to use this field." msgstr "" -#: c-api/typeobj.rst:1677 +#: c-api/typeobj.rst:1821 msgid "" "An optional pointer to a function that returns an :term:`iterator` for the " "object. Its presence normally signals that the instances of this type are :" "term:`iterable` (although sequences may be iterable without this function)." msgstr "" -#: c-api/typeobj.rst:1681 +#: c-api/typeobj.rst:1825 msgid "This function has the same signature as :c:func:`PyObject_GetIter`::" msgstr "" -#: c-api/typeobj.rst:1683 +#: c-api/typeobj.rst:1827 msgid "PyObject *tp_iter(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:1692 +#: c-api/typeobj.rst:1836 msgid "" "An optional pointer to a function that returns the next item in an :term:" "`iterator`. The signature is::" msgstr "" -#: c-api/typeobj.rst:1695 +#: c-api/typeobj.rst:1839 msgid "PyObject *tp_iternext(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:1697 +#: c-api/typeobj.rst:1841 msgid "" "When the iterator is exhausted, it must return ``NULL``; a :exc:" "`StopIteration` exception may or may not be set. When another error occurs, " @@ -2713,74 +2939,74 @@ msgid "" "this type are iterators." msgstr "" -#: c-api/typeobj.rst:1702 +#: c-api/typeobj.rst:1846 msgid "" "Iterator types should also define the :c:member:`~PyTypeObject.tp_iter` " "function, and that function should return the iterator instance itself (not " "a new iterator instance)." msgstr "" -#: c-api/typeobj.rst:1706 +#: c-api/typeobj.rst:1850 msgid "This function has the same signature as :c:func:`PyIter_Next`." msgstr "" -#: c-api/typeobj.rst:1715 +#: c-api/typeobj.rst:1859 msgid "" "An optional pointer to a static ``NULL``-terminated array of :c:type:" "`PyMethodDef` structures, declaring regular methods of this type." msgstr "" -#: c-api/typeobj.rst:1718 +#: c-api/typeobj.rst:1862 msgid "" "For each entry in the array, an entry is added to the type's dictionary " "(see :c:member:`~PyTypeObject.tp_dict` below) containing a method descriptor." msgstr "" -#: c-api/typeobj.rst:1723 +#: c-api/typeobj.rst:1867 msgid "" "This field is not inherited by subtypes (methods are inherited through a " "different mechanism)." msgstr "" -#: c-api/typeobj.rst:1729 +#: c-api/typeobj.rst:1873 msgid "" "An optional pointer to a static ``NULL``-terminated array of :c:type:" "`PyMemberDef` structures, declaring regular data members (fields or slots) " "of instances of this type." msgstr "" -#: c-api/typeobj.rst:1733 +#: c-api/typeobj.rst:1877 msgid "" "For each entry in the array, an entry is added to the type's dictionary " "(see :c:member:`~PyTypeObject.tp_dict` below) containing a member descriptor." msgstr "" -#: c-api/typeobj.rst:1738 +#: c-api/typeobj.rst:1882 msgid "" "This field is not inherited by subtypes (members are inherited through a " "different mechanism)." msgstr "" -#: c-api/typeobj.rst:1744 +#: c-api/typeobj.rst:1888 msgid "" "An optional pointer to a static ``NULL``-terminated array of :c:type:" "`PyGetSetDef` structures, declaring computed attributes of instances of this " "type." msgstr "" -#: c-api/typeobj.rst:1747 +#: c-api/typeobj.rst:1891 msgid "" "For each entry in the array, an entry is added to the type's dictionary " "(see :c:member:`~PyTypeObject.tp_dict` below) containing a getset descriptor." msgstr "" -#: c-api/typeobj.rst:1752 +#: c-api/typeobj.rst:1896 msgid "" "This field is not inherited by subtypes (computed attributes are inherited " "through a different mechanism)." msgstr "" -#: c-api/typeobj.rst:1758 +#: c-api/typeobj.rst:1902 msgid "" "An optional pointer to a base type from which type properties are " "inherited. At this level, only single inheritance is supported; multiple " @@ -2788,7 +3014,7 @@ msgid "" "metatype." msgstr "" -#: c-api/typeobj.rst:1766 +#: c-api/typeobj.rst:1910 msgid "" "Slot initialization is subject to the rules of initializing globals. C99 " "requires the initializers to be \"address constants\". Function designators " @@ -2796,7 +3022,7 @@ msgid "" "valid C99 address constants." msgstr "" -#: c-api/typeobj.rst:1771 +#: c-api/typeobj.rst:1915 msgid "" "However, the unary '&' operator applied to a non-static variable like :c:" "data:`PyBaseObject_Type` is not required to produce an address constant. " @@ -2804,27 +3030,27 @@ msgid "" "strictly standard conforming in this particular behavior." msgstr "" -#: c-api/typeobj.rst:1777 +#: c-api/typeobj.rst:1921 msgid "" "Consequently, :c:member:`~PyTypeObject.tp_base` should be set in the " "extension module's init function." msgstr "" -#: c-api/typeobj.rst:1782 +#: c-api/typeobj.rst:1926 msgid "This field is not inherited by subtypes (obviously)." msgstr "" -#: c-api/typeobj.rst:1786 +#: c-api/typeobj.rst:1930 msgid "" "This field defaults to ``&PyBaseObject_Type`` (which to Python programmers " "is known as the type :class:`object`)." msgstr "" -#: c-api/typeobj.rst:1792 +#: c-api/typeobj.rst:1936 msgid "The type's dictionary is stored here by :c:func:`PyType_Ready`." msgstr "" -#: c-api/typeobj.rst:1794 +#: c-api/typeobj.rst:1938 msgid "" "This field should normally be initialized to ``NULL`` before PyType_Ready is " "called; it may also be initialized to a dictionary containing initial " @@ -2835,70 +3061,70 @@ msgid "" "be treated as read-only." msgstr "" -#: c-api/typeobj.rst:1802 +#: c-api/typeobj.rst:1946 msgid "" "Some types may not store their dictionary in this slot. Use :c:func:" "`PyType_GetDict` to retrieve the dictionary for an arbitrary type." msgstr "" -#: c-api/typeobj.rst:1808 +#: c-api/typeobj.rst:1952 msgid "" "Internals detail: For static builtin types, this is always ``NULL``. " "Instead, the dict for such types is stored on ``PyInterpreterState``. Use :c:" "func:`PyType_GetDict` to get the dict for an arbitrary type." msgstr "" -#: c-api/typeobj.rst:1814 +#: c-api/typeobj.rst:1958 msgid "" "This field is not inherited by subtypes (though the attributes defined in " "here are inherited through a different mechanism)." msgstr "" -#: c-api/typeobj.rst:1819 +#: c-api/typeobj.rst:1963 msgid "" "If this field is ``NULL``, :c:func:`PyType_Ready` will assign a new " "dictionary to it." msgstr "" -#: c-api/typeobj.rst:1824 +#: c-api/typeobj.rst:1968 msgid "" "It is not safe to use :c:func:`PyDict_SetItem` on or otherwise modify :c:" "member:`~PyTypeObject.tp_dict` with the dictionary C-API." msgstr "" -#: c-api/typeobj.rst:1830 +#: c-api/typeobj.rst:1974 msgid "An optional pointer to a \"descriptor get\" function." msgstr "" -#: c-api/typeobj.rst:1848 c-api/typeobj.rst:1942 c-api/typeobj.rst:1966 +#: c-api/typeobj.rst:1992 c-api/typeobj.rst:2086 c-api/typeobj.rst:2109 msgid "The function signature is::" msgstr "" -#: c-api/typeobj.rst:1834 +#: c-api/typeobj.rst:1978 msgid "PyObject * tp_descr_get(PyObject *self, PyObject *obj, PyObject *type);" msgstr "" -#: c-api/typeobj.rst:1845 +#: c-api/typeobj.rst:1989 msgid "" "An optional pointer to a function for setting and deleting a descriptor's " "value." msgstr "" -#: c-api/typeobj.rst:1850 +#: c-api/typeobj.rst:1994 msgid "int tp_descr_set(PyObject *self, PyObject *obj, PyObject *value);" msgstr "" -#: c-api/typeobj.rst:1852 +#: c-api/typeobj.rst:1996 msgid "The *value* argument is set to ``NULL`` to delete the value." msgstr "" -#: c-api/typeobj.rst:1863 +#: c-api/typeobj.rst:2007 msgid "" "While this field is still supported, :c:macro:`Py_TPFLAGS_MANAGED_DICT` " "should be used instead, if at all possible." msgstr "" -#: c-api/typeobj.rst:1866 +#: c-api/typeobj.rst:2010 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 " @@ -2906,19 +3132,19 @@ msgid "" "func:`PyObject_GenericGetAttr`." msgstr "" -#: c-api/typeobj.rst:1871 +#: c-api/typeobj.rst:2015 msgid "" "Do not confuse this field with :c:member:`~PyTypeObject.tp_dict`; that is " "the dictionary for attributes of the type object itself." msgstr "" -#: c-api/typeobj.rst:1874 +#: c-api/typeobj.rst:2018 msgid "" "The value specifies the offset of the dictionary from the start of the " "instance structure." msgstr "" -#: c-api/typeobj.rst:1876 +#: c-api/typeobj.rst:2020 msgid "" "The :c:member:`~PyTypeObject.tp_dictoffset` should be regarded as write-" "only. To get the pointer to the dictionary call :c:func:" @@ -2927,13 +3153,13 @@ msgid "" "to call :c:func:`PyObject_GetAttr` when accessing an attribute on the object." msgstr "" -#: c-api/typeobj.rst:1882 +#: c-api/typeobj.rst:2026 msgid "" "It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit and :c:" "member:`~PyTypeObject.tp_dictoffset`." msgstr "" -#: c-api/typeobj.rst:1887 +#: c-api/typeobj.rst:2031 msgid "" "This field is inherited by subtypes. A subtype should not override this " "offset; doing so could be unsafe, if C code tries to access the dictionary " @@ -2941,25 +3167,25 @@ msgid "" "`Py_TPFLAGS_MANAGED_DICT`." msgstr "" -#: c-api/typeobj.rst:1894 +#: c-api/typeobj.rst:2038 msgid "" "This slot has no default. For :ref:`static types `, if the " "field is ``NULL`` then no :attr:`~object.__dict__` gets created for " "instances." msgstr "" -#: c-api/typeobj.rst:1897 +#: c-api/typeobj.rst:2041 msgid "" "If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit is set in the :c:member:" "`~PyTypeObject.tp_flags` field, then :c:member:`~PyTypeObject.tp_dictoffset` " "will be set to ``-1``, to indicate that it is unsafe to use this field." msgstr "" -#: c-api/typeobj.rst:1905 +#: c-api/typeobj.rst:2049 msgid "An optional pointer to an instance initialization function." msgstr "" -#: c-api/typeobj.rst:1907 +#: c-api/typeobj.rst:2051 msgid "" "This function corresponds to the :meth:`~object.__init__` method of " "classes. Like :meth:`!__init__`, it is possible to create an instance " @@ -2967,18 +3193,18 @@ msgid "" "instance by calling its :meth:`!__init__` method again." msgstr "" -#: c-api/typeobj.rst:1914 +#: c-api/typeobj.rst:2058 msgid "int tp_init(PyObject *self, PyObject *args, PyObject *kwds);" msgstr "" -#: c-api/typeobj.rst:1916 +#: c-api/typeobj.rst:2060 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:" "`~object.__init__`." msgstr "" -#: c-api/typeobj.rst:1920 +#: c-api/typeobj.rst:2064 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 :" @@ -2990,52 +3216,52 @@ msgid "" "subtype's :c:member:`~PyTypeObject.tp_init` is called." msgstr "" -#: c-api/typeobj.rst:1927 +#: c-api/typeobj.rst:2071 msgid "Returns ``0`` on success, ``-1`` and sets an exception on error." msgstr "" -#: c-api/typeobj.rst:1935 +#: c-api/typeobj.rst:2079 msgid "" "For :ref:`static types ` this field does not have a default." msgstr "" -#: c-api/typeobj.rst:1940 +#: c-api/typeobj.rst:2084 msgid "An optional pointer to an instance allocation function." msgstr "" -#: c-api/typeobj.rst:1944 +#: c-api/typeobj.rst:2088 msgid "PyObject *tp_alloc(PyTypeObject *self, Py_ssize_t nitems);" msgstr "" -#: c-api/typeobj.rst:1948 +#: c-api/typeobj.rst:2092 msgid "" -"This field is inherited by static subtypes, but not by dynamic subtypes " -"(subtypes created by a class statement)." +"Static subtypes inherit this slot, which will be :c:func:" +"`PyType_GenericAlloc` if inherited from :class:`object`." msgstr "" -#: c-api/typeobj.rst:1953 -msgid "" -"For dynamic subtypes, this field is always set to :c:func:" -"`PyType_GenericAlloc`, to force a standard heap allocation strategy." +#: c-api/typeobj.rst:2162 +msgid ":ref:`Heap subtypes ` do not inherit this slot." msgstr "" -#: c-api/typeobj.rst:1957 +#: c-api/typeobj.rst:2099 msgid "" -"For static subtypes, :c:data:`PyBaseObject_Type` uses :c:func:" -"`PyType_GenericAlloc`. That is the recommended value for all statically " -"defined types." +"For heap subtypes, this field is always set to :c:func:`PyType_GenericAlloc`." msgstr "" -#: c-api/typeobj.rst:1964 +#: c-api/typeobj.rst:2170 +msgid "For static subtypes, this slot is inherited (see above)." +msgstr "" + +#: c-api/typeobj.rst:2107 msgid "An optional pointer to an instance creation function." msgstr "" -#: c-api/typeobj.rst:1968 +#: c-api/typeobj.rst:2111 msgid "" "PyObject *tp_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds);" msgstr "" -#: c-api/typeobj.rst:1970 +#: c-api/typeobj.rst:2113 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 " @@ -3044,7 +3270,7 @@ msgid "" "that type (but not an unrelated type)." msgstr "" -#: c-api/typeobj.rst:1976 +#: c-api/typeobj.rst:2119 msgid "" "The :c:member:`~PyTypeObject.tp_new` function should call ``subtype-" ">tp_alloc(subtype, nitems)`` to allocate space for the object, and then do " @@ -3056,20 +3282,20 @@ msgid "" "be deferred to :c:member:`~PyTypeObject.tp_init`." msgstr "" -#: c-api/typeobj.rst:1984 +#: c-api/typeobj.rst:2127 msgid "" "Set the :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag to disallow " "creating instances of the type in Python." msgstr "" -#: c-api/typeobj.rst:1989 +#: c-api/typeobj.rst:2132 msgid "" "This field is inherited by subtypes, except it is not inherited by :ref:" "`static types ` whose :c:member:`~PyTypeObject.tp_base` is " "``NULL`` or ``&PyBaseObject_Type``." msgstr "" -#: c-api/typeobj.rst:1995 +#: c-api/typeobj.rst:2138 msgid "" "For :ref:`static types ` this field has no default. This means " "if the slot is defined as ``NULL``, the type cannot be called to create new " @@ -3077,45 +3303,42 @@ msgid "" "factory function." msgstr "" -#: c-api/typeobj.rst:2003 +#: c-api/typeobj.rst:2146 msgid "" "An optional pointer to an instance deallocation function. Its signature is::" msgstr "" -#: c-api/typeobj.rst:2005 +#: c-api/typeobj.rst:2148 msgid "void tp_free(void *self);" msgstr "" -#: c-api/typeobj.rst:2007 -msgid "" -"An initializer that is compatible with this signature is :c:func:" -"`PyObject_Free`." -msgstr "" - -#: c-api/typeobj.rst:2011 +#: c-api/typeobj.rst:2150 msgid "" -"This field is inherited by static subtypes, but not by dynamic subtypes " -"(subtypes created by a class statement)" +"This function must free the memory allocated by :c:member:`~PyTypeObject." +"tp_alloc`." msgstr "" -#: c-api/typeobj.rst:2016 +#: c-api/typeobj.rst:2155 msgid "" -"In dynamic subtypes, this field is set to a deallocator suitable to match :c:" -"func:`PyType_GenericAlloc` and the value of the :c:macro:" -"`Py_TPFLAGS_HAVE_GC` flag bit." +"Static subtypes inherit this slot, which will be :c:func:`PyObject_Free` if " +"inherited from :class:`object`. Exception: If the type supports garbage " +"collection (i.e., the :c:macro:`Py_TPFLAGS_HAVE_GC` flag is set in :c:member:" +"`~PyTypeObject.tp_flags`) and it would inherit :c:func:`PyObject_Free`, then " +"this slot is not inherited but instead defaults to :c:func:`PyObject_GC_Del`." msgstr "" -#: c-api/typeobj.rst:2020 +#: c-api/typeobj.rst:2166 msgid "" -"For static subtypes, :c:data:`PyBaseObject_Type` uses :c:func:" -"`PyObject_Free`." +"For :ref:`heap subtypes `, this slot defaults to a deallocator " +"suitable to match :c:func:`PyType_GenericAlloc` and the value of the :c:" +"macro:`Py_TPFLAGS_HAVE_GC` flag." msgstr "" -#: c-api/typeobj.rst:2025 +#: c-api/typeobj.rst:2175 msgid "An optional pointer to a function called by the garbage collector." msgstr "" -#: c-api/typeobj.rst:2027 +#: c-api/typeobj.rst:2177 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 " @@ -3127,91 +3350,91 @@ msgid "" "instance. The signature is::" msgstr "" -#: c-api/typeobj.rst:2035 +#: c-api/typeobj.rst:2185 msgid "int tp_is_gc(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:2037 +#: c-api/typeobj.rst:2187 msgid "" "(The only example of this are types themselves. The metatype, :c:data:" "`PyType_Type`, defines this function to distinguish between statically and :" "ref:`dynamically allocated types `.)" msgstr "" -#: c-api/typeobj.rst:2047 +#: c-api/typeobj.rst:2197 msgid "" "This slot has no default. If this field is ``NULL``, :c:macro:" "`Py_TPFLAGS_HAVE_GC` is used as the functional equivalent." msgstr "" -#: c-api/typeobj.rst:2053 +#: c-api/typeobj.rst:2203 msgid "Tuple of base types." msgstr "" -#: c-api/typeobj.rst:2079 +#: c-api/typeobj.rst:2229 msgid "" "This field should be set to ``NULL`` and treated as read-only. Python will " "fill it in when the type is :c:func:`initialized `." msgstr "" -#: c-api/typeobj.rst:2058 +#: c-api/typeobj.rst:2208 msgid "" "For dynamically created classes, the ``Py_tp_bases`` :c:type:`slot " "` can be used instead of the *bases* argument of :c:func:" "`PyType_FromSpecWithBases`. The argument form is preferred." msgstr "" -#: c-api/typeobj.rst:2065 +#: c-api/typeobj.rst:2215 msgid "" "Multiple inheritance does not work well for statically defined types. If you " "set ``tp_bases`` to a tuple, Python will not raise an error, but some slots " "will only be inherited from the first base." msgstr "" -#: c-api/typeobj.rst:2094 c-api/typeobj.rst:2128 c-api/typeobj.rst:2142 +#: c-api/typeobj.rst:2244 c-api/typeobj.rst:2278 c-api/typeobj.rst:2292 msgid "This field is not inherited." msgstr "" -#: c-api/typeobj.rst:2076 +#: c-api/typeobj.rst:2226 msgid "" "Tuple containing the expanded set of base types, starting with the type " "itself and ending with :class:`object`, in Method Resolution Order." msgstr "" -#: c-api/typeobj.rst:2084 +#: c-api/typeobj.rst:2234 msgid "" "This field is not inherited; it is calculated fresh by :c:func:" "`PyType_Ready`." msgstr "" -#: c-api/typeobj.rst:2090 +#: c-api/typeobj.rst:2240 msgid "Unused. Internal use only." msgstr "" -#: c-api/typeobj.rst:2099 +#: c-api/typeobj.rst:2249 msgid "" "A collection of subclasses. Internal use only. May be an invalid pointer." msgstr "" -#: c-api/typeobj.rst:2101 +#: c-api/typeobj.rst:2251 msgid "" "To get a list of subclasses, call the Python method :py:meth:`~type." "__subclasses__`." msgstr "" -#: c-api/typeobj.rst:2106 +#: c-api/typeobj.rst:2256 msgid "" "For some types, this field does not hold a valid :c:expr:`PyObject*`. The " "type was changed to :c:expr:`void*` to indicate this." msgstr "" -#: c-api/typeobj.rst:2116 +#: c-api/typeobj.rst:2266 msgid "" "Weak reference list head, for weak references to this type object. Not " "inherited. Internal use only." msgstr "" -#: c-api/typeobj.rst:2121 +#: c-api/typeobj.rst:2271 msgid "" "Internals detail: For the static builtin types this is always ``NULL``, even " "if weakrefs are added. Instead, the weakrefs for each are stored on " @@ -3219,68 +3442,242 @@ msgid "" "``_PyObject_GET_WEAKREFS_LISTPTR()`` macro to avoid the distinction." msgstr "" -#: c-api/typeobj.rst:2133 +#: c-api/typeobj.rst:2283 msgid "" "This field is deprecated. Use :c:member:`~PyTypeObject.tp_finalize` instead." msgstr "" -#: c-api/typeobj.rst:2138 +#: c-api/typeobj.rst:2288 msgid "Used to index into the method cache. Internal use only." msgstr "" -#: c-api/typeobj.rst:2147 +#: c-api/typeobj.rst:2297 msgid "" -"An optional pointer to an instance finalization function. Its signature is::" +"An optional pointer to an instance finalization function. This is the C " +"implementation of the :meth:`~object.__del__` special method. Its signature " +"is::" msgstr "" -#: c-api/typeobj.rst:2149 +#: c-api/typeobj.rst:2301 msgid "void tp_finalize(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:2151 +#: c-api/typeobj.rst:2303 +msgid "" +"The primary purpose of finalization is to perform any non-trivial cleanup " +"that must be performed before the object is destroyed, while the object and " +"any other objects it directly or indirectly references are still in a " +"consistent state. The finalizer is allowed to execute arbitrary Python code." +msgstr "" + +#: c-api/typeobj.rst:2309 +msgid "" +"Before Python automatically finalizes an object, some of the object's direct " +"or indirect referents might have themselves been automatically finalized. " +"However, none of the referents will have been automatically cleared (:c:" +"member:`~PyTypeObject.tp_clear`) yet." +msgstr "" + +#: c-api/typeobj.rst:2314 +msgid "" +"Other non-finalized objects might still be using a finalized object, so the " +"finalizer must leave the object in a sane state (e.g., invariants are still " +"met)." +msgstr "" + +#: c-api/typeobj.rst:2320 +msgid "" +"After Python automatically finalizes an object, Python might start " +"automatically clearing (:c:member:`~PyTypeObject.tp_clear`) the object and " +"its referents (direct and indirect). Cleared objects are not guaranteed to " +"be in a consistent state; a finalized object must be able to tolerate " +"cleared referents." +msgstr "" + +#: c-api/typeobj.rst:2328 +msgid "" +"An object is not guaranteed to be automatically finalized before its " +"destructor (:c:member:`~PyTypeObject.tp_dealloc`) is called. It is " +"recommended to call :c:func:`PyObject_CallFinalizerFromDealloc` at the " +"beginning of :c:member:`!tp_dealloc` to guarantee that the object is always " +"finalized before destruction." +msgstr "" + +#: c-api/typeobj.rst:2336 +msgid "" +"The :c:member:`~PyTypeObject.tp_finalize` function can be called from any " +"thread, although the :term:`GIL` will be held." +msgstr "" + +#: c-api/typeobj.rst:2341 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 " -"collector (if the instance is part of an isolated reference cycle) or just " -"before the object is deallocated. Either way, it is guaranteed to be called " -"before attempting to break reference cycles, ensuring that it finds the " -"object in a sane state." +"The :c:member:`!tp_finalize` function can be called during shutdown, after " +"some global variables have been deleted. See the documentation of the :meth:" +"`~object.__del__` method for details." msgstr "" -#: c-api/typeobj.rst:2158 +#: c-api/typeobj.rst:2345 msgid "" -":c:member:`~PyTypeObject.tp_finalize` should not mutate the current " -"exception status; therefore, a recommended way to write a non-trivial " -"finalizer is::" +"When Python finalizes an object, it behaves like the following algorithm:" msgstr "" -#: c-api/typeobj.rst:2161 +#: c-api/typeobj.rst:2347 +msgid "" +"Python might mark the object as *finalized*. Currently, Python always marks " +"objects whose type supports garbage collection (i.e., the :c:macro:" +"`Py_TPFLAGS_HAVE_GC` flag is set in :c:member:`~PyTypeObject.tp_flags`) and " +"never marks other types of objects; this might change in a future version." +msgstr "" + +#: c-api/typeobj.rst:2352 +msgid "" +"If the object is not marked as *finalized* and its :c:member:`!tp_finalize` " +"finalizer function is non-``NULL``, the finalizer function is called." +msgstr "" + +#: c-api/typeobj.rst:2355 +msgid "" +"If the finalizer function was called and the finalizer made the object " +"reachable (i.e., there is a reference to the object and it is not a member " +"of a :term:`cyclic isolate`), then the finalizer is said to have " +"*resurrected* the object. It is unspecified whether the finalizer can also " +"resurrect the object by adding a new reference to the object that does not " +"make it reachable, i.e., the object is (still) a member of a cyclic isolate." +msgstr "" + +#: c-api/typeobj.rst:2362 +msgid "" +"If the finalizer resurrected the object, the object's pending destruction is " +"canceled and the object's *finalized* mark might be removed if present. " +"Currently, Python never removes the *finalized* mark; this might change in a " +"future version." +msgstr "" + +#: c-api/typeobj.rst:2367 +msgid "" +"*Automatic finalization* refers to any finalization performed by Python " +"except via calls to :c:func:`PyObject_CallFinalizer` or :c:func:" +"`PyObject_CallFinalizerFromDealloc`. No guarantees are made about when, if, " +"or how often an object is automatically finalized, except:" +msgstr "" + +#: c-api/typeobj.rst:2372 +msgid "" +"Python will not automatically finalize an object if it is reachable, i.e., " +"there is a reference to it and it is not a member of a :term:`cyclic " +"isolate`." +msgstr "" + +#: c-api/typeobj.rst:2375 +msgid "" +"Python will not automatically finalize an object if finalizing it would not " +"mark the object as *finalized*. Currently, this applies to objects whose " +"type does not support garbage collection, i.e., the :c:macro:" +"`Py_TPFLAGS_HAVE_GC` flag is not set. Such objects can still be manually " +"finalized by calling :c:func:`PyObject_CallFinalizer` or :c:func:" +"`PyObject_CallFinalizerFromDealloc`." +msgstr "" + +#: c-api/typeobj.rst:2381 +msgid "" +"Python will not automatically finalize any two members of a :term:`cyclic " +"isolate` concurrently." +msgstr "" + +#: c-api/typeobj.rst:2383 +msgid "" +"Python will not automatically finalize an object after it has automatically " +"cleared (:c:member:`~PyTypeObject.tp_clear`) the object." +msgstr "" + +#: c-api/typeobj.rst:2385 +msgid "" +"If an object is a member of a :term:`cyclic isolate`, Python will not " +"automatically finalize it after automatically clearing (see :c:member:" +"`~PyTypeObject.tp_clear`) any other member." +msgstr "" + +#: c-api/typeobj.rst:2388 +msgid "" +"Python will automatically finalize every member of a :term:`cyclic isolate` " +"before it automatically clears (see :c:member:`~PyTypeObject.tp_clear`) any " +"of them." +msgstr "" + +#: c-api/typeobj.rst:2391 +msgid "" +"If Python is going to automatically clear an object (:c:member:" +"`~PyTypeObject.tp_clear`), it will automatically finalize the object first." +msgstr "" + +#: c-api/typeobj.rst:2395 +msgid "" +"Python currently only automatically finalizes objects that are members of a :" +"term:`cyclic isolate`, but future versions might finalize objects regularly " +"before their destruction." +msgstr "" + +#: c-api/typeobj.rst:2399 +msgid "" +"To manually finalize an object, do not call this function directly; call :c:" +"func:`PyObject_CallFinalizer` or :c:func:`PyObject_CallFinalizerFromDealloc` " +"instead." +msgstr "" + +#: c-api/typeobj.rst:2403 +msgid "" +":c:member:`~PyTypeObject.tp_finalize` should leave the current exception " +"status unchanged. The recommended way to write a non-trivial finalizer is " +"to back up the exception at the beginning by calling :c:func:" +"`PyErr_GetRaisedException` and restore the exception at the end by calling :" +"c:func:`PyErr_SetRaisedException`. If an exception is encountered in the " +"middle of the finalizer, log and clear it with :c:func:" +"`PyErr_WriteUnraisable` or :c:func:`PyErr_FormatUnraisable`. For example::" +msgstr "" + +#: c-api/typeobj.rst:2412 msgid "" "static void\n" -"local_finalize(PyObject *self)\n" +"foo_finalize(PyObject *self)\n" "{\n" -" /* Save the current exception, if any. */\n" +" // Save the current exception, if any.\n" " PyObject *exc = PyErr_GetRaisedException();\n" "\n" -" /* ... */\n" +" // ...\n" +"\n" +" if (do_something_that_might_raise() != success_indicator) {\n" +" PyErr_WriteUnraisable(self);\n" +" goto done;\n" +" }\n" "\n" -" /* Restore the saved exception. */\n" +"done:\n" +" // Restore the saved exception. This silently discards any exception\n" +" // raised above, so be sure to call PyErr_WriteUnraisable first if\n" +" // necessary.\n" " PyErr_SetRaisedException(exc);\n" "}" msgstr "" -#: c-api/typeobj.rst:2181 +#: c-api/typeobj.rst:2440 msgid "" "Before version 3.8 it was necessary to set the :c:macro:" "`Py_TPFLAGS_HAVE_FINALIZE` flags bit in order for this field to be used. " "This is no longer required." msgstr "" -#: c-api/typeobj.rst:2185 -msgid "\"Safe object finalization\" (:pep:`442`)" +#: c-api/typeobj.rst:2446 +msgid ":pep:`442`: \"Safe object finalization\"" +msgstr "" + +#: c-api/typeobj.rst:2449 +msgid ":c:func:`PyObject_CallFinalizer`" +msgstr "" + +#: c-api/typeobj.rst:2450 +msgid ":c:func:`PyObject_CallFinalizerFromDealloc`" msgstr "" -#: c-api/typeobj.rst:2190 +#: c-api/typeobj.rst:2455 msgid "" "A :ref:`vectorcall function ` to use for calls of this type " "object (rather than instances). In other words, ``tp_vectorcall`` can be " @@ -3288,13 +3685,13 @@ msgid "" "of *type*." msgstr "" -#: c-api/typeobj.rst:2195 +#: c-api/typeobj.rst:2460 msgid "" "As with any vectorcall function, if ``tp_vectorcall`` is ``NULL``, the " "*tp_call* protocol (``Py_TYPE(type)->tp_call``) is used instead." msgstr "" -#: c-api/typeobj.rst:2200 +#: c-api/typeobj.rst:2465 msgid "" "The :ref:`vectorcall protocol ` requires that the vectorcall " "function has the same behavior as the corresponding ``tp_call``. This means " @@ -3302,27 +3699,27 @@ msgid "" ">tp_call``." msgstr "" -#: c-api/typeobj.rst:2205 +#: c-api/typeobj.rst:2470 msgid "" "Specifically, if *type* uses the default metaclass, ``type->tp_vectorcall`` " "must behave the same as :c:expr:`PyType_Type->tp_call`, which:" msgstr "" -#: c-api/typeobj.rst:2209 +#: c-api/typeobj.rst:2474 msgid "calls ``type->tp_new``," msgstr "" -#: c-api/typeobj.rst:2211 +#: c-api/typeobj.rst:2476 msgid "" "if the result is a subclass of *type*, calls ``type->tp_init`` on the result " "of ``tp_new``, and" msgstr "" -#: c-api/typeobj.rst:2214 +#: c-api/typeobj.rst:2479 msgid "returns the result of ``tp_new``." msgstr "" -#: c-api/typeobj.rst:2216 +#: c-api/typeobj.rst:2481 msgid "" "Typically, ``tp_vectorcall`` is overridden to optimize this process for " "specific :c:member:`~PyTypeObject.tp_new` and :c:member:`~PyTypeObject." @@ -3331,65 +3728,65 @@ msgid "" "__init__`, respectively)." msgstr "" -#: c-api/typeobj.rst:2227 +#: c-api/typeobj.rst:2492 msgid "This field is never inherited." msgstr "" -#: c-api/typeobj.rst:2229 +#: c-api/typeobj.rst:2494 msgid "(the field exists since 3.8 but it's only used since 3.9)" msgstr "" -#: c-api/typeobj.rst:2234 +#: c-api/typeobj.rst:2499 msgid "Internal. Do not use." msgstr "" -#: c-api/typeobj.rst:2242 +#: c-api/typeobj.rst:2507 msgid "Static Types" msgstr "" -#: c-api/typeobj.rst:2244 +#: c-api/typeobj.rst:2509 msgid "" "Traditionally, types defined in C code are *static*, that is, a static :c:" "type:`PyTypeObject` structure is defined directly in code and initialized " "using :c:func:`PyType_Ready`." msgstr "" -#: c-api/typeobj.rst:2248 +#: c-api/typeobj.rst:2513 msgid "" "This results in types that are limited relative to types defined in Python:" msgstr "" -#: c-api/typeobj.rst:2250 +#: c-api/typeobj.rst:2515 msgid "" "Static types are limited to one base, i.e. they cannot use multiple " "inheritance." msgstr "" -#: c-api/typeobj.rst:2252 +#: c-api/typeobj.rst:2517 msgid "" "Static type objects (but not necessarily their instances) are immutable. It " "is not possible to add or modify the type object's attributes from Python." msgstr "" -#: c-api/typeobj.rst:2254 +#: c-api/typeobj.rst:2519 msgid "" "Static type objects are shared across :ref:`sub-interpreters `, so they should not include any subinterpreter-" "specific state." msgstr "" -#: c-api/typeobj.rst:2258 +#: c-api/typeobj.rst:2523 msgid "" "Also, since :c:type:`PyTypeObject` is only part of the :ref:`Limited API " "` as an opaque struct, any extension modules using static " "types must be compiled for a specific Python minor version." msgstr "" -#: c-api/typeobj.rst:2266 +#: c-api/typeobj.rst:2531 msgid "Heap Types" msgstr "" -#: c-api/typeobj.rst:2268 +#: c-api/typeobj.rst:2533 msgid "" "An alternative to :ref:`static types ` is *heap-allocated " "types*, or *heap types* for short, which correspond closely to classes " @@ -3397,29 +3794,29 @@ msgid "" "`Py_TPFLAGS_HEAPTYPE` flag set." msgstr "" -#: c-api/typeobj.rst:2273 +#: c-api/typeobj.rst:2538 msgid "" "This is done by filling a :c:type:`PyType_Spec` structure and calling :c:" "func:`PyType_FromSpec`, :c:func:`PyType_FromSpecWithBases`, :c:func:" "`PyType_FromModuleAndSpec`, or :c:func:`PyType_FromMetaclass`." msgstr "" -#: c-api/typeobj.rst:2281 +#: c-api/typeobj.rst:2546 msgid "Number Object Structures" msgstr "" -#: c-api/typeobj.rst:2288 +#: c-api/typeobj.rst:2553 msgid "" "This structure holds pointers to the functions which an object uses to " "implement the number protocol. Each function is used by the function of " "similar name documented in the :ref:`number` section." msgstr "" -#: c-api/typeobj.rst:2618 +#: c-api/typeobj.rst:2883 msgid "Here is the structure definition::" msgstr "" -#: c-api/typeobj.rst:2296 +#: c-api/typeobj.rst:2561 msgid "" "typedef struct {\n" " binaryfunc nb_add;\n" @@ -3465,7 +3862,7 @@ msgid "" "} PyNumberMethods;" msgstr "" -#: c-api/typeobj.rst:2341 +#: c-api/typeobj.rst:2606 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 " @@ -3475,31 +3872,31 @@ msgid "" "and set an exception." msgstr "" -#: c-api/typeobj.rst:2350 +#: c-api/typeobj.rst:2615 msgid "" "The :c:member:`~PyNumberMethods.nb_reserved` field should always be " "``NULL``. It was previously called :c:member:`!nb_long`, and was renamed in " "Python 3.0.1." msgstr "" -#: c-api/typeobj.rst:2395 +#: c-api/typeobj.rst:2660 msgid "Mapping Object Structures" msgstr "" -#: c-api/typeobj.rst:2402 +#: c-api/typeobj.rst:2667 msgid "" "This structure holds pointers to the functions which an object uses to " "implement the mapping protocol. It has three members:" msgstr "" -#: c-api/typeobj.rst:2407 +#: c-api/typeobj.rst:2672 msgid "" "This function is used by :c:func:`PyMapping_Size` and :c:func:" "`PyObject_Size`, and has the same signature. This slot may be set to " "``NULL`` if the object has no defined length." msgstr "" -#: c-api/typeobj.rst:2413 +#: c-api/typeobj.rst:2678 msgid "" "This function is used by :c:func:`PyObject_GetItem` and :c:func:" "`PySequence_GetSlice`, and has the same signature as :c:func:`!" @@ -3507,7 +3904,7 @@ msgid "" "`PyMapping_Check` function to return ``1``, it can be ``NULL`` otherwise." msgstr "" -#: c-api/typeobj.rst:2421 +#: c-api/typeobj.rst:2686 msgid "" "This function is used by :c:func:`PyObject_SetItem`, :c:func:" "`PyObject_DelItem`, :c:func:`PySequence_SetSlice` and :c:func:" @@ -3517,17 +3914,17 @@ msgid "" "deletion." msgstr "" -#: c-api/typeobj.rst:2432 +#: c-api/typeobj.rst:2697 msgid "Sequence Object Structures" msgstr "" -#: c-api/typeobj.rst:2439 +#: c-api/typeobj.rst:2704 msgid "" "This structure holds pointers to the functions which an object uses to " "implement the sequence protocol." msgstr "" -#: c-api/typeobj.rst:2444 +#: c-api/typeobj.rst:2709 msgid "" "This function is used by :c:func:`PySequence_Size` and :c:func:" "`PyObject_Size`, and has the same signature. It is also used for handling " @@ -3535,21 +3932,21 @@ msgid "" "member:`~PySequenceMethods.sq_ass_item` slots." msgstr "" -#: c-api/typeobj.rst:2451 +#: c-api/typeobj.rst:2716 msgid "" "This function is used by :c:func:`PySequence_Concat` and has the same " "signature. It is also used by the ``+`` operator, after trying the numeric " "addition via the :c:member:`~PyNumberMethods.nb_add` slot." msgstr "" -#: c-api/typeobj.rst:2457 +#: c-api/typeobj.rst:2722 msgid "" "This function is used by :c:func:`PySequence_Repeat` and has the same " "signature. It is also used by the ``*`` operator, after trying numeric " "multiplication via the :c:member:`~PyNumberMethods.nb_multiply` slot." msgstr "" -#: c-api/typeobj.rst:2463 +#: c-api/typeobj.rst:2728 msgid "" "This function is used by :c:func:`PySequence_GetItem` and has the same " "signature. It is also used by :c:func:`PyObject_GetItem`, after trying the " @@ -3558,7 +3955,7 @@ msgid "" "``1``, it can be ``NULL`` otherwise." msgstr "" -#: c-api/typeobj.rst:2469 +#: c-api/typeobj.rst:2734 msgid "" "Negative indexes are handled as follows: if the :c:member:" "`~PySequenceMethods.sq_length` slot is filled, it is called and the sequence " @@ -3567,7 +3964,7 @@ msgid "" "index is passed as is to the function." msgstr "" -#: c-api/typeobj.rst:2476 +#: c-api/typeobj.rst:2741 msgid "" "This function is used by :c:func:`PySequence_SetItem` and has the same " "signature. It is also used by :c:func:`PyObject_SetItem` and :c:func:" @@ -3576,14 +3973,14 @@ msgid "" "``NULL`` if the object does not support item assignment and deletion." msgstr "" -#: c-api/typeobj.rst:2485 +#: c-api/typeobj.rst:2750 msgid "" "This function may be used by :c:func:`PySequence_Contains` and has the same " "signature. This slot may be left to ``NULL``, in this case :c:func:`!" "PySequence_Contains` simply traverses the sequence until it finds a match." msgstr "" -#: c-api/typeobj.rst:2492 +#: c-api/typeobj.rst:2757 msgid "" "This function is used by :c:func:`PySequence_InPlaceConcat` and has the same " "signature. It should modify its first operand, and return it. This slot " @@ -3593,7 +3990,7 @@ msgid "" "c:member:`~PyNumberMethods.nb_inplace_add` slot." msgstr "" -#: c-api/typeobj.rst:2501 +#: c-api/typeobj.rst:2766 msgid "" "This function is used by :c:func:`PySequence_InPlaceRepeat` and has the same " "signature. It should modify its first operand, and return it. This slot " @@ -3603,74 +4000,74 @@ msgid "" "via the :c:member:`~PyNumberMethods.nb_inplace_multiply` slot." msgstr "" -#: c-api/typeobj.rst:2512 +#: c-api/typeobj.rst:2777 msgid "Buffer Object Structures" msgstr "" -#: c-api/typeobj.rst:2520 +#: c-api/typeobj.rst:2785 msgid "" "This structure holds pointers to the functions required by the :ref:`Buffer " "protocol `. The protocol defines how an exporter object can " "expose its internal data to consumer objects." msgstr "" -#: c-api/typeobj.rst:2575 c-api/typeobj.rst:2640 c-api/typeobj.rst:2662 +#: c-api/typeobj.rst:2840 c-api/typeobj.rst:2905 c-api/typeobj.rst:2927 msgid "The signature of this function is::" msgstr "" -#: c-api/typeobj.rst:2528 +#: c-api/typeobj.rst:2793 msgid "int (PyObject *exporter, Py_buffer *view, int flags);" msgstr "" -#: c-api/typeobj.rst:2530 +#: c-api/typeobj.rst:2795 msgid "" "Handle a request to *exporter* to fill in *view* as specified by *flags*. " "Except for point (3), an implementation of this function MUST take these " "steps:" msgstr "" -#: c-api/typeobj.rst:2534 +#: c-api/typeobj.rst:2799 msgid "" "Check if the request can be met. If not, raise :exc:`BufferError`, set :c:" "expr:`view->obj` to ``NULL`` and return ``-1``." msgstr "" -#: c-api/typeobj.rst:2537 +#: c-api/typeobj.rst:2802 msgid "Fill in the requested fields." msgstr "" -#: c-api/typeobj.rst:2539 +#: c-api/typeobj.rst:2804 msgid "Increment an internal counter for the number of exports." msgstr "" -#: c-api/typeobj.rst:2541 +#: c-api/typeobj.rst:2806 msgid "" "Set :c:expr:`view->obj` to *exporter* and increment :c:expr:`view->obj`." msgstr "" -#: c-api/typeobj.rst:2543 +#: c-api/typeobj.rst:2808 msgid "Return ``0``." msgstr "" -#: c-api/typeobj.rst:2545 +#: c-api/typeobj.rst:2810 msgid "" "If *exporter* is part of a chain or tree of buffer providers, two main " "schemes can be used:" msgstr "" -#: c-api/typeobj.rst:2548 +#: c-api/typeobj.rst:2813 msgid "" "Re-export: Each member of the tree acts as the exporting object and sets :c:" "expr:`view->obj` to a new reference to itself." msgstr "" -#: c-api/typeobj.rst:2551 +#: c-api/typeobj.rst:2816 msgid "" "Redirect: The buffer request is redirected to the root object of the tree. " "Here, :c:expr:`view->obj` will be a new reference to the root object." msgstr "" -#: c-api/typeobj.rst:2555 +#: c-api/typeobj.rst:2820 msgid "" "The individual fields of *view* are described in section :ref:`Buffer " "structure `, the rules how an exporter must react to " @@ -3678,7 +4075,7 @@ msgid "" "types>`." msgstr "" -#: c-api/typeobj.rst:2560 +#: c-api/typeobj.rst:2825 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:" @@ -3687,23 +4084,23 @@ msgid "" "internal` are read-only for the consumer." msgstr "" -#: c-api/typeobj.rst:2567 +#: c-api/typeobj.rst:2832 msgid "" ":c:func:`PyBuffer_FillInfo` provides an easy way of exposing a simple bytes " "buffer while dealing correctly with all request types." msgstr "" -#: c-api/typeobj.rst:2570 +#: c-api/typeobj.rst:2835 msgid "" ":c:func:`PyObject_GetBuffer` is the interface for the consumer that wraps " "this function." msgstr "" -#: c-api/typeobj.rst:2577 +#: c-api/typeobj.rst:2842 msgid "void (PyObject *exporter, Py_buffer *view);" msgstr "" -#: c-api/typeobj.rst:2579 +#: c-api/typeobj.rst:2844 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 " @@ -3711,15 +4108,15 @@ msgid "" "these optional steps:" msgstr "" -#: c-api/typeobj.rst:2584 +#: c-api/typeobj.rst:2849 msgid "Decrement an internal counter for the number of exports." msgstr "" -#: c-api/typeobj.rst:2586 +#: c-api/typeobj.rst:2851 msgid "If the counter is ``0``, free all memory associated with *view*." msgstr "" -#: c-api/typeobj.rst:2588 +#: c-api/typeobj.rst:2853 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 " @@ -3727,30 +4124,30 @@ msgid "" "*view* argument." msgstr "" -#: c-api/typeobj.rst:2594 +#: c-api/typeobj.rst:2859 msgid "" "This function MUST NOT decrement :c:expr:`view->obj`, since that is done " "automatically in :c:func:`PyBuffer_Release` (this scheme is useful for " "breaking reference cycles)." msgstr "" -#: c-api/typeobj.rst:2599 +#: c-api/typeobj.rst:2864 msgid "" ":c:func:`PyBuffer_Release` is the interface for the consumer that wraps this " "function." msgstr "" -#: c-api/typeobj.rst:2607 +#: c-api/typeobj.rst:2872 msgid "Async Object Structures" msgstr "" -#: c-api/typeobj.rst:2615 +#: c-api/typeobj.rst:2880 msgid "" "This structure holds pointers to the functions required to implement :term:" "`awaitable` and :term:`asynchronous iterator` objects." msgstr "" -#: c-api/typeobj.rst:2620 +#: c-api/typeobj.rst:2885 msgid "" "typedef struct {\n" " unaryfunc am_await;\n" @@ -3760,61 +4157,61 @@ msgid "" "} PyAsyncMethods;" msgstr "" -#: c-api/typeobj.rst:2631 +#: c-api/typeobj.rst:2896 msgid "PyObject *am_await(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:2633 +#: c-api/typeobj.rst:2898 msgid "" "The returned object must be an :term:`iterator`, i.e. :c:func:`PyIter_Check` " "must return ``1`` for it." msgstr "" -#: c-api/typeobj.rst:2636 +#: c-api/typeobj.rst:2901 msgid "" "This slot may be set to ``NULL`` if an object is not an :term:`awaitable`." msgstr "" -#: c-api/typeobj.rst:2642 +#: c-api/typeobj.rst:2907 msgid "PyObject *am_aiter(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:2644 +#: c-api/typeobj.rst:2909 msgid "" "Must return an :term:`asynchronous iterator` object. See :meth:`~object." "__anext__` for details." msgstr "" -#: c-api/typeobj.rst:2647 +#: c-api/typeobj.rst:2912 msgid "" "This slot may be set to ``NULL`` if an object does not implement " "asynchronous iteration protocol." msgstr "" -#: c-api/typeobj.rst:2654 +#: c-api/typeobj.rst:2919 msgid "PyObject *am_anext(PyObject *self);" msgstr "" -#: c-api/typeobj.rst:2656 +#: c-api/typeobj.rst:2921 msgid "" "Must return an :term:`awaitable` object. See :meth:`~object.__anext__` for " "details. This slot may be set to ``NULL``." msgstr "" -#: c-api/typeobj.rst:2664 +#: c-api/typeobj.rst:2929 msgid "PySendResult am_send(PyObject *self, PyObject *arg, PyObject **result);" msgstr "" -#: c-api/typeobj.rst:2666 +#: c-api/typeobj.rst:2931 msgid "" "See :c:func:`PyIter_Send` for details. This slot may be set to ``NULL``." msgstr "" -#: c-api/typeobj.rst:2675 +#: c-api/typeobj.rst:2940 msgid "Slot Type typedefs" msgstr "" -#: c-api/typeobj.rst:2679 +#: c-api/typeobj.rst:2944 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 " @@ -3828,80 +4225,80 @@ msgid "" "length of the block should be :c:member:`~PyTypeObject.tp_basicsize`." msgstr "" -#: c-api/typeobj.rst:2689 +#: c-api/typeobj.rst:2954 msgid "" "This function should not do any other instance initialization, not even to " "allocate additional memory; that should be done by :c:member:`~PyTypeObject." "tp_new`." msgstr "" -#: c-api/typeobj.rst:2696 +#: c-api/typeobj.rst:2961 msgid "See :c:member:`~PyTypeObject.tp_free`." msgstr "" -#: c-api/typeobj.rst:2700 +#: c-api/typeobj.rst:2965 msgid "See :c:member:`~PyTypeObject.tp_new`." msgstr "" -#: c-api/typeobj.rst:2704 +#: c-api/typeobj.rst:2969 msgid "See :c:member:`~PyTypeObject.tp_init`." msgstr "" -#: c-api/typeobj.rst:2708 +#: c-api/typeobj.rst:2973 msgid "See :c:member:`~PyTypeObject.tp_repr`." msgstr "" -#: c-api/typeobj.rst:2721 +#: c-api/typeobj.rst:2986 msgid "Return the value of the named attribute for the object." msgstr "" -#: c-api/typeobj.rst:2727 +#: c-api/typeobj.rst:2992 msgid "" "Set the value of the named attribute for the object. The value argument is " "set to ``NULL`` to delete the attribute." msgstr "" -#: c-api/typeobj.rst:2723 +#: c-api/typeobj.rst:2988 msgid "See :c:member:`~PyTypeObject.tp_getattro`." msgstr "" -#: c-api/typeobj.rst:2730 +#: c-api/typeobj.rst:2995 msgid "See :c:member:`~PyTypeObject.tp_setattro`." msgstr "" -#: c-api/typeobj.rst:2734 +#: c-api/typeobj.rst:2999 msgid "See :c:member:`~PyTypeObject.tp_descr_get`." msgstr "" -#: c-api/typeobj.rst:2738 +#: c-api/typeobj.rst:3003 msgid "See :c:member:`~PyTypeObject.tp_descr_set`." msgstr "" -#: c-api/typeobj.rst:2742 +#: c-api/typeobj.rst:3007 msgid "See :c:member:`~PyTypeObject.tp_hash`." msgstr "" -#: c-api/typeobj.rst:2746 +#: c-api/typeobj.rst:3011 msgid "See :c:member:`~PyTypeObject.tp_richcompare`." msgstr "" -#: c-api/typeobj.rst:2750 +#: c-api/typeobj.rst:3015 msgid "See :c:member:`~PyTypeObject.tp_iter`." msgstr "" -#: c-api/typeobj.rst:2754 +#: c-api/typeobj.rst:3019 msgid "See :c:member:`~PyTypeObject.tp_iternext`." msgstr "" -#: c-api/typeobj.rst:2768 +#: c-api/typeobj.rst:3033 msgid "See :c:member:`~PyAsyncMethods.am_send`." msgstr "" -#: c-api/typeobj.rst:2784 +#: c-api/typeobj.rst:3049 msgid "Examples" msgstr "" -#: c-api/typeobj.rst:2786 +#: c-api/typeobj.rst:3051 msgid "" "The following are simple examples of Python type definitions. They include " "common usage you may encounter. Some demonstrate tricky corner cases. For " @@ -3909,11 +4306,11 @@ msgid "" "and :ref:`new-types-topics`." msgstr "" -#: c-api/typeobj.rst:2791 +#: c-api/typeobj.rst:3056 msgid "A basic :ref:`static type `::" msgstr "" -#: c-api/typeobj.rst:2793 +#: c-api/typeobj.rst:3058 msgid "" "typedef struct {\n" " PyObject_HEAD\n" @@ -3931,13 +4328,13 @@ msgid "" "};" msgstr "" -#: c-api/typeobj.rst:2808 +#: c-api/typeobj.rst:3073 msgid "" "You may also find older code (especially in the CPython code base) with a " "more verbose initializer::" msgstr "" -#: c-api/typeobj.rst:2811 +#: c-api/typeobj.rst:3076 msgid "" "static PyTypeObject MyObject_Type = {\n" " PyVarObject_HEAD_INIT(NULL, 0)\n" @@ -3981,11 +4378,11 @@ msgid "" "};" msgstr "" -#: c-api/typeobj.rst:2852 +#: c-api/typeobj.rst:3117 msgid "A type that supports weakrefs, instance dicts, and hashing::" msgstr "" -#: c-api/typeobj.rst:2854 +#: c-api/typeobj.rst:3119 msgid "" "typedef struct {\n" " PyObject_HEAD\n" @@ -4011,14 +4408,14 @@ msgid "" "};" msgstr "" -#: c-api/typeobj.rst:2877 +#: c-api/typeobj.rst:3142 msgid "" "A str subclass that cannot be subclassed and cannot be called to create " "instances (e.g. uses a separate factory func) using :c:macro:" "`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag::" msgstr "" -#: c-api/typeobj.rst:2881 +#: c-api/typeobj.rst:3146 msgid "" "typedef struct {\n" " PyUnicodeObject raw;\n" @@ -4036,12 +4433,12 @@ msgid "" "};" msgstr "" -#: c-api/typeobj.rst:2896 +#: c-api/typeobj.rst:3161 msgid "" "The simplest :ref:`static type ` with fixed-length instances::" msgstr "" -#: c-api/typeobj.rst:2898 +#: c-api/typeobj.rst:3163 msgid "" "typedef struct {\n" " PyObject_HEAD\n" @@ -4053,13 +4450,13 @@ msgid "" "};" msgstr "" -#: c-api/typeobj.rst:2907 +#: c-api/typeobj.rst:3172 msgid "" "The simplest :ref:`static type ` with variable-length " "instances::" msgstr "" -#: c-api/typeobj.rst:2909 +#: c-api/typeobj.rst:3174 msgid "" "typedef struct {\n" " PyObject_VAR_HEAD\n" @@ -4074,14 +4471,14 @@ msgid "" "};" msgstr "" -#: c-api/typeobj.rst:912 +#: c-api/typeobj.rst:978 msgid "built-in function" msgstr "" -#: c-api/typeobj.rst:847 +#: c-api/typeobj.rst:913 msgid "repr" msgstr "" -#: c-api/typeobj.rst:912 +#: c-api/typeobj.rst:978 msgid "hash" msgstr "" diff --git a/c-api/unicode.po b/c-api/unicode.po index c0b64efc..afd2dde3 100644 --- a/c-api/unicode.po +++ b/c-api/unicode.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1782,30 +1782,26 @@ msgid "" "c:macro:`!CP_ACP` code page to get the MBCS encoder." msgstr "" -#: c-api/unicode.rst:1465 -msgid "Methods & Slots" -msgstr "" - -#: c-api/unicode.rst:1471 +#: c-api/unicode.rst:1467 msgid "Methods and Slot Functions" msgstr "" -#: c-api/unicode.rst:1473 +#: c-api/unicode.rst:1469 msgid "" "The following APIs are capable of handling Unicode objects and strings on " "input (we refer to them as strings in the descriptions) and return Unicode " "objects or integers as appropriate." msgstr "" -#: c-api/unicode.rst:1477 +#: c-api/unicode.rst:1473 msgid "They all return ``NULL`` or ``-1`` if an exception occurs." msgstr "" -#: c-api/unicode.rst:1482 +#: c-api/unicode.rst:1478 msgid "Concat two strings giving a new Unicode string." msgstr "" -#: c-api/unicode.rst:1487 +#: c-api/unicode.rst:1483 msgid "" "Split a string giving a list of Unicode strings. If *sep* is ``NULL``, " "splitting will be done at all whitespace substrings. Otherwise, splits " @@ -1814,32 +1810,32 @@ msgid "" "list." msgstr "" -#: c-api/unicode.rst:1502 c-api/unicode.rst:1536 +#: c-api/unicode.rst:1498 c-api/unicode.rst:1532 msgid "On error, return ``NULL`` with an exception set." msgstr "" -#: c-api/unicode.rst:1494 +#: c-api/unicode.rst:1490 msgid "Equivalent to :py:meth:`str.split`." msgstr "" -#: c-api/unicode.rst:1499 +#: c-api/unicode.rst:1495 msgid "" "Similar to :c:func:`PyUnicode_Split`, but splitting will be done beginning " "at the end of the string." msgstr "" -#: c-api/unicode.rst:1504 +#: c-api/unicode.rst:1500 msgid "Equivalent to :py:meth:`str.rsplit`." msgstr "" -#: c-api/unicode.rst:1509 +#: c-api/unicode.rst:1505 msgid "" "Split a Unicode string at line breaks, returning a list of Unicode strings. " "CRLF is considered to be one line break. If *keepends* is ``0``, the Line " "break characters are not included in the resulting strings." msgstr "" -#: c-api/unicode.rst:1516 +#: c-api/unicode.rst:1512 msgid "" "Split a Unicode string at the first occurrence of *sep*, and return a 3-" "tuple containing the part before the separator, the separator itself, and " @@ -1847,39 +1843,39 @@ msgid "" "tuple containing the string itself, followed by two empty strings." msgstr "" -#: c-api/unicode.rst:1534 +#: c-api/unicode.rst:1530 msgid "*sep* must not be empty." msgstr "" -#: c-api/unicode.rst:1525 +#: c-api/unicode.rst:1521 msgid "Equivalent to :py:meth:`str.partition`." msgstr "" -#: c-api/unicode.rst:1530 +#: c-api/unicode.rst:1526 msgid "" "Similar to :c:func:`PyUnicode_Partition`, but split a Unicode string at the " "last occurrence of *sep*. If the separator is not found, return a 3-tuple " "containing two empty strings, followed by the string itself." msgstr "" -#: c-api/unicode.rst:1538 +#: c-api/unicode.rst:1534 msgid "Equivalent to :py:meth:`str.rpartition`." msgstr "" -#: c-api/unicode.rst:1543 +#: c-api/unicode.rst:1539 msgid "" "Join a sequence of strings using the given *separator* and return the " "resulting Unicode string." msgstr "" -#: c-api/unicode.rst:1550 +#: c-api/unicode.rst:1546 msgid "" "Return ``1`` if *substr* matches ``unicode[start:end]`` at the given tail " "end (*direction* == ``-1`` means to do a prefix match, *direction* == ``1`` " "a suffix match), ``0`` otherwise. Return ``-1`` if an error occurred." msgstr "" -#: c-api/unicode.rst:1558 +#: c-api/unicode.rst:1554 msgid "" "Return the first position of *substr* in ``unicode[start:end]`` using the " "given *direction* (*direction* == ``1`` means to do a forward search, " @@ -1888,7 +1884,7 @@ msgid "" "``-2`` indicates that an error occurred and an exception has been set." msgstr "" -#: c-api/unicode.rst:1568 +#: c-api/unicode.rst:1564 msgid "" "Return the first position of the character *ch* in ``unicode[start:end]`` " "using the given *direction* (*direction* == ``1`` means to do a forward " @@ -1898,73 +1894,73 @@ msgid "" "set." msgstr "" -#: c-api/unicode.rst:1576 +#: c-api/unicode.rst:1572 msgid "" "*start* and *end* are now adjusted to behave like ``unicode[start:end]``." msgstr "" -#: c-api/unicode.rst:1583 +#: c-api/unicode.rst:1579 msgid "" "Return the number of non-overlapping occurrences of *substr* in " "``unicode[start:end]``. Return ``-1`` if an error occurred." msgstr "" -#: c-api/unicode.rst:1590 +#: c-api/unicode.rst:1586 msgid "" "Replace at most *maxcount* occurrences of *substr* in *unicode* with " "*replstr* and return the resulting Unicode object. *maxcount* == ``-1`` " "means replace all occurrences." msgstr "" -#: c-api/unicode.rst:1597 +#: c-api/unicode.rst:1593 msgid "" "Compare two strings and return ``-1``, ``0``, ``1`` for less than, equal, " "and greater than, respectively." msgstr "" -#: c-api/unicode.rst:1600 +#: c-api/unicode.rst:1596 msgid "" "This function returns ``-1`` upon failure, so one should call :c:func:" "`PyErr_Occurred` to check for errors." msgstr "" -#: c-api/unicode.rst:1605 +#: c-api/unicode.rst:1601 msgid "The :c:func:`PyUnicode_Equal` function." msgstr "" -#: c-api/unicode.rst:1610 +#: c-api/unicode.rst:1606 msgid "Test if two strings are equal:" msgstr "" -#: c-api/unicode.rst:1612 +#: c-api/unicode.rst:1608 msgid "Return ``1`` if *a* is equal to *b*." msgstr "" -#: c-api/unicode.rst:1613 +#: c-api/unicode.rst:1609 msgid "Return ``0`` if *a* is not equal to *b*." msgstr "" -#: c-api/unicode.rst:1614 +#: c-api/unicode.rst:1610 msgid "" "Set a :exc:`TypeError` exception and return ``-1`` if *a* or *b* is not a :" "class:`str` object." msgstr "" -#: c-api/unicode.rst:1617 +#: c-api/unicode.rst:1613 msgid "The function always succeeds if *a* and *b* are :class:`str` objects." msgstr "" -#: c-api/unicode.rst:1619 +#: c-api/unicode.rst:1615 msgid "" "The function works for :class:`str` subclasses, but does not honor custom " "``__eq__()`` method." msgstr "" -#: c-api/unicode.rst:1624 +#: c-api/unicode.rst:1620 msgid "The :c:func:`PyUnicode_Compare` function." msgstr "" -#: c-api/unicode.rst:1631 +#: c-api/unicode.rst:1627 msgid "" "Compare a Unicode object with a char buffer which is interpreted as being " "UTF-8 or ASCII encoded and return true (``1``) if they are equal, or false " @@ -1973,18 +1969,18 @@ msgid "" "is returned." msgstr "" -#: c-api/unicode.rst:1659 +#: c-api/unicode.rst:1655 msgid "This function does not raise exceptions." msgstr "" -#: c-api/unicode.rst:1645 +#: c-api/unicode.rst:1641 msgid "" "Similar to :c:func:`PyUnicode_EqualToUTF8AndSize`, but compute *string* " "length using :c:func:`!strlen`. If the Unicode object contains null " "characters, false (``0``) is returned." msgstr "" -#: c-api/unicode.rst:1654 +#: c-api/unicode.rst:1650 msgid "" "Compare a Unicode object, *unicode*, with *string* and return ``-1``, ``0``, " "``1`` for less than, equal, and greater than, respectively. It is best to " @@ -1992,47 +1988,47 @@ msgid "" "string as ISO-8859-1 if it contains non-ASCII characters." msgstr "" -#: c-api/unicode.rst:1664 +#: c-api/unicode.rst:1660 msgid "Rich compare two Unicode strings and return one of the following:" msgstr "" -#: c-api/unicode.rst:1666 +#: c-api/unicode.rst:1662 msgid "``NULL`` in case an exception was raised" msgstr "" -#: c-api/unicode.rst:1667 +#: c-api/unicode.rst:1663 msgid ":c:data:`Py_True` or :c:data:`Py_False` for successful comparisons" msgstr "" -#: c-api/unicode.rst:1668 +#: c-api/unicode.rst:1664 msgid ":c:data:`Py_NotImplemented` in case the type combination is unknown" msgstr "" -#: c-api/unicode.rst:1670 +#: c-api/unicode.rst:1666 msgid "" "Possible values for *op* are :c:macro:`Py_GT`, :c:macro:`Py_GE`, :c:macro:" "`Py_EQ`, :c:macro:`Py_NE`, :c:macro:`Py_LT`, and :c:macro:`Py_LE`." msgstr "" -#: c-api/unicode.rst:1676 +#: c-api/unicode.rst:1672 msgid "" "Return a new string object from *format* and *args*; this is analogous to " "``format % args``." msgstr "" -#: c-api/unicode.rst:1682 +#: c-api/unicode.rst:1678 msgid "" "Check whether *substr* is contained in *unicode* and return true or false " "accordingly." msgstr "" -#: c-api/unicode.rst:1685 +#: c-api/unicode.rst:1681 msgid "" "*substr* has to coerce to a one element Unicode string. ``-1`` is returned " "if there was an error." msgstr "" -#: c-api/unicode.rst:1691 +#: c-api/unicode.rst:1687 msgid "" "Intern the argument :c:expr:`*p_unicode` in place. The argument must be the " "address of a pointer variable pointing to a Python Unicode string object. " @@ -2043,7 +2039,7 @@ msgid "" "interns it." msgstr "" -#: c-api/unicode.rst:1698 +#: c-api/unicode.rst:1694 msgid "" "(Clarification: even though there is a lot of talk about references, think " "of this function as reference-neutral. You must own the object you pass in; " @@ -2051,39 +2047,39 @@ msgid "" "the result.)" msgstr "" -#: c-api/unicode.rst:1703 +#: c-api/unicode.rst:1699 msgid "" "This function never raises an exception. On error, it leaves its argument " "unchanged without interning it." msgstr "" -#: c-api/unicode.rst:1706 +#: c-api/unicode.rst:1702 msgid "" "Instances of subclasses of :py:class:`str` may not be interned, that is, :c:" "expr:`PyUnicode_CheckExact(*p_unicode)` must be true. If it is not, then -- " "as with any other error -- the argument is left unchanged." msgstr "" -#: c-api/unicode.rst:1710 +#: c-api/unicode.rst:1706 msgid "" "Note that interned strings are not “immortal”. You must keep a reference to " "the result to benefit from interning." msgstr "" -#: c-api/unicode.rst:1716 +#: c-api/unicode.rst:1712 msgid "" "A combination of :c:func:`PyUnicode_FromString` and :c:func:" "`PyUnicode_InternInPlace`, meant for statically allocated strings." msgstr "" -#: c-api/unicode.rst:1719 +#: c-api/unicode.rst:1715 msgid "" "Return a new (\"owned\") reference to either a new Unicode string object " "that has been interned, or an earlier interned string object with the same " "value." msgstr "" -#: c-api/unicode.rst:1723 +#: c-api/unicode.rst:1719 msgid "" "Python may keep a reference to the result, or make it :term:`immortal`, " "preventing it from being garbage-collected promptly. For interning an " @@ -2092,18 +2088,14 @@ msgid "" "`PyUnicode_InternInPlace` directly." msgstr "" -#: c-api/unicode.rst:1731 -msgid "Strings interned this way are made :term:`immortal`." -msgstr "" - -#: c-api/unicode.rst:1736 +#: c-api/unicode.rst:1728 msgid "" "Return a non-zero value if *str* is interned, zero if not. The *str* " "argument must be a string; this is not checked. This function always " "succeeds." msgstr "" -#: c-api/unicode.rst:1742 +#: c-api/unicode.rst:1734 msgid "" "A non-zero return value may carry additional information about *how* the " "string is interned. The meaning of such non-zero values, as well as each " @@ -2111,198 +2103,208 @@ msgid "" "versions." msgstr "" -#: c-api/unicode.rst:1749 +#: c-api/unicode.rst:1741 msgid "PyUnicodeWriter" msgstr "" -#: c-api/unicode.rst:1751 +#: c-api/unicode.rst:1743 msgid "" "The :c:type:`PyUnicodeWriter` API can be used to create a Python :class:" "`str` object." msgstr "" -#: c-api/unicode.rst:1758 +#: c-api/unicode.rst:1750 msgid "A Unicode writer instance." msgstr "" -#: c-api/unicode.rst:1760 +#: c-api/unicode.rst:1752 msgid "" "The instance must be destroyed by :c:func:`PyUnicodeWriter_Finish` on " "success, or :c:func:`PyUnicodeWriter_Discard` on error." msgstr "" -#: c-api/unicode.rst:1765 +#: c-api/unicode.rst:1757 msgid "Create a Unicode writer instance." msgstr "" -#: c-api/unicode.rst:1767 +#: c-api/unicode.rst:1759 msgid "*length* must be greater than or equal to ``0``." msgstr "" -#: c-api/unicode.rst:1769 +#: c-api/unicode.rst:1761 msgid "" "If *length* is greater than ``0``, preallocate an internal buffer of " "*length* characters." msgstr "" -#: c-api/unicode.rst:1778 +#: c-api/unicode.rst:1770 msgid "Set an exception and return ``NULL`` on error." msgstr "" -#: c-api/unicode.rst:1776 +#: c-api/unicode.rst:1768 msgid "" "Return the final Python :class:`str` object and destroy the writer instance." msgstr "" -#: c-api/unicode.rst:1788 +#: c-api/unicode.rst:1780 msgid "The writer instance is invalid after this call." msgstr "" -#: c-api/unicode.rst:1784 +#: c-api/unicode.rst:1776 msgid "Discard the internal Unicode buffer and destroy the writer instance." msgstr "" -#: c-api/unicode.rst:1786 +#: c-api/unicode.rst:1778 msgid "If *writer* is ``NULL``, no operation is performed." msgstr "" -#: c-api/unicode.rst:1792 +#: c-api/unicode.rst:1784 msgid "Write the single Unicode character *ch* into *writer*." msgstr "" -#: c-api/unicode.rst:1804 c-api/unicode.rst:1825 c-api/unicode.rst:1839 -#: c-api/unicode.rst:1857 c-api/unicode.rst:1876 +#: c-api/unicode.rst:1796 c-api/unicode.rst:1823 c-api/unicode.rst:1839 +#: c-api/unicode.rst:1857 c-api/unicode.rst:1883 msgid "" "On success, return ``0``. On error, set an exception, leave the writer " "unchanged, and return ``-1``." msgstr "" -#: c-api/unicode.rst:1799 +#: c-api/unicode.rst:1791 msgid "" "Decode the string *str* from UTF-8 in strict mode and write the output into " "*writer*." msgstr "" -#: c-api/unicode.rst:1865 +#: c-api/unicode.rst:1805 c-api/unicode.rst:1872 msgid "" "*size* is the string length in bytes. If *size* is equal to ``-1``, call " "``strlen(str)`` to get the string length." msgstr "" -#: c-api/unicode.rst:1807 +#: c-api/unicode.rst:1799 msgid "See also :c:func:`PyUnicodeWriter_DecodeUTF8Stateful`." msgstr "" -#: c-api/unicode.rst:1811 -msgid "Writer the wide string *str* into *writer*." +#: c-api/unicode.rst:1803 +msgid "Write the ASCII string *str* into *writer*." msgstr "" -#: c-api/unicode.rst:1813 +#: c-api/unicode.rst:1808 +msgid "" +"*str* must only contain ASCII characters. The behavior is undefined if *str* " +"contains non-ASCII characters." +msgstr "" + +#: c-api/unicode.rst:1818 +msgid "Write the wide string *str* into *writer*." +msgstr "" + +#: c-api/unicode.rst:1820 msgid "" "*size* is a number of wide characters. If *size* is equal to ``-1``, call " "``wcslen(str)`` to get the string length." msgstr "" -#: c-api/unicode.rst:1821 +#: c-api/unicode.rst:1828 msgid "Writer the UCS4 string *str* into *writer*." msgstr "" -#: c-api/unicode.rst:1823 +#: c-api/unicode.rst:1830 msgid "*size* is a number of UCS4 characters." msgstr "" -#: c-api/unicode.rst:1830 +#: c-api/unicode.rst:1837 msgid "" "Call :c:func:`PyObject_Str` on *obj* and write the output into *writer*." msgstr "" -#: c-api/unicode.rst:1837 +#: c-api/unicode.rst:1844 msgid "" "Call :c:func:`PyObject_Repr` on *obj* and write the output into *writer*." msgstr "" -#: c-api/unicode.rst:1844 +#: c-api/unicode.rst:1851 msgid "Write the substring ``str[start:end]`` into *writer*." msgstr "" -#: c-api/unicode.rst:1846 +#: c-api/unicode.rst:1853 msgid "" "*str* must be Python :class:`str` object. *start* must be greater than or " "equal to 0, and less than or equal to *end*. *end* must be less than or " "equal to *str* length." msgstr "" -#: c-api/unicode.rst:1855 +#: c-api/unicode.rst:1862 msgid "" "Similar to :c:func:`PyUnicode_FromFormat`, but write the output directly " "into *writer*." msgstr "" -#: c-api/unicode.rst:1862 +#: c-api/unicode.rst:1869 msgid "" "Decode the string *str* from UTF-8 with *errors* error handler and write the " "output into *writer*." msgstr "" -#: c-api/unicode.rst:1868 +#: c-api/unicode.rst:1875 msgid "" "*errors* is an :ref:`error handler ` name, such as " "``\"replace\"``. If *errors* is ``NULL``, use the strict error handler." msgstr "" -#: c-api/unicode.rst:1871 +#: c-api/unicode.rst:1878 msgid "" "If *consumed* is not ``NULL``, set *\\*consumed* to the number of decoded " "bytes on success. If *consumed* is ``NULL``, treat trailing incomplete UTF-8 " "byte sequences as an error." msgstr "" -#: c-api/unicode.rst:1879 +#: c-api/unicode.rst:1886 msgid "See also :c:func:`PyUnicodeWriter_WriteUTF8`." msgstr "" -#: c-api/unicode.rst:1882 +#: c-api/unicode.rst:1889 msgid "Deprecated API" msgstr "" -#: c-api/unicode.rst:1884 +#: c-api/unicode.rst:1891 msgid "The following API is deprecated." msgstr "" -#: c-api/unicode.rst:1888 +#: c-api/unicode.rst:1895 msgid "" "This is a typedef of :c:type:`wchar_t`, which is a 16-bit type or 32-bit " "type depending on the platform. Please use :c:type:`wchar_t` directly " "instead." msgstr "" -#: c-api/unicode.rst:1892 +#: c-api/unicode.rst:1899 msgid "" "In previous versions, this was a 16-bit type or a 32-bit type depending on " "whether you selected a \"narrow\" or \"wide\" Unicode version of Python at " "build time." msgstr "" -#: c-api/unicode.rst:1902 +#: c-api/unicode.rst:1909 msgid "" "Do nothing and return ``0``. This API is kept only for backward " "compatibility, but there are no plans to remove it." msgstr "" -#: c-api/unicode.rst:1908 +#: c-api/unicode.rst:1915 msgid "" "This API does nothing since Python 3.12. Previously, this needed to be " "called for each string created using the old API (:c:func:`!" "PyUnicode_FromUnicode` or similar)." msgstr "" -#: c-api/unicode.rst:1916 +#: c-api/unicode.rst:1923 msgid "" "Do nothing and return ``1``. This API is kept only for backward " "compatibility, but there are no plans to remove it." msgstr "" -#: c-api/unicode.rst:1922 +#: c-api/unicode.rst:1929 msgid "" "This API does nothing since Python 3.12. Previously, this could be called to " "check if :c:func:`PyUnicode_READY` is necessary." diff --git a/c-api/utilities.po b/c-api/utilities.po index c48c6d4a..429a654a 100644 --- a/c-api/utilities.po +++ b/c-api/utilities.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/veryhigh.po b/c-api/veryhigh.po index 9fba02f3..7d48d522 100644 --- a/c-api/veryhigh.po +++ b/c-api/veryhigh.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/c-api/weakref.po b/c-api/weakref.po index c1544ed8..a886ebd3 100644 --- a/c-api/weakref.po +++ b/c-api/weakref.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/contents.po b/contents.po index d0788779..1fce9052 100644 --- a/contents.po +++ b/contents.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-04-24 22:37+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/copyright.po b/copyright.po index de38563d..4cb1244b 100644 --- a/copyright.po +++ b/copyright.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-04-24 22:33+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/cpython b/cpython index 99ca086f..250bb7ff 160000 --- a/cpython +++ b/cpython @@ -1 +1 @@ -Subproject commit 99ca086f9120f402e1147b473cee987a40437b96 +Subproject commit 250bb7fffd0b7270064505a3acaa025a268985ce diff --git a/deprecations/c-api-pending-removal-in-3.14.po b/deprecations/c-api-pending-removal-in-3.14.po index 6e667f81..3699b994 100644 --- a/deprecations/c-api-pending-removal-in-3.14.po +++ b/deprecations/c-api-pending-removal-in-3.14.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/deprecations/c-api-pending-removal-in-3.15.po b/deprecations/c-api-pending-removal-in-3.15.po index 8168b2be..f8368ac4 100644 --- a/deprecations/c-api-pending-removal-in-3.15.po +++ b/deprecations/c-api-pending-removal-in-3.15.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/deprecations/c-api-pending-removal-in-3.18.po b/deprecations/c-api-pending-removal-in-3.18.po index 80eba5bb..41a81dc6 100644 --- a/deprecations/c-api-pending-removal-in-3.18.po +++ b/deprecations/c-api-pending-removal-in-3.18.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/deprecations/c-api-pending-removal-in-future.po b/deprecations/c-api-pending-removal-in-future.po index f2f65d89..76f3e83b 100644 --- a/deprecations/c-api-pending-removal-in-future.po +++ b/deprecations/c-api-pending-removal-in-future.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/deprecations/index.po b/deprecations/index.po index 9d97d6e0..f07bf655 100644 --- a/deprecations/index.po +++ b/deprecations/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -168,27 +168,36 @@ msgstr "" #: deprecations/pending-removal-in-3.15.rst:88 msgid "" +"When using the functional syntax of :class:`~typing.TypedDict`\\s, failing " +"to pass a value to the *fields* parameter (``TD = TypedDict(\"TD\")``) or " +"passing ``None`` (``TD = TypedDict(\"TD\", None)``) has been deprecated " +"since Python 3.13. Use ``class TD(TypedDict): pass`` or ``TD = " +"TypedDict(\"TD\", {})`` to create a TypedDict with zero field." +msgstr "" + +#: deprecations/pending-removal-in-3.15.rst:95 +msgid "" "The :func:`typing.no_type_check_decorator` decorator function has been " "deprecated since Python 3.13. After eight years in the :mod:`typing` module, " "it has yet to be supported by any major type checker." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:93 +#: deprecations/pending-removal-in-3.15.rst:100 msgid ":mod:`wave`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:95 +#: deprecations/pending-removal-in-3.15.rst:102 msgid "" "The :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:`~wave." "Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:" "`~wave.Wave_write` classes have been deprecated since Python 3.13." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:100 +#: deprecations/pending-removal-in-3.15.rst:107 msgid ":mod:`zipimport`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:102 +#: deprecations/pending-removal-in-3.15.rst:109 msgid "" ":meth:`~zipimport.zipimporter.load_module` has been deprecated since Python " "3.10. Use :meth:`~zipimport.zipimporter.exec_module` instead. (Contributed " diff --git a/deprecations/pending-removal-in-3.13.po b/deprecations/pending-removal-in-3.13.po index 19a43896..9a750879 100644 --- a/deprecations/pending-removal-in-3.13.po +++ b/deprecations/pending-removal-in-3.13.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/deprecations/pending-removal-in-3.14.po b/deprecations/pending-removal-in-3.14.po index d6dc512f..4a33d8db 100644 --- a/deprecations/pending-removal-in-3.14.po +++ b/deprecations/pending-removal-in-3.14.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/deprecations/pending-removal-in-3.15.po b/deprecations/pending-removal-in-3.15.po index 7b004e25..8c08319f 100644 --- a/deprecations/pending-removal-in-3.15.po +++ b/deprecations/pending-removal-in-3.15.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -158,27 +158,36 @@ msgstr "" #: deprecations/pending-removal-in-3.15.rst:88 msgid "" +"When using the functional syntax of :class:`~typing.TypedDict`\\s, failing " +"to pass a value to the *fields* parameter (``TD = TypedDict(\"TD\")``) or " +"passing ``None`` (``TD = TypedDict(\"TD\", None)``) has been deprecated " +"since Python 3.13. Use ``class TD(TypedDict): pass`` or ``TD = " +"TypedDict(\"TD\", {})`` to create a TypedDict with zero field." +msgstr "" + +#: deprecations/pending-removal-in-3.15.rst:95 +msgid "" "The :func:`typing.no_type_check_decorator` decorator function has been " "deprecated since Python 3.13. After eight years in the :mod:`typing` module, " "it has yet to be supported by any major type checker." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:93 +#: deprecations/pending-removal-in-3.15.rst:100 msgid ":mod:`wave`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:95 +#: deprecations/pending-removal-in-3.15.rst:102 msgid "" "The :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:`~wave." "Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:" "`~wave.Wave_write` classes have been deprecated since Python 3.13." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:100 +#: deprecations/pending-removal-in-3.15.rst:107 msgid ":mod:`zipimport`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:102 +#: deprecations/pending-removal-in-3.15.rst:109 msgid "" ":meth:`~zipimport.zipimporter.load_module` has been deprecated since Python " "3.10. Use :meth:`~zipimport.zipimporter.exec_module` instead. (Contributed " diff --git a/deprecations/pending-removal-in-3.16.po b/deprecations/pending-removal-in-3.16.po index 213844be..43085b77 100644 --- a/deprecations/pending-removal-in-3.16.po +++ b/deprecations/pending-removal-in-3.16.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/deprecations/pending-removal-in-3.17.po b/deprecations/pending-removal-in-3.17.po index 5d77ad65..14be65a9 100644 --- a/deprecations/pending-removal-in-3.17.po +++ b/deprecations/pending-removal-in-3.17.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/deprecations/pending-removal-in-3.19.po b/deprecations/pending-removal-in-3.19.po index 85f6ac6a..5f920483 100644 --- a/deprecations/pending-removal-in-3.19.po +++ b/deprecations/pending-removal-in-3.19.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/deprecations/pending-removal-in-future.po b/deprecations/pending-removal-in-future.po index 9b2f45fe..867770e4 100644 --- a/deprecations/pending-removal-in-future.po +++ b/deprecations/pending-removal-in-future.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/distributing/index.po b/distributing/index.po index d6247fb7..8bde0585 100644 --- a/distributing/index.po +++ b/distributing/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-11-25 20:18+0000\n" "Last-Translator: Artemis Leonardou \n" "Language-Team: PyGreece \n" diff --git a/extending/building.po b/extending/building.po index 1f5845d1..2c44a600 100644 --- a/extending/building.po +++ b/extending/building.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-21 21:57+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" @@ -22,101 +22,113 @@ msgid "Building C and C++ Extensions" msgstr "Κατασκευή Επεκτάσεων C και C++" #: extending/building.rst:9 +#, fuzzy msgid "" -"A C extension for CPython is a shared library (e.g. a ``.so`` file on Linux, " -"``.pyd`` on Windows), which exports an *initialization function*." +"A C extension for CPython is a shared library (for example, a ``.so`` file " +"on Linux, ``.pyd`` on Windows), which exports an *initialization function*." msgstr "" "Μια επέκταση C για τη CPython είναι μια κοινόχρηστη βιβλιοθήκη (π.χ. ένα " "αρχείο ``.so`` στο Linux, ή ``.pyd`` στα Windows), η οποία εξάγει μια " "*συνάρτηση αρχικοποίησης*." #: extending/building.rst:12 -msgid "" -"To be importable, the shared library must be available on :envvar:" -"`PYTHONPATH`, and must be named after the module name, with an appropriate " -"extension. When using setuptools, the correct filename is generated " -"automatically." +msgid "See :ref:`extension-modules` for details." msgstr "" -"Για να μπορεί να γίνει η εισαγωγή της, η κοινόχρηστη βιβλιοθήκη πρέπει να " -"είναι διαθέσιμη στο :envvar:`PYTHONPATH` και να έχει όνομα ίδιο με αυτό του " -"module, με τη σωστή επέκταση αρχείου. Όταν χρησιμοποιείται το setuptools, το " -"σωστό όνομα αρχείου δημιουργείται αυτόματα." -#: extending/building.rst:16 -msgid "The initialization function has the signature:" -msgstr "Η συνάρτηση αρχικοποίησης έχει την εξής υπογραφή:" +#: extending/building.rst:21 +msgid "Building C and C++ Extensions with setuptools" +msgstr "Κατασκευή Επεκτάσεων C και C++ με το setuptools" -#: extending/building.rst:20 +#: extending/building.rst:24 msgid "" -"It returns either a fully initialized module, or a :c:type:`PyModuleDef` " -"instance. See :ref:`initializing-modules` for details." +"Building, packaging and distributing extension modules is best done with " +"third-party tools, and is out of scope of this document. One suitable tool " +"is Setuptools, whose documentation can be found at https://setuptools.pypa." +"io/en/latest/setuptools.html." msgstr "" -"Επιστρέφει είτε ένα πλήρως αρχικοποιημένο module, είτε ένα στιγμιότυπο :c:" -"type:`PyModuleDef`. Δείτε το :ref:`initializing-modules` για περισσότερες " -"λεπτομέρειες." -#: extending/building.rst:25 +#: extending/building.rst:29 msgid "" -"For modules with ASCII-only names, the function must be named " -"``PyInit_``, with ```` replaced by the name of the " -"module. When using :ref:`multi-phase-initialization`, non-ASCII module names " -"are allowed. In this case, the initialization function name is " -"``PyInitU_``, with ```` encoded using Python's " -"*punycode* encoding with hyphens replaced by underscores. In Python::" +"The :mod:`distutils` module, which was included in the standard library " +"until Python 3.12, is now maintained as part of Setuptools." msgstr "" -"Για modules με ονόματα μόνο σε ASCII χαρακτήρες, η συνάρτηση πρέπει να " -"ονομάζεται ``PyInit_``, όπου το ```` αντικαθίσταται " -"με το όνομα του module. Όταν χρησιμοποιείται :ref:`multi-phase-" -"initialization`, επιτρέπονται ονόματα module με μη ASCII χαρακτήρες. Σε αυτή " -"την περίπτωση, η συνάρτηση αρχικοποίησης ονομάζεται " -"``PyInitU_``, με το ```` να κωδικοποιείται με το " -"*punycode* του Python, αντικαθιστώντας τις παύλες με κάτω παύλες. Στην " -"Python::" -#: extending/building.rst:32 -msgid "" -"def initfunc_name(name):\n" -" try:\n" -" suffix = b'_' + name.encode('ascii')\n" -" except UnicodeEncodeError:\n" -" suffix = b'U_' + name.encode('punycode').replace(b'-', b'_')\n" -" return b'PyInit' + suffix" -msgstr "" -"def initfunc_name(name):\n" -" try:\n" -" suffix = b'_' + name.encode('ascii')\n" -" except UnicodeEncodeError:\n" -" suffix = b'U_' + name.encode('punycode').replace(b'-', b'_')\n" -" return b'PyInit' + suffix" +#~ msgid "" +#~ "To be importable, the shared library must be available on :envvar:" +#~ "`PYTHONPATH`, and must be named after the module name, with an " +#~ "appropriate extension. When using setuptools, the correct filename is " +#~ "generated automatically." +#~ msgstr "" +#~ "Για να μπορεί να γίνει η εισαγωγή της, η κοινόχρηστη βιβλιοθήκη πρέπει να " +#~ "είναι διαθέσιμη στο :envvar:`PYTHONPATH` και να έχει όνομα ίδιο με αυτό " +#~ "του module, με τη σωστή επέκταση αρχείου. Όταν χρησιμοποιείται το " +#~ "setuptools, το σωστό όνομα αρχείου δημιουργείται αυτόματα." -#: extending/building.rst:39 -msgid "" -"It is possible to export multiple modules from a single shared library by " -"defining multiple initialization functions. However, importing them requires " -"using symbolic links or a custom importer, because by default only the " -"function corresponding to the filename is found. See the *\"Multiple modules " -"in one library\"* section in :pep:`489` for details." -msgstr "" -"Είναι δυνατόν να εξαχθούν πολλά modules από μία κοινόχρηστη βιβλιοθήκη, " -"ορίζοντας πολλαπλές συναρτήσεις αρχικοποίησης. Ωστόσο, για την εισαγωγή τους " -"απαιτείται η χρήση συμβολικών συνδέσμων ή προσαρμοσμένου import μηχανισμού, " -"καθώς από προεπιλογή βρίσκονται μόνο οι συναρτήσεις που αντιστοιχούν στο " -"όνομα του αρχείου. Δείτε το *\"Multiple modules in one library\"* στο :pep:" -"`489` για λεπτομέρειες." +#~ msgid "The initialization function has the signature:" +#~ msgstr "Η συνάρτηση αρχικοποίησης έχει την εξής υπογραφή:" -#: extending/building.rst:52 -msgid "Building C and C++ Extensions with setuptools" -msgstr "Κατασκευή Επεκτάσεων C και C++ με το setuptools" +#~ msgid "" +#~ "It returns either a fully initialized module, or a :c:type:`PyModuleDef` " +#~ "instance. See :ref:`initializing-modules` for details." +#~ msgstr "" +#~ "Επιστρέφει είτε ένα πλήρως αρχικοποιημένο module, είτε ένα στιγμιότυπο :c:" +#~ "type:`PyModuleDef`. Δείτε το :ref:`initializing-modules` για περισσότερες " +#~ "λεπτομέρειες." -#: extending/building.rst:54 -msgid "" -"Python 3.12 and newer no longer come with distutils. Please refer to the " -"``setuptools`` documentation at https://setuptools.readthedocs.io/en/latest/" -"setuptools.html to learn more about how build and distribute C/C++ " -"extensions with setuptools." -msgstr "" -"Από την έκδοση Python 3.12 και μετά, το distutils δεν περιλαμβάνεται πλέον. " -"Παρακαλούμε ανατρέξτε στην τεκμηρίωση του ``setuptools`` στη διεύθυνση " -"https://setuptools.readthedocs.io/en/latest/setuptools.html για να μάθετε " -"περισσότερα σχετικά με την κατασκευή και διανομή επεκτάσεων C/C++ με το " -"setuptools." +#~ msgid "" +#~ "For modules with ASCII-only names, the function must be named " +#~ "``PyInit_``, with ```` replaced by the name of " +#~ "the module. When using :ref:`multi-phase-initialization`, non-ASCII " +#~ "module names are allowed. In this case, the initialization function name " +#~ "is ``PyInitU_``, with ```` encoded using Python's " +#~ "*punycode* encoding with hyphens replaced by underscores. In Python::" +#~ msgstr "" +#~ "Για modules με ονόματα μόνο σε ASCII χαρακτήρες, η συνάρτηση πρέπει να " +#~ "ονομάζεται ``PyInit_``, όπου το ```` " +#~ "αντικαθίσταται με το όνομα του module. Όταν χρησιμοποιείται :ref:`multi-" +#~ "phase-initialization`, επιτρέπονται ονόματα module με μη ASCII " +#~ "χαρακτήρες. Σε αυτή την περίπτωση, η συνάρτηση αρχικοποίησης ονομάζεται " +#~ "``PyInitU_``, με το ```` να κωδικοποιείται με το " +#~ "*punycode* του Python, αντικαθιστώντας τις παύλες με κάτω παύλες. Στην " +#~ "Python::" + +#~ msgid "" +#~ "def initfunc_name(name):\n" +#~ " try:\n" +#~ " suffix = b'_' + name.encode('ascii')\n" +#~ " except UnicodeEncodeError:\n" +#~ " suffix = b'U_' + name.encode('punycode').replace(b'-', b'_')\n" +#~ " return b'PyInit' + suffix" +#~ msgstr "" +#~ "def initfunc_name(name):\n" +#~ " try:\n" +#~ " suffix = b'_' + name.encode('ascii')\n" +#~ " except UnicodeEncodeError:\n" +#~ " suffix = b'U_' + name.encode('punycode').replace(b'-', b'_')\n" +#~ " return b'PyInit' + suffix" + +#~ msgid "" +#~ "It is possible to export multiple modules from a single shared library by " +#~ "defining multiple initialization functions. However, importing them " +#~ "requires using symbolic links or a custom importer, because by default " +#~ "only the function corresponding to the filename is found. See the " +#~ "*\"Multiple modules in one library\"* section in :pep:`489` for details." +#~ msgstr "" +#~ "Είναι δυνατόν να εξαχθούν πολλά modules από μία κοινόχρηστη βιβλιοθήκη, " +#~ "ορίζοντας πολλαπλές συναρτήσεις αρχικοποίησης. Ωστόσο, για την εισαγωγή " +#~ "τους απαιτείται η χρήση συμβολικών συνδέσμων ή προσαρμοσμένου import " +#~ "μηχανισμού, καθώς από προεπιλογή βρίσκονται μόνο οι συναρτήσεις που " +#~ "αντιστοιχούν στο όνομα του αρχείου. Δείτε το *\"Multiple modules in one " +#~ "library\"* στο :pep:`489` για λεπτομέρειες." + +#~ msgid "" +#~ "Python 3.12 and newer no longer come with distutils. Please refer to the " +#~ "``setuptools`` documentation at https://setuptools.readthedocs.io/en/" +#~ "latest/setuptools.html to learn more about how build and distribute C/C++ " +#~ "extensions with setuptools." +#~ msgstr "" +#~ "Από την έκδοση Python 3.12 και μετά, το distutils δεν περιλαμβάνεται " +#~ "πλέον. Παρακαλούμε ανατρέξτε στην τεκμηρίωση του ``setuptools`` στη " +#~ "διεύθυνση https://setuptools.readthedocs.io/en/latest/setuptools.html για " +#~ "να μάθετε περισσότερα σχετικά με την κατασκευή και διανομή επεκτάσεων C/C+" +#~ "+ με το setuptools." diff --git a/extending/embedding.po b/extending/embedding.po index c50870ab..144e94f0 100644 --- a/extending/embedding.po +++ b/extending/embedding.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -418,60 +418,62 @@ msgid "" " return PyLong_FromLong(numargs);\n" "}\n" "\n" -"static PyMethodDef EmbMethods[] = {\n" +"static PyMethodDef emb_module_methods[] = {\n" " {\"numargs\", emb_numargs, METH_VARARGS,\n" " \"Return the number of arguments received by the process.\"},\n" " {NULL, NULL, 0, NULL}\n" "};\n" "\n" -"static PyModuleDef EmbModule = {\n" -" PyModuleDef_HEAD_INIT, \"emb\", NULL, -1, EmbMethods,\n" -" NULL, NULL, NULL, NULL\n" +"static struct PyModuleDef emb_module = {\n" +" .m_base = PyModuleDef_HEAD_INIT,\n" +" .m_name = \"emb\",\n" +" .m_size = 0,\n" +" .m_methods = emb_module_methods,\n" "};\n" "\n" "static PyObject*\n" "PyInit_emb(void)\n" "{\n" -" return PyModule_Create(&EmbModule);\n" +" return PyModuleDef_Init(&emb_module);\n" "}" msgstr "" -#: extending/embedding.rst:265 +#: extending/embedding.rst:267 msgid "" "Insert the above code just above the :c:func:`main` function. Also, insert " "the following two statements before the call to :c:func:`Py_Initialize`::" msgstr "" -#: extending/embedding.rst:268 +#: extending/embedding.rst:270 msgid "" "numargs = argc;\n" "PyImport_AppendInittab(\"emb\", &PyInit_emb);" msgstr "" -#: extending/embedding.rst:271 +#: extending/embedding.rst:273 msgid "" "These two lines initialize the ``numargs`` variable, and make the :func:`!" "emb.numargs` function accessible to the embedded Python interpreter. With " "these extensions, the Python script can do things like" msgstr "" -#: extending/embedding.rst:275 +#: extending/embedding.rst:277 msgid "" "import emb\n" "print(\"Number of arguments\", emb.numargs())" msgstr "" -#: extending/embedding.rst:280 +#: extending/embedding.rst:282 msgid "" "In a real application, the methods will expose an API of the application to " "Python." msgstr "" -#: extending/embedding.rst:290 +#: extending/embedding.rst:292 msgid "Embedding Python in C++" msgstr "" -#: extending/embedding.rst:292 +#: extending/embedding.rst:294 msgid "" "It is also possible to embed Python in a C++ program; precisely how this is " "done will depend on the details of the C++ system used; in general you will " @@ -480,11 +482,11 @@ msgid "" "+." msgstr "" -#: extending/embedding.rst:301 +#: extending/embedding.rst:303 msgid "Compiling and Linking under Unix-like systems" msgstr "" -#: extending/embedding.rst:303 +#: extending/embedding.rst:305 msgid "" "It is not necessarily trivial to find the right flags to pass to your " "compiler (and linker) in order to embed the Python interpreter into your " @@ -492,7 +494,7 @@ msgid "" "implemented as C dynamic extensions (:file:`.so` files) linked against it." msgstr "" -#: extending/embedding.rst:309 +#: extending/embedding.rst:311 msgid "" "To find out the required compiler and linker flags, you can execute the :" "file:`python{X.Y}-config` script which is generated as part of the " @@ -501,33 +503,33 @@ msgid "" "directly useful to you:" msgstr "" -#: extending/embedding.rst:315 +#: extending/embedding.rst:317 msgid "" "``pythonX.Y-config --cflags`` will give you the recommended flags when " "compiling:" msgstr "" -#: extending/embedding.rst:318 +#: extending/embedding.rst:320 msgid "" "$ /opt/bin/python3.11-config --cflags\n" "-I/opt/include/python3.11 -I/opt/include/python3.11 -Wsign-compare -DNDEBUG " "-g -fwrapv -O3 -Wall" msgstr "" -#: extending/embedding.rst:323 +#: extending/embedding.rst:325 msgid "" "``pythonX.Y-config --ldflags --embed`` will give you the recommended flags " "when linking:" msgstr "" -#: extending/embedding.rst:326 +#: extending/embedding.rst:328 msgid "" "$ /opt/bin/python3.11-config --ldflags --embed\n" "-L/opt/lib/python3.11/config-3.11-x86_64-linux-gnu -L/opt/lib -lpython3.11 -" "lpthread -ldl -lutil -lm" msgstr "" -#: extending/embedding.rst:332 +#: extending/embedding.rst:334 msgid "" "To avoid confusion between several Python installations (and especially " "between the system Python and your own compiled Python), it is recommended " @@ -535,7 +537,7 @@ msgid "" "above example." msgstr "" -#: extending/embedding.rst:337 +#: extending/embedding.rst:339 msgid "" "If this procedure doesn't work for you (it is not guaranteed to work for all " "Unix-like platforms; however, we welcome :ref:`bug reports >> import sysconfig\n" ">>> sysconfig.get_config_var('LIBS')\n" diff --git a/extending/extending.po b/extending/extending.po index 45f99e97..d9267b22 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -87,7 +87,7 @@ msgstr "" msgid "The first two lines of our file can be::" msgstr "" -#: extending/extending.rst:663 +#: extending/extending.rst:681 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include " @@ -303,43 +303,78 @@ msgstr "" #: extending/extending.rst:206 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::" +"You can also define a new exception that is unique to your module. The " +"simplest way to do this is to declare a static global object variable at the " +"beginning of the file::" msgstr "" -#: extending/extending.rst:209 -msgid "static PyObject *SpamError;" +#: extending/extending.rst:210 +msgid "static PyObject *SpamError = NULL;" msgstr "" -#: extending/extending.rst:211 +#: extending/extending.rst:212 msgid "" -"and initialize it in your module's initialization function (:c:func:`!" -"PyInit_spam`) with an exception object::" +"and initialize it by calling :c:func:`PyErr_NewException` in the module's :c:" +"data:`Py_mod_exec` function (:c:func:`!spam_module_exec`)::" +msgstr "" + +#: extending/extending.rst:215 +msgid "SpamError = PyErr_NewException(\"spam.error\", NULL, NULL);" msgstr "" -#: extending/extending.rst:214 +#: extending/extending.rst:217 msgid "" -"PyMODINIT_FUNC\n" -"PyInit_spam(void)\n" -"{\n" -" PyObject *m;\n" -"\n" -" m = PyModule_Create(&spammodule);\n" -" if (m == NULL)\n" -" return NULL;\n" +"Since :c:data:`!SpamError` is a global variable, it will be overwitten every " +"time the module is reinitialized, when the :c:data:`Py_mod_exec` function is " +"called." +msgstr "" + +#: extending/extending.rst:220 +msgid "" +"For now, let's avoid the issue: we will block repeated initialization by " +"raising an :py:exc:`ImportError`::" +msgstr "" + +#: extending/extending.rst:223 +msgid "" +"static PyObject *SpamError = NULL;\n" "\n" +"static int\n" +"spam_module_exec(PyObject *m)\n" +"{\n" +" if (SpamError != NULL) {\n" +" PyErr_SetString(PyExc_ImportError,\n" +" \"cannot initialize spam module more than once\");\n" +" return -1;\n" +" }\n" " SpamError = PyErr_NewException(\"spam.error\", NULL, NULL);\n" -" if (PyModule_AddObjectRef(m, \"error\", SpamError) < 0) {\n" -" Py_CLEAR(SpamError);\n" -" Py_DECREF(m);\n" -" return NULL;\n" +" if (PyModule_AddObjectRef(m, \"SpamError\", SpamError) < 0) {\n" +" return -1;\n" " }\n" "\n" -" return m;\n" +" return 0;\n" +"}\n" +"\n" +"static PyModuleDef_Slot spam_module_slots[] = {\n" +" {Py_mod_exec, spam_module_exec},\n" +" {0, NULL}\n" +"};\n" +"\n" +"static struct PyModuleDef spam_module = {\n" +" .m_base = PyModuleDef_HEAD_INIT,\n" +" .m_name = \"spam\",\n" +" .m_size = 0, // non-negative\n" +" .m_slots = spam_module_slots,\n" +"};\n" +"\n" +"PyMODINIT_FUNC\n" +"PyInit_spam(void)\n" +"{\n" +" return PyModuleDef_Init(&spam_module);\n" "}" msgstr "" -#: extending/extending.rst:233 +#: extending/extending.rst:259 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 " @@ -347,7 +382,7 @@ msgid "" "``NULL``), described in :ref:`bltin-exceptions`." msgstr "" -#: extending/extending.rst:238 +#: extending/extending.rst:264 msgid "" "Note also that the :c:data:`!SpamError` variable retains a reference to the " "newly created exception class; this is intentional! Since the exception " @@ -358,19 +393,27 @@ msgid "" "unintended side effects." msgstr "" -#: extending/extending.rst:245 +#: extending/extending.rst:271 +msgid "" +"For now, the :c:func:`Py_DECREF` call to remove this reference is missing. " +"Even when the Python interpreter shuts down, the global :c:data:`!SpamError` " +"variable will not be garbage-collected. It will \"leak\". We did, however, " +"ensure that this will happen at most once per process." +msgstr "" + +#: extending/extending.rst:276 msgid "" "We discuss the use of :c:macro:`PyMODINIT_FUNC` as a function return type " "later in this sample." msgstr "" -#: extending/extending.rst:248 +#: extending/extending.rst:279 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 "" -#: extending/extending.rst:251 +#: extending/extending.rst:282 msgid "" "static PyObject *\n" "spam_system(PyObject *self, PyObject *args)\n" @@ -389,23 +432,23 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:271 +#: extending/extending.rst:302 msgid "Back to the Example" msgstr "" -#: extending/extending.rst:273 +#: extending/extending.rst:304 msgid "" "Going back to our example function, you should now be able to understand " "this statement::" msgstr "" -#: extending/extending.rst:276 +#: extending/extending.rst:307 msgid "" "if (!PyArg_ParseTuple(args, \"s\", &command))\n" " return NULL;" msgstr "" -#: extending/extending.rst:279 +#: extending/extending.rst:310 msgid "" "It returns ``NULL`` (the error indicator for functions returning object " "pointers) if an error is detected in the argument list, relying on the " @@ -416,34 +459,34 @@ msgid "" "properly be declared as ``const char *command``)." msgstr "" -#: extending/extending.rst:287 +#: extending/extending.rst:318 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 "" -#: extending/extending.rst:290 +#: extending/extending.rst:321 msgid "sts = system(command);" msgstr "" -#: extending/extending.rst:292 +#: extending/extending.rst:323 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 "" -#: extending/extending.rst:295 +#: extending/extending.rst:326 msgid "return PyLong_FromLong(sts);" msgstr "" -#: extending/extending.rst:297 +#: extending/extending.rst:328 msgid "" "In this case, it will return an integer object. (Yes, even integers are " "objects on the heap in Python!)" msgstr "" -#: extending/extending.rst:300 +#: extending/extending.rst:331 msgid "" "If you have a C function that returns no useful argument (a function " "returning :c:expr:`void`), the corresponding Python function must return " @@ -451,32 +494,32 @@ msgid "" "macro:`Py_RETURN_NONE` macro)::" msgstr "" -#: extending/extending.rst:305 +#: extending/extending.rst:336 msgid "" "Py_INCREF(Py_None);\n" "return Py_None;" msgstr "" -#: extending/extending.rst:308 +#: extending/extending.rst:339 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\" in most contexts, as we have seen." msgstr "" -#: extending/extending.rst:316 +#: extending/extending.rst:347 msgid "The Module's Method Table and Initialization Function" msgstr "" -#: extending/extending.rst:318 +#: extending/extending.rst:349 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 "" -#: extending/extending.rst:321 +#: extending/extending.rst:352 msgid "" -"static PyMethodDef SpamMethods[] = {\n" +"static PyMethodDef spam_methods[] = {\n" " ...\n" " {\"system\", spam_system, METH_VARARGS,\n" " \"Execute a shell command.\"},\n" @@ -485,7 +528,7 @@ msgid "" "};" msgstr "" -#: extending/extending.rst:329 +#: extending/extending.rst:360 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 " @@ -494,14 +537,14 @@ msgid "" "is used." msgstr "" -#: extending/extending.rst:334 +#: extending/extending.rst:365 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 "" -#: extending/extending.rst:338 +#: extending/extending.rst:369 msgid "" "The :c:macro:`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 " @@ -510,24 +553,21 @@ msgid "" "to such a function." msgstr "" -#: extending/extending.rst:344 +#: extending/extending.rst:375 msgid "" "The method table must be referenced in the module definition structure::" msgstr "" -#: extending/extending.rst:346 +#: extending/extending.rst:377 msgid "" -"static struct PyModuleDef spammodule = {\n" -" PyModuleDef_HEAD_INIT,\n" -" \"spam\", /* name of module */\n" -" spam_doc, /* module documentation, may be NULL */\n" -" -1, /* size of per-interpreter state of the module,\n" -" or -1 if the module keeps state in global variables. */\n" -" SpamMethods\n" +"static struct PyModuleDef spam_module = {\n" +" ...\n" +" .m_methods = spam_methods,\n" +" ...\n" "};" msgstr "" -#: extending/extending.rst:355 +#: extending/extending.rst:383 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:" @@ -535,37 +575,32 @@ msgid "" "only non-\\ ``static`` item defined in the module file::" msgstr "" -#: extending/extending.rst:360 +#: extending/extending.rst:388 msgid "" "PyMODINIT_FUNC\n" "PyInit_spam(void)\n" "{\n" -" return PyModule_Create(&spammodule);\n" +" return PyModuleDef_Init(&spam_module);\n" "}" msgstr "" -#: extending/extending.rst:366 +#: extending/extending.rst:394 msgid "" "Note that :c:macro:`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 "" -#: extending/extending.rst:370 +#: extending/extending.rst:398 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 " -"Python.) It calls :c:func:`PyModule_Create`, which returns a module object, " -"and inserts built-in function objects into the newly created module based " -"upon the table (an array of :c:type:`PyMethodDef` structures) found in the " -"module definition. :c:func:`PyModule_Create` returns a pointer to the module " -"object that it creates. It may abort with a fatal error for certain errors, " -"or return ``NULL`` if the module could not be initialized satisfactorily. " -"The init function must return the module object to its caller, so that it " -"then gets inserted into ``sys.modules``." +":c:func:`!PyInit_spam` is called when each interpreter imports its module :" +"mod:`!spam` for the first time. (See below for comments about embedding " +"Python.) A pointer to the module definition must be returned via :c:func:" +"`PyModuleDef_Init`, so that the import machinery can create the module and " +"store it in ``sys.modules``." msgstr "" -#: extending/extending.rst:381 +#: extending/extending.rst:403 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` " @@ -573,7 +608,7 @@ msgid "" "`PyImport_AppendInittab`, optionally followed by an import of the module::" msgstr "" -#: extending/extending.rst:386 +#: extending/extending.rst:408 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include \n" @@ -626,35 +661,30 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:436 +#: extending/extending.rst:458 msgid "" -"Removing entries from ``sys.modules`` or importing compiled modules into " +"If you declare a global variable or a local static one, the module may " +"experience unintended side-effects on re-initialisation, for example when " +"removing entries from ``sys.modules`` or importing compiled modules into " "multiple interpreters within a process (or following a :c:func:`fork` " -"without an intervening :c:func:`exec`) can create problems for some " -"extension modules. Extension module authors should exercise caution when " -"initializing internal data structures." +"without an intervening :c:func:`exec`). If module state is not yet fully :" +"ref:`isolated `, authors should consider marking " +"the module as having no support for subinterpreters (via :c:macro:" +"`Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED`)." msgstr "" -#: extending/extending.rst:442 +#: extending/extending.rst:467 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 " +"distribution as :file:`Modules/xxlimited.c`. This file may be used as a " "template or simply read as an example." msgstr "" -#: extending/extending.rst:448 -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 "" - -#: extending/extending.rst:457 +#: extending/extending.rst:475 msgid "Compilation and Linkage" msgstr "" -#: extending/extending.rst:459 +#: extending/extending.rst:477 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 " @@ -664,7 +694,7 @@ msgid "" "Windows (chapter :ref:`building-on-windows`) for more information about this." msgstr "" -#: extending/extending.rst:466 +#: extending/extending.rst:484 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 " @@ -674,11 +704,11 @@ msgid "" "line to the file :file:`Modules/Setup.local` describing your file:" msgstr "" -#: extending/extending.rst:473 +#: extending/extending.rst:491 msgid "spam spammodule.o" msgstr "" -#: extending/extending.rst:477 +#: extending/extending.rst:495 msgid "" "and rebuild the interpreter by running :program:`make` in the toplevel " "directory. You can also run :program:`make` in the :file:`Modules/` " @@ -687,21 +717,21 @@ msgid "" "the :file:`Setup` file.)" msgstr "" -#: extending/extending.rst:483 +#: extending/extending.rst:501 msgid "" "If your module requires additional libraries to link with, these can be " "listed on the line in the configuration file as well, for instance:" msgstr "" -#: extending/extending.rst:486 +#: extending/extending.rst:504 msgid "spam spammodule.o -lX11" msgstr "" -#: extending/extending.rst:494 +#: extending/extending.rst:512 msgid "Calling Python Functions from C" msgstr "" -#: extending/extending.rst:496 +#: extending/extending.rst:514 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 " @@ -712,7 +742,7 @@ msgid "" "uses are also imaginable." msgstr "" -#: extending/extending.rst:504 +#: extending/extending.rst:522 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 " @@ -721,7 +751,7 @@ msgid "" "line option in :file:`Modules/main.c` from the Python source code.)" msgstr "" -#: extending/extending.rst:510 +#: extending/extending.rst:528 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 " @@ -731,7 +761,7 @@ msgid "" "function might be part of a module definition::" msgstr "" -#: extending/extending.rst:517 +#: extending/extending.rst:535 msgid "" "static PyObject *my_callback = NULL;\n" "\n" @@ -758,7 +788,7 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:540 +#: extending/extending.rst:558 msgid "" "This function must be registered with the interpreter using the :c:macro:" "`METH_VARARGS` flag; this is described in section :ref:`methodtable`. The :" @@ -766,7 +796,7 @@ msgid "" "section :ref:`parsetuple`." msgstr "" -#: extending/extending.rst:545 +#: extending/extending.rst:563 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`` " @@ -774,7 +804,7 @@ msgid "" "info on them in section :ref:`refcounts`." msgstr "" -#: extending/extending.rst:552 +#: extending/extending.rst:570 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 " @@ -786,7 +816,7 @@ msgid "" "or more format codes between parentheses. For example::" msgstr "" -#: extending/extending.rst:561 +#: extending/extending.rst:579 msgid "" "int arg;\n" "PyObject *arglist;\n" @@ -800,7 +830,7 @@ msgid "" "Py_DECREF(arglist);" msgstr "" -#: extending/extending.rst:572 +#: extending/extending.rst:590 msgid "" ":c:func:`PyObject_CallObject` returns a Python object pointer: this is the " "return value of the Python function. :c:func:`PyObject_CallObject` is " @@ -809,7 +839,7 @@ msgid "" "`Py_DECREF`\\ -ed immediately after the :c:func:`PyObject_CallObject` call." msgstr "" -#: extending/extending.rst:579 +#: extending/extending.rst:597 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 " @@ -818,7 +848,7 @@ msgid "" "not interested in its value." msgstr "" -#: extending/extending.rst:585 +#: extending/extending.rst:603 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 " @@ -829,7 +859,7 @@ msgid "" "should be cleared by calling :c:func:`PyErr_Clear`. For example::" msgstr "" -#: extending/extending.rst:593 +#: extending/extending.rst:611 msgid "" "if (result == NULL)\n" " return NULL; /* Pass error back */\n" @@ -837,7 +867,7 @@ msgid "" "Py_DECREF(result);" msgstr "" -#: extending/extending.rst:598 +#: extending/extending.rst:616 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 " @@ -849,7 +879,7 @@ msgid "" "you want to pass an integral event code, you might use the following code::" msgstr "" -#: extending/extending.rst:607 +#: extending/extending.rst:625 msgid "" "PyObject *arglist;\n" "...\n" @@ -862,7 +892,7 @@ msgid "" "Py_DECREF(result);" msgstr "" -#: extending/extending.rst:617 +#: extending/extending.rst:635 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 " @@ -870,14 +900,14 @@ msgid "" "checked." msgstr "" -#: extending/extending.rst:621 +#: extending/extending.rst:639 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 "" -#: extending/extending.rst:625 +#: extending/extending.rst:643 msgid "" "PyObject *dict;\n" "...\n" @@ -890,19 +920,19 @@ msgid "" "Py_DECREF(result);" msgstr "" -#: extending/extending.rst:639 +#: extending/extending.rst:657 msgid "Extracting Parameters in Extension Functions" msgstr "" -#: extending/extending.rst:643 +#: extending/extending.rst:661 msgid "The :c:func:`PyArg_ParseTuple` function is declared as follows::" msgstr "" -#: extending/extending.rst:645 +#: extending/extending.rst:663 msgid "int PyArg_ParseTuple(PyObject *arg, const char *format, ...);" msgstr "" -#: extending/extending.rst:647 +#: extending/extending.rst:665 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, " @@ -911,7 +941,7 @@ msgid "" "whose type is determined by the format string." msgstr "" -#: extending/extending.rst:653 +#: extending/extending.rst:671 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 " @@ -919,17 +949,17 @@ msgid "" "probably crash or at least overwrite random bits in memory. So be careful!" msgstr "" -#: extending/extending.rst:658 +#: extending/extending.rst:676 msgid "" "Note that any Python object references which are provided to the caller are " "*borrowed* references; do not decrement their reference count!" msgstr "" -#: extending/extending.rst:661 +#: extending/extending.rst:679 msgid "Some example calls::" msgstr "" -#: extending/extending.rst:668 +#: extending/extending.rst:686 msgid "" "int ok;\n" "int i, j;\n" @@ -941,27 +971,27 @@ msgid "" " /* Python call: f() */" msgstr "" -#: extending/extending.rst:679 +#: extending/extending.rst:697 msgid "" "ok = PyArg_ParseTuple(args, \"s\", &s); /* A string */\n" " /* Possible Python call: f('whoops!') */" msgstr "" -#: extending/extending.rst:684 +#: extending/extending.rst:702 msgid "" "ok = PyArg_ParseTuple(args, \"lls\", &k, &l, &s); /* Two longs and a string " "*/\n" " /* Possible Python call: f(1, 2, 'three') */" msgstr "" -#: extending/extending.rst:689 +#: extending/extending.rst:707 msgid "" "ok = PyArg_ParseTuple(args, \"(ii)s#\", &i, &j, &s, &size);\n" " /* A pair of ints and a string, whose size is also returned */\n" " /* Possible Python call: f((1, 2), 'three') */" msgstr "" -#: extending/extending.rst:695 +#: extending/extending.rst:713 msgid "" "{\n" " const char *file;\n" @@ -976,7 +1006,7 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:709 +#: extending/extending.rst:727 msgid "" "{\n" " int left, top, right, bottom, h, v;\n" @@ -988,7 +1018,7 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:720 +#: extending/extending.rst:738 msgid "" "{\n" " Py_complex c;\n" @@ -998,23 +1028,23 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:731 +#: extending/extending.rst:749 msgid "Keyword Parameters for Extension Functions" msgstr "" -#: extending/extending.rst:735 +#: extending/extending.rst:753 msgid "" "The :c:func:`PyArg_ParseTupleAndKeywords` function is declared as follows::" msgstr "" -#: extending/extending.rst:737 +#: extending/extending.rst:755 msgid "" "int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,\n" " const char *format, char * const " "*kwlist, ...);" msgstr "" -#: extending/extending.rst:740 +#: extending/extending.rst:758 msgid "" "The *arg* and *format* parameters are identical to those of the :c:func:" "`PyArg_ParseTuple` function. The *kwdict* parameter is the dictionary of " @@ -1026,20 +1056,20 @@ msgid "" "raises an appropriate exception." msgstr "" -#: extending/extending.rst:750 +#: extending/extending.rst:768 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 "" -#: extending/extending.rst:756 +#: extending/extending.rst:774 msgid "" "Here is an example module which uses keywords, based on an example by Geoff " "Philbrick (philbrick@hks.com)::" msgstr "" -#: extending/extending.rst:759 +#: extending/extending.rst:777 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include \n" @@ -1078,36 +1108,35 @@ msgid "" " {NULL, NULL, 0, NULL} /* sentinel */\n" "};\n" "\n" -"static struct PyModuleDef keywdargmodule = {\n" -" PyModuleDef_HEAD_INIT,\n" -" \"keywdarg\",\n" -" NULL,\n" -" -1,\n" -" keywdarg_methods\n" +"static struct PyModuleDef keywdarg_module = {\n" +" .m_base = PyModuleDef_HEAD_INIT,\n" +" .m_name = \"keywdarg\",\n" +" .m_size = 0,\n" +" .m_methods = keywdarg_methods,\n" "};\n" "\n" "PyMODINIT_FUNC\n" "PyInit_keywdarg(void)\n" "{\n" -" return PyModule_Create(&keywdargmodule);\n" +" return PyModuleDef_Init(&keywdarg_module);\n" "}" msgstr "" -#: extending/extending.rst:811 +#: extending/extending.rst:828 msgid "Building Arbitrary Values" msgstr "" -#: extending/extending.rst:813 +#: extending/extending.rst:830 msgid "" "This function is the counterpart to :c:func:`PyArg_ParseTuple`. It is " "declared as follows::" msgstr "" -#: extending/extending.rst:816 +#: extending/extending.rst:833 msgid "PyObject *Py_BuildValue(const char *format, ...);" msgstr "" -#: extending/extending.rst:818 +#: extending/extending.rst:835 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, " @@ -1115,7 +1144,7 @@ msgid "" "object, suitable for returning from a C function called from Python." msgstr "" -#: extending/extending.rst:823 +#: extending/extending.rst:840 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 " @@ -1127,12 +1156,12 @@ msgid "" "parenthesize the format string." msgstr "" -#: extending/extending.rst:831 +#: extending/extending.rst:848 msgid "" "Examples (to the left the call, to the right the resulting Python value):" msgstr "" -#: extending/extending.rst:833 +#: extending/extending.rst:850 msgid "" "Py_BuildValue(\"\") None\n" "Py_BuildValue(\"i\", 123) 123\n" @@ -1153,11 +1182,11 @@ msgid "" " 1, 2, 3, 4, 5, 6) (((1, 2), (3, 4)), (5, 6))" msgstr "" -#: extending/extending.rst:857 +#: extending/extending.rst:874 msgid "Reference Counts" msgstr "" -#: extending/extending.rst:859 +#: extending/extending.rst:876 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 " @@ -1166,7 +1195,7 @@ msgid "" "restrict the following discussion to the C case." msgstr "" -#: extending/extending.rst:865 +#: extending/extending.rst:882 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:" @@ -1181,7 +1210,7 @@ msgid "" "crashes." msgstr "" -#: extending/extending.rst:876 +#: extending/extending.rst:893 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, " @@ -1198,7 +1227,7 @@ msgid "" "of errors." msgstr "" -#: extending/extending.rst:889 +#: extending/extending.rst:906 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. " @@ -1209,7 +1238,7 @@ msgid "" "reference to the object has been deleted and the object is freed." msgstr "" -#: extending/extending.rst:897 +#: extending/extending.rst:914 msgid "" "An alternative strategy is called :dfn:`automatic garbage collection`. " "(Sometimes, reference counting is also referred to as a garbage collection " @@ -1225,7 +1254,7 @@ msgid "" "with reference counts." msgstr "" -#: extending/extending.rst:909 +#: extending/extending.rst:926 msgid "" "While Python uses the traditional reference counting implementation, it also " "offers a cycle detector that works to detect reference cycles. This allows " @@ -1239,7 +1268,7 @@ msgid "" "though there are no further references to the cycle itself." msgstr "" -#: extending/extending.rst:920 +#: extending/extending.rst:937 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." @@ -1247,11 +1276,11 @@ msgid "" "disable the detector at runtime." msgstr "" -#: extending/extending.rst:929 +#: extending/extending.rst:946 msgid "Reference Counting in Python" msgstr "" -#: extending/extending.rst:931 +#: extending/extending.rst:948 msgid "" "There are two macros, ``Py_INCREF(x)`` and ``Py_DECREF(x)``, which handle " "the incrementing and decrementing of the reference count. :c:func:" @@ -1262,7 +1291,7 @@ msgid "" "object." msgstr "" -#: extending/extending.rst:938 +#: extending/extending.rst:955 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 " @@ -1275,7 +1304,7 @@ msgid "" "reference creates a memory leak." msgstr "" -#: extending/extending.rst:947 +#: extending/extending.rst:964 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 " @@ -1284,7 +1313,7 @@ msgid "" "risks using freed memory and should be avoided completely [#]_." msgstr "" -#: extending/extending.rst:953 +#: extending/extending.rst:970 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 " @@ -1295,7 +1324,7 @@ msgid "" "borrowed has in fact disposed of it." msgstr "" -#: extending/extending.rst:961 +#: extending/extending.rst:978 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 " @@ -1304,18 +1333,18 @@ msgid "" "properly, as well as the previous owner)." msgstr "" -#: extending/extending.rst:971 +#: extending/extending.rst:988 msgid "Ownership Rules" msgstr "" -#: extending/extending.rst:973 +#: extending/extending.rst:990 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 "" -#: extending/extending.rst:977 +#: extending/extending.rst:994 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 " @@ -1326,7 +1355,7 @@ msgid "" "reference to a cached item." msgstr "" -#: extending/extending.rst:985 +#: extending/extending.rst:1002 msgid "" "Many functions that extract objects from other objects also transfer " "ownership with the reference, for instance :c:func:" @@ -1337,14 +1366,14 @@ msgid "" "list or dictionary." msgstr "" -#: extending/extending.rst:992 +#: extending/extending.rst:1009 msgid "" "The function :c:func:`PyImport_AddModule` also returns a borrowed reference, " "even though it may actually create the object it returns: this is possible " "because an owned reference to the object is stored in ``sys.modules``." msgstr "" -#: extending/extending.rst:996 +#: extending/extending.rst:1013 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 " @@ -1355,7 +1384,7 @@ msgid "" "don't take over ownership --- they are \"normal.\")" msgstr "" -#: extending/extending.rst:1004 +#: extending/extending.rst:1021 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 " @@ -1364,18 +1393,18 @@ msgid "" "turned into an owned reference by calling :c:func:`Py_INCREF`." msgstr "" -#: extending/extending.rst:1010 +#: extending/extending.rst:1027 msgid "" "The object reference returned from a C function that is called from Python " "must be an owned reference --- ownership is transferred from the function to " "its caller." msgstr "" -#: extending/extending.rst:1018 +#: extending/extending.rst:1035 msgid "Thin Ice" msgstr "" -#: extending/extending.rst:1020 +#: extending/extending.rst:1037 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 " @@ -1383,14 +1412,14 @@ msgid "" "dispose of it." msgstr "" -#: extending/extending.rst:1024 +#: extending/extending.rst:1041 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 "" -#: extending/extending.rst:1027 +#: extending/extending.rst:1044 msgid "" "void\n" "bug(PyObject *list)\n" @@ -1402,14 +1431,14 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:1036 +#: extending/extending.rst:1053 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 "" -#: extending/extending.rst:1040 +#: extending/extending.rst:1057 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 " @@ -1419,7 +1448,7 @@ msgid "" "count of 1, disposing of it will call its :meth:`!__del__` method." msgstr "" -#: extending/extending.rst:1047 +#: extending/extending.rst:1064 msgid "" "Since it is written in Python, the :meth:`!__del__` method can execute " "arbitrary Python code. Could it perhaps do something to invalidate the " @@ -1430,13 +1459,13 @@ msgid "" "associated with it, thereby invalidating ``item``." msgstr "" -#: extending/extending.rst:1055 +#: extending/extending.rst:1072 msgid "" "The solution, once you know the source of the problem, is easy: temporarily " "increment the reference count. The correct version of the function reads::" msgstr "" -#: extending/extending.rst:1058 +#: extending/extending.rst:1075 msgid "" "void\n" "no_bug(PyObject *list)\n" @@ -1450,27 +1479,27 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:1069 +#: extending/extending.rst:1086 msgid "" "This is a true story. An older version of Python contained variants of this " "bug and someone spent a considerable amount of time in a C debugger to " "figure out why his :meth:`!__del__` methods would fail..." msgstr "" -#: extending/extending.rst:1073 +#: extending/extending.rst:1090 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 " -"each other's way, because there is a global lock protecting Python's entire " -"object space. However, it is possible to temporarily release this lock " -"using the macro :c:macro:`Py_BEGIN_ALLOW_THREADS`, and to re-acquire it " -"using :c:macro:`Py_END_ALLOW_THREADS`. This is common around blocking I/O " -"calls, to let other threads use the processor while waiting for the I/O to " -"complete. Obviously, the following function has the same problem as the " -"previous one::" +"each other's way, because there is a :term:`global lock ` protecting Python's entire object space. However, it is possible to " +"temporarily release this lock using the macro :c:macro:" +"`Py_BEGIN_ALLOW_THREADS`, and to re-acquire it using :c:macro:" +"`Py_END_ALLOW_THREADS`. This is common around blocking I/O calls, to let " +"other threads use the processor while waiting for the I/O to complete. " +"Obviously, the following function has the same problem as the previous one::" msgstr "" -#: extending/extending.rst:1082 +#: extending/extending.rst:1100 msgid "" "void\n" "bug(PyObject *list)\n" @@ -1483,11 +1512,11 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:1096 +#: extending/extending.rst:1114 msgid "NULL Pointers" msgstr "" -#: extending/extending.rst:1098 +#: extending/extending.rst:1116 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 " @@ -1499,21 +1528,21 @@ msgid "" "more slowly." msgstr "" -#: extending/extending.rst:1106 +#: extending/extending.rst:1124 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 "" -#: extending/extending.rst:1110 +#: extending/extending.rst:1128 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 "" -#: extending/extending.rst:1114 +#: extending/extending.rst:1132 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 " @@ -1522,24 +1551,24 @@ msgid "" "variants with ``NULL`` checking." msgstr "" -#: extending/extending.rst:1120 +#: extending/extending.rst:1138 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 [#]_." msgstr "" -#: extending/extending.rst:1124 +#: extending/extending.rst:1142 msgid "" "It is a severe error to ever let a ``NULL`` pointer \"escape\" to the Python " "user." msgstr "" -#: extending/extending.rst:1135 +#: extending/extending.rst:1153 msgid "Writing Extensions in C++" msgstr "" -#: extending/extending.rst:1137 +#: extending/extending.rst:1155 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 " @@ -1552,11 +1581,11 @@ msgid "" "(all recent C++ compilers define this symbol)." msgstr "" -#: extending/extending.rst:1151 +#: extending/extending.rst:1169 msgid "Providing a C API for an Extension Module" msgstr "" -#: extending/extending.rst:1156 +#: extending/extending.rst:1174 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 " @@ -1567,7 +1596,7 @@ msgid "" "functions for direct manipulation from other extension modules." msgstr "" -#: extending/extending.rst:1164 +#: extending/extending.rst:1182 msgid "" "At first sight this seems easy: just write the functions (without declaring " "them ``static``, of course), provide an appropriate header file, and " @@ -1583,7 +1612,7 @@ msgid "" "call might not have been loaded yet!" msgstr "" -#: extending/extending.rst:1176 +#: extending/extending.rst:1194 msgid "" "Portability therefore requires not to make any assumptions about symbol " "visibility. This means that all symbols in extension modules should be " @@ -1593,7 +1622,7 @@ msgid "" "accessible from other extension modules must be exported in a different way." msgstr "" -#: extending/extending.rst:1183 +#: extending/extending.rst:1201 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 " @@ -1605,7 +1634,7 @@ msgid "" "the Capsule." msgstr "" -#: extending/extending.rst:1191 +#: extending/extending.rst:1209 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 " @@ -1615,7 +1644,7 @@ msgid "" "client modules." msgstr "" -#: extending/extending.rst:1197 +#: extending/extending.rst:1215 msgid "" "Whichever method you choose, it's important to name your Capsules properly. " "The function :c:func:`PyCapsule_New` takes a name parameter (:c:expr:`const " @@ -1625,17 +1654,17 @@ msgid "" "from another." msgstr "" -#: extending/extending.rst:1204 +#: extending/extending.rst:1222 msgid "" "In particular, Capsules used to expose C APIs should be given a name " "following this convention::" msgstr "" -#: extending/extending.rst:1207 +#: extending/extending.rst:1225 msgid "modulename.attributename" msgstr "" -#: extending/extending.rst:1209 +#: extending/extending.rst:1227 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 " @@ -1643,7 +1672,7 @@ msgid "" "the Capsule they load contains the correct C API." msgstr "" -#: extending/extending.rst:1214 +#: extending/extending.rst:1232 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 " @@ -1654,7 +1683,7 @@ msgid "" "modules only have to call this macro before accessing the C API." msgstr "" -#: extending/extending.rst:1222 +#: extending/extending.rst:1240 msgid "" "The exporting module is a modification of the :mod:`!spam` module from " "section :ref:`extending-simpleexample`. The function :func:`!spam.system` " @@ -1665,13 +1694,13 @@ msgid "" "modules." msgstr "" -#: extending/extending.rst:1229 +#: extending/extending.rst:1247 msgid "" "The function :c:func:`!PySpam_System` is a plain C function, declared " "``static`` like everything else::" msgstr "" -#: extending/extending.rst:1232 +#: extending/extending.rst:1250 msgid "" "static int\n" "PySpam_System(const char *command)\n" @@ -1680,11 +1709,11 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:1238 +#: extending/extending.rst:1256 msgid "The function :c:func:`!spam_system` is modified in a trivial way::" msgstr "" -#: extending/extending.rst:1240 +#: extending/extending.rst:1258 msgid "" "static PyObject *\n" "spam_system(PyObject *self, PyObject *args)\n" @@ -1699,45 +1728,40 @@ msgid "" "}" msgstr "" -#: extending/extending.rst:1252 +#: extending/extending.rst:1270 msgid "In the beginning of the module, right after the line ::" msgstr "" -#: extending/extending.rst:1254 +#: extending/extending.rst:1272 msgid "#include " msgstr "" -#: extending/extending.rst:1256 +#: extending/extending.rst:1274 msgid "two more lines must be added::" msgstr "" -#: extending/extending.rst:1258 +#: extending/extending.rst:1276 msgid "" "#define SPAM_MODULE\n" "#include \"spammodule.h\"" msgstr "" -#: extending/extending.rst:1261 +#: extending/extending.rst:1279 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::" +"the exporting module, not a client module. Finally, the module's :c:data:" +"`mod_exec ` function must take care of initializing the C API " +"pointer array::" msgstr "" -#: extending/extending.rst:1265 +#: extending/extending.rst:1283 msgid "" -"PyMODINIT_FUNC\n" -"PyInit_spam(void)\n" +"static int\n" +"spam_module_exec(PyObject *m)\n" "{\n" -" PyObject *m;\n" " static void *PySpam_API[PySpam_API_pointers];\n" " PyObject *c_api_object;\n" "\n" -" m = PyModule_Create(&spammodule);\n" -" if (m == NULL)\n" -" return NULL;\n" -"\n" " /* Initialize the C API pointer array */\n" " PySpam_API[PySpam_System_NUM] = (void *)PySpam_System;\n" "\n" @@ -1746,27 +1770,26 @@ msgid "" "NULL);\n" "\n" " if (PyModule_Add(m, \"_C_API\", c_api_object) < 0) {\n" -" Py_DECREF(m);\n" -" return NULL;\n" +" return -1;\n" " }\n" "\n" -" return m;\n" +" return 0;\n" "}" msgstr "" -#: extending/extending.rst:1290 +#: extending/extending.rst:1302 msgid "" "Note that ``PySpam_API`` is declared ``static``; otherwise the pointer array " "would disappear when :c:func:`!PyInit_spam` terminates!" msgstr "" -#: extending/extending.rst:1293 +#: extending/extending.rst:1305 msgid "" "The bulk of the work is in the header file :file:`spammodule.h`, which looks " "like this::" msgstr "" -#: extending/extending.rst:1296 +#: extending/extending.rst:1308 msgid "" "#ifndef Py_SPAMMODULE_H\n" "#define Py_SPAMMODULE_H\n" @@ -1818,38 +1841,34 @@ msgid "" "#endif /* !defined(Py_SPAMMODULE_H) */" msgstr "" -#: extending/extending.rst:1344 +#: extending/extending.rst:1356 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::" +"import_spam` in its :c:data:`mod_exec ` function::" msgstr "" -#: extending/extending.rst:1348 +#: extending/extending.rst:1360 msgid "" -"PyMODINIT_FUNC\n" -"PyInit_client(void)\n" +"static int\n" +"client_module_exec(PyObject *m)\n" "{\n" -" PyObject *m;\n" -"\n" -" m = PyModule_Create(&clientmodule);\n" -" if (m == NULL)\n" -" return NULL;\n" -" if (import_spam() < 0)\n" -" return NULL;\n" +" if (import_spam() < 0) {\n" +" return -1;\n" +" }\n" " /* additional initialization can happen here */\n" -" return m;\n" +" return 0;\n" "}" msgstr "" -#: extending/extending.rst:1362 +#: extending/extending.rst:1370 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 "" -#: extending/extending.rst:1366 +#: extending/extending.rst:1374 msgid "" "Finally it should be mentioned that Capsules offer additional functionality, " "which is especially useful for memory allocation and deallocation of the " @@ -1859,47 +1878,47 @@ msgid "" "in the Python source code distribution)." msgstr "" -#: extending/extending.rst:1374 +#: extending/extending.rst:1382 msgid "Footnotes" msgstr "" -#: extending/extending.rst:1375 +#: extending/extending.rst:1383 msgid "" "An interface for this function already exists in the standard module :mod:" "`os` --- it was chosen as a simple and straightforward example." msgstr "" -#: extending/extending.rst:1378 +#: extending/extending.rst:1386 msgid "" "The metaphor of \"borrowing\" a reference is not completely correct: the " "owner still has a copy of the reference." msgstr "" -#: extending/extending.rst:1381 +#: extending/extending.rst:1389 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 "" -#: extending/extending.rst:1385 +#: extending/extending.rst:1393 msgid "" "These guarantees don't hold when you use the \"old\" style calling " "convention --- this is still found in much existing code." msgstr "" -#: extending/extending.rst:550 +#: extending/extending.rst:568 msgid "PyObject_CallObject (C function)" msgstr "" -#: extending/extending.rst:641 +#: extending/extending.rst:659 msgid "PyArg_ParseTuple (C function)" msgstr "" -#: extending/extending.rst:733 +#: extending/extending.rst:751 msgid "PyArg_ParseTupleAndKeywords (C function)" msgstr "" -#: extending/extending.rst:754 +#: extending/extending.rst:772 msgid "Philbrick, Geoff" msgstr "" diff --git a/extending/index.po b/extending/index.po index 77d9ca66..d46b7e5d 100644 --- a/extending/index.po +++ b/extending/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-21 21:30+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: PyGreece \n" @@ -69,12 +69,12 @@ msgid "Recommended third party tools" msgstr "Προτεινόμενα εργαλεία τρίτων" #: extending/index.rst:28 +#, fuzzy 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. Some :ref:`third party tools ` " +"offer both simpler and more sophisticated approaches to creating C and C++ " +"extensions for Python." msgstr "" "Αυτός ο οδηγός καλύπτει μόνο τα βασικά εργαλεία για τη δημιουργία επεκτάσεων " "που παρέχονται ως μέρος αυτής της έκδοσης της CPython. Εργαλεία τρίτων όπως " @@ -83,30 +83,11 @@ msgstr "" "προσφέρουν τόσο απλούστερες όσο και πιο εξελιγμένες προσεγγίσεις για τη " "δημιουργία επεκτάσεων σε C και C++ για την Python." -#: extending/index.rst:37 -msgid "" -"`Python Packaging User Guide: Binary Extensions `_" -msgstr "" -"`Οδηγός Χρήστη για Δημιουργία πακέτων Python: Δυαδικές Επεκτάσεις `_" - -#: 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 "" -"Ο Οδηγός Χρήστη για Δημιουργία πακέτων της Python δεν καλύπτει μόνο διάφορα " -"διαθέσιμα εργαλεία που απλοποιούν τη δημιουργία δυαδικών επεκτάσεων, αλλά " -"επίσης συζητά και τους διάφορους λόγους για τους οποίους μπορεί να είναι " -"επιθυμητή η δημιουργία ενός module επέκτασης σε πρώτη φάση." - -#: extending/index.rst:45 +#: extending/index.rst:35 msgid "Creating extensions without third party tools" msgstr "Δημιουργία επεκτάσεων χωρίς εργαλεία τρίτων" -#: extending/index.rst:47 +#: extending/index.rst:37 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 " @@ -118,11 +99,15 @@ msgstr "" "των εργαλείων, παρά ως προτεινόμενη μέθοδος για τη δημιουργία δικών σας " "επεκτάσεων σε C." -#: extending/index.rst:63 +#: extending/index.rst:44 +msgid ":pep:`489` -- Multi-phase extension module initialization" +msgstr "" + +#: extending/index.rst:57 msgid "Embedding the CPython runtime in a larger application" msgstr "Ενσωμάτωση του χρόνου εκτέλεσης της CPython σε μεγαλύτερη εφαρμογή" -#: extending/index.rst:65 +#: extending/index.rst:59 msgid "" "Sometimes, rather than creating an extension that runs inside the Python " "interpreter as the main application, it is desirable to instead embed the " @@ -133,3 +118,22 @@ msgstr "" "διερμηνέα της Python ως κύρια εφαρμογή, είναι προτιμότερο να ενσωματώσουμε " "τον χρόνο εκτέλεσης της CPython σε μια μεγαλύτερη εφαρμογή. Αυτή η ενότητα " "καλύπτει μερικές λεπτομέρειες για το πώς να το κάνετε αυτό με επιτυχία." + +#~ msgid "" +#~ "`Python Packaging User Guide: Binary Extensions `_" +#~ msgstr "" +#~ "`Οδηγός Χρήστη για Δημιουργία πακέτων Python: Δυαδικές Επεκτάσεις " +#~ "`_" + +#~ 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 "" +#~ "Ο Οδηγός Χρήστη για Δημιουργία πακέτων της Python δεν καλύπτει μόνο " +#~ "διάφορα διαθέσιμα εργαλεία που απλοποιούν τη δημιουργία δυαδικών " +#~ "επεκτάσεων, αλλά επίσης συζητά και τους διάφορους λόγους για τους οποίους " +#~ "μπορεί να είναι επιθυμητή η δημιουργία ενός module επέκτασης σε πρώτη " +#~ "φάση." diff --git a/extending/newtypes.po b/extending/newtypes.po index 07d2d84d..251298f6 100644 --- a/extending/newtypes.po +++ b/extending/newtypes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/extending/newtypes_tutorial.po b/extending/newtypes_tutorial.po index 89c02330..3ffff431 100644 --- a/extending/newtypes_tutorial.po +++ b/extending/newtypes_tutorial.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -87,31 +87,41 @@ msgid "" " .tp_new = PyType_GenericNew,\n" "};\n" "\n" -"static PyModuleDef custommodule = {\n" +"static int\n" +"custom_module_exec(PyObject *m)\n" +"{\n" +" if (PyType_Ready(&CustomType) < 0) {\n" +" return -1;\n" +" }\n" +"\n" +" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " +"{\n" +" return -1;\n" +" }\n" +"\n" +" return 0;\n" +"}\n" +"\n" +"static PyModuleDef_Slot custom_module_slots[] = {\n" +" {Py_mod_exec, custom_module_exec},\n" +" // Just use this while using static types\n" +" {Py_mod_multiple_interpreters, " +"Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},\n" +" {0, NULL}\n" +"};\n" +"\n" +"static PyModuleDef custom_module = {\n" " .m_base = PyModuleDef_HEAD_INIT,\n" " .m_name = \"custom\",\n" " .m_doc = \"Example module that creates an extension type.\",\n" -" .m_size = -1,\n" +" .m_size = 0,\n" +" .m_slots = custom_module_slots,\n" "};\n" "\n" "PyMODINIT_FUNC\n" "PyInit_custom(void)\n" "{\n" -" PyObject *m;\n" -" if (PyType_Ready(&CustomType) < 0)\n" -" return NULL;\n" -"\n" -" m = PyModule_Create(&custommodule);\n" -" if (m == NULL)\n" -" return NULL;\n" -"\n" -" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " -"{\n" -" Py_DECREF(m);\n" -" return NULL;\n" -" }\n" -"\n" -" return m;\n" +" return PyModuleDef_Init(&custom_module);\n" "}\n" msgstr "" @@ -136,22 +146,24 @@ msgstr "" #: extending/newtypes_tutorial.rst:58 msgid "" -"How to initialize the :mod:`!custom` module: this is the ``PyInit_custom`` " -"function and the associated ``custommodule`` struct." +"How to define and execute the :mod:`!custom` module: this is the " +"``PyInit_custom`` function and the associated ``custom_module`` struct for " +"defining the module, and the ``custom_module_exec`` function to set up a " +"fresh module object." msgstr "" -#: extending/newtypes_tutorial.rst:61 +#: extending/newtypes_tutorial.rst:63 msgid "The first bit is::" msgstr "" -#: extending/newtypes_tutorial.rst:63 +#: extending/newtypes_tutorial.rst:65 msgid "" "typedef struct {\n" " PyObject_HEAD\n" "} CustomObject;" msgstr "" -#: extending/newtypes_tutorial.rst:67 +#: extending/newtypes_tutorial.rst:69 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 " @@ -162,20 +174,20 @@ msgid "" "builds `." msgstr "" -#: extending/newtypes_tutorial.rst:76 +#: extending/newtypes_tutorial.rst:78 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 "" -#: extending/newtypes_tutorial.rst:79 +#: extending/newtypes_tutorial.rst:81 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 "" -#: extending/newtypes_tutorial.rst:83 +#: extending/newtypes_tutorial.rst:85 msgid "" "typedef struct {\n" " PyObject_HEAD\n" @@ -183,11 +195,11 @@ msgid "" "} PyFloatObject;" msgstr "" -#: extending/newtypes_tutorial.rst:88 +#: extending/newtypes_tutorial.rst:90 msgid "The second bit is the definition of the type object. ::" msgstr "" -#: extending/newtypes_tutorial.rst:90 +#: extending/newtypes_tutorial.rst:92 msgid "" "static PyTypeObject CustomType = {\n" " .ob_base = PyVarObject_HEAD_INIT(NULL, 0)\n" @@ -200,14 +212,14 @@ msgid "" "};" msgstr "" -#: extending/newtypes_tutorial.rst:101 +#: extending/newtypes_tutorial.rst:103 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 "" -#: extending/newtypes_tutorial.rst:105 +#: extending/newtypes_tutorial.rst:107 msgid "" "The actual definition of :c:type:`PyTypeObject` in :file:`object.h` has many " "more :ref:`fields ` than the definition above. The remaining " @@ -215,31 +227,31 @@ msgid "" "to not specify them explicitly unless you need them." msgstr "" -#: extending/newtypes_tutorial.rst:110 +#: extending/newtypes_tutorial.rst:112 msgid "We're going to pick it apart, one field at a time::" msgstr "" -#: extending/newtypes_tutorial.rst:112 +#: extending/newtypes_tutorial.rst:114 msgid ".ob_base = PyVarObject_HEAD_INIT(NULL, 0)" msgstr "" -#: extending/newtypes_tutorial.rst:114 +#: extending/newtypes_tutorial.rst:116 msgid "" "This line is mandatory boilerplate to initialize the ``ob_base`` field " "mentioned above. ::" msgstr "" -#: extending/newtypes_tutorial.rst:117 +#: extending/newtypes_tutorial.rst:119 msgid ".tp_name = \"custom.Custom\"," msgstr "" -#: extending/newtypes_tutorial.rst:119 +#: extending/newtypes_tutorial.rst:121 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 "" -#: extending/newtypes_tutorial.rst:122 +#: extending/newtypes_tutorial.rst:124 msgid "" ">>> \"\" + custom.Custom()\n" "Traceback (most recent call last):\n" @@ -247,7 +259,7 @@ msgid "" "TypeError: can only concatenate str (not \"custom.Custom\") to str" msgstr "" -#: extending/newtypes_tutorial.rst:129 +#: extending/newtypes_tutorial.rst:131 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:`!" @@ -256,20 +268,20 @@ msgid "" "your type compatible with the :mod:`pydoc` and :mod:`pickle` modules. ::" msgstr "" -#: extending/newtypes_tutorial.rst:135 +#: extending/newtypes_tutorial.rst:137 msgid "" ".tp_basicsize = sizeof(CustomObject),\n" ".tp_itemsize = 0," msgstr "" -#: extending/newtypes_tutorial.rst:138 +#: extending/newtypes_tutorial.rst:140 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 "" -#: extending/newtypes_tutorial.rst:144 +#: extending/newtypes_tutorial.rst:146 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 " @@ -283,31 +295,31 @@ msgid "" "your base type, and therefore increasing its size." msgstr "" -#: extending/newtypes_tutorial.rst:154 +#: extending/newtypes_tutorial.rst:156 msgid "We set the class flags to :c:macro:`Py_TPFLAGS_DEFAULT`. ::" msgstr "" -#: extending/newtypes_tutorial.rst:156 +#: extending/newtypes_tutorial.rst:158 msgid ".tp_flags = Py_TPFLAGS_DEFAULT," msgstr "" -#: extending/newtypes_tutorial.rst:158 +#: extending/newtypes_tutorial.rst:160 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 "" -#: extending/newtypes_tutorial.rst:162 +#: extending/newtypes_tutorial.rst:164 msgid "" "We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::" msgstr "" -#: extending/newtypes_tutorial.rst:164 +#: extending/newtypes_tutorial.rst:166 msgid ".tp_doc = PyDoc_STR(\"Custom objects\")," msgstr "" -#: extending/newtypes_tutorial.rst:166 +#: extending/newtypes_tutorial.rst:168 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:`~object." @@ -316,56 +328,56 @@ msgid "" "`PyType_GenericNew`. ::" msgstr "" -#: extending/newtypes_tutorial.rst:171 +#: extending/newtypes_tutorial.rst:173 msgid ".tp_new = PyType_GenericNew," msgstr "" -#: extending/newtypes_tutorial.rst:173 +#: extending/newtypes_tutorial.rst:175 msgid "" "Everything else in the file should be familiar, except for some code in :c:" -"func:`!PyInit_custom`::" +"func:`!custom_module_exec`::" msgstr "" -#: extending/newtypes_tutorial.rst:176 +#: extending/newtypes_tutorial.rst:178 msgid "" -"if (PyType_Ready(&CustomType) < 0)\n" -" return;" +"if (PyType_Ready(&CustomType) < 0) {\n" +" return -1;\n" +"}" msgstr "" -#: extending/newtypes_tutorial.rst:179 +#: extending/newtypes_tutorial.rst:182 msgid "" "This initializes the :class:`!Custom` type, filling in a number of members " "to the appropriate default values, including :c:member:`~PyObject.ob_type` " "that we initially set to ``NULL``. ::" msgstr "" -#: extending/newtypes_tutorial.rst:183 +#: extending/newtypes_tutorial.rst:186 msgid "" "if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) {\n" -" Py_DECREF(m);\n" -" return NULL;\n" +" return -1;\n" "}" msgstr "" -#: extending/newtypes_tutorial.rst:188 +#: extending/newtypes_tutorial.rst:190 msgid "" "This adds the type to the module dictionary. This allows us to create :" "class:`!Custom` instances by calling the :class:`!Custom` class:" msgstr "" -#: extending/newtypes_tutorial.rst:191 +#: extending/newtypes_tutorial.rst:193 msgid "" ">>> import custom\n" ">>> mycustom = custom.Custom()" msgstr "" -#: extending/newtypes_tutorial.rst:196 +#: extending/newtypes_tutorial.rst:198 msgid "" "That's it! All that remains is to build it; put the above code in a file " "called :file:`custom.c`," msgstr "" -#: extending/newtypes_tutorial.rst:199 +#: extending/newtypes_tutorial.rst:201 msgid "" "[build-system]\n" "requires = [\"setuptools\"]\n" @@ -376,53 +388,53 @@ msgid "" "version = \"1\"\n" msgstr "" -#: extending/newtypes_tutorial.rst:201 +#: extending/newtypes_tutorial.rst:203 msgid "in a file called :file:`pyproject.toml`, and" msgstr "" -#: extending/newtypes_tutorial.rst:203 +#: extending/newtypes_tutorial.rst:205 msgid "" "from setuptools import Extension, setup\n" "setup(ext_modules=[Extension(\"custom\", [\"custom.c\"])])" msgstr "" -#: extending/newtypes_tutorial.rst:208 +#: extending/newtypes_tutorial.rst:210 msgid "in a file called :file:`setup.py`; then typing" msgstr "" -#: extending/newtypes_tutorial.rst:210 extending/newtypes_tutorial.rst:548 +#: extending/newtypes_tutorial.rst:212 extending/newtypes_tutorial.rst:550 msgid "$ python -m pip install ." msgstr "" -#: extending/newtypes_tutorial.rst:214 +#: extending/newtypes_tutorial.rst:216 msgid "" "in a shell should produce a file :file:`custom.so` in a subdirectory and " "install it; now fire up Python --- you should be able to ``import custom`` " "and play around with ``Custom`` objects." msgstr "" -#: extending/newtypes_tutorial.rst:218 +#: extending/newtypes_tutorial.rst:220 msgid "That wasn't so hard, was it?" msgstr "" -#: extending/newtypes_tutorial.rst:220 +#: extending/newtypes_tutorial.rst:222 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 "" -#: extending/newtypes_tutorial.rst:225 +#: extending/newtypes_tutorial.rst:227 msgid "Adding data and methods to the Basic example" msgstr "" -#: extending/newtypes_tutorial.rst:227 +#: extending/newtypes_tutorial.rst:229 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 "" -#: extending/newtypes_tutorial.rst:231 +#: extending/newtypes_tutorial.rst:233 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include \n" @@ -532,39 +544,48 @@ msgid "" " .tp_methods = Custom_methods,\n" "};\n" "\n" -"static PyModuleDef custommodule = {\n" -" .m_base =PyModuleDef_HEAD_INIT,\n" +"static int\n" +"custom_module_exec(PyObject *m)\n" +"{\n" +" if (PyType_Ready(&CustomType) < 0) {\n" +" return -1;\n" +" }\n" +"\n" +" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " +"{\n" +" return -1;\n" +" }\n" +"\n" +" return 0;\n" +"}\n" +"\n" +"static PyModuleDef_Slot custom_module_slots[] = {\n" +" {Py_mod_exec, custom_module_exec},\n" +" {Py_mod_multiple_interpreters, " +"Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},\n" +" {0, NULL}\n" +"};\n" +"\n" +"static PyModuleDef custom_module = {\n" +" .m_base = PyModuleDef_HEAD_INIT,\n" " .m_name = \"custom2\",\n" " .m_doc = \"Example module that creates an extension type.\",\n" -" .m_size = -1,\n" +" .m_size = 0,\n" +" .m_slots = custom_module_slots,\n" "};\n" "\n" "PyMODINIT_FUNC\n" "PyInit_custom2(void)\n" "{\n" -" PyObject *m;\n" -" if (PyType_Ready(&CustomType) < 0)\n" -" return NULL;\n" -"\n" -" m = PyModule_Create(&custommodule);\n" -" if (m == NULL)\n" -" return NULL;\n" -"\n" -" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " -"{\n" -" Py_DECREF(m);\n" -" return NULL;\n" -" }\n" -"\n" -" return m;\n" +" return PyModuleDef_Init(&custom_module);\n" "}\n" msgstr "" -#: extending/newtypes_tutorial.rst:234 +#: extending/newtypes_tutorial.rst:236 msgid "This version of the module has a number of changes." msgstr "" -#: extending/newtypes_tutorial.rst:236 +#: extending/newtypes_tutorial.rst:238 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 " @@ -572,11 +593,11 @@ msgid "" "integer." msgstr "" -#: extending/newtypes_tutorial.rst:240 +#: extending/newtypes_tutorial.rst:242 msgid "The object structure is updated accordingly::" msgstr "" -#: extending/newtypes_tutorial.rst:242 +#: extending/newtypes_tutorial.rst:244 msgid "" "typedef struct {\n" " PyObject_HEAD\n" @@ -586,13 +607,13 @@ msgid "" "} CustomObject;" msgstr "" -#: extending/newtypes_tutorial.rst:249 +#: extending/newtypes_tutorial.rst:251 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 "" -#: extending/newtypes_tutorial.rst:252 +#: extending/newtypes_tutorial.rst:254 msgid "" "static void\n" "Custom_dealloc(PyObject *op)\n" @@ -604,15 +625,15 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:261 +#: extending/newtypes_tutorial.rst:263 msgid "which is assigned to the :c:member:`~PyTypeObject.tp_dealloc` member::" msgstr "" -#: extending/newtypes_tutorial.rst:263 +#: extending/newtypes_tutorial.rst:265 msgid ".tp_dealloc = Custom_dealloc," msgstr "" -#: extending/newtypes_tutorial.rst:265 +#: extending/newtypes_tutorial.rst:267 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 " @@ -623,7 +644,7 @@ msgid "" "an instance of a subclass." msgstr "" -#: extending/newtypes_tutorial.rst:275 +#: extending/newtypes_tutorial.rst:277 msgid "" "The explicit cast to ``CustomObject *`` above is needed because we defined " "``Custom_dealloc`` to take a ``PyObject *`` argument, as the ``tp_dealloc`` " @@ -633,14 +654,14 @@ msgid "" "``(CustomObject *)`` is safe. This is object-oriented polymorphism, in C!" msgstr "" -#: extending/newtypes_tutorial.rst:283 +#: extending/newtypes_tutorial.rst:285 msgid "" "In existing code, or in previous versions of this tutorial, you might see " "similar functions take a pointer to the subtype object structure " "(``CustomObject*``) directly, like this::" msgstr "" -#: extending/newtypes_tutorial.rst:287 +#: extending/newtypes_tutorial.rst:289 msgid "" "Custom_dealloc(CustomObject *self)\n" "{\n" @@ -652,19 +673,19 @@ msgid "" ".tp_dealloc = (destructor) Custom_dealloc," msgstr "" -#: extending/newtypes_tutorial.rst:296 +#: extending/newtypes_tutorial.rst:298 msgid "" "This does the same thing on all architectures that CPython supports, but " "according to the C standard, it invokes undefined behavior." msgstr "" -#: extending/newtypes_tutorial.rst:300 +#: extending/newtypes_tutorial.rst:302 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 "" -#: extending/newtypes_tutorial.rst:303 +#: extending/newtypes_tutorial.rst:305 msgid "" "static PyObject *\n" "Custom_new(PyTypeObject *type, PyObject *args, PyObject *kwds)\n" @@ -688,15 +709,15 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:324 +#: extending/newtypes_tutorial.rst:326 msgid "and install it in the :c:member:`~PyTypeObject.tp_new` member::" msgstr "" -#: extending/newtypes_tutorial.rst:326 +#: extending/newtypes_tutorial.rst:328 msgid ".tp_new = Custom_new," msgstr "" -#: extending/newtypes_tutorial.rst:328 +#: extending/newtypes_tutorial.rst:330 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:" @@ -707,7 +728,7 @@ msgid "" "``first`` and ``last`` attributes to non-``NULL`` default values." msgstr "" -#: extending/newtypes_tutorial.rst:336 +#: extending/newtypes_tutorial.rst:338 msgid "" "``tp_new`` is passed the type being instantiated (not necessarily " "``CustomType``, if a subclass is instantiated) and any arguments passed when " @@ -717,29 +738,29 @@ msgid "" "k.a. ``tp_init`` in C or ``__init__`` in Python) methods." msgstr "" -#: extending/newtypes_tutorial.rst:344 +#: extending/newtypes_tutorial.rst:346 msgid "" "``tp_new`` shouldn't call ``tp_init`` explicitly, as the interpreter will do " "it itself." msgstr "" -#: extending/newtypes_tutorial.rst:347 +#: extending/newtypes_tutorial.rst:349 msgid "" "The ``tp_new`` implementation calls the :c:member:`~PyTypeObject.tp_alloc` " "slot to allocate memory::" msgstr "" -#: extending/newtypes_tutorial.rst:350 +#: extending/newtypes_tutorial.rst:352 msgid "self = (CustomObject *) type->tp_alloc(type, 0);" msgstr "" -#: extending/newtypes_tutorial.rst:352 +#: extending/newtypes_tutorial.rst:354 msgid "" "Since memory allocation may fail, we must check the :c:member:`~PyTypeObject." "tp_alloc` result against ``NULL`` before proceeding." msgstr "" -#: extending/newtypes_tutorial.rst:356 +#: extending/newtypes_tutorial.rst:358 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 " @@ -747,7 +768,7 @@ msgid "" "allocation strategy." msgstr "" -#: extending/newtypes_tutorial.rst:362 +#: extending/newtypes_tutorial.rst:364 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:`~object." @@ -760,13 +781,13 @@ msgid "" "subclasses without getting a :exc:`TypeError`.)" msgstr "" -#: extending/newtypes_tutorial.rst:372 +#: extending/newtypes_tutorial.rst:374 msgid "" "We also define an initialization function which accepts arguments to provide " "initial values for our instance::" msgstr "" -#: extending/newtypes_tutorial.rst:375 +#: extending/newtypes_tutorial.rst:377 msgid "" "static int\n" "Custom_init(PyObject *op, PyObject *args, PyObject *kwds)\n" @@ -796,15 +817,15 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:402 +#: extending/newtypes_tutorial.rst:404 msgid "by filling the :c:member:`~PyTypeObject.tp_init` slot. ::" msgstr "" -#: extending/newtypes_tutorial.rst:404 +#: extending/newtypes_tutorial.rst:406 msgid ".tp_init = Custom_init," msgstr "" -#: extending/newtypes_tutorial.rst:406 +#: extending/newtypes_tutorial.rst:408 msgid "" "The :c:member:`~PyTypeObject.tp_init` slot is exposed in Python as the :meth:" "`~object.__init__` method. It is used to initialize an object after it's " @@ -812,7 +833,7 @@ msgid "" "they should return either ``0`` on success or ``-1`` on error." msgstr "" -#: extending/newtypes_tutorial.rst:411 +#: extending/newtypes_tutorial.rst:413 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 " @@ -823,7 +844,7 @@ msgid "" "``first`` member like this::" msgstr "" -#: extending/newtypes_tutorial.rst:419 +#: extending/newtypes_tutorial.rst:421 msgid "" "if (first) {\n" " Py_XDECREF(self->first);\n" @@ -832,7 +853,7 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:425 +#: extending/newtypes_tutorial.rst:427 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 " @@ -842,38 +863,38 @@ msgid "" "accesses and modifies our object." msgstr "" -#: extending/newtypes_tutorial.rst:432 +#: extending/newtypes_tutorial.rst:434 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 "" -#: extending/newtypes_tutorial.rst:436 +#: extending/newtypes_tutorial.rst:438 msgid "when we absolutely know that the reference count is greater than 1;" msgstr "" -#: extending/newtypes_tutorial.rst:438 +#: extending/newtypes_tutorial.rst:440 msgid "" "when we know that deallocation of the object [#]_ will neither detach the :" "term:`thread state ` nor cause any calls back into " "our type's code;" msgstr "" -#: extending/newtypes_tutorial.rst:441 +#: extending/newtypes_tutorial.rst:443 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 "" -#: extending/newtypes_tutorial.rst:444 +#: extending/newtypes_tutorial.rst:446 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 "" -#: extending/newtypes_tutorial.rst:447 +#: extending/newtypes_tutorial.rst:449 msgid "" "static PyMemberDef Custom_members[] = {\n" " {\"first\", Py_T_OBJECT_EX, offsetof(CustomObject, first), 0,\n" @@ -886,23 +907,23 @@ msgid "" "};" msgstr "" -#: extending/newtypes_tutorial.rst:457 +#: extending/newtypes_tutorial.rst:459 msgid "" "and put the definitions in the :c:member:`~PyTypeObject.tp_members` slot::" msgstr "" -#: extending/newtypes_tutorial.rst:459 +#: extending/newtypes_tutorial.rst:461 msgid ".tp_members = Custom_members," msgstr "" -#: extending/newtypes_tutorial.rst:461 +#: extending/newtypes_tutorial.rst:463 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 "" -#: extending/newtypes_tutorial.rst:465 +#: extending/newtypes_tutorial.rst:467 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 " @@ -913,13 +934,13 @@ msgid "" "deleted." msgstr "" -#: extending/newtypes_tutorial.rst:472 +#: extending/newtypes_tutorial.rst:474 msgid "" "We define a single method, :meth:`!Custom.name`, that outputs the objects " "name as the concatenation of the first and last names. ::" msgstr "" -#: extending/newtypes_tutorial.rst:475 +#: extending/newtypes_tutorial.rst:477 msgid "" "static PyObject *\n" "Custom_name(PyObject *op, PyObject *Py_UNUSED(dummy))\n" @@ -937,7 +958,7 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:490 +#: extending/newtypes_tutorial.rst:492 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 " @@ -947,13 +968,13 @@ msgid "" "method is equivalent to the Python method:" msgstr "" -#: extending/newtypes_tutorial.rst:497 +#: extending/newtypes_tutorial.rst:499 msgid "" "def name(self):\n" " return \"%s %s\" % (self.first, self.last)" msgstr "" -#: extending/newtypes_tutorial.rst:502 +#: extending/newtypes_tutorial.rst:504 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 " @@ -962,13 +983,13 @@ msgid "" "We'll see how to do that in the next section." msgstr "" -#: extending/newtypes_tutorial.rst:508 +#: extending/newtypes_tutorial.rst:510 msgid "" "Now that we've defined the method, we need to create an array of method " "definitions::" msgstr "" -#: extending/newtypes_tutorial.rst:511 +#: extending/newtypes_tutorial.rst:513 msgid "" "static PyMethodDef Custom_methods[] = {\n" " {\"name\", Custom_name, METH_NOARGS,\n" @@ -978,21 +999,21 @@ msgid "" "};" msgstr "" -#: extending/newtypes_tutorial.rst:518 +#: extending/newtypes_tutorial.rst:520 msgid "" "(note that we used the :c:macro:`METH_NOARGS` flag to indicate that the " "method is expecting no arguments other than *self*)" msgstr "" -#: extending/newtypes_tutorial.rst:521 +#: extending/newtypes_tutorial.rst:523 msgid "and assign it to the :c:member:`~PyTypeObject.tp_methods` slot::" msgstr "" -#: extending/newtypes_tutorial.rst:523 +#: extending/newtypes_tutorial.rst:525 msgid ".tp_methods = Custom_methods," msgstr "" -#: extending/newtypes_tutorial.rst:525 +#: extending/newtypes_tutorial.rst:527 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 " @@ -1000,22 +1021,22 @@ msgid "" "to add the :c:macro:`Py_TPFLAGS_BASETYPE` to our class flag definition::" msgstr "" -#: extending/newtypes_tutorial.rst:530 +#: extending/newtypes_tutorial.rst:532 msgid ".tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE," msgstr "" -#: extending/newtypes_tutorial.rst:532 +#: extending/newtypes_tutorial.rst:534 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 "" -#: extending/newtypes_tutorial.rst:536 +#: extending/newtypes_tutorial.rst:538 msgid "Finally, we update our :file:`setup.py` file to include the new module," msgstr "" -#: extending/newtypes_tutorial.rst:538 +#: extending/newtypes_tutorial.rst:540 msgid "" "from setuptools import Extension, setup\n" "setup(ext_modules=[\n" @@ -1024,15 +1045,15 @@ msgid "" "])" msgstr "" -#: extending/newtypes_tutorial.rst:546 +#: extending/newtypes_tutorial.rst:548 msgid "and then we re-install so that we can ``import custom2``:" msgstr "" -#: extending/newtypes_tutorial.rst:553 +#: extending/newtypes_tutorial.rst:555 msgid "Providing finer control over data attributes" msgstr "" -#: extending/newtypes_tutorial.rst:555 +#: extending/newtypes_tutorial.rst:557 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 " @@ -1041,7 +1062,7 @@ msgid "" "make sure that these attributes always contain strings." msgstr "" -#: extending/newtypes_tutorial.rst:561 +#: extending/newtypes_tutorial.rst:563 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include \n" @@ -1198,42 +1219,51 @@ msgid "" " .tp_getset = Custom_getsetters,\n" "};\n" "\n" -"static PyModuleDef custommodule = {\n" +"static int\n" +"custom_module_exec(PyObject *m)\n" +"{\n" +" if (PyType_Ready(&CustomType) < 0) {\n" +" return -1;\n" +" }\n" +"\n" +" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " +"{\n" +" return -1;\n" +" }\n" +"\n" +" return 0;\n" +"}\n" +"\n" +"static PyModuleDef_Slot custom_module_slots[] = {\n" +" {Py_mod_exec, custom_module_exec},\n" +" {Py_mod_multiple_interpreters, " +"Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},\n" +" {0, NULL}\n" +"};\n" +"\n" +"static PyModuleDef custom_module = {\n" " .m_base = PyModuleDef_HEAD_INIT,\n" " .m_name = \"custom3\",\n" " .m_doc = \"Example module that creates an extension type.\",\n" -" .m_size = -1,\n" +" .m_size = 0,\n" +" .m_slots = custom_module_slots,\n" "};\n" "\n" "PyMODINIT_FUNC\n" "PyInit_custom3(void)\n" "{\n" -" PyObject *m;\n" -" if (PyType_Ready(&CustomType) < 0)\n" -" return NULL;\n" -"\n" -" m = PyModule_Create(&custommodule);\n" -" if (m == NULL)\n" -" return NULL;\n" -"\n" -" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " -"{\n" -" Py_DECREF(m);\n" -" return NULL;\n" -" }\n" -"\n" -" return m;\n" +" return PyModuleDef_Init(&custom_module);\n" "}\n" msgstr "" -#: extending/newtypes_tutorial.rst:564 +#: extending/newtypes_tutorial.rst:566 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 "" -#: extending/newtypes_tutorial.rst:568 +#: extending/newtypes_tutorial.rst:570 msgid "" "static PyObject *\n" "Custom_getfirst(PyObject *op, void *closure)\n" @@ -1266,7 +1296,7 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:597 +#: extending/newtypes_tutorial.rst:599 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 " @@ -1276,7 +1306,7 @@ msgid "" "data in the closure.)" msgstr "" -#: extending/newtypes_tutorial.rst:603 +#: extending/newtypes_tutorial.rst:605 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 " @@ -1284,11 +1314,11 @@ msgid "" "deleted or if its new value is not a string." msgstr "" -#: extending/newtypes_tutorial.rst:608 +#: extending/newtypes_tutorial.rst:610 msgid "We create an array of :c:type:`PyGetSetDef` structures::" msgstr "" -#: extending/newtypes_tutorial.rst:610 +#: extending/newtypes_tutorial.rst:612 msgid "" "static PyGetSetDef Custom_getsetters[] = {\n" " {\"first\", Custom_getfirst, Custom_setfirst,\n" @@ -1299,26 +1329,26 @@ msgid "" "};" msgstr "" -#: extending/newtypes_tutorial.rst:618 +#: extending/newtypes_tutorial.rst:620 msgid "and register it in the :c:member:`~PyTypeObject.tp_getset` slot::" msgstr "" -#: extending/newtypes_tutorial.rst:620 +#: extending/newtypes_tutorial.rst:622 msgid ".tp_getset = Custom_getsetters," msgstr "" -#: extending/newtypes_tutorial.rst:622 +#: extending/newtypes_tutorial.rst:624 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 "" -#: extending/newtypes_tutorial.rst:625 +#: extending/newtypes_tutorial.rst:627 msgid "We also remove the member definitions for these attributes::" msgstr "" -#: extending/newtypes_tutorial.rst:627 +#: extending/newtypes_tutorial.rst:629 msgid "" "static PyMemberDef Custom_members[] = {\n" " {\"number\", Py_T_INT, offsetof(CustomObject, number), 0,\n" @@ -1327,13 +1357,13 @@ msgid "" "};" msgstr "" -#: extending/newtypes_tutorial.rst:633 +#: extending/newtypes_tutorial.rst:635 msgid "" "We also need to update the :c:member:`~PyTypeObject.tp_init` handler to only " "allow strings [#]_ to be passed::" msgstr "" -#: extending/newtypes_tutorial.rst:636 +#: extending/newtypes_tutorial.rst:638 msgid "" "static int\n" "Custom_init(PyObject *op, PyObject *args, PyObject *kwds)\n" @@ -1363,7 +1393,7 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:663 +#: extending/newtypes_tutorial.rst:665 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 " @@ -1373,32 +1403,32 @@ msgid "" "possibility that the initialization of these members failed in ``tp_new``." msgstr "" -#: extending/newtypes_tutorial.rst:670 +#: extending/newtypes_tutorial.rst:672 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 "" -#: extending/newtypes_tutorial.rst:676 +#: extending/newtypes_tutorial.rst:678 msgid "Supporting cyclic garbage collection" msgstr "" -#: extending/newtypes_tutorial.rst:678 +#: extending/newtypes_tutorial.rst:680 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 "" -#: extending/newtypes_tutorial.rst:682 +#: extending/newtypes_tutorial.rst:684 msgid "" ">>> l = []\n" ">>> l.append(l)\n" ">>> del l" msgstr "" -#: extending/newtypes_tutorial.rst:688 +#: extending/newtypes_tutorial.rst:690 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 " @@ -1406,7 +1436,7 @@ msgid "" "out that the list is garbage and free it." msgstr "" -#: extending/newtypes_tutorial.rst:693 +#: extending/newtypes_tutorial.rst:695 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 " @@ -1415,7 +1445,7 @@ msgid "" "those two reasons, :class:`!Custom` objects can participate in cycles:" msgstr "" -#: extending/newtypes_tutorial.rst:699 +#: extending/newtypes_tutorial.rst:701 msgid "" ">>> import custom3\n" ">>> class Derived(custom3.Custom): pass\n" @@ -1424,7 +1454,7 @@ msgid "" ">>> n.some_attribute = n" msgstr "" -#: extending/newtypes_tutorial.rst:707 +#: extending/newtypes_tutorial.rst:709 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` " @@ -1432,7 +1462,7 @@ msgid "" "these slots:" msgstr "" -#: extending/newtypes_tutorial.rst:711 +#: extending/newtypes_tutorial.rst:713 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include \n" @@ -1609,41 +1639,50 @@ msgid "" " .tp_getset = Custom_getsetters,\n" "};\n" "\n" -"static PyModuleDef custommodule = {\n" +"static int\n" +"custom_module_exec(PyObject *m)\n" +"{\n" +" if (PyType_Ready(&CustomType) < 0) {\n" +" return -1;\n" +" }\n" +"\n" +" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " +"{\n" +" return -1;\n" +" }\n" +"\n" +" return 0;\n" +"}\n" +"\n" +"static PyModuleDef_Slot custom_module_slots[] = {\n" +" {Py_mod_exec, custom_module_exec},\n" +" {Py_mod_multiple_interpreters, " +"Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},\n" +" {0, NULL}\n" +"};\n" +"\n" +"static PyModuleDef custom_module = {\n" " .m_base = PyModuleDef_HEAD_INIT,\n" " .m_name = \"custom4\",\n" " .m_doc = \"Example module that creates an extension type.\",\n" -" .m_size = -1,\n" +" .m_size = 0,\n" +" .m_slots = custom_module_slots,\n" "};\n" "\n" "PyMODINIT_FUNC\n" "PyInit_custom4(void)\n" "{\n" -" PyObject *m;\n" -" if (PyType_Ready(&CustomType) < 0)\n" -" return NULL;\n" -"\n" -" m = PyModule_Create(&custommodule);\n" -" if (m == NULL)\n" -" return NULL;\n" -"\n" -" if (PyModule_AddObjectRef(m, \"Custom\", (PyObject *) &CustomType) < 0) " -"{\n" -" Py_DECREF(m);\n" -" return NULL;\n" -" }\n" -"\n" -" return m;\n" +" return PyModuleDef_Init(&custom_module);\n" "}\n" msgstr "" -#: extending/newtypes_tutorial.rst:714 +#: extending/newtypes_tutorial.rst:716 msgid "" "First, the traversal method lets the cyclic GC know about subobjects that " "could participate in cycles::" msgstr "" -#: extending/newtypes_tutorial.rst:717 +#: extending/newtypes_tutorial.rst:719 msgid "" "static int\n" "Custom_traverse(PyObject *op, visitproc visit, void *arg)\n" @@ -1664,7 +1703,7 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:735 +#: extending/newtypes_tutorial.rst:737 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:" @@ -1673,14 +1712,14 @@ msgid "" "be returned if it is non-zero." msgstr "" -#: extending/newtypes_tutorial.rst:741 +#: extending/newtypes_tutorial.rst:743 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 "" -#: extending/newtypes_tutorial.rst:745 +#: extending/newtypes_tutorial.rst:747 msgid "" "static int\n" "Custom_traverse(PyObject *op, visitproc visit, void *arg)\n" @@ -1692,19 +1731,19 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:755 +#: extending/newtypes_tutorial.rst:757 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 "" -#: extending/newtypes_tutorial.rst:758 +#: extending/newtypes_tutorial.rst:760 msgid "" "Second, we need to provide a method for clearing any subobjects that can " "participate in cycles::" msgstr "" -#: extending/newtypes_tutorial.rst:761 +#: extending/newtypes_tutorial.rst:763 msgid "" "static int\n" "Custom_clear(PyObject *op)\n" @@ -1716,7 +1755,7 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:770 +#: extending/newtypes_tutorial.rst:772 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 " @@ -1726,11 +1765,11 @@ msgid "" "again (*especially* if there is a reference cycle)." msgstr "" -#: extending/newtypes_tutorial.rst:778 +#: extending/newtypes_tutorial.rst:780 msgid "You could emulate :c:func:`Py_CLEAR` by writing::" msgstr "" -#: extending/newtypes_tutorial.rst:780 +#: extending/newtypes_tutorial.rst:782 msgid "" "PyObject *tmp;\n" "tmp = self->first;\n" @@ -1738,14 +1777,14 @@ msgid "" "Py_XDECREF(tmp);" msgstr "" -#: extending/newtypes_tutorial.rst:785 +#: extending/newtypes_tutorial.rst:787 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 "" -#: extending/newtypes_tutorial.rst:789 +#: extending/newtypes_tutorial.rst:791 msgid "" "The deallocator ``Custom_dealloc`` may call arbitrary code when clearing " "attributes. It means the circular GC can be triggered inside the function. " @@ -1755,7 +1794,7 @@ msgid "" "`PyObject_GC_UnTrack` and ``Custom_clear``::" msgstr "" -#: extending/newtypes_tutorial.rst:796 +#: extending/newtypes_tutorial.rst:798 msgid "" "static void\n" "Custom_dealloc(PyObject *op)\n" @@ -1766,17 +1805,17 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:804 +#: extending/newtypes_tutorial.rst:806 msgid "" "Finally, we add the :c:macro:`Py_TPFLAGS_HAVE_GC` flag to the class flags::" msgstr "" -#: extending/newtypes_tutorial.rst:806 +#: extending/newtypes_tutorial.rst:808 msgid "" ".tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC," msgstr "" -#: extending/newtypes_tutorial.rst:808 +#: extending/newtypes_tutorial.rst:810 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 " @@ -1784,11 +1823,11 @@ msgid "" "automatically provided." msgstr "" -#: extending/newtypes_tutorial.rst:814 +#: extending/newtypes_tutorial.rst:816 msgid "Subclassing other types" msgstr "" -#: extending/newtypes_tutorial.rst:816 +#: extending/newtypes_tutorial.rst:818 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 " @@ -1796,7 +1835,7 @@ msgid "" "share these :c:type:`PyTypeObject` structures between extension modules." msgstr "" -#: extending/newtypes_tutorial.rst:821 +#: extending/newtypes_tutorial.rst:823 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 " @@ -1804,7 +1843,7 @@ msgid "" "that increases an internal counter:" msgstr "" -#: extending/newtypes_tutorial.rst:826 +#: extending/newtypes_tutorial.rst:828 msgid "" ">>> import sublist\n" ">>> s = sublist.SubList(range(3))\n" @@ -1817,7 +1856,7 @@ msgid "" "2" msgstr "" -#: extending/newtypes_tutorial.rst:838 +#: extending/newtypes_tutorial.rst:840 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include \n" @@ -1852,7 +1891,7 @@ msgid "" "}\n" "\n" "static PyTypeObject SubListType = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .ob_base = PyVarObject_HEAD_INIT(NULL, 0)\n" " .tp_name = \"sublist.SubList\",\n" " .tp_doc = PyDoc_STR(\"SubList objects\"),\n" " .tp_basicsize = sizeof(SubListObject),\n" @@ -1862,43 +1901,52 @@ msgid "" " .tp_methods = SubList_methods,\n" "};\n" "\n" -"static PyModuleDef sublistmodule = {\n" -" PyModuleDef_HEAD_INIT,\n" -" .m_name = \"sublist\",\n" -" .m_doc = \"Example module that creates an extension type.\",\n" -" .m_size = -1,\n" -"};\n" -"\n" -"PyMODINIT_FUNC\n" -"PyInit_sublist(void)\n" +"static int\n" +"sublist_module_exec(PyObject *m)\n" "{\n" -" PyObject *m;\n" " SubListType.tp_base = &PyList_Type;\n" -" if (PyType_Ready(&SubListType) < 0)\n" -" return NULL;\n" -"\n" -" m = PyModule_Create(&sublistmodule);\n" -" if (m == NULL)\n" -" return NULL;\n" +" if (PyType_Ready(&SubListType) < 0) {\n" +" return -1;\n" +" }\n" "\n" " if (PyModule_AddObjectRef(m, \"SubList\", (PyObject *) &SubListType) < " "0) {\n" -" Py_DECREF(m);\n" -" return NULL;\n" +" return -1;\n" " }\n" "\n" -" return m;\n" +" return 0;\n" +"}\n" +"\n" +"static PyModuleDef_Slot sublist_module_slots[] = {\n" +" {Py_mod_exec, sublist_module_exec},\n" +" {Py_mod_multiple_interpreters, " +"Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},\n" +" {0, NULL}\n" +"};\n" +"\n" +"static PyModuleDef sublist_module = {\n" +" .m_base = PyModuleDef_HEAD_INIT,\n" +" .m_name = \"sublist\",\n" +" .m_doc = \"Example module that creates an extension type.\",\n" +" .m_size = 0,\n" +" .m_slots = sublist_module_slots,\n" +"};\n" +"\n" +"PyMODINIT_FUNC\n" +"PyInit_sublist(void)\n" +"{\n" +" return PyModuleDef_Init(&sublist_module);\n" "}\n" msgstr "" -#: extending/newtypes_tutorial.rst:841 +#: extending/newtypes_tutorial.rst:843 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 "" -#: extending/newtypes_tutorial.rst:844 +#: extending/newtypes_tutorial.rst:846 msgid "" "typedef struct {\n" " PyListObject list;\n" @@ -1906,21 +1954,21 @@ msgid "" "} SubListObject;" msgstr "" -#: extending/newtypes_tutorial.rst:849 +#: extending/newtypes_tutorial.rst:851 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 "" -#: extending/newtypes_tutorial.rst:853 +#: extending/newtypes_tutorial.rst:855 msgid "" "When a Python object is a :class:`!SubList` instance, its ``PyObject *`` " "pointer can be safely cast to both ``PyListObject *`` and ``SubListObject " "*``::" msgstr "" -#: extending/newtypes_tutorial.rst:856 +#: extending/newtypes_tutorial.rst:858 msgid "" "static int\n" "SubList_init(PyObject *op, PyObject *args, PyObject *kwds)\n" @@ -1933,13 +1981,13 @@ msgid "" "}" msgstr "" -#: extending/newtypes_tutorial.rst:866 +#: extending/newtypes_tutorial.rst:868 msgid "" "We see above how to call through to the :meth:`~object.__init__` method of " "the base type." msgstr "" -#: extending/newtypes_tutorial.rst:869 +#: extending/newtypes_tutorial.rst:871 msgid "" "This pattern is important when writing a type with custom :c:member:" "`~PyTypeObject.tp_new` and :c:member:`~PyTypeObject.tp_dealloc` members. " @@ -1948,40 +1996,34 @@ msgid "" "the base class handle it by calling its own :c:member:`~PyTypeObject.tp_new`." msgstr "" -#: extending/newtypes_tutorial.rst:875 +#: extending/newtypes_tutorial.rst:877 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::" +"type:`PyList_Type`; it should be done in the :c:data:`Py_mod_exec` function::" msgstr "" -#: extending/newtypes_tutorial.rst:881 +#: extending/newtypes_tutorial.rst:883 msgid "" -"PyMODINIT_FUNC\n" -"PyInit_sublist(void)\n" +"static int\n" +"sublist_module_exec(PyObject *m)\n" "{\n" -" PyObject* m;\n" " SubListType.tp_base = &PyList_Type;\n" -" if (PyType_Ready(&SubListType) < 0)\n" -" return NULL;\n" -"\n" -" m = PyModule_Create(&sublistmodule);\n" -" if (m == NULL)\n" -" return NULL;\n" +" if (PyType_Ready(&SubListType) < 0) {\n" +" return -1;\n" +" }\n" "\n" " if (PyModule_AddObjectRef(m, \"SubList\", (PyObject *) &SubListType) < " "0) {\n" -" Py_DECREF(m);\n" -" return NULL;\n" +" return -1;\n" " }\n" "\n" -" return m;\n" +" return 0;\n" "}" msgstr "" -#: extending/newtypes_tutorial.rst:901 +#: extending/newtypes_tutorial.rst:898 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 " @@ -1990,29 +2032,29 @@ msgid "" "from the base type will be inherited." msgstr "" -#: extending/newtypes_tutorial.rst:907 +#: extending/newtypes_tutorial.rst:904 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 "" -#: extending/newtypes_tutorial.rst:912 +#: extending/newtypes_tutorial.rst:909 msgid "Footnotes" msgstr "" -#: extending/newtypes_tutorial.rst:913 +#: extending/newtypes_tutorial.rst:910 msgid "" "This is true when we know that the object is a basic type, like a string or " "a float." msgstr "" -#: extending/newtypes_tutorial.rst:916 +#: extending/newtypes_tutorial.rst:913 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 "" -#: extending/newtypes_tutorial.rst:919 +#: extending/newtypes_tutorial.rst:916 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 " @@ -2022,7 +2064,7 @@ msgid "" "objects." msgstr "" -#: extending/newtypes_tutorial.rst:925 +#: extending/newtypes_tutorial.rst:922 msgid "" "Also, even with our attributes restricted to strings instances, the user " "could pass arbitrary :class:`str` subclasses and therefore still create " diff --git a/extending/windows.po b/extending/windows.po index e89ac85c..57c7578c 100644 --- a/extending/windows.po +++ b/extending/windows.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -165,8 +165,8 @@ msgid "" "By default, inclusion of :file:`PC/pyconfig.h` directly or via :file:`Python." "h` triggers an implicit, configure-aware link with the library. The header " "file chooses :file:`pythonXY_d.lib` for Debug, :file:`pythonXY.lib` for " -"Release, and :file:`pythonX.lib` for Release with the `Limited API `_ enabled." +"Release, and :file:`pythonX.lib` for Release with the :ref:`Limited API " +"` enabled." msgstr "" #: extending/windows.rst:144 diff --git a/faq/design.po b/faq/design.po index 9dde9975..c89bacaf 100644 --- a/faq/design.po +++ b/faq/design.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/faq/extending.po b/faq/extending.po index 54c42886..e8cc6a55 100644 --- a/faq/extending.po +++ b/faq/extending.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-10-31 12:22+0200\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" @@ -70,49 +70,16 @@ msgstr "Το να γράψει C κάποιος είναι δύσκολο· υπ #: faq/extending.rst:39 msgid "" "There are a number of alternatives to writing your own C extensions, " -"depending on what you're trying to do." -msgstr "" -"Υπάρχουν διάφορες εναλλακτικές λύσεις για να γράψετε τις δικές σας " -"επεκτάσεις C, ανάλογα με το τι προσπαθείτε να κάνετε." - -#: faq/extending.rst:44 -msgid "" -"`Cython `_ and its relative `Pyrex `_ are compilers that accept a " -"slightly modified form of Python and generate the corresponding C code. " -"Cython and Pyrex make it possible to write an extension without having to " -"learn Python's C API." -msgstr "" -"Το `Cython `_ και το σχετικό του `Pyrex `_ είναι μεταγλωττιστές που " -"δέχονται ελαφρώς τροποποιημένη μορφή της Python και δημιουργούν τον " -"αντίστοιχο C κώδικα. Το Cython και το Pyrex καθιστούν δυνατή τη σύνταξη " -"μιας επέκτασης χωρίς να χρειάζεται να μάθετε το C API της Python." - -#: faq/extending.rst:50 -msgid "" -"If you need to interface to some C or C++ library for which no Python " -"extension currently exists, you can try wrapping the library's data types " -"and functions with a tool such as `SWIG `_. `SIP " -"`__, `CXX `_ `Boost `_, or `Weave " -"`_ are also alternatives for wrapping C++ " -"libraries." -msgstr "" -"Εάν χρειάζεται να συνδεθείτε με κάποια βιβλιοθήκη C ή C++ για την οποία δεν " -"υπάρχει αυτήν τη στιγμή επέκταση Python, μπορείτε να δοκιμάσετε να " -"αναδιπλώσετε τους τύπους δεδομένων και τις συναρτήσεις της βιβλιοθήκης με " -"ένα εργαλείο όπως `SWIG `_. `SIP `__, `CXX `_ `Boost `_, ή `Weave `_ είναι επίσης εναλλακτικές λύσεις για την αναδίπλωση " -"βιβλιοθηκών C++." - -#: faq/extending.rst:61 +"depending on what you're trying to do. :ref:`Recommended third party tools " +"` offer both simpler and more sophisticated approaches to " +"creating C and C++ extensions for Python." +msgstr "" + +#: faq/extending.rst:46 msgid "How can I execute arbitrary Python statements from C?" msgstr "Πως μπορώ να εκτελέσω αυθαίρετες δηλώσεις Python από το C;" -#: faq/extending.rst:63 +#: faq/extending.rst:48 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 " @@ -128,11 +95,11 @@ msgstr "" "θέλετε περισσότερο έλεγχο, χρησιμοποιήστε :c:func:`PyRun_String`· δείτε τον " "πηγαίο κώδικα :c:func:`PyRun_SimpleString` στο``Python/pythonrun.c``." -#: faq/extending.rst:72 +#: faq/extending.rst:57 msgid "How can I evaluate an arbitrary Python expression from C?" msgstr "Πώς μπορώ να αξιολογήσω μια αυθαίρετη έκφραση Python από τη C;" -#: faq/extending.rst:74 +#: faq/extending.rst:59 msgid "" "Call the function :c:func:`PyRun_String` from the previous question with the " "start symbol :c:data:`Py_eval_input`; it parses an expression, evaluates it " @@ -142,11 +109,11 @@ msgstr "" "το σύμβολο έναρξης :c:data:`Py_eval_input`· αναλύει μια παράσταση, την " "αξιολογεί και επιστρέφει την τιμή της." -#: faq/extending.rst:80 +#: faq/extending.rst:65 msgid "How do I extract C values from a Python object?" msgstr "Πως μπορώ να εξάγω τιμές C από ένα αντικείμενο Python;" -#: faq/extending.rst:82 +#: faq/extending.rst:67 msgid "" "That depends on the object's type. If it's a tuple, :c:func:`PyTuple_Size` " "returns its length and :c:func:`PyTuple_GetItem` returns the item at a " @@ -159,7 +126,7 @@ msgstr "" "λίστες έχουν παρόμοιες συναρτήσεις, :c:func:`PyList_Size` και :c:func:" "`PyList_GetItem`." -#: faq/extending.rst:87 +#: faq/extending.rst:72 msgid "" "For bytes, :c:func:`PyBytes_Size` returns its length and :c:func:" "`PyBytes_AsStringAndSize` provides a pointer to its value and its length. " @@ -171,7 +138,7 @@ msgstr "" "Λάβετε υπόψη ότι τα αντικείμενα byte της Python μπορεί να περιέχουν null " "byte, επομένως η :c:func:`!strlen` της C δεν πρέπει να χρησιμοποιείται." -#: faq/extending.rst:92 +#: faq/extending.rst:77 msgid "" "To test the type of an object, first make sure it isn't ``NULL``, and then " "use :c:func:`PyBytes_Check`, :c:func:`PyTuple_Check`, :c:func:" @@ -181,7 +148,7 @@ msgstr "" "``NULL``, και μετά χρησιμοποιήστε τα :c:func:`PyBytes_Check`, :c:func:" "`PyTuple_Check`, :c:func:`PyList_Check`, κλπ." -#: faq/extending.rst:95 +#: faq/extending.rst:80 msgid "" "There is also a high-level API to Python objects which is provided by the so-" "called 'abstract' interface -- read ``Include/abstract.h`` for further " @@ -198,21 +165,21 @@ msgstr "" "χρήσιμα πρωτόκολλα όπως αριθμοί (:c:func:`PyNumber_Index` et al.) και " "αντιστοιχίσεις στον PyMapping APIs." -#: faq/extending.rst:104 +#: faq/extending.rst:89 msgid "How do I use Py_BuildValue() to create a tuple of arbitrary length?" msgstr "" "Πώς μπορώ να χρησιμοποιήσω την Py_BuildValue() για να δημιουργήσω μια " "πλειάδα (tuple) αυθαίρετου μήκους;" -#: faq/extending.rst:106 +#: faq/extending.rst:91 msgid "You can't. Use :c:func:`PyTuple_Pack` instead." msgstr "Δεν μπορείς. Χρησιμοποιήστε το :c:func:`PyTuple_Pack`." -#: faq/extending.rst:110 +#: faq/extending.rst:95 msgid "How do I call an object's method from C?" msgstr "Πώς καλώ τη μέθοδο ενός αντικειμένου από τη C;" -#: faq/extending.rst:112 +#: faq/extending.rst:97 msgid "" "The :c:func:`PyObject_CallMethod` function can be used to call an arbitrary " "method of an object. The parameters are the object, the name of the method " @@ -225,7 +192,7 @@ msgstr "" "αυτή που χρησιμοποιείται με τη :c:func:`Py_BuildValue`, και τις τιμές " "ορίσματος::" -#: faq/extending.rst:117 +#: faq/extending.rst:102 msgid "" "PyObject *\n" "PyObject_CallMethod(PyObject *object, const char *method_name,\n" @@ -235,7 +202,7 @@ msgstr "" "PyObject_CallMethod(PyObject *object, const char *method_name,\n" " const char *arg_format, ...);" -#: faq/extending.rst:121 +#: faq/extending.rst:106 msgid "" "This works for any object that has methods -- whether built-in or user-" "defined. You are responsible for eventually :c:func:`Py_DECREF`\\ 'ing the " @@ -245,7 +212,7 @@ msgstr "" "ενσωματωμένες είτε καθορίζονται από το χρήστη. Είστε υπεύθυνοι εάν τελικά " "χρησιμοποιήσετε :c:func:`Py_DECREF` στην τιμή επιστροφής." -#: faq/extending.rst:124 +#: faq/extending.rst:109 msgid "" "To call, e.g., a file object's \"seek\" method with arguments 10, 0 " "(assuming the file object pointer is \"f\")::" @@ -254,7 +221,7 @@ msgstr "" "ορίσματα 10, 0 (υποθέτοντας ότι ο δείκτης του αντικειμένου αρχείου είναι " "\"f\")::" -#: faq/extending.rst:127 +#: faq/extending.rst:112 msgid "" "res = PyObject_CallMethod(f, \"seek\", \"(ii)\", 10, 0);\n" "if (res == NULL) {\n" @@ -272,7 +239,7 @@ msgstr "" " Py_DECREF(res);\n" "}" -#: faq/extending.rst:135 +#: faq/extending.rst:120 msgid "" "Note that since :c:func:`PyObject_CallObject` *always* wants a tuple for the " "argument list, to call a function without arguments, pass \"()\" for the " @@ -284,7 +251,7 @@ msgstr "" "ορίσματα, να περάσει \"()\" για τη μορφή και να καλέσει μια συνάρτηση με ένα " "όρισμα, περιβάλλουν το όρισμα σε παρένθεση, π.χ. \"(i)\"." -#: faq/extending.rst:142 +#: faq/extending.rst:127 msgid "" "How do I catch the output from PyErr_Print() (or anything that prints to " "stdout/stderr)?" @@ -292,7 +259,7 @@ msgstr "" "Πώς μπορώ να κάνω catch την έξοδο από την PyErr_Print() (ή οτιδήποτε " "εκτυπώνεται σε stdout/stderr);" -#: faq/extending.rst:144 +#: faq/extending.rst:129 msgid "" "In Python code, define an object that supports the ``write()`` method. " "Assign this object to :data:`sys.stdout` and :data:`sys.stderr`. Call " @@ -305,13 +272,13 @@ msgstr "" "μηχανισμό ανίχνευσης να λειτουργήσει. Στη συνέχεια, η έξοδος θα πάει " "οπουδήποτε την στείλει η μέθοδος ``write()``." -#: faq/extending.rst:149 +#: faq/extending.rst:134 msgid "The easiest way to do this is to use the :class:`io.StringIO` class:" msgstr "" "Ο ευκολότερος τρόπος για να το κάνετε αυτό είναι να χρησιμοποιήσετε την " "κλάση :class:`io.StringIO`:" -#: faq/extending.rst:151 +#: faq/extending.rst:136 msgid "" ">>> import io, sys\n" ">>> sys.stdout = io.StringIO()\n" @@ -329,11 +296,11 @@ msgstr "" "foo\n" "hello world!" -#: faq/extending.rst:161 +#: faq/extending.rst:146 msgid "A custom object to do the same would look like this:" msgstr "Ένα προσαρμοσμένο αντικείμενο για να κάνει το ίδιο θα μοιάζει με αυτό:" -#: faq/extending.rst:163 +#: faq/extending.rst:148 msgid "" ">>> import io, sys\n" ">>> class StdoutCatcher(io.TextIOBase):\n" @@ -365,20 +332,20 @@ msgstr "" "foo\n" "hello world!" -#: faq/extending.rst:182 +#: faq/extending.rst:167 msgid "How do I access a module written in Python from C?" msgstr "" "Πως μπορώ να αποκτήσω πρόσβαση σε ένα module γραμμένο σε Python από τη C;" -#: faq/extending.rst:184 +#: faq/extending.rst:169 msgid "You can get a pointer to the module object as follows::" msgstr "Μπορείτε να λάβετε έναν δείκτη στο αντικείμενο του module ως εξής::" -#: faq/extending.rst:186 +#: faq/extending.rst:171 msgid "module = PyImport_ImportModule(\"\");" msgstr "module = PyImport_ImportModule(\"\");" -#: faq/extending.rst:188 +#: faq/extending.rst:173 msgid "" "If the module hasn't been imported yet (i.e. it is not yet present in :data:" "`sys.modules`), this initializes the module; otherwise it simply returns the " @@ -392,7 +359,7 @@ msgstr "" "module σε κανένα namespace -- διασφαλίζει μόνο ότι έχει αρχικοποιηθεί και " "ότι είναι αποθηκευμένη στο :data:`sys.modules`." -#: faq/extending.rst:194 +#: faq/extending.rst:179 msgid "" "You can then access the module's attributes (i.e. any name defined in the " "module) as follows::" @@ -400,11 +367,11 @@ msgstr "" "Μπορείτε στη συνέχεια να αποκτήσετε πρόσβαση στα χαρακτηριστικά του module " "(δηλαδή οποιοδήποτε όνομα ορίζεται στο module) ως εξής::" -#: faq/extending.rst:197 +#: faq/extending.rst:182 msgid "attr = PyObject_GetAttrString(module, \"\");" msgstr "attr = PyObject_GetAttrString(module, \"\");" -#: faq/extending.rst:199 +#: faq/extending.rst:184 msgid "" "Calling :c:func:`PyObject_SetAttrString` to assign to variables in the " "module also works." @@ -412,11 +379,11 @@ msgstr "" "Η κλήση :c:func:`PyObject_SetAttrString` για αντιστοίχιση σε μεταβλητές στο " "module λειτουργεί επίσης." -#: faq/extending.rst:204 +#: faq/extending.rst:189 msgid "How do I interface to C++ objects from Python?" msgstr "Πως διασυνδέομαι με αντικείμενα C++ από την Python;" -#: faq/extending.rst:206 +#: faq/extending.rst:191 msgid "" "Depending on your requirements, there are many approaches. To do this " "manually, begin by reading :ref:`the \"Extending and Embedding\" document " @@ -432,17 +399,17 @@ msgstr "" "-- επομένως η στρατηγική της δημιουργίας ενός νέου τύπου Python γύρω από " "έναν τύπο δομής C (δείκτη) θα λειτουργήσει επίσης για αντικείμενα C++." -#: faq/extending.rst:212 +#: faq/extending.rst:197 msgid "For C++ libraries, see :ref:`c-wrapper-software`." msgstr "Για βιβλιοθήκες C++, δείτε :ref:`c-wrapper-software`." -#: faq/extending.rst:216 +#: faq/extending.rst:201 msgid "I added a module using the Setup file and the make fails; why?" msgstr "" "Πρόσθεσα ένα module χρησιμοποιώντας το αρχείο Setup και το make αποτυγχάνει· " "γιατί;" -#: faq/extending.rst:218 +#: faq/extending.rst:203 msgid "" "Setup must end in a newline, if there is no newline there, the build process " "fails. (Fixing this requires some ugly shell script hackery, and this bug " @@ -453,11 +420,11 @@ msgstr "" "κακόβουλο script shell, και αυτό το σφάλμα είναι τόσο μικρό που δεν φαίνεται " "να αξίζει τον κόπο.)" -#: faq/extending.rst:224 +#: faq/extending.rst:209 msgid "How do I debug an extension?" msgstr "Πως κάνω debug μια επέκταση;" -#: faq/extending.rst:226 +#: faq/extending.rst:211 msgid "" "When using GDB with dynamically loaded extensions, you can't set a " "breakpoint in your extension until your extension is loaded." @@ -466,19 +433,19 @@ msgstr "" "να ορίσετε σημείο διακοπής στην επέκταση σας μέχρι να φορτωθεί η επέκτασής " "σας." -#: faq/extending.rst:229 +#: faq/extending.rst:214 msgid "In your ``.gdbinit`` file (or interactively), add the command:" msgstr "Στο αρχείο σας ``.gdbinit`` (ή διαδραστικά), προσθέστε την εντολή:" -#: faq/extending.rst:231 +#: faq/extending.rst:216 msgid "br _PyImport_LoadDynamicModule" msgstr "br _PyImport_LoadDynamicModule" -#: faq/extending.rst:235 +#: faq/extending.rst:220 msgid "Then, when you run GDB:" msgstr "Στη συνέχεια, όταν εκτελείτε το GDB:" -#: faq/extending.rst:237 +#: faq/extending.rst:222 msgid "" "$ gdb /local/bin/python\n" "gdb) run myscript.py\n" @@ -494,7 +461,7 @@ msgstr "" "gdb) br myfunction.c:50\n" "gdb) continue" -#: faq/extending.rst:247 +#: faq/extending.rst:232 msgid "" "I want to compile a Python module on my Linux system, but some files are " "missing. Why?" @@ -502,7 +469,7 @@ msgstr "" "Θέλω να κάνω compile ένα Python module στο σύστημα Linux μου, αλλά λείπουν " "ορισμένα αρχεία. Γιατί;" -#: faq/extending.rst:249 +#: faq/extending.rst:234 msgid "" "Most packaged versions of Python omit some files required for compiling " "Python extensions." @@ -510,22 +477,22 @@ msgstr "" "Οι περισσότερες συσκευασμένες εκδόσεις της Python παραλείπουν ορισμένα " "αρχεία που απαιτούνται για τη μεταγλώττιση των επεκτάσεων Python." -#: faq/extending.rst:252 +#: faq/extending.rst:237 msgid "For Red Hat, install the python3-devel RPM to get the necessary files." msgstr "" "Για το Red Hat, εγκαταστήστε το RPM της python3-devel για να λάβετε τα " "απαραίτητα αρχεία." -#: faq/extending.rst:254 +#: faq/extending.rst:239 msgid "For Debian, run ``apt-get install python3-dev``." msgstr "Για το Debian, εκτελέστε το ``apt-get install python3-dev``." -#: faq/extending.rst:257 +#: faq/extending.rst:242 msgid "How do I tell \"incomplete input\" from \"invalid input\"?" msgstr "" "Πώς μπορώ να ξεχωρίσω την \"ελλιπή εισαγωγή\" από την \"έγκυρη εισαγωγή\";" -#: faq/extending.rst:259 +#: faq/extending.rst:244 msgid "" "Sometimes you want to emulate the Python interactive interpreter's behavior, " "where it gives you a continuation prompt when the input is incomplete (e.g. " @@ -539,7 +506,7 @@ msgstr "" "παρενθέσεις ή τα τριπλά εισαγωγικά συμβολοσειρών), αλλά σας δίνει ένα μήνυμα " "συντακτικού σφάλματος αμέσως όταν η εισαγωγή δεν είναι έγκυρη." -#: faq/extending.rst:265 +#: faq/extending.rst:250 msgid "" "In Python you can use the :mod:`codeop` module, which approximates the " "parser's behavior sufficiently. IDLE uses this, for example." @@ -548,7 +515,7 @@ msgstr "" "προσεγγίζει επαρκώς τη συμπεριφορά του parser. Το IDLE χρησιμοποιεί αυτό, " "για παράδειγμα." -#: faq/extending.rst:268 +#: faq/extending.rst:253 msgid "" "The easiest way to do it in C is to call :c:func:`PyRun_InteractiveLoop` " "(perhaps in a separate thread) and let the Python interpreter handle the " @@ -563,12 +530,12 @@ msgstr "" "προσαρμοσμένη συνάρτηση εισαγωγής. Δείτε τα ``Modules/readline.c`` και " "``Parser/myreadline.c`` για περισσότερες συμβουλές." -#: faq/extending.rst:275 +#: faq/extending.rst:260 msgid "How do I find undefined g++ symbols __builtin_new or __pure_virtual?" msgstr "" "Πώς μπορώ να βρω απροσδιόριστα σύμβολα g++ __builtin_new ή __pure_virtual;" -#: faq/extending.rst:277 +#: faq/extending.rst:262 msgid "" "To dynamically load g++ extension modules, you must recompile Python, relink " "it using g++ (change LINKCC in the Python Modules Makefile), and link your " @@ -579,7 +546,7 @@ msgstr "" "Python Modules Makefile), και να συνδέσετε το module επέκτασης σας " "χρησιμοποιώντας g++ (π.χ. ``g++ -shared -o mymodule.so mymodule.o``)." -#: faq/extending.rst:283 +#: faq/extending.rst:268 msgid "" "Can I create an object class with some methods implemented in C and others " "in Python (e.g. through inheritance)?" @@ -587,7 +554,7 @@ msgstr "" "Μπορώ να δημιουργήσω μια κλάση αντικειμένου με ορισμένες μεθόδους που " "υλοποιούνται στη C και άλλες στη Python (π.χ. μέσω κληρονομικότητας);" -#: faq/extending.rst:285 +#: faq/extending.rst:270 msgid "" "Yes, you can inherit from built-in classes such as :class:`int`, :class:" "`list`, :class:`dict`, etc." @@ -595,7 +562,7 @@ msgstr "" "Ναι, μπορείτε να κληρονομήσετε από ενσωματωμένες (built-in) κλάσεις όπως :" "class:`int`, :class:`list`, :class:`dict`, κ.λπ." -#: faq/extending.rst:288 +#: faq/extending.rst:273 msgid "" "The Boost Python Library (BPL, https://www.boost.org/libs/python/doc/index." "html) provides a way of doing this from C++ (i.e. you can inherit from an " @@ -605,3 +572,41 @@ msgstr "" "doc/index.html) παρέχει ένα τρόπο για να γίνει αυτό από την C++ (δηλαδή " "μπορείτε να κληρονομήσετε από μια κλάση επέκτασης γραμμένη σε C++ " "χρησιμοποιώντας το BPL)." + +#~ msgid "" +#~ "There are a number of alternatives to writing your own C extensions, " +#~ "depending on what you're trying to do." +#~ msgstr "" +#~ "Υπάρχουν διάφορες εναλλακτικές λύσεις για να γράψετε τις δικές σας " +#~ "επεκτάσεις C, ανάλογα με το τι προσπαθείτε να κάνετε." + +#~ msgid "" +#~ "`Cython `_ and its relative `Pyrex `_ are compilers that accept a " +#~ "slightly modified form of Python and generate the corresponding C code. " +#~ "Cython and Pyrex make it possible to write an extension without having to " +#~ "learn Python's C API." +#~ msgstr "" +#~ "Το `Cython `_ και το σχετικό του `Pyrex `_ είναι μεταγλωττιστές " +#~ "που δέχονται ελαφρώς τροποποιημένη μορφή της Python και δημιουργούν τον " +#~ "αντίστοιχο C κώδικα. Το Cython και το Pyrex καθιστούν δυνατή τη σύνταξη " +#~ "μιας επέκτασης χωρίς να χρειάζεται να μάθετε το C API της Python." + +#~ msgid "" +#~ "If you need to interface to some C or C++ library for which no Python " +#~ "extension currently exists, you can try wrapping the library's data types " +#~ "and functions with a tool such as `SWIG `_. `SIP " +#~ "`__, `CXX `_ `Boost `_, or " +#~ "`Weave `_ are also alternatives for " +#~ "wrapping C++ libraries." +#~ msgstr "" +#~ "Εάν χρειάζεται να συνδεθείτε με κάποια βιβλιοθήκη C ή C++ για την οποία " +#~ "δεν υπάρχει αυτήν τη στιγμή επέκταση Python, μπορείτε να δοκιμάσετε να " +#~ "αναδιπλώσετε τους τύπους δεδομένων και τις συναρτήσεις της βιβλιοθήκης με " +#~ "ένα εργαλείο όπως `SWIG `_. `SIP `__, `CXX `_ `Boost " +#~ "`_, ή `Weave `_ είναι επίσης εναλλακτικές λύσεις για την " +#~ "αναδίπλωση βιβλιοθηκών C++." diff --git a/faq/general.po b/faq/general.po index 81029c5d..45a66ac1 100644 --- a/faq/general.po +++ b/faq/general.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/faq/gui.po b/faq/gui.po index 4255d418..bb03c81a 100644 --- a/faq/gui.po +++ b/faq/gui.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/faq/index.po b/faq/index.po index 2f9744f6..dd5e3f07 100644 --- a/faq/index.po +++ b/faq/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-02 12:51+0000\n" "Last-Translator: Dimitrios Papadopoulos\n" "Language-Team: PyGreece \n" diff --git a/faq/installed.po b/faq/installed.po index c7601a84..223c7dc0 100644 --- a/faq/installed.po +++ b/faq/installed.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-06 12:51+0000\n" "Last-Translator: Dimitrios Papadopoulos\n" "Language-Team: PyGreece \n" diff --git a/faq/library.po b/faq/library.po index ac16f643..a8399444 100644 --- a/faq/library.po +++ b/faq/library.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/faq/programming.po b/faq/programming.po index a2380b7e..dc1748d7 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-05 22:13+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/faq/windows.po b/faq/windows.po index 8f979858..e3d889dd 100644 --- a/faq/windows.po +++ b/faq/windows.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-31 22:08+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/glossary.po b/glossary.po index f8431e06..7bdcfad2 100644 --- a/glossary.po +++ b/glossary.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-10 22:47+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" @@ -906,10 +906,23 @@ msgstr "" "τρέχον συμφραζόμενο όποτε η εργασία ξεκινά ή συνεχίζει την εκτέλεση." #: glossary.rst:357 +msgid "cyclic isolate" +msgstr "" + +#: glossary.rst:359 +msgid "" +"A subgroup of one or more objects that reference each other in a reference " +"cycle, but are not referenced by objects outside the group. The goal of " +"the :term:`cyclic garbage collector ` is to identify " +"these groups and break the reference cycles so that the memory can be " +"reclaimed." +msgstr "" + +#: glossary.rst:363 msgid "decorator" msgstr "decorator" -#: glossary.rst:359 +#: glossary.rst:365 msgid "" "A function returning another function, usually applied as a function " "transformation using the ``@wrapper`` syntax. Common examples for " @@ -920,7 +933,7 @@ msgstr "" "Συνηθισμένα παραδείγματα για τους decorators είναι :func:`classmethod` και :" "func:`staticmethod`." -#: glossary.rst:363 +#: glossary.rst:369 msgid "" "The decorator syntax is merely syntactic sugar, the following two function " "definitions are semantically equivalent::" @@ -928,7 +941,7 @@ msgstr "" "Η σύνταξη του decorator είναι απλώς καλλωπιστική, οι ακόλουθοι δύο ορισμοί " "συναρτήσεων είναι σημασιολογικά ισοδύναμοι::" -#: glossary.rst:366 +#: glossary.rst:372 msgid "" "def f(arg):\n" " ...\n" @@ -946,7 +959,7 @@ msgstr "" "def f(arg):\n" " ..." -#: glossary.rst:374 +#: glossary.rst:380 msgid "" "The same concept exists for classes, but is less commonly used there. See " "the documentation for :ref:`function definitions ` and :ref:`class " @@ -956,11 +969,11 @@ msgstr "" "εκεί. Βλ. την τεκμηρίωση για :ref:`function definitions ` και :ref:" "`class definitions ` για περισσότερα σχετικά με τους decorators." -#: glossary.rst:377 +#: glossary.rst:383 msgid "descriptor" msgstr "descriptor" -#: glossary.rst:379 +#: glossary.rst:385 msgid "" "Any object which defines the methods :meth:`~object.__get__`, :meth:`~object." "__set__`, or :meth:`~object.__delete__`. When a class attribute is a " @@ -983,7 +996,7 @@ msgstr "" "αποτελεί την βάση για πολλά χαρακτηριστικά όπως συναρτήσεις, μεθόδους, " "ιδιότητες, μέθοδοι κλάσης στατικές μέθοδοι, και αναφορά σε σούπερ κλάσεις." -#: glossary.rst:390 +#: glossary.rst:396 msgid "" "For more information about descriptors' methods, see :ref:`descriptors` or " "the :ref:`Descriptor How To Guide `." @@ -992,11 +1005,11 @@ msgstr "" "see :ref:`descriptors` ή το :ref:`Πρακτικός οδηγός για τη χρήση του " "Descriptor `." -#: glossary.rst:392 +#: glossary.rst:398 msgid "dictionary" msgstr "λεξικό" -#: glossary.rst:394 +#: glossary.rst:400 msgid "" "An associative array, where arbitrary keys are mapped to values. The keys " "can be any object with :meth:`~object.__hash__` and :meth:`~object.__eq__` " @@ -1006,11 +1019,11 @@ msgstr "" "τιμές. Τα κλειδιά μπορεί να είναι οποιοδήποτε αντικείμενο με μεθόδους :meth:" "`~object.__hash__` και :meth:`~object.__eq__`. Ονομάζεται ως hash στο Perl." -#: glossary.rst:398 +#: glossary.rst:404 msgid "dictionary comprehension" msgstr "κατανόηση λεξικού" -#: glossary.rst:400 +#: glossary.rst:406 msgid "" "A compact way to process all or part of the elements in an iterable and " "return a dictionary with the results. ``results = {n: n ** 2 for n in " @@ -1023,11 +1036,11 @@ msgstr "" "κλειδί ``n`` που αντιστοιχίζεται με την τιμή ``n ** 2``. Βλ. :ref:" "`comprehensions`." -#: glossary.rst:404 +#: glossary.rst:410 msgid "dictionary view" msgstr "όψη λεξικού" -#: glossary.rst:406 +#: glossary.rst:412 msgid "" "The objects returned from :meth:`dict.keys`, :meth:`dict.values`, and :meth:" "`dict.items` are called dictionary views. They provide a dynamic view on the " @@ -1042,11 +1055,11 @@ msgstr "" "όψη λεξικού να γίνει μια πλήρης λίστα χρησιμοποιήστε το ``list(dictview)``. " "Βλ. :ref:`dict-views`." -#: glossary.rst:412 +#: glossary.rst:418 msgid "docstring" msgstr "docstring" -#: glossary.rst:414 +#: glossary.rst:420 msgid "" "A string literal which appears as the first expression in a class, function " "or module. While ignored when the suite is executed, it is recognized by " @@ -1061,11 +1074,11 @@ msgstr "" "περικλείει. Δεδομένου ότι είναι διαθέσιμο μέσω ενδοσκόπησης, το κανονικό " "μέρος για την τεκμηρίωση του αντικειμένου." -#: glossary.rst:420 +#: glossary.rst:426 msgid "duck-typing" msgstr "duck-typing" -#: glossary.rst:422 +#: glossary.rst:428 msgid "" "A programming style which does not look at an object's type to determine if " "it has the right interface; instead, the method or attribute is simply " @@ -1088,11 +1101,11 @@ msgstr "" "με :term:`abstract base classes `.) Αντί αυτού, συνήθως " "χρησιμοποιεί δοκιμές :func:`hasattr` ή προγραμματισμό :term:`EAFP`." -#: glossary.rst:431 +#: glossary.rst:437 msgid "EAFP" msgstr "EAFP" -#: glossary.rst:433 +#: glossary.rst:439 msgid "" "Easier to ask for forgiveness than permission. This common Python coding " "style assumes the existence of valid keys or attributes and catches " @@ -1109,11 +1122,11 @@ msgstr "" "αντίθεση με το στυλ που είναι :term:`LBYL` κοινό σε πολλές άλλες γλώσσες, " "όπως η C." -#: glossary.rst:439 +#: glossary.rst:445 msgid "evaluate function" msgstr "αξιολόγηση συνάρτησης" -#: glossary.rst:441 +#: glossary.rst:447 msgid "" "A function that can be called to evaluate a lazily evaluated attribute of an " "object, such as the value of type aliases created with the :keyword:`type` " @@ -1123,11 +1136,11 @@ msgstr "" "χαρακτηριστικό ενός αντικειμένου, όπως η τιμή των ψευδωνύμων τύπου που " "δημιουργούνται με την πρόταση :keyword:`type`." -#: glossary.rst:444 +#: glossary.rst:450 msgid "expression" msgstr "έκφραση" -#: glossary.rst:446 +#: glossary.rst:452 msgid "" "A piece of syntax which can be evaluated to some value. In other words, an " "expression is an accumulation of expression elements like literals, names, " @@ -1145,11 +1158,11 @@ msgstr "" "μπορούν να χρησιμοποιηθούν ως εκφράσεις, όπως το :keyword:`while`. Οι " "αναθέσεις τιμών είναι επίσης δηλώσεις όχι εκφράσεις." -#: glossary.rst:453 +#: glossary.rst:459 msgid "extension module" msgstr "module επέκτασης" -#: glossary.rst:455 +#: glossary.rst:461 msgid "" "A module written in C or C++, using Python's C API to interact with the core " "and with user code." @@ -1157,11 +1170,11 @@ msgstr "" "Ένα module γραμμένο σε C ή C++, που χρησιμοποιείται από το C API της Python " "για να αλληλεπιδράσουν με τον πυρήνα και με τον κώδικα του χρήστη." -#: glossary.rst:457 +#: glossary.rst:463 msgid "f-string" msgstr "f-string" -#: glossary.rst:459 +#: glossary.rst:465 msgid "" "String literals prefixed with ``'f'`` or ``'F'`` are commonly called \"f-" "strings\" which is short for :ref:`formatted string literals `. " @@ -1171,11 +1184,11 @@ msgstr "" "ονομάζονται συνήθως \"f-strings\" που είναι συντομογραφία του :ref:" "`formatted string literals `. Βλ. επίσης :pep:`498`." -#: glossary.rst:462 +#: glossary.rst:468 msgid "file object" msgstr "αντικείμενο αρχείου" -#: glossary.rst:464 +#: glossary.rst:470 msgid "" "An object exposing a file-oriented API (with methods such as :meth:`!read` " "or :meth:`!write`) to an underlying resource. Depending on the way it was " @@ -1192,7 +1205,7 @@ msgstr "" "buffers, sockets, pipes, κλπ.). Αντικείμενο αρχείου ονομάζονται επίσης :dfn:" "`file-like objects` ή :dfn:`streams`." -#: glossary.rst:472 +#: glossary.rst:478 msgid "" "There are actually three categories of file objects: raw :term:`binary files " "`, buffered :term:`binary files ` and :term:`text " @@ -1206,19 +1219,19 @@ msgstr "" "στην ενότητα :mod:`io`. Ο κανονικός τρόπος για να δημιουργήσετε ένα " "αντικείμενο αρχείου είναι χρησιμοποιώντας την συνάρτηση :func:`open`." -#: glossary.rst:477 +#: glossary.rst:483 msgid "file-like object" msgstr "αντικείμενο που μοιάζει με αρχείο" -#: glossary.rst:479 +#: glossary.rst:485 msgid "A synonym for :term:`file object`." msgstr "Ένα συνώνυμο με το :term:`file object`." -#: glossary.rst:480 +#: glossary.rst:486 msgid "filesystem encoding and error handler" msgstr "κωδικοποίηση συστήματος αρχείων και χειριστής σφαλμάτων" -#: glossary.rst:482 +#: glossary.rst:488 msgid "" "Encoding and error handler used by Python to decode bytes from the operating " "system and encode Unicode to the operating system." @@ -1227,7 +1240,7 @@ msgstr "" "την αποκωδικοποίηση των bytes από το λειτουργικό σύστημα και την " "κωδικοποίηση σε Unicode για το λειτουργικό σύστημα." -#: glossary.rst:485 +#: glossary.rst:491 msgid "" "The filesystem encoding must guarantee to successfully decode all bytes " "below 128. If the file system encoding fails to provide this guarantee, API " @@ -1238,7 +1251,7 @@ msgstr "" "αρχείων δεν παρέχει αυτήν την εγγύηση, οι συναρτήσεις API μπορούν να " "εγείρουν ένα :exc:`UnicodeError`." -#: glossary.rst:489 +#: glossary.rst:495 msgid "" "The :func:`sys.getfilesystemencoding` and :func:`sys." "getfilesystemencodeerrors` functions can be used to get the filesystem " @@ -1248,7 +1261,7 @@ msgstr "" "getfilesystemencodeerrors` μπορούν να χρησιμοποιηθούν για να λάβετε την " "κωδικοποίηση του συστήματος αρχείων και του χειριστή σφαλμάτων." -#: glossary.rst:493 +#: glossary.rst:499 msgid "" "The :term:`filesystem encoding and error handler` are configured at Python " "startup by the :c:func:`PyConfig_Read` function: see :c:member:`~PyConfig." @@ -1260,15 +1273,15 @@ msgstr "" "`~PyConfig.filesystem_encoding` και :c:member:`~PyConfig.filesystem_errors` " "μέλη του :c:type:`PyConfig`." -#: glossary.rst:498 +#: glossary.rst:504 msgid "See also the :term:`locale encoding`." msgstr "Βλ. επίσης το :term:`locale encoding`." -#: glossary.rst:499 +#: glossary.rst:505 msgid "finder" msgstr "finder" -#: glossary.rst:501 +#: glossary.rst:507 msgid "" "An object that tries to find the :term:`loader` for a module that is being " "imported." @@ -1276,7 +1289,7 @@ msgstr "" "Ένα αντικείμενο που προσπαθεί να βρει το :term:`loader` για ένα module που " "εισήχθη." -#: glossary.rst:504 +#: glossary.rst:510 msgid "" "There are two types of finder: :term:`meta path finders ` " "for use with :data:`sys.meta_path`, and :term:`path entry finders ` για χρήση με :data:`sys.path_hooks`." -#: glossary.rst:508 +#: glossary.rst:514 msgid "" "See :ref:`finders-and-loaders` and :mod:`importlib` for much more detail." msgstr "" "Βλ. :ref:`finders-and-loaders` και :mod:`importlib` για περισσότερες " "λεπτομέρειες." -#: glossary.rst:509 +#: glossary.rst:515 msgid "floor division" msgstr "ακέραια διαίρεση" -#: glossary.rst:511 +#: glossary.rst:517 msgid "" "Mathematical division that rounds down to nearest integer. The floor " "division operator is ``//``. For example, the expression ``11 // 4`` " @@ -1312,11 +1325,11 @@ msgstr "" "4`` κάνει ``-3`` επειδή αυτή είναι η στρογγυλοποίηση *προς τα κάτω* του " "``-2.75``. Βλ. :pep:`238`." -#: glossary.rst:516 +#: glossary.rst:522 msgid "free threading" msgstr "δωρεάν νήμα" -#: glossary.rst:518 +#: glossary.rst:524 msgid "" "A threading model where multiple threads can run Python bytecode " "simultaneously within the same interpreter. This is in contrast to the :" @@ -1328,11 +1341,11 @@ msgstr "" "`global interpreter lock`, το οποίο επιτρέπει σε ένα μόνο νήμα να εκτελεί " "Python bytecode κάθε φορά. Δείτε το :pep:`703`." -#: glossary.rst:522 +#: glossary.rst:528 msgid "free variable" msgstr "δωρεάν μεταβλητή" -#: glossary.rst:524 +#: glossary.rst:530 msgid "" "Formally, as defined in the :ref:`language execution model `, a " "free variable is any variable used in a namespace which is not a local " @@ -1348,11 +1361,11 @@ msgstr "" "χαρακτηριστικού :attr:`codeobject.co_freevars`, ο όρος χρησιμοποιείται " "επίσης μερικές φορές ως συνώνυμο της :term:`closure variable`." -#: glossary.rst:529 +#: glossary.rst:535 msgid "function" msgstr "συνάρτηση" -#: glossary.rst:531 +#: glossary.rst:537 msgid "" "A series of statements which returns some value to a caller. It can also be " "passed zero or more :term:`arguments ` which may be used in the " @@ -1364,16 +1377,16 @@ msgstr "" "` που μπορεί να χρησιμοποιηθεί για την εκτέλεση. Βλ. επίσης τις " "ενότητες :term:`parameter`, :term:`method`, και the :ref:`function`." -#: glossary.rst:535 +#: glossary.rst:541 msgid "function annotation" msgstr "συνάρτηση annotation" -#: glossary.rst:537 +#: glossary.rst:543 msgid "An :term:`annotation` of a function parameter or return value." msgstr "" "Ένας :term:`annotation` μιας παραμέτρου συνάρτησης ή μιας τιμής επιστροφής." -#: glossary.rst:539 +#: glossary.rst:545 msgid "" "Function annotations are usually used for :term:`type hints `: " "for example, this function is expected to take two :class:`int` arguments " @@ -1384,7 +1397,7 @@ msgstr "" "ορίσματα :class:`int` και επίσης αναμένεται να έχει μία επιστρεφόμενη τιμή :" "class:`int`::" -#: glossary.rst:544 +#: glossary.rst:550 msgid "" "def sum_two_numbers(a: int, b: int) -> int:\n" " return a + b" @@ -1392,12 +1405,12 @@ msgstr "" "def sum_two_numbers(a: int, b: int) -> int:\n" " return a + b" -#: glossary.rst:547 +#: glossary.rst:553 msgid "Function annotation syntax is explained in section :ref:`function`." msgstr "" "Η σύνταξη συνάρτησης annotation αναλύεται στην ενότητα :ref:`function`." -#: glossary.rst:549 +#: glossary.rst:555 msgid "" "See :term:`variable annotation` and :pep:`484`, which describe this " "functionality. Also see :ref:`annotations-howto` for best practices on " @@ -1407,11 +1420,11 @@ msgstr "" "λειτουργικότητα. Επίσης βλ. :ref:`annotations-howto` για τις καλύτερες " "πρακτικές δουλεύοντας με annotations." -#: glossary.rst:553 +#: glossary.rst:559 msgid "__future__" msgstr "__future__" -#: glossary.rst:555 +#: glossary.rst:561 msgid "" "A :ref:`future statement `, ``from __future__ import ``, " "directs the compiler to compile the current module using syntax or semantics " @@ -1430,7 +1443,7 @@ msgstr "" "προστέθηκε για πρώτη φορά στην γλώσσα και πότε θα γίνει (ή έγινε) η " "προεπιλογή::" -#: glossary.rst:563 +#: glossary.rst:569 msgid "" ">>> import __future__\n" ">>> __future__.division\n" @@ -1440,11 +1453,11 @@ msgstr "" ">>> __future__.division\n" "_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)" -#: glossary.rst:566 +#: glossary.rst:572 msgid "garbage collection" msgstr "συλλογή απορριμάτων" -#: glossary.rst:568 +#: glossary.rst:574 msgid "" "The process of freeing memory when it is not used anymore. Python performs " "garbage collection via reference counting and a cyclic garbage collector " @@ -1457,11 +1470,11 @@ msgstr "" "τους κύκλους αναφοράς. Ο συλλέκτης απορριμάτων μπορεί να ελεγχθεί " "χρησιμοποιώντας το module :mod:`gc`." -#: glossary.rst:574 +#: glossary.rst:580 msgid "generator" msgstr "generator" -#: glossary.rst:576 +#: glossary.rst:582 msgid "" "A function which returns a :term:`generator iterator`. It looks like a " "normal function except that it contains :keyword:`yield` expressions for " @@ -1474,7 +1487,7 @@ msgstr "" "*for* ή που μπορούν να ανακτηθούν μία τη φορά με την συνάρτηση :func:`next` " "function." -#: glossary.rst:581 +#: glossary.rst:587 msgid "" "Usually refers to a generator function, but may refer to a *generator " "iterator* in some contexts. In cases where the intended meaning isn't " @@ -1485,15 +1498,15 @@ msgstr "" "επιδιωκόμενο νόημα δεν είναι σαφές, η χρήση των πλήρων όρων αποφεύγει την " "ασάφεια." -#: glossary.rst:584 +#: glossary.rst:590 msgid "generator iterator" msgstr "generator iterator" -#: glossary.rst:586 +#: glossary.rst:592 msgid "An object created by a :term:`generator` function." msgstr "Ένα αντικείμενο που δημιουργείται από μια συνάρτηση :term:`generator`." -#: glossary.rst:588 +#: glossary.rst:594 msgid "" "Each :keyword:`yield` temporarily suspends processing, remembering the " "execution state (including local variables and pending try-statements). " @@ -1506,11 +1519,11 @@ msgstr "" "συνεχίζει από εκεί που σταμάτησε (σε αντίθεση με τις συναρτήσεις που " "ξεκινούν από την αρχή σε κάθε επίκληση)." -#: glossary.rst:595 +#: glossary.rst:601 msgid "generator expression" msgstr "generator έκφραση" -#: glossary.rst:597 +#: glossary.rst:603 msgid "" "An :term:`expression` that returns an :term:`iterator`. It looks like a " "normal expression followed by a :keyword:`!for` clause defining a loop " @@ -1522,7 +1535,7 @@ msgstr "" "μια μεταβλητή βρόχου, ένα εύρος και μια προαιρετική πρόταση :keyword:`!if`. " "Η συνδυασμένη έκφραση δημιουργεί τιμές για μια συνάρτηση εγκλεισμού::" -#: glossary.rst:602 +#: glossary.rst:608 msgid "" ">>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81\n" "285" @@ -1530,11 +1543,11 @@ msgstr "" ">>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81\n" "285" -#: glossary.rst:604 +#: glossary.rst:610 msgid "generic function" msgstr "γενική συνάρτηση" -#: glossary.rst:606 +#: glossary.rst:612 msgid "" "A function composed of multiple functions implementing the same operation " "for different types. Which implementation should be used during a call is " @@ -1545,7 +1558,7 @@ msgstr "" "χρησιμοποιηθεί κατά τη διάρκεια μια κλήσης καθορίζεται από τον αλγόριθμο " "αποστολής." -#: glossary.rst:610 +#: glossary.rst:616 msgid "" "See also the :term:`single dispatch` glossary entry, the :func:`functools." "singledispatch` decorator, and :pep:`443`." @@ -1553,11 +1566,11 @@ msgstr "" "Βλ. επίσης την καταχώρηση του :term:`single dispatch`, τον decorator :func:" "`functools.singledispatch` και :pep:`443`." -#: glossary.rst:612 +#: glossary.rst:618 msgid "generic type" msgstr "γενικός τύπος" -#: glossary.rst:614 +#: glossary.rst:620 msgid "" "A :term:`type` that can be parameterized; typically a :ref:`container " "class` such as :class:`list` or :class:`dict`. Used for :" @@ -1568,7 +1581,7 @@ msgstr "" "Χρησιμοποιείται για :term:`type hints ` και :term:`annotations " "`." -#: glossary.rst:619 +#: glossary.rst:625 msgid "" "For more details, see :ref:`generic alias types`, :pep:" "`483`, :pep:`484`, :pep:`585`, and the :mod:`typing` module." @@ -1577,19 +1590,19 @@ msgstr "" "genericalias>` :pep:`483`, :pep:`484`, :pep:`585`, και το module :mod:" "`typing`." -#: glossary.rst:621 +#: glossary.rst:627 msgid "GIL" msgstr "GIL" -#: glossary.rst:623 +#: glossary.rst:629 msgid "See :term:`global interpreter lock`." msgstr "Βλ. :term:`global interpreter lock`." -#: glossary.rst:624 +#: glossary.rst:630 msgid "global interpreter lock" msgstr "global interpreter lock" -#: glossary.rst:626 +#: glossary.rst:632 msgid "" "The mechanism used by the :term:`CPython` interpreter to assure that only " "one thread executes Python :term:`bytecode` at a time. This simplifies the " @@ -1608,7 +1621,7 @@ msgstr "" "του μεγάλου μέρους του παραλληλισμού που παρέχουν οι μηχανές πολλαπλών " "επεξεργαστών." -#: glossary.rst:635 +#: glossary.rst:641 msgid "" "However, some extension modules, either standard or third-party, are " "designed so as to release the GIL when doing computationally intensive tasks " @@ -1620,7 +1633,7 @@ msgstr "" "εντατικών υπολογισμών όπως συμπίεση ή κατακερματισμός. Επίσης, το GIL " "απελευθερώνεται πάντα όταν εκτελείτε I/O." -#: glossary.rst:640 +#: glossary.rst:646 msgid "" "As of Python 3.13, the GIL can be disabled using the :option:`--disable-gil` " "build configuration. After building Python with this option, code must be " @@ -1638,7 +1651,7 @@ msgstr "" "διευκολύνει τη χρήση των επεξεργαστών πολλαπλών πυρήνων με αποδοτικό τρόπο. " "Για περισσότερες λεπτομέρειες, δείτε το :pep:`703`." -#: glossary.rst:647 +#: glossary.rst:653 msgid "" "In prior versions of Python's C API, a function might declare that it " "requires the GIL to be held in order to use it. This refers to having an :" @@ -1648,11 +1661,11 @@ msgstr "" "δηλώνει ότι απαιτεί την τήρηση του GIL για να χρησιμοποιηθεί. Αυτό " "αναφέρεται στην ύπαρξη μιας κατάστασης :term:`attached thread state`." -#: glossary.rst:650 +#: glossary.rst:656 msgid "hash-based pyc" msgstr "hash-based pyc" -#: glossary.rst:652 +#: glossary.rst:658 msgid "" "A bytecode cache file that uses the hash rather than the last-modified time " "of the corresponding source file to determine its validity. See :ref:`pyc-" @@ -1662,11 +1675,11 @@ msgstr "" "όχι τον χρόνο τροποποίησης του αντίστοιχου αρχείου προέλευσης για να " "προσδιορίσει την εγκυρότητα του. Βλ. :ref:`pyc-invalidation`." -#: glossary.rst:655 +#: glossary.rst:661 msgid "hashable" msgstr "hashable" -#: glossary.rst:657 +#: glossary.rst:663 msgid "" "An object is *hashable* if it has a hash value which never changes during " "its lifetime (it needs a :meth:`~object.__hash__` method), and can be " @@ -1680,7 +1693,7 @@ msgstr "" "που συγκρίνονται ως προς την ισότητα τους πρέπει να έχουν την ίδια τιμή " "κατακερματισμού." -#: glossary.rst:663 +#: glossary.rst:669 msgid "" "Hashability makes an object usable as a dictionary key and a set member, " "because these data structures use the hash value internally." @@ -1689,7 +1702,7 @@ msgstr "" "κλειδί λεξικού και ως μέλος ενός συνόλου, επειδή αυτές οι δομές δεδομένων " "χρησιμοποιούν τιμές κατακερματισμού." -#: glossary.rst:666 +#: glossary.rst:672 msgid "" "Most of Python's immutable built-in objects are hashable; mutable containers " "(such as lists or dictionaries) are not; immutable containers (such as " @@ -1706,11 +1719,11 @@ msgstr "" "μπορούν να κατακερματιστούν από προεπιλογή. Όλα συγκρίνονται άνισα εκτός από " "τον εαυτό τους) και η τιμή κατακερματισμού τους προέρχεται από το :func:`id`." -#: glossary.rst:673 +#: glossary.rst:679 msgid "IDLE" msgstr "IDLE" -#: glossary.rst:675 +#: glossary.rst:681 msgid "" "An Integrated Development and Learning Environment for Python. :ref:`idle` " "is a basic editor and interpreter environment which ships with the standard " @@ -1720,11 +1733,11 @@ msgstr "" "`idle` είναι ένα βασικό περιβάλλον επεξεργασίας και διερμηνέα που " "συνοδεύεται από την τυπική διανομή της Python." -#: glossary.rst:678 +#: glossary.rst:684 msgid "immortal" msgstr "Αθάνατο" -#: glossary.rst:680 +#: glossary.rst:686 msgid "" "*Immortal objects* are a CPython implementation detail introduced in :pep:" "`683`." @@ -1732,7 +1745,7 @@ msgstr "" "*Αθάνατα αντικείμενα* είναι μια λεπτομέρεια υλοποίησης της CPython που " "εισήχθη στην :pep:`683`." -#: glossary.rst:683 +#: glossary.rst:689 msgid "" "If an object is immortal, its :term:`reference count` is never modified, and " "therefore it is never deallocated while the interpreter is running. For " @@ -1742,7 +1755,7 @@ msgstr "" "τροποποιείται, και επομένως δεν εκχωρείται ποτέ ενώ εκτελείται ο διερμηνέας. " "Για παράδειγμα, :const:`True` και :const:`None` είναι αθάνατα στην CPython." -#: glossary.rst:687 +#: glossary.rst:693 msgid "" "Immortal objects can be identified via :func:`sys._is_immortal`, or via :c:" "func:`PyUnstable_IsImmortal` in the C API." @@ -1750,11 +1763,11 @@ msgstr "" "Τα αθάνατα αντικείμενα μπορούν να αναγνωριστούν μέσω της :func:`sys." "_is_immortal`, ή μέσω της :c:func:`PyUnstable_IsImmortal` στο C API." -#: glossary.rst:689 +#: glossary.rst:695 msgid "immutable" msgstr "immutable" -#: glossary.rst:691 +#: glossary.rst:697 msgid "" "An object with a fixed value. Immutable objects include numbers, strings " "and tuples. Such an object cannot be altered. A new object has to be " @@ -1768,11 +1781,11 @@ msgstr "" "αποθηκευτεί μια διαφορετική τιμή. Παίζουν σημαντικό ρόλο σε μέρη όπου μια " "σταθερά απαιτείται, για παράδειγμα ως κλειδί σε ένα λεξικό." -#: glossary.rst:696 +#: glossary.rst:702 msgid "import path" msgstr "εισαγόμενο path" -#: glossary.rst:698 +#: glossary.rst:704 msgid "" "A list of locations (or :term:`path entries `) that are searched " "by the :term:`path based finder` for modules to import. During import, this " @@ -1785,11 +1798,11 @@ msgstr "" "από :data:`sys.path`, αλλά για τα υποπακέτα μπορεί επίσης να έρθει από το " "χαρακτηριστικό του πακέτου γονέα ``__path__``." -#: glossary.rst:703 +#: glossary.rst:709 msgid "importing" msgstr "εισαγωγή" -#: glossary.rst:705 +#: glossary.rst:711 msgid "" "The process by which Python code in one module is made available to Python " "code in another module." @@ -1797,11 +1810,11 @@ msgstr "" "Η διαδικασία κατά την οποία ο κώδικας της Python σε ένα module είναι " "διαθέσιμη στον κώδικα Python ενός άλλου module." -#: glossary.rst:707 +#: glossary.rst:713 msgid "importer" msgstr "εισαγωγέας" -#: glossary.rst:709 +#: glossary.rst:715 msgid "" "An object that both finds and loads a module; both a :term:`finder` and :" "term:`loader` object." @@ -1809,11 +1822,11 @@ msgstr "" "Ένα αντικείμενο μπορεί και να αναζητεί και να φορτώνει ένα module' και ένα :" "term:`finder` και :term:`loader` αντικείμενο." -#: glossary.rst:711 +#: glossary.rst:717 msgid "interactive" msgstr "διαδραστικός" -#: glossary.rst:713 +#: glossary.rst:719 msgid "" "Python has an interactive interpreter which means you can enter statements " "and expressions at the interpreter prompt, immediately execute them and see " @@ -1830,11 +1843,11 @@ msgstr "" "να εξετάστε modules και πακέτα (θυμηθείτε ``help(x)``). Για περισσότερα " "σχετικά με τη διαδραστική λειτουργία, δείτε :ref:`tut-interac`." -#: glossary.rst:720 +#: glossary.rst:726 msgid "interpreted" msgstr "interpreted" -#: glossary.rst:722 +#: glossary.rst:728 msgid "" "Python is an interpreted language, as opposed to a compiled one, though the " "distinction can be blurry because of the presence of the bytecode compiler. " @@ -1851,11 +1864,11 @@ msgstr "" "εντοπισμού σφαλμάτων από τις μεταγλωττισμένες, αν και τα προγράμματά τους " "γενικά εκτελούνται πιο αργά. Βλ. επίσης :term:`interactive`." -#: glossary.rst:729 +#: glossary.rst:735 msgid "interpreter shutdown" msgstr "τερματισμός λειτουργίας διερμηνέα" -#: glossary.rst:731 +#: glossary.rst:737 msgid "" "When asked to shut down, the Python interpreter enters a special phase where " "it gradually releases all allocated resources, such as modules and various " @@ -1877,7 +1890,7 @@ msgstr "" "βασίζεται ενδέχεται να μην λειτουργούν πλέον (συνήθη παραδείγματα είναι οι " "λειτουργικές μονάδες βιβλιοθήκης ή ο μηχανισμός ειδοποιήσεων)." -#: glossary.rst:740 +#: glossary.rst:746 msgid "" "The main reason for interpreter shutdown is that the ``__main__`` module or " "the script being run has finished executing." @@ -1885,11 +1898,11 @@ msgstr "" "Ο βασικός λόγος τερματισμού λειτουργίας του διερμηνέα είναι ότι το " "``__main__`` module ή ολοκληρώθηκε η εκτέλεση του κώδικα που έτρεχε." -#: glossary.rst:742 +#: glossary.rst:748 msgid "iterable" msgstr "iterable" -#: glossary.rst:744 +#: glossary.rst:750 msgid "" "An object capable of returning its members one at a time. Examples of " "iterables include all sequence types (such as :class:`list`, :class:`str`, " @@ -1906,7 +1919,7 @@ msgstr "" "__iter__` ή με μία μέθοδο :meth:`~object.__getitem__` που υλοποιεί τη " "σημασιολογία :term:`sequence`." -#: glossary.rst:752 +#: glossary.rst:758 msgid "" "Iterables can be used in a :keyword:`for` loop and in many other places " "where a sequence is needed (:func:`zip`, :func:`map`, ...). When an " @@ -1930,11 +1943,11 @@ msgstr "" "του βρόχου. Βλ. επίσης :term:`iterator`, :term:`sequence`, και :term:" "`generator`." -#: glossary.rst:762 +#: glossary.rst:768 msgid "iterator" msgstr "iterator" -#: glossary.rst:764 +#: glossary.rst:770 msgid "" "An object representing a stream of data. Repeated calls to the iterator's :" "meth:`~iterator.__next__` method (or passing it to the built-in function :" @@ -1969,11 +1982,11 @@ msgstr "" "εξαντλημένο αντικείμενο iterator που χρησιμοποιήθηκε στο προηγούμενο πέρασμα " "iteration , κάνοντας το να φαίνεται σαν ένα άδειο κοντέινερ." -#: glossary.rst:779 +#: glossary.rst:785 msgid "More information can be found in :ref:`typeiter`." msgstr "Περισσότερες πληροφορίες μπορούν να βρεθούν στο :ref:`typeiter`." -#: glossary.rst:783 +#: glossary.rst:789 msgid "" "CPython does not consistently apply the requirement that an iterator define :" "meth:`~iterator.__iter__`. And also please note that the free-threading " @@ -1984,11 +1997,11 @@ msgstr "" "υποστήριξη νημάτων δεν εγγυάται την ασφάλεια νημάτων για διαδικασίες με " "iterators." -#: glossary.rst:788 +#: glossary.rst:794 msgid "key function" msgstr "συνάρτηση key" -#: glossary.rst:790 +#: glossary.rst:796 msgid "" "A key function or collation function is a callable that returns a value used " "for sorting or ordering. For example, :func:`locale.strxfrm` is used to " @@ -2000,7 +2013,7 @@ msgstr "" "κλειδιού ταξινόμησης που γνωρίζει τις συμβάσεις ταξινόμησης για " "συγκεκριμένες τοπικές ρυθμίσεις." -#: glossary.rst:795 +#: glossary.rst:801 msgid "" "A number of tools in Python accept key functions to control how elements are " "ordered or grouped. They include :func:`min`, :func:`max`, :func:`sorted`, :" @@ -2013,7 +2026,7 @@ msgstr "" "`heapq.merge`, :func:`heapq.nsmallest`, :func:`heapq. nlargest`, και :func:" "`itertools.groupby`." -#: glossary.rst:801 +#: glossary.rst:807 msgid "" "There are several ways to create a key function. For example. the :meth:" "`str.lower` method can serve as a key function for case insensitive sorts. " @@ -2033,19 +2046,19 @@ msgstr "" "TO` για παραδείγματα δημιουργίας και χρήσης βασικών " "συναρτήσεων." -#: glossary.rst:808 +#: glossary.rst:814 msgid "keyword argument" msgstr "όρισμα keyword" -#: glossary.rst:1125 +#: glossary.rst:1131 msgid "See :term:`argument`." msgstr "Βλ. :term:`argument`." -#: glossary.rst:811 +#: glossary.rst:817 msgid "lambda" msgstr "lambda" -#: glossary.rst:813 +#: glossary.rst:819 msgid "" "An anonymous inline function consisting of a single :term:`expression` which " "is evaluated when the function is called. The syntax to create a lambda " @@ -2056,11 +2069,11 @@ msgstr "" "τη δημιουργία μιας συνάρτησης lambda είναι ``lambda [parameters]: " "expression``" -#: glossary.rst:816 +#: glossary.rst:822 msgid "LBYL" msgstr "LBYL" -#: glossary.rst:818 +#: glossary.rst:824 msgid "" "Look before you leap. This coding style explicitly tests for pre-conditions " "before making calls or lookups. This style contrasts with the :term:`EAFP` " @@ -2072,7 +2085,7 @@ msgstr "" "έρχεται σε αντίθεση με την προσέγγιση :term:`EAFP` και χαρακτηρίζεται από " "την παρουσία πολλών δηλώσεων :keyword:`if`." -#: glossary.rst:823 +#: glossary.rst:829 msgid "" "In a multi-threaded environment, the LBYL approach can risk introducing a " "race condition between \"the looking\" and \"the leaping\". For example, " @@ -2087,19 +2100,19 @@ msgstr "" "το *mapping* μετά τη δοκιμή, αλλά πριν από την αναζήτηση. Αυτό το πρόβλημα " "μπορεί να λυθεί με κλειδώματα ή χρησιμοποιώντας την προσέγγιση EAFP." -#: glossary.rst:828 +#: glossary.rst:834 msgid "lexical analyzer" msgstr "λεξικός αναλυτής" -#: glossary.rst:831 +#: glossary.rst:837 msgid "Formal name for the *tokenizer*; see :term:`token`." msgstr "Επίσημη ονομασία για τον *tokenizer* · βλ. :term:`token`." -#: glossary.rst:832 +#: glossary.rst:838 msgid "list" msgstr "λίστα" -#: glossary.rst:834 +#: glossary.rst:840 msgid "" "A built-in Python :term:`sequence`. Despite its name it is more akin to an " "array in other languages than to a linked list since access to elements is " @@ -2109,11 +2122,11 @@ msgstr "" "περισσότερο με έναν πίνακα σε άλλες γλώσσες παρά με μια συνδεδεμένη λίστα, " "καθώς η πρόσβαση στα στοιχεί είναι *O*\\ (1)." -#: glossary.rst:837 +#: glossary.rst:843 msgid "list comprehension" msgstr "list comprehension" -#: glossary.rst:839 +#: glossary.rst:845 msgid "" "A compact way to process all or part of the elements in a sequence and " "return a list with the results. ``result = ['{:#04x}'.format(x) for x in " @@ -2128,11 +2141,11 @@ msgstr "" "από 0 έως 255. Η πρόταση :keyword:`if` είναι προαιρετική. Εάν παραλειφθεί, " "όλα τα στοιχεία στο ``range(256)`` υποβάλλονται σε επεξεργασία." -#: glossary.rst:845 +#: glossary.rst:851 msgid "loader" msgstr "loader" -#: glossary.rst:847 +#: glossary.rst:853 msgid "" "An object that loads a module. It must define the :meth:`!exec_module` and :" "meth:`!create_module` methods to implement the :class:`~importlib.abc." @@ -2144,23 +2157,23 @@ msgstr "" "class:`~importlib.abc.Loader`. Ένας loader συνήθως επιστρέφεται με ένα :term:" "`finder`. Δείτε επίσης:" -#: glossary.rst:853 +#: glossary.rst:859 msgid ":ref:`finders-and-loaders`" msgstr ":ref:`finders-and-loaders`" -#: glossary.rst:854 +#: glossary.rst:860 msgid ":class:`importlib.abc.Loader`" msgstr ":class:`importlib.abc.Loader`" -#: glossary.rst:855 +#: glossary.rst:861 msgid ":pep:`302`" msgstr ":pep:`302`" -#: glossary.rst:856 +#: glossary.rst:862 msgid "locale encoding" msgstr "τοπική κωδικοποίηση" -#: glossary.rst:858 +#: glossary.rst:864 msgid "" "On Unix, it is the encoding of the LC_CTYPE locale. It can be set with :func:" "`locale.setlocale(locale.LC_CTYPE, new_locale) `." @@ -2169,40 +2182,40 @@ msgstr "" "ρυθμιστεί με :func:`locale.setlocale(locale.LC_CTYPE, new_locale) `." -#: glossary.rst:861 +#: glossary.rst:867 msgid "On Windows, it is the ANSI code page (ex: ``\"cp1252\"``)." msgstr "Στα Windows, είναι η code page ANSI (π.χ. ``\"cp1252\"``)." -#: glossary.rst:863 +#: glossary.rst:869 msgid "" "On Android and VxWorks, Python uses ``\"utf-8\"`` as the locale encoding." msgstr "" "Στο Android και το VxWorks, η Python χρησιμοποιεί το ``\"utf-8\"`` ως τοπική " "κωδικοποίηση." -#: glossary.rst:865 +#: glossary.rst:871 msgid ":func:`locale.getencoding` can be used to get the locale encoding." msgstr "" ":func:`locale.getencoding` μπορεί να χρησιμοποιηθεί για την ανάκτηση της " "τοπικής κωδικοποίησης." -#: glossary.rst:867 +#: glossary.rst:873 msgid "See also the :term:`filesystem encoding and error handler`." msgstr "Βλ. επίσης το :term:`filesystem encoding and error handler`." -#: glossary.rst:868 +#: glossary.rst:874 msgid "magic method" msgstr "μαγική μέθοδος" -#: glossary.rst:872 +#: glossary.rst:878 msgid "An informal synonym for :term:`special method`." msgstr "Ένα άτυπο συνώνυμο για :term:`special method`." -#: glossary.rst:873 +#: glossary.rst:879 msgid "mapping" msgstr "mapping" -#: glossary.rst:875 +#: glossary.rst:881 msgid "" "A container object that supports arbitrary key lookups and implements the " "methods specified in the :class:`collections.abc.Mapping` or :class:" @@ -2218,11 +2231,11 @@ msgstr "" "class:`dict`, :class:`collections.defaultdict`, :class:`collections." "OrderedDict` και :class:`collections.Counter`." -#: glossary.rst:881 +#: glossary.rst:887 msgid "meta path finder" msgstr "meta path finder" -#: glossary.rst:883 +#: glossary.rst:889 msgid "" "A :term:`finder` returned by a search of :data:`sys.meta_path`. Meta path " "finders are related to, but different from :term:`path entry finders `." -#: glossary.rst:887 +#: glossary.rst:893 msgid "" "See :class:`importlib.abc.MetaPathFinder` for the methods that meta path " "finders implement." @@ -2240,11 +2253,11 @@ msgstr "" "Βλ. :class:`importlib.abc.MetaPathFinder` για τις μεθόδους που υλοποιούν οι " "meta path finders." -#: glossary.rst:889 +#: glossary.rst:895 msgid "metaclass" msgstr "μετα-κλάση" -#: glossary.rst:891 +#: glossary.rst:897 msgid "" "The class of a class. Class definitions create a class name, a class " "dictionary, and a list of base classes. The metaclass is responsible for " @@ -2268,15 +2281,15 @@ msgstr "" "ασφάλειας νημάτων, την παρακολούθηση δημιουργίας αντικειμένων, την υλοποίηση " "*singletons*, και πολλές άλλες εργασίες." -#: glossary.rst:901 +#: glossary.rst:907 msgid "More information can be found in :ref:`metaclasses`." msgstr "Περισσότερες πληροφορίες μπορούν να βρεθούν στο :ref:`metaclasses`." -#: glossary.rst:1270 +#: glossary.rst:1276 msgid "method" msgstr "μέθοδος" -#: glossary.rst:904 +#: glossary.rst:910 msgid "" "A function which is defined inside a class body. If called as an attribute " "of an instance of that class, the method will get the instance object as its " @@ -2288,11 +2301,11 @@ msgstr "" "αντικείμενο περίπτωσης ως πρώτο της :term:`argument` (το οποίο συνήθως " "ονομάζεται ``self``). Βλ. :term:`function` και :term:`nested scope`." -#: glossary.rst:908 +#: glossary.rst:914 msgid "method resolution order" msgstr "σειρά ανάλυσης μεθόδων" -#: glossary.rst:910 +#: glossary.rst:916 msgid "" "Method Resolution Order is the order in which base classes are searched for " "a member during lookup. See :ref:`python_2.3_mro` for details of the " @@ -2303,11 +2316,11 @@ msgstr "" "για λεπτομέρειες του αλγορίθμου που χρησιμοποιείται από τον διερμηνέα της " "Python από την έκδοση 2.3." -#: glossary.rst:913 +#: glossary.rst:919 msgid "module" msgstr "module" -#: glossary.rst:915 +#: glossary.rst:921 msgid "" "An object that serves as an organizational unit of Python code. Modules " "have a namespace containing arbitrary Python objects. Modules are loaded " @@ -2318,15 +2331,15 @@ msgstr "" "Python. Τα modules φορτώνονται στην Python με την διαδικασία :term:" "`importing`." -#: glossary.rst:919 +#: glossary.rst:925 msgid "See also :term:`package`." msgstr "Βλ. επίσης :term:`package`." -#: glossary.rst:920 +#: glossary.rst:926 msgid "module spec" msgstr "τεχνικές προδιαγραφές module" -#: glossary.rst:922 +#: glossary.rst:928 msgid "" "A namespace containing the import-related information used to load a module. " "An instance of :class:`importlib.machinery.ModuleSpec`." @@ -2335,23 +2348,23 @@ msgstr "" "που χρησιμοποιούνται για την φόρτωση ενός module. Μια περίπτωση του :class:" "`importlib.machinery.ModuleSpec`." -#: glossary.rst:925 +#: glossary.rst:931 msgid "See also :ref:`module-specs`." msgstr "Βλ. επίσης :ref:`module-specs`." -#: glossary.rst:926 +#: glossary.rst:932 msgid "MRO" msgstr "MRO" -#: glossary.rst:928 +#: glossary.rst:934 msgid "See :term:`method resolution order`." msgstr "Βλ. :term:`method resolution order`." -#: glossary.rst:929 +#: glossary.rst:935 msgid "mutable" msgstr "mutable" -#: glossary.rst:931 +#: glossary.rst:937 msgid "" "Mutable objects can change their value but keep their :func:`id`. See also :" "term:`immutable`." @@ -2359,11 +2372,11 @@ msgstr "" "Τα ευμετάβλητα αντικείμενα μπορούν να αλλάξουν τις τιμές αλλά να κρατήσουν " "τα :func:`id`. Βλ. επίσης :term:`immutable`." -#: glossary.rst:933 +#: glossary.rst:939 msgid "named tuple" msgstr "named tuple" -#: glossary.rst:935 +#: glossary.rst:941 msgid "" "The term \"named tuple\" applies to any type or class that inherits from " "tuple and whose indexable elements are also accessible using named " @@ -2374,7 +2387,7 @@ msgstr "" "ευρετηριοποιηθούν είναι προσβάσιμα χρησιμοποιώντας επώνυμα χαρακτηριστικά. " "Ο τύπος ή η κλάση μπορεί να έχει και άλλα χαρακτηριστικά." -#: glossary.rst:939 +#: glossary.rst:945 msgid "" "Several built-in types are named tuples, including the values returned by :" "func:`time.localtime` and :func:`os.stat`. Another example is :data:`sys." @@ -2384,7 +2397,7 @@ msgstr "" "που επιστρέφονται από :func:`time.localtime` και :func:`os.stat`. Ένα άλλο " "παράδειγμα είναι το :data:`sys.float_info`::" -#: glossary.rst:943 +#: glossary.rst:949 msgid "" ">>> sys.float_info[1] # indexed access\n" "1024\n" @@ -2400,7 +2413,7 @@ msgstr "" ">>> isinstance(sys.float_info, tuple) # kind of tuple\n" "True" -#: glossary.rst:950 +#: glossary.rst:956 msgid "" "Some named tuples are built-in types (such as the above examples). " "Alternatively, a named tuple can be created from a regular class definition " @@ -2419,11 +2432,11 @@ msgstr "" "τελευταίες τεχνικές προσθέτουν επίσης μερικές επιπλέον μεθόδους που μπορεί " "να μην βρεθούν σε χειρόγραφες ή ενσωματωμένες πλειάδες με όνομα." -#: glossary.rst:958 +#: glossary.rst:964 msgid "namespace" msgstr "namespace" -#: glossary.rst:960 +#: glossary.rst:966 msgid "" "The place where a variable is stored. Namespaces are implemented as " "dictionaries. There are the local, global and built-in namespaces as well " @@ -2445,11 +2458,11 @@ msgstr "" "seed` ή :func:`itertools.islice` καθιστά σαφές ότι αυτές οι συναρτήσεις " "υλοποιούνται από τα module :mod:`random` και :mod:`itertools`, αντίστοιχα." -#: glossary.rst:970 +#: glossary.rst:976 msgid "namespace package" msgstr "πακέτο namespace" -#: glossary.rst:972 +#: glossary.rst:978 msgid "" "A :term:`package` which serves only as a container for subpackages. " "Namespace packages may have no physical representation, and specifically are " @@ -2460,7 +2473,7 @@ msgstr "" "συγκεκριμένα να μην είναι σαν ένα :term:`regular package` επειδή δεν έχουν " "το ``__init__.py`` αρχείο." -#: glossary.rst:977 +#: glossary.rst:983 msgid "" "Namespace packages allow several individually installable packages to have a " "common parent package. Otherwise, it is recommended to use a :term:`regular " @@ -2470,22 +2483,22 @@ msgstr "" "εγκατάστασης μεμονωμένα να έχουν ένα κοινό γονικό πακέτο. Διαφορετικά, " "συνίσταται η χρήση ενός :term:`regular package`." -#: glossary.rst:980 +#: glossary.rst:986 msgid "" "For more information, see :pep:`420` and :ref:`reference-namespace-package`." msgstr "" "Για περισσότερες πληροφορίες, δείτε το :pep:`420` και το :ref:`reference-" "namespace-package`." -#: glossary.rst:982 +#: glossary.rst:988 msgid "See also :term:`module`." msgstr "Βλ. επίσης :term:`module`." -#: glossary.rst:983 +#: glossary.rst:989 msgid "nested scope" msgstr "nested scope" -#: glossary.rst:985 +#: glossary.rst:991 msgid "" "The ability to refer to a variable in an enclosing definition. For " "instance, a function defined inside another function can refer to variables " @@ -2502,11 +2515,11 @@ msgstr "" "Ομοίως, οι καθολικές μεταβλητές διαβάζουν και γράφουν στον καθολικό χώρο " "ονομάτων. Το :keyword:`nonlocal` επιτρέπει την εγγραφή σε εξωτερικά πεδία." -#: glossary.rst:992 +#: glossary.rst:998 msgid "new-style class" msgstr "κλάση νέου στυλ" -#: glossary.rst:994 +#: glossary.rst:1000 msgid "" "Old name for the flavor of classes now used for all class objects. In " "earlier Python versions, only new-style classes could use Python's newer, " @@ -2519,11 +2532,11 @@ msgstr "" "όπως :attr:`~object.__slots__`, descriptors, ιδιότητες :meth:`~object." "__getattribute__`, μέθοδοι κλάσης, και στατικές μέθοδοι." -#: glossary.rst:999 +#: glossary.rst:1005 msgid "object" msgstr "αντικείμενο" -#: glossary.rst:1001 +#: glossary.rst:1007 msgid "" "Any data with state (attributes or value) and defined behavior (methods). " "Also the ultimate base class of any :term:`new-style class`." @@ -2532,11 +2545,11 @@ msgstr "" "συμπεριφορά (μέθοδοι). Επίσης, η τελική βασική κλάση οποιασδήποτε :term:`new-" "style class`." -#: glossary.rst:1004 +#: glossary.rst:1010 msgid "optimized scope" msgstr "βελτιστοποιημένο πεδίο ορατότητας (scope)" -#: glossary.rst:1006 +#: glossary.rst:1012 msgid "" "A scope where target local variable names are reliably known to the compiler " "when the code is compiled, allowing optimization of read and write access to " @@ -2556,11 +2569,11 @@ msgstr "" "εκείνες που βασίζονται σε γνωστό σύνολο τοπικών και μη τοπικών μεταβλητών " "περιορίζονται σε βελτιστοποιημένα πεδία ορατότητας." -#: glossary.rst:1013 +#: glossary.rst:1019 msgid "package" msgstr "πακέτο" -#: glossary.rst:1015 +#: glossary.rst:1021 msgid "" "A Python :term:`module` which can contain submodules or recursively, " "subpackages. Technically, a package is a Python module with a ``__path__`` " @@ -2570,15 +2583,15 @@ msgstr "" "υποπακέτα. Τεχνικά, ένα πακέτο είναι μια λειτουργική μονάδα Python με ένα " "``__path__`` χαρακτηριστικό." -#: glossary.rst:1019 +#: glossary.rst:1025 msgid "See also :term:`regular package` and :term:`namespace package`." msgstr "Βλ. επίσης :term:`regular package` και :term:`namespace package`." -#: glossary.rst:1020 +#: glossary.rst:1026 msgid "parameter" msgstr "παράμετρος" -#: glossary.rst:1022 +#: glossary.rst:1028 msgid "" "A named entity in a :term:`function` (or method) definition that specifies " "an :term:`argument` (or in some cases, arguments) that the function can " @@ -2588,7 +2601,7 @@ msgstr "" "καθορίζει ένα :term:`argument` (ή σε ορισμένες περιπτώσεις, ορίσματα) που " "μπορεί να δεχθεί η συνάρτηση. Υπάρχουν πέντε είδη παραμέτρων:" -#: glossary.rst:1026 +#: glossary.rst:1032 msgid "" ":dfn:`positional-or-keyword`: specifies an argument that can be passed " "either :term:`positionally ` or as a :term:`keyword argument " @@ -2600,11 +2613,11 @@ msgstr "" "`. Αυτό είναι το προεπιλεγμένο είδος παραμέτρου, για παράδειγμα " "*foo* και *bar* στα ακόλουθα::" -#: glossary.rst:1031 +#: glossary.rst:1037 msgid "def func(foo, bar=None): ..." msgstr "def func(foo, bar=None): ..." -#: glossary.rst:1035 +#: glossary.rst:1041 msgid "" ":dfn:`positional-only`: specifies an argument that can be supplied only by " "position. Positional-only parameters can be defined by including a ``/`` " @@ -2616,11 +2629,11 @@ msgstr "" "χαρακτήρα ``/`` στη λίστα παραμέτρων του ορισμού συνάρτησης μετά από αυτές, " "για παράδειγμα *posonly1* και *posonly2* στα εξής::" -#: glossary.rst:1040 +#: glossary.rst:1046 msgid "def func(posonly1, posonly2, /, positional_or_keyword): ..." msgstr "def func(posonly1, posonly2, /, positional_or_keyword): ..." -#: glossary.rst:1044 +#: glossary.rst:1050 msgid "" ":dfn:`keyword-only`: specifies an argument that can be supplied only by " "keyword. Keyword-only parameters can be defined by including a single var-" @@ -2634,11 +2647,11 @@ msgstr "" "του ορισμού συνάρτησης πριν από αυτές, για παράδειγμα *kw_only1* και " "*kw_only2* στα ακόλουθα::" -#: glossary.rst:1050 +#: glossary.rst:1056 msgid "def func(arg, *, kw_only1, kw_only2): ..." msgstr "def func(arg, *, kw_only1, kw_only2): ..." -#: glossary.rst:1052 +#: glossary.rst:1058 msgid "" ":dfn:`var-positional`: specifies that an arbitrary sequence of positional " "arguments can be provided (in addition to any positional arguments already " @@ -2652,11 +2665,11 @@ msgstr "" "προσαρτώντας το όνομα της παραμέτρου με ``*``, για παράδειγμα *args* στα " "ακόλουθα::" -#: glossary.rst:1058 +#: glossary.rst:1064 msgid "def func(*args, **kwargs): ..." msgstr "def func(*args, **kwargs): ..." -#: glossary.rst:1060 +#: glossary.rst:1066 msgid "" ":dfn:`var-keyword`: specifies that arbitrarily many keyword arguments can be " "provided (in addition to any keyword arguments already accepted by other " @@ -2669,7 +2682,7 @@ msgstr "" "οριστεί προσαρτώντας το όνομα της παραμέτρου με ``**``, για παράδειγμα " "*kwargs* όπως παραπάνω." -#: glossary.rst:1066 +#: glossary.rst:1072 msgid "" "Parameters can specify both optional and required arguments, as well as " "default values for some optional arguments." @@ -2678,7 +2691,7 @@ msgstr "" "απαιτούμενα ορίσματα , καθώς και προεπιλεγμένες τιμές για ορισμένα " "προαιρετικά ορίσματα." -#: glossary.rst:1069 +#: glossary.rst:1075 msgid "" "See also the :term:`argument` glossary entry, the FAQ question on :ref:`the " "difference between arguments and parameters `, " @@ -2690,11 +2703,11 @@ msgstr "" "parameter>`, την κλάση :class:`inspect.Parameter`, την ενότητα :ref:" "`function` και :pep:`362`." -#: glossary.rst:1073 +#: glossary.rst:1079 msgid "path entry" msgstr "path entry" -#: glossary.rst:1075 +#: glossary.rst:1081 msgid "" "A single location on the :term:`import path` which the :term:`path based " "finder` consults to find modules for importing." @@ -2702,11 +2715,11 @@ msgstr "" "Μια μεμονωμένη τοποθεσία στο :term:`import path` την οποία συμβουλεύεται ο :" "term:`path based finder` για να βρει modules για εισαγωγή." -#: glossary.rst:1077 +#: glossary.rst:1083 msgid "path entry finder" msgstr "path entry finder" -#: glossary.rst:1079 +#: glossary.rst:1085 msgid "" "A :term:`finder` returned by a callable on :data:`sys.path_hooks` (i.e. a :" "term:`path entry hook`) which knows how to locate modules given a :term:" @@ -2716,7 +2729,7 @@ msgstr "" "path_hooks` (δηλαδή ένα :term:`path entry hook`) που ξέρει πως να εντοπίζει " "modules με :term:`path entry`." -#: glossary.rst:1083 +#: glossary.rst:1089 msgid "" "See :class:`importlib.abc.PathEntryFinder` for the methods that path entry " "finders implement." @@ -2724,11 +2737,11 @@ msgstr "" "Βλ. :class:`importlib.abc.PathEntryFinder` για τις μεθόδους που ο entry " "finder διαδρομής υλοποιεί." -#: glossary.rst:1085 +#: glossary.rst:1091 msgid "path entry hook" msgstr "path entry hook" -#: glossary.rst:1087 +#: glossary.rst:1093 msgid "" "A callable on the :data:`sys.path_hooks` list which returns a :term:`path " "entry finder` if it knows how to find modules on a specific :term:`path " @@ -2738,11 +2751,11 @@ msgstr "" "term:`path entry finder` εάν ξέρει πως να βρίσκει module σε μια " "συγκεκριμένη :term:`path entry`." -#: glossary.rst:1090 +#: glossary.rst:1096 msgid "path based finder" msgstr "path based finder" -#: glossary.rst:1092 +#: glossary.rst:1098 msgid "" "One of the default :term:`meta path finders ` which " "searches an :term:`import path` for modules." @@ -2750,11 +2763,11 @@ msgstr "" "Ένα από τα προεπιλεγμένα :term:`meta path finders ` που " "αναζητά ένα :term:`import path` για modules." -#: glossary.rst:1094 +#: glossary.rst:1100 msgid "path-like object" msgstr "path-like αντικείμενο" -#: glossary.rst:1096 +#: glossary.rst:1102 msgid "" "An object representing a file system path. A path-like object is either a :" "class:`str` or :class:`bytes` object representing a path, or an object " @@ -2775,11 +2788,11 @@ msgstr "" "ενός αποτελέσματος :class:`str` ή :class:`bytes`, αντίστοιχα. Εισήχθη από " "τον :pep:`519`." -#: glossary.rst:1104 +#: glossary.rst:1110 msgid "PEP" msgstr "PEP" -#: glossary.rst:1106 +#: glossary.rst:1112 msgid "" "Python Enhancement Proposal. A PEP is a design document providing " "information to the Python community, or describing a new feature for Python " @@ -2792,7 +2805,7 @@ msgstr "" "μια συνοπτική τεχνική προδιαγραφή και μια λογική για τα προτεινόμενα " "χαρακτηριστικά." -#: glossary.rst:1112 +#: glossary.rst:1118 msgid "" "PEPs are intended to be the primary mechanisms for proposing major new " "features, for collecting community input on an issue, and for documenting " @@ -2806,15 +2819,15 @@ msgstr "" "στην Python. Ο συγγραφέας του PEP είναι υπεύθυνος για την οικοδόμηση " "συναίνεσης εντός της κοινότητας και την τεκμηρίωση αντίθετων απόψεων." -#: glossary.rst:1118 +#: glossary.rst:1124 msgid "See :pep:`1`." msgstr "Βλ. :pep:`1`." -#: glossary.rst:1119 +#: glossary.rst:1125 msgid "portion" msgstr "τμήμα" -#: glossary.rst:1121 +#: glossary.rst:1127 msgid "" "A set of files in a single directory (possibly stored in a zip file) that " "contribute to a namespace package, as defined in :pep:`420`." @@ -2823,15 +2836,15 @@ msgstr "" "αρχείο *zip*) που συμβάλλουν σε ένα namespace πακέτο, όπως ορίζεται στο :pep:" "`420`." -#: glossary.rst:1123 +#: glossary.rst:1129 msgid "positional argument" msgstr "όρισμα θέσης" -#: glossary.rst:1126 +#: glossary.rst:1132 msgid "provisional API" msgstr "provisional API" -#: glossary.rst:1128 +#: glossary.rst:1134 msgid "" "A provisional API is one which has been deliberately excluded from the " "standard library's backwards compatibility guarantees. While major changes " @@ -2850,7 +2863,7 @@ msgstr "" "αποκαλυφθούν σοβαρά θεμελιώδη ελαττώματα που παραλείφθηκαν πριν από τη " "συμπερίληψη του API." -#: glossary.rst:1137 +#: glossary.rst:1143 msgid "" "Even for provisional APIs, backwards incompatible changes are seen as a " "\"solution of last resort\" - every attempt will still be made to find a " @@ -2860,7 +2873,7 @@ msgstr "" "\"λύση έσχατης ανάγκης\"- θα εξακολουθεί να γίνεται κάθε προσπάθεια για να " "βρεθεί μια λύση backwards συμβατή σε τυχόν εντοπισμένα προβλήματα." -#: glossary.rst:1141 +#: glossary.rst:1147 msgid "" "This process allows the standard library to continue to evolve over time, " "without locking in problematic design errors for extended periods of time. " @@ -2871,19 +2884,19 @@ msgstr "" "σφάλματα σχεδιασμού για εκτεταμένες χρονικές περιόδους. Βλ. :pep:`411` για " "περισσότερες λεπτομέρειες." -#: glossary.rst:1144 +#: glossary.rst:1150 msgid "provisional package" msgstr "provisional πακέτο" -#: glossary.rst:1146 +#: glossary.rst:1152 msgid "See :term:`provisional API`." msgstr "Βλ. :term:`provisional API`." -#: glossary.rst:1147 +#: glossary.rst:1153 msgid "Python 3000" msgstr "Python 3000" -#: glossary.rst:1149 +#: glossary.rst:1155 msgid "" "Nickname for the Python 3.x release line (coined long ago when the release " "of version 3 was something in the distant future.) This is also abbreviated " @@ -2893,11 +2906,11 @@ msgstr "" "όταν η κυκλοφορία της έκδοσης 3 ήταν κάτι στο μακρινό μέλλον.) Αυτό " "ονομάζεται επίσης ως συντομογραφία \"Py3k\"." -#: glossary.rst:1152 +#: glossary.rst:1158 msgid "Pythonic" msgstr "Pythonic" -#: glossary.rst:1154 +#: glossary.rst:1160 msgid "" "An idea or piece of code which closely follows the most common idioms of the " "Python language, rather than implementing code using concepts common to " @@ -2914,7 +2927,7 @@ msgstr "" "κατασκευής, έτσι οι άνθρωποι που δεν είναι εξοικειωμένοι με την Python " "χρησιμοποιούν μερικές φορές έναν αριθμητικό μετρητή::" -#: glossary.rst:1161 +#: glossary.rst:1167 msgid "" "for i in range(len(food)):\n" " print(food[i])" @@ -2922,11 +2935,11 @@ msgstr "" "for i in range(len(food)):\n" " print(food[i])" -#: glossary.rst:1164 +#: glossary.rst:1170 msgid "As opposed to the cleaner, Pythonic method::" msgstr "Αντίθετα, μια πιο καθαρή μέθοδος Pythonic::" -#: glossary.rst:1166 +#: glossary.rst:1172 msgid "" "for piece in food:\n" " print(piece)" @@ -2934,11 +2947,11 @@ msgstr "" "for piece in food:\n" " print(piece)" -#: glossary.rst:1168 +#: glossary.rst:1174 msgid "qualified name" msgstr "αναγνωρισμένο όνομα" -#: glossary.rst:1170 +#: glossary.rst:1176 msgid "" "A dotted name showing the \"path\" from a module's global scope to a class, " "function or method defined in that module, as defined in :pep:`3155`. For " @@ -2950,7 +2963,7 @@ msgstr "" "ενότητα, όπως ορίζεται στο :pep:`3155`. Για συναρτήσεις και κλάσεις ανώτατου " "επιπέδου, το αναγνωρισμένο όνομα είναι ίδιο με το όνομα του αντικειμένου::" -#: glossary.rst:1175 +#: glossary.rst:1181 msgid "" ">>> class C:\n" "... class D:\n" @@ -2976,7 +2989,7 @@ msgstr "" ">>> C.D.meth.__qualname__\n" "'C.D.meth'" -#: glossary.rst:1187 +#: glossary.rst:1193 msgid "" "When used to refer to modules, the *fully qualified name* means the entire " "dotted path to the module, including any parent packages, e.g. ``email.mime." @@ -2986,7 +2999,7 @@ msgstr "" "όνομα* σημαίνει ολόκληρο το διακεκομμένο path προς το module, " "συμπεριλαμβανομένων τυχόν γονικών πακέτων π.χ. ``email.mime.text``::" -#: glossary.rst:1191 +#: glossary.rst:1197 msgid "" ">>> import email.mime.text\n" ">>> email.mime.text.__name__\n" @@ -2996,11 +3009,11 @@ msgstr "" ">>> email.mime.text.__name__\n" "'email.mime.text'" -#: glossary.rst:1194 +#: glossary.rst:1200 msgid "reference count" msgstr "πλήθος αναφοράς" -#: glossary.rst:1196 +#: glossary.rst:1202 msgid "" "The number of references to an object. When the reference count of an " "object drops to zero, it is deallocated. Some objects are :term:`immortal` " @@ -3019,11 +3032,11 @@ msgstr "" "συνάρτηση :func:`sys.getrefcount` για να επιστρέψουν το πλήθος αναφοράς για " "ένα συγκεκριμένο αντικείμενο." -#: glossary.rst:1204 +#: glossary.rst:1210 msgid "regular package" msgstr "κανονικό πακέτο" -#: glossary.rst:1206 +#: glossary.rst:1212 msgid "" "A traditional :term:`package`, such as a directory containing an ``__init__." "py`` file." @@ -3031,15 +3044,15 @@ msgstr "" "Ένα παραδοσιακό :term:`package`, όπως ένας κατάλογος που περιέχει ένα " "``__init__.py`` αρχείο." -#: glossary.rst:1209 +#: glossary.rst:1215 msgid "See also :term:`namespace package`." msgstr "Βλ. επίσης :term:`namespace package`." -#: glossary.rst:1210 +#: glossary.rst:1216 msgid "REPL" msgstr "REPL" -#: glossary.rst:1212 +#: glossary.rst:1218 msgid "" "An acronym for the \"read–eval–print loop\", another name for the :term:" "`interactive` interpreter shell." @@ -3047,11 +3060,11 @@ msgstr "" "Ακρωνύμιο του \"read–eval–print loop\", άλλη ονομασία για το :term:" "`interactive` περιβάλλον του διερμηνέα." -#: glossary.rst:1214 +#: glossary.rst:1220 msgid "__slots__" msgstr "__slots__" -#: glossary.rst:1216 +#: glossary.rst:1222 msgid "" "A declaration inside a class that saves memory by pre-declaring space for " "instance attributes and eliminating instance dictionaries. Though popular, " @@ -3065,11 +3078,11 @@ msgstr "" "σωστή και προορίζεται καλύτερα για σπάνιες περιπτώσεις όπου υπάρχει μεγάλος " "αριθμός στιγμιοτύπων σε μια εφαρμογή κρίσιμης-μνήμης." -#: glossary.rst:1221 +#: glossary.rst:1227 msgid "sequence" msgstr "ακολουθία" -#: glossary.rst:1223 +#: glossary.rst:1229 msgid "" "An :term:`iterable` which supports efficient element access using integer " "indices via the :meth:`~object.__getitem__` special method and defines a :" @@ -3090,7 +3103,7 @@ msgstr "" "ακολουθία επειδή οι αναζητήσεις χρησιμοποιούν αυθαίρετα :term:`hashable` " "κλειδιά παρά ακέραιοι." -#: glossary.rst:1232 +#: glossary.rst:1238 msgid "" "The :class:`collections.abc.Sequence` abstract base class defines a much " "richer interface that goes beyond just :meth:`~object.__getitem__` and :meth:" @@ -3109,11 +3122,11 @@ msgstr "" "σχετικά με τις μεθόδους ακολουθίας γενικά, ανατρέξτε στο :ref:`Common " "Sequence Operations `." -#: glossary.rst:1241 +#: glossary.rst:1247 msgid "set comprehension" msgstr "set comprehension" -#: glossary.rst:1243 +#: glossary.rst:1249 msgid "" "A compact way to process all or part of the elements in an iterable and " "return a set with the results. ``results = {c for c in 'abracadabra' if c " @@ -3125,11 +3138,11 @@ msgstr "" "c in 'abracadabra' if c not in 'abc'}`` δημιουργεί το σύνολο συμβολοσειρών " "``{'r', 'd'}``. Βλ. :ref:`comprehensions`." -#: glossary.rst:1247 +#: glossary.rst:1253 msgid "single dispatch" msgstr "μοναδικό dispatch" -#: glossary.rst:1249 +#: glossary.rst:1255 msgid "" "A form of :term:`generic function` dispatch where the implementation is " "chosen based on the type of a single argument." @@ -3137,11 +3150,11 @@ msgstr "" "Μια μορφή dispatch :term:`generic function` όπου η υλοποίηση επιλέγεται με " "βάση τον τύπο ενός μεμονωμένου ορίσματος." -#: glossary.rst:1251 +#: glossary.rst:1257 msgid "slice" msgstr "slice" -#: glossary.rst:1253 +#: glossary.rst:1259 msgid "" "An object usually containing a portion of a :term:`sequence`. A slice is " "created using the subscript notation, ``[]`` with colons between numbers " @@ -3154,11 +3167,11 @@ msgstr "" "``variable_name[1:3:5]``. Η σημείωση αγκύλης (subscript) χρησιμοποιεί " "εσωτερικά αντικείμενα :class:`slice`." -#: glossary.rst:1257 +#: glossary.rst:1263 msgid "soft deprecated" msgstr "απαρχαιωμένη με ήπιο τρόπο" -#: glossary.rst:1259 +#: glossary.rst:1265 msgid "" "A soft deprecated API should not be used in new code, but it is safe for " "already existing code to use it. The API remains documented and tested, but " @@ -3168,7 +3181,7 @@ msgstr "" "κώδικα, αλλά είναι ασφαλές σε ήδη υπάρχοντα κώδικα να το χρησιμοποιεί. Το " "API παραμένει τεκμηριωμένο και δοκιμασμένο, αλλά δεν θα ενισχυθεί περαιτέρω." -#: glossary.rst:1263 +#: glossary.rst:1269 msgid "" "Soft deprecation, unlike normal deprecation, does not plan on removing the " "API and will not emit warnings." @@ -3176,7 +3189,7 @@ msgstr "" "Η κατάργηση με ήπιο τρόπο, σε αντίθεση με την κανονική κατάργηση, δεν " "σχεδιάζει την κατάργηση του API και δεν θα εκπέμπει ειδοποιήσεις" -#: glossary.rst:1266 +#: glossary.rst:1272 msgid "" "See `PEP 387: Soft Deprecation `_." @@ -3184,11 +3197,11 @@ msgstr "" "Δείτε `PEP 387: Soft Deprecation `_." -#: glossary.rst:1268 +#: glossary.rst:1274 msgid "special method" msgstr "ειδική μέθοδος" -#: glossary.rst:1272 +#: glossary.rst:1278 msgid "" "A method that is called implicitly by Python to execute a certain operation " "on a type, such as addition. Such methods have names starting and ending " @@ -3200,11 +3213,11 @@ msgstr "" "έχουνε ονόματα που ξεκινούν και τελειώνουν με διπλές κάτω παύλες. Οι ειδικές " "μέθοδοι τεκμηριώνονται στο :ref:`specialnames`." -#: glossary.rst:1276 +#: glossary.rst:1282 msgid "statement" msgstr "δήλωση" -#: glossary.rst:1278 +#: glossary.rst:1284 msgid "" "A statement is part of a suite (a \"block\" of code). A statement is either " "an :term:`expression` or one of several constructs with a keyword, such as :" @@ -3214,11 +3227,11 @@ msgstr "" "είναι είτε ένας :term:`expression` είτε μια από πολλές δομές με μια λέξη-" "κλειδί όπως :keyword:`if`, :keyword:`while` ή :keyword:`for`." -#: glossary.rst:1281 +#: glossary.rst:1287 msgid "static type checker" msgstr "ελεγκτής στατικού τύπου" -#: glossary.rst:1283 +#: glossary.rst:1289 msgid "" "An external tool that reads Python code and analyzes it, looking for issues " "such as incorrect types. See also :term:`type hints ` and the :" @@ -3228,11 +3241,11 @@ msgstr "" "αναζητώντας προβλήματα όπως λανθασμένοι τύποι. Βλ. επίσης :term:`type hints " "` και το module :mod:`typing`." -#: glossary.rst:1286 +#: glossary.rst:1292 msgid "strong reference" msgstr "strong reference" -#: glossary.rst:1288 +#: glossary.rst:1294 msgid "" "In Python's C API, a strong reference is a reference to an object which is " "owned by the code holding the reference. The strong reference is taken by " @@ -3245,7 +3258,7 @@ msgstr "" "δημιουργείται και απελευθερώνεται με :c:func:`Py_DECREF` όταν διαγραφεί η " "αναφορά." -#: glossary.rst:1294 +#: glossary.rst:1300 msgid "" "The :c:func:`Py_NewRef` function can be used to create a strong reference to " "an object. Usually, the :c:func:`Py_DECREF` function must be called on the " @@ -3257,15 +3270,15 @@ msgstr "" "`Py_DECREF` πρέπει να καλείται στην ισχυρή αναφορά πριν βγει από το εύρος " "της ισχυρής αναφοράς, για να αποφευχθεί η διαρροή μιας αναφοράς." -#: glossary.rst:1299 +#: glossary.rst:1305 msgid "See also :term:`borrowed reference`." msgstr "Βλ. επίσης :term:`borrowed reference`." -#: glossary.rst:1300 +#: glossary.rst:1306 msgid "text encoding" msgstr "κωδικοποίηση κειμένου" -#: glossary.rst:1302 +#: glossary.rst:1308 msgid "" "A string in Python is a sequence of Unicode code points (in range " "``U+0000``--``U+10FFFF``). To store or transfer a string, it needs to be " @@ -3275,7 +3288,7 @@ msgstr "" "εύρος ``U+0000``--``U+10FFFF``). Για να αποθηκεύσετε ή να μεταφέρετε μια " "συμβολοσειρά, πρέπει να σειριοποιηθεί ως δυαδική ακολουθία." -#: glossary.rst:1306 +#: glossary.rst:1312 msgid "" "Serializing a string into a sequence of bytes is known as \"encoding\", and " "recreating the string from the sequence of bytes is known as \"decoding\"." @@ -3284,7 +3297,7 @@ msgstr "" "\"κωδικοποίηση\" , και η αναδημιουργία της συμβολοσειράς από την δυαδική " "ακολουθία είναι γνωστή ως \"αποκωδικοποίηση\"." -#: glossary.rst:1309 +#: glossary.rst:1315 msgid "" "There are a variety of different text serialization :ref:`codecs `, which are collectively referred to as \"text encodings\"." @@ -3293,11 +3306,11 @@ msgstr "" "`, οι οποίοι συλλογικά αναφέρονται ως \"κωδικοποιήσεις " "κειμένου\"." -#: glossary.rst:1312 +#: glossary.rst:1318 msgid "text file" msgstr "αρχείο κειμένου" -#: glossary.rst:1314 +#: glossary.rst:1320 msgid "" "A :term:`file object` able to read and write :class:`str` objects. Often, a " "text file actually accesses a byte-oriented datastream and handles the :term:" @@ -3312,7 +3325,7 @@ msgstr "" "κειμένου (``'r'`` ή ``'w'``), :data:`sys.stdin`, :data:`sys.stdout`, και " "στιγμιότυπα του :class:`io.StringIO`." -#: glossary.rst:1321 +#: glossary.rst:1327 msgid "" "See also :term:`binary file` for a file object able to read and write :term:" "`bytes-like objects `." @@ -3320,11 +3333,11 @@ msgstr "" "Βλ. επίσης :term:`binary file` για ένα αντικείμενο αρχείου με δυνατότητα " "ανάγνωσης και εγγραφής :term:`δυαδικά αντικείμενα `." -#: glossary.rst:1323 +#: glossary.rst:1329 msgid "thread state" msgstr "κατάσταση νήματος" -#: glossary.rst:1326 +#: glossary.rst:1332 msgid "" "The information used by the :term:`CPython` runtime to run in an OS thread. " "For example, this includes the current exception, if any, and the state of " @@ -3335,7 +3348,7 @@ msgstr "" "περιλαμβάνει την τρέχουσα εξαίρεση, εάν υπάρχει, και την κατάσταση του " "διερμηνέα bytecode." -#: glossary.rst:1330 +#: glossary.rst:1336 msgid "" "Each thread state is bound to a single OS thread, but threads may have many " "thread states available. At most, one of them may be :term:`attached " @@ -3346,7 +3359,7 @@ msgstr "" "νήματος. Το πολύ, μία από αυτές μπορεί να είναι :term:`attached ` ταυτόχρονα." -#: glossary.rst:1334 +#: glossary.rst:1340 msgid "" "An :term:`attached thread state` is required to call most of Python's C API, " "unless a function explicitly documents otherwise. The bytecode interpreter " @@ -3357,7 +3370,7 @@ msgstr "" "το αντίθετο. Ο διερμηνέας bytecode εκτελείται μόνο υπό κατάσταση συνημμένου " "νήματος." -#: glossary.rst:1338 +#: glossary.rst:1344 msgid "" "Each thread state belongs to a single interpreter, but each interpreter may " "have many thread states, including multiple for the same OS thread. Thread " @@ -3372,7 +3385,7 @@ msgstr "" "μπορεί να είναι :term:`attached ` σε αυτό το νήμα σε " "οποιαδήποτε δεδομένη στιγμή." -#: glossary.rst:1344 +#: glossary.rst:1350 msgid "" "See :ref:`Thread State and the Global Interpreter Lock ` for more " "information." @@ -3380,11 +3393,11 @@ msgstr "" "Δείτε το :ref:`Thread State and the Global Interpreter Lock ` για " "περισσότερες πληροφορίες." -#: glossary.rst:1346 +#: glossary.rst:1352 msgid "token" msgstr "λεκτικό σύμβολο (token)" -#: glossary.rst:1349 +#: glossary.rst:1355 msgid "" "A small unit of source code, generated by the :ref:`lexical analyzer " "` (also called the *tokenizer*). Names, numbers, strings, " @@ -3395,7 +3408,7 @@ msgstr "" "συμβολοσειρές, τελεστές αλλαγές γραμμής και παρόμοια στοιχεία αναπαρίστανται " "ως λεκτικά σύμβολα (tokens)." -#: glossary.rst:1354 +#: glossary.rst:1360 msgid "" "The :mod:`tokenize` module exposes Python's lexical analyzer. The :mod:" "`token` module contains information on the various types of tokens." @@ -3404,11 +3417,11 @@ msgstr "" "mod:`token` περιέχει πληροφορίες για τους διάφορους τύπους λεκτικών συμβόλων " "(tokens)." -#: glossary.rst:1357 +#: glossary.rst:1363 msgid "triple-quoted string" msgstr "συμβολοσειρά τριπλών εισαγωγικών" -#: glossary.rst:1359 +#: glossary.rst:1365 msgid "" "A string which is bound by three instances of either a quotation mark (\") " "or an apostrophe ('). While they don't provide any functionality not " @@ -3426,11 +3439,11 @@ msgstr "" "γραμμές χωρίς τη χρήση του χαρακτήρα συνέχεια, καθιστώντας τα ιδιαίτερα " "χρήσιμα κατά τη σύνταξη εγγράφων με συμβολοσειρές." -#: glossary.rst:1366 +#: glossary.rst:1372 msgid "type" msgstr "τύπος" -#: glossary.rst:1368 +#: glossary.rst:1374 msgid "" "The type of a Python object determines what kind of object it is; every " "object has a type. An object's type is accessible as its :attr:`~object." @@ -3441,17 +3454,17 @@ msgstr "" "το χαρακτηριστικό :attr:`~object.__class__` ή μπορεί να ανακτηθεί με " "``type(obj)``." -#: glossary.rst:1372 +#: glossary.rst:1378 msgid "type alias" msgstr "type alias" -#: glossary.rst:1374 +#: glossary.rst:1380 msgid "A synonym for a type, created by assigning the type to an identifier." msgstr "" "Ένα συνώνυμο για έναν τύπο, που δημιουργείται με την ανάθεση τύπου σε ένα " "αναγνωριστικό." -#: glossary.rst:1376 +#: glossary.rst:1382 msgid "" "Type aliases are useful for simplifying :term:`type hints `. For " "example::" @@ -3459,7 +3472,7 @@ msgstr "" "Τα type aliases είναι χρήσιμα για την απλοποίηση :term:`type alias `. Για παράδειγμα::" -#: glossary.rst:1379 +#: glossary.rst:1385 msgid "" "def remove_gray_shades(\n" " colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:\n" @@ -3469,11 +3482,11 @@ msgstr "" " colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:\n" " pass" -#: glossary.rst:1383 +#: glossary.rst:1389 msgid "could be made more readable like this::" msgstr "μπορεί να γίνει πιο ευανάγνωστο όπως::" -#: glossary.rst:1385 +#: glossary.rst:1391 msgid "" "Color = tuple[int, int, int]\n" "\n" @@ -3485,16 +3498,16 @@ msgstr "" "def remove_gray_shades(colors: list[Color]) -> list[Color]:\n" " pass" -#: glossary.rst:1404 +#: glossary.rst:1410 msgid "See :mod:`typing` and :pep:`484`, which describe this functionality." msgstr "" "Βλ. :mod:`typing` και :pep:`484`, που περιγράφει αυτήν την λειτουργικότητα." -#: glossary.rst:1391 +#: glossary.rst:1397 msgid "type hint" msgstr "type hint" -#: glossary.rst:1393 +#: glossary.rst:1399 msgid "" "An :term:`annotation` that specifies the expected type for a variable, a " "class attribute, or a function parameter or return value." @@ -3503,7 +3516,7 @@ msgstr "" "μεταβλητή, ένα χαρακτηριστικό κλάσης ή μια παράμετρο συνάρτησης ή τιμή " "επιστροφής." -#: glossary.rst:1396 +#: glossary.rst:1402 msgid "" "Type hints are optional and are not enforced by Python but they are useful " "to :term:`static type checkers `. They can also aid " @@ -3514,7 +3527,7 @@ msgstr "" "checker>`. Μπορούν επίσης να βοηθήσουν τους IDEs με τη συμπλήρωση και την " "αναδιαμόρφωση κώδικα." -#: glossary.rst:1400 +#: glossary.rst:1406 msgid "" "Type hints of global variables, class attributes, and functions, but not " "local variables, can be accessed using :func:`typing.get_type_hints`." @@ -3523,11 +3536,11 @@ msgstr "" "κλάσης και συναρτήσεις , αλλά όχι τοπικές μεταβλητές, μπορούν να " "προσπελαστούν χρησιμοποιώντας το :func:`typing.get_type_hints`." -#: glossary.rst:1405 +#: glossary.rst:1411 msgid "universal newlines" msgstr "καθολικές νέες γραμμές" -#: glossary.rst:1407 +#: glossary.rst:1413 msgid "" "A manner of interpreting text streams in which all of the following are " "recognized as ending a line: the Unix end-of-line convention ``'\\n'``, the " @@ -3541,22 +3554,22 @@ msgstr "" "Βλ. :pep:`278` και :pep:`3116`, καθώς και :func:`bytes.splitlines` για " "πρόσθετη χρήση." -#: glossary.rst:1412 +#: glossary.rst:1418 msgid "variable annotation" msgstr "annotation μεταβλητής" -#: glossary.rst:1414 +#: glossary.rst:1420 msgid "An :term:`annotation` of a variable or a class attribute." msgstr "Ένας :term:`annotation` μια μεταβλητής ή ενός χαρακτηριστικού κλάσης." -#: glossary.rst:1416 +#: glossary.rst:1422 msgid "" "When annotating a variable or a class attribute, assignment is optional::" msgstr "" "Όταν annotating μια μεταβλητή ή ένα χαρακτηριστικό κλάσης, η ανάθεση είναι " "προαιρετική::" -#: glossary.rst:1418 +#: glossary.rst:1424 msgid "" "class C:\n" " field: 'annotation'" @@ -3564,7 +3577,7 @@ msgstr "" "class C:\n" " field: 'annotation'" -#: glossary.rst:1421 +#: glossary.rst:1427 msgid "" "Variable annotations are usually used for :term:`type hints `: " "for example this variable is expected to take :class:`int` values::" @@ -3573,16 +3586,16 @@ msgstr "" "`: για παράδειγμα αυτή η μεταβλητή αναμένεται να λάβει τιμές :" "class:`int`::" -#: glossary.rst:1425 +#: glossary.rst:1431 msgid "count: int = 0" msgstr "count: int = 0" -#: glossary.rst:1427 +#: glossary.rst:1433 msgid "Variable annotation syntax is explained in section :ref:`annassign`." msgstr "" "Η σύνταξη annotation μεταβλητής περιγράφεται στην ενότητα :ref:`annassign`." -#: glossary.rst:1429 +#: glossary.rst:1435 msgid "" "See :term:`function annotation`, :pep:`484` and :pep:`526`, which describe " "this functionality. Also see :ref:`annotations-howto` for best practices on " @@ -3592,11 +3605,11 @@ msgstr "" "αυτή τη λειτουργία. Δείτε επίσης :ref:`annotations-howto` για βέλτιστες " "πρακτικές σχετικά με την εργασία με σχολιασμούς." -#: glossary.rst:1433 +#: glossary.rst:1439 msgid "virtual environment" msgstr "virtual environment" -#: glossary.rst:1435 +#: glossary.rst:1441 msgid "" "A cooperatively isolated runtime environment that allows Python users and " "applications to install and upgrade Python distribution packages without " @@ -3608,15 +3621,15 @@ msgstr "" "πακέτα διανομής Python χωρίς να παρεμβαίνουν στη συμπεριφορά άλλων εφαρμογών " "Python που εκτελούνται στο ίδιο σύστημα." -#: glossary.rst:1440 +#: glossary.rst:1446 msgid "See also :mod:`venv`." msgstr "Βλ. επίσης :mod:`venv`." -#: glossary.rst:1441 +#: glossary.rst:1447 msgid "virtual machine" msgstr "virtual machine" -#: glossary.rst:1443 +#: glossary.rst:1449 msgid "" "A computer defined entirely in software. Python's virtual machine executes " "the :term:`bytecode` emitted by the bytecode compiler." @@ -3625,11 +3638,11 @@ msgstr "" "της Python εκτελεί το :term:`bytecode` που εκπέμπεται από τον μεταγλωττιστή " "bytecode." -#: glossary.rst:1445 +#: glossary.rst:1451 msgid "Zen of Python" msgstr "Zen της Python" -#: glossary.rst:1447 +#: glossary.rst:1453 msgid "" "Listing of Python design principles and philosophies that are helpful in " "understanding and using the language. The listing can be found by typing " @@ -3647,11 +3660,11 @@ msgstr "C-contiguous" msgid "Fortran contiguous" msgstr "Fortran contiguous" -#: glossary.rst:870 +#: glossary.rst:876 msgid "magic" msgstr "magic" -#: glossary.rst:1270 +#: glossary.rst:1276 msgid "special" msgstr "special" diff --git a/howto/annotations.po b/howto/annotations.po index 6a11aa77..ffa44f85 100644 --- a/howto/annotations.po +++ b/howto/annotations.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -375,5 +375,14 @@ msgid "" "`annotationlib.get_annotations` on Python 3.14+ or :func:`inspect." "get_annotations` on Python 3.10+. On earlier versions of Python, you can " "avoid these bugs by accessing the annotations from the class's :attr:`~type." -"__dict__` (e.g., ``cls.__dict__.get('__annotations__', None)``)." +"__dict__` (for example, ``cls.__dict__.get('__annotations__', None)``)." +msgstr "" + +#: howto/annotations.rst:253 +msgid "" +"In some versions of Python, instances of classes may have an " +"``__annotations__`` attribute. However, this is not supported functionality. " +"If you need the annotations of an instance, you can use :func:`type` to " +"access its class (for example, ``annotationlib." +"get_annotations(type(myinstance))`` on Python 3.14+)." msgstr "" diff --git a/howto/argparse-optparse.po b/howto/argparse-optparse.po index c68f6513..b2a619c1 100644 --- a/howto/argparse-optparse.po +++ b/howto/argparse-optparse.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/argparse.po b/howto/argparse.po index d38e8378..dffe068a 100644 --- a/howto/argparse.po +++ b/howto/argparse.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/clinic.po b/howto/clinic.po index 7685980e..f0c5c5d7 100644 --- a/howto/clinic.po +++ b/howto/clinic.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/cporting.po b/howto/cporting.po index 44dc796e..6b178f39 100644 --- a/howto/cporting.po +++ b/howto/cporting.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -42,8 +42,8 @@ msgstr "" #: howto/cporting.rst:17 msgid "" -"The `Cython`_ and `CFFI`_ libraries offer abstractions over Python's C API. " -"Extensions generally need to be re-written to use one of them, but the " -"library then handles differences between various Python versions and " -"implementations." +":ref:`Recommended third party tools ` offer abstractions over " +"the Python's C API. Extensions generally need to be re-written to use one of " +"them, but the library then handles differences between various Python " +"versions and implementations." msgstr "" diff --git a/howto/curses.po b/howto/curses.po index 6960e2d7..70698e6a 100644 --- a/howto/curses.po +++ b/howto/curses.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/descriptor.po b/howto/descriptor.po index 8450ccce..e6faae49 100644 --- a/howto/descriptor.po +++ b/howto/descriptor.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/enum.po b/howto/enum.po index 2df8254b..029e26ec 100644 --- a/howto/enum.po +++ b/howto/enum.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/free-threading-extensions.po b/howto/free-threading-extensions.po index 67d5d776..be4ee690 100644 --- a/howto/free-threading-extensions.po +++ b/howto/free-threading-extensions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -23,9 +23,9 @@ msgstr "" #: howto/free-threading-extensions.rst:9 msgid "" -"Starting with the 3.13 release, CPython has experimental support for running " -"with the :term:`global interpreter lock` (GIL) disabled in a configuration " -"called :term:`free threading`. This document describes how to adapt C API " +"Starting with the 3.13 release, CPython has support for running with the :" +"term:`global interpreter lock` (GIL) disabled in a configuration called :" +"term:`free threading`. This document describes how to adapt C API " "extensions to support free threading." msgstr "" @@ -48,29 +48,37 @@ msgid "" "#endif" msgstr "" -#: howto/free-threading-extensions.rst:27 +#: howto/free-threading-extensions.rst:28 +msgid "" +"On Windows, this macro is not defined automatically, but must be specified " +"to the compiler when building. The :func:`sysconfig.get_config_var` function " +"can be used to determine whether the current running interpreter had the " +"macro defined." +msgstr "" + +#: howto/free-threading-extensions.rst:35 msgid "Module Initialization" msgstr "" -#: howto/free-threading-extensions.rst:29 +#: howto/free-threading-extensions.rst:37 msgid "" "Extension modules need to explicitly indicate that they support running with " "the GIL disabled; otherwise importing the extension will raise a warning and " "enable the GIL at runtime." msgstr "" -#: howto/free-threading-extensions.rst:33 +#: howto/free-threading-extensions.rst:41 msgid "" "There are two ways to indicate that an extension module supports running " "with the GIL disabled depending on whether the extension uses multi-phase or " "single-phase initialization." msgstr "" -#: howto/free-threading-extensions.rst:38 +#: howto/free-threading-extensions.rst:46 msgid "Multi-Phase Initialization" msgstr "" -#: howto/free-threading-extensions.rst:40 +#: howto/free-threading-extensions.rst:48 msgid "" "Extensions that use multi-phase initialization (i.e., :c:func:" "`PyModuleDef_Init`) should add a :c:data:`Py_mod_gil` slot in the module " @@ -78,7 +86,7 @@ msgid "" "should guard the slot with a :c:data:`PY_VERSION_HEX` check." msgstr "" -#: howto/free-threading-extensions.rst:47 +#: howto/free-threading-extensions.rst:55 msgid "" "static struct PyModuleDef_Slot module_slots[] = {\n" " ...\n" @@ -95,11 +103,11 @@ msgid "" "};" msgstr "" -#: howto/free-threading-extensions.rst:63 +#: howto/free-threading-extensions.rst:71 msgid "Single-Phase Initialization" msgstr "" -#: howto/free-threading-extensions.rst:65 +#: howto/free-threading-extensions.rst:73 msgid "" "Extensions that use single-phase initialization (i.e., :c:func:" "`PyModule_Create`) should call :c:func:`PyUnstable_Module_SetGIL` to " @@ -108,7 +116,7 @@ msgid "" "``#ifdef Py_GIL_DISABLED`` to avoid compilation errors in the regular build." msgstr "" -#: howto/free-threading-extensions.rst:73 +#: howto/free-threading-extensions.rst:81 msgid "" "static struct PyModuleDef moduledef = {\n" " PyModuleDef_HEAD_INIT,\n" @@ -129,21 +137,21 @@ msgid "" "}" msgstr "" -#: howto/free-threading-extensions.rst:93 +#: howto/free-threading-extensions.rst:101 msgid "General API Guidelines" msgstr "" -#: howto/free-threading-extensions.rst:95 +#: howto/free-threading-extensions.rst:103 msgid "Most of the C API is thread-safe, but there are some exceptions." msgstr "" -#: howto/free-threading-extensions.rst:97 +#: howto/free-threading-extensions.rst:105 msgid "" "**Struct Fields**: Accessing fields in Python C API objects or structs " "directly is not thread-safe if the field may be concurrently modified." msgstr "" -#: howto/free-threading-extensions.rst:99 +#: howto/free-threading-extensions.rst:107 msgid "" "**Macros**: Accessor macros like :c:macro:`PyList_GET_ITEM`, :c:macro:" "`PyList_SET_ITEM`, and macros like :c:macro:`PySequence_Fast_GET_SIZE` that " @@ -152,7 +160,7 @@ msgid "" "object may be modified concurrently." msgstr "" -#: howto/free-threading-extensions.rst:105 +#: howto/free-threading-extensions.rst:113 msgid "" "**Borrowed References**: C API functions that return :term:`borrowed " "references ` may not be thread-safe if the containing " @@ -160,11 +168,11 @@ msgid "" "references ` for more information." msgstr "" -#: howto/free-threading-extensions.rst:112 +#: howto/free-threading-extensions.rst:120 msgid "Container Thread Safety" msgstr "" -#: howto/free-threading-extensions.rst:114 +#: howto/free-threading-extensions.rst:122 msgid "" "Containers like :c:struct:`PyListObject`, :c:struct:`PyDictObject`, and :c:" "struct:`PySetObject` perform internal locking in the free-threaded build. " @@ -172,11 +180,11 @@ msgid "" "an item." msgstr "" -#: howto/free-threading-extensions.rst:122 +#: howto/free-threading-extensions.rst:130 msgid "``PyDict_Next``" msgstr "" -#: howto/free-threading-extensions.rst:124 +#: howto/free-threading-extensions.rst:132 msgid "" "A notable exception is :c:func:`PyDict_Next`, which does not lock the " "dictionary. You should use :c:macro:`Py_BEGIN_CRITICAL_SECTION` to protect " @@ -184,7 +192,7 @@ msgid "" "modified::" msgstr "" -#: howto/free-threading-extensions.rst:129 +#: howto/free-threading-extensions.rst:137 msgid "" "Py_BEGIN_CRITICAL_SECTION(dict);\n" "PyObject *key, *value;\n" @@ -195,11 +203,11 @@ msgid "" "Py_END_CRITICAL_SECTION();" msgstr "" -#: howto/free-threading-extensions.rst:139 +#: howto/free-threading-extensions.rst:147 msgid "Borrowed References" msgstr "" -#: howto/free-threading-extensions.rst:143 +#: howto/free-threading-extensions.rst:151 msgid "" "Some C API functions return :term:`borrowed references `. These APIs are not thread-safe if the containing object is " @@ -207,95 +215,95 @@ msgid "" "`PyList_GetItem` if the list may be modified concurrently." msgstr "" -#: howto/free-threading-extensions.rst:148 +#: howto/free-threading-extensions.rst:156 msgid "" "The following table lists some borrowed reference APIs and their " "replacements that return :term:`strong references `." msgstr "" -#: howto/free-threading-extensions.rst:152 +#: howto/free-threading-extensions.rst:160 msgid "Borrowed reference API" msgstr "" -#: howto/free-threading-extensions.rst:152 +#: howto/free-threading-extensions.rst:160 msgid "Strong reference API" msgstr "" -#: howto/free-threading-extensions.rst:154 +#: howto/free-threading-extensions.rst:162 msgid ":c:func:`PyList_GetItem`" msgstr "" -#: howto/free-threading-extensions.rst:154 +#: howto/free-threading-extensions.rst:162 msgid ":c:func:`PyList_GetItemRef`" msgstr "" -#: howto/free-threading-extensions.rst:156 +#: howto/free-threading-extensions.rst:164 msgid ":c:func:`PyDict_GetItem`" msgstr "" -#: howto/free-threading-extensions.rst:156 -#: howto/free-threading-extensions.rst:158 +#: howto/free-threading-extensions.rst:164 +#: howto/free-threading-extensions.rst:166 msgid ":c:func:`PyDict_GetItemRef`" msgstr "" -#: howto/free-threading-extensions.rst:158 +#: howto/free-threading-extensions.rst:166 msgid ":c:func:`PyDict_GetItemWithError`" msgstr "" -#: howto/free-threading-extensions.rst:160 +#: howto/free-threading-extensions.rst:168 msgid ":c:func:`PyDict_GetItemString`" msgstr "" -#: howto/free-threading-extensions.rst:160 +#: howto/free-threading-extensions.rst:168 msgid ":c:func:`PyDict_GetItemStringRef`" msgstr "" -#: howto/free-threading-extensions.rst:162 +#: howto/free-threading-extensions.rst:170 msgid ":c:func:`PyDict_SetDefault`" msgstr "" -#: howto/free-threading-extensions.rst:162 +#: howto/free-threading-extensions.rst:170 msgid ":c:func:`PyDict_SetDefaultRef`" msgstr "" -#: howto/free-threading-extensions.rst:164 +#: howto/free-threading-extensions.rst:172 msgid ":c:func:`PyDict_Next`" msgstr "" -#: howto/free-threading-extensions.rst:164 +#: howto/free-threading-extensions.rst:172 msgid "none (see :ref:`PyDict_Next`)" msgstr "" -#: howto/free-threading-extensions.rst:166 +#: howto/free-threading-extensions.rst:174 msgid ":c:func:`PyWeakref_GetObject`" msgstr "" -#: howto/free-threading-extensions.rst:166 -#: howto/free-threading-extensions.rst:168 +#: howto/free-threading-extensions.rst:174 +#: howto/free-threading-extensions.rst:176 msgid ":c:func:`PyWeakref_GetRef`" msgstr "" -#: howto/free-threading-extensions.rst:168 +#: howto/free-threading-extensions.rst:176 msgid ":c:func:`PyWeakref_GET_OBJECT`" msgstr "" -#: howto/free-threading-extensions.rst:170 +#: howto/free-threading-extensions.rst:178 msgid ":c:func:`PyImport_AddModule`" msgstr "" -#: howto/free-threading-extensions.rst:170 +#: howto/free-threading-extensions.rst:178 msgid ":c:func:`PyImport_AddModuleRef`" msgstr "" -#: howto/free-threading-extensions.rst:172 +#: howto/free-threading-extensions.rst:180 msgid ":c:func:`PyCell_GET`" msgstr "" -#: howto/free-threading-extensions.rst:172 +#: howto/free-threading-extensions.rst:180 msgid ":c:func:`PyCell_Get`" msgstr "" -#: howto/free-threading-extensions.rst:175 +#: howto/free-threading-extensions.rst:183 msgid "" "Not all APIs that return borrowed references are problematic. For example, :" "c:func:`PyTuple_GetItem` is safe because tuples are immutable. Similarly, " @@ -306,18 +314,18 @@ msgid "" "context is safe." msgstr "" -#: howto/free-threading-extensions.rst:183 +#: howto/free-threading-extensions.rst:191 msgid "" "Some of these functions were added in Python 3.13. You can use the " "`pythoncapi-compat `_ package " "to provide implementations of these functions for older Python versions." msgstr "" -#: howto/free-threading-extensions.rst:191 +#: howto/free-threading-extensions.rst:199 msgid "Memory Allocation APIs" msgstr "" -#: howto/free-threading-extensions.rst:193 +#: howto/free-threading-extensions.rst:201 msgid "" "Python's memory management C API provides functions in three different :ref:" "`allocation domains `: \"raw\", \"mem\", and \"object\". " @@ -327,36 +335,36 @@ msgid "" "where this was only a best practice and not a hard requirement." msgstr "" -#: howto/free-threading-extensions.rst:202 +#: howto/free-threading-extensions.rst:210 msgid "" "Search for uses of :c:func:`PyObject_Malloc` in your extension and check " "that the allocated memory is used for Python objects. Use :c:func:" "`PyMem_Malloc` to allocate buffers instead of :c:func:`PyObject_Malloc`." msgstr "" -#: howto/free-threading-extensions.rst:209 +#: howto/free-threading-extensions.rst:217 msgid "Thread State and GIL APIs" msgstr "" -#: howto/free-threading-extensions.rst:211 +#: howto/free-threading-extensions.rst:219 msgid "" "Python provides a set of functions and macros to manage thread state and the " "GIL, such as:" msgstr "" -#: howto/free-threading-extensions.rst:214 +#: howto/free-threading-extensions.rst:222 msgid ":c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release`" msgstr "" -#: howto/free-threading-extensions.rst:215 +#: howto/free-threading-extensions.rst:223 msgid ":c:func:`PyEval_SaveThread` and :c:func:`PyEval_RestoreThread`" msgstr "" -#: howto/free-threading-extensions.rst:216 +#: howto/free-threading-extensions.rst:224 msgid ":c:macro:`Py_BEGIN_ALLOW_THREADS` and :c:macro:`Py_END_ALLOW_THREADS`" msgstr "" -#: howto/free-threading-extensions.rst:218 +#: howto/free-threading-extensions.rst:226 msgid "" "These functions should still be used in the free-threaded build to manage " "thread state even when the :term:`GIL` is disabled. For example, if you " @@ -365,7 +373,7 @@ msgid "" "Python thread state." msgstr "" -#: howto/free-threading-extensions.rst:224 +#: howto/free-threading-extensions.rst:232 msgid "" "You should continue to call :c:func:`PyEval_SaveThread` or :c:macro:" "`Py_BEGIN_ALLOW_THREADS` around blocking operations, such as I/O or lock " @@ -373,25 +381,25 @@ msgid "" "collector `." msgstr "" -#: howto/free-threading-extensions.rst:231 +#: howto/free-threading-extensions.rst:239 msgid "Protecting Internal Extension State" msgstr "" -#: howto/free-threading-extensions.rst:233 +#: howto/free-threading-extensions.rst:241 msgid "" "Your extension may have internal state that was previously protected by the " "GIL. You may need to add locking to protect this state. The approach will " "depend on your extension, but some common patterns include:" msgstr "" -#: howto/free-threading-extensions.rst:237 +#: howto/free-threading-extensions.rst:245 msgid "" "**Caches**: global caches are a common source of shared state. Consider " "using a lock to protect the cache or disabling it in the free-threaded build " "if the cache is not critical for performance." msgstr "" -#: howto/free-threading-extensions.rst:240 +#: howto/free-threading-extensions.rst:248 msgid "" "**Global State**: global state may need to be protected by a lock or moved " "to thread local storage. C11 and C++11 provide the ``thread_local`` or " @@ -399,11 +407,11 @@ msgid "" "language/storage_duration>`_." msgstr "" -#: howto/free-threading-extensions.rst:247 +#: howto/free-threading-extensions.rst:255 msgid "Critical Sections" msgstr "" -#: howto/free-threading-extensions.rst:251 +#: howto/free-threading-extensions.rst:259 msgid "" "In the free-threaded build, CPython provides a mechanism called \"critical " "sections\" to protect data that would otherwise be protected by the GIL. " @@ -412,11 +420,11 @@ msgid "" "certain C API functions or managing shared state in the free-threaded build." msgstr "" -#: howto/free-threading-extensions.rst:258 +#: howto/free-threading-extensions.rst:266 msgid "What Are Critical Sections?" msgstr "" -#: howto/free-threading-extensions.rst:260 +#: howto/free-threading-extensions.rst:268 msgid "" "Conceptually, critical sections act as a deadlock avoidance layer built on " "top of simple mutexes. Each thread maintains a stack of active critical " @@ -426,27 +434,27 @@ msgid "" "the underlying mutex." msgstr "" -#: howto/free-threading-extensions.rst:268 +#: howto/free-threading-extensions.rst:276 msgid "Using Critical Sections" msgstr "" -#: howto/free-threading-extensions.rst:270 +#: howto/free-threading-extensions.rst:278 msgid "The primary APIs for using critical sections are:" msgstr "" -#: howto/free-threading-extensions.rst:272 +#: howto/free-threading-extensions.rst:280 msgid "" ":c:macro:`Py_BEGIN_CRITICAL_SECTION` and :c:macro:`Py_END_CRITICAL_SECTION` " "- For locking a single object" msgstr "" -#: howto/free-threading-extensions.rst:275 +#: howto/free-threading-extensions.rst:283 msgid "" ":c:macro:`Py_BEGIN_CRITICAL_SECTION2` and :c:macro:" "`Py_END_CRITICAL_SECTION2` - For locking two objects simultaneously" msgstr "" -#: howto/free-threading-extensions.rst:278 +#: howto/free-threading-extensions.rst:286 msgid "" "These macros must be used in matching pairs and must appear in the same C " "scope, since they establish a new local scope. These macros are no-ops in " @@ -454,7 +462,7 @@ msgid "" "support both build types." msgstr "" -#: howto/free-threading-extensions.rst:283 +#: howto/free-threading-extensions.rst:291 msgid "" "A common use of a critical section would be to lock an object while " "accessing an internal attribute of it. For example, if an extension type " @@ -462,7 +470,7 @@ msgid "" "or writing that field::" msgstr "" -#: howto/free-threading-extensions.rst:288 +#: howto/free-threading-extensions.rst:296 msgid "" "// read the count, returns new reference to internal count value\n" "PyObject *result;\n" @@ -477,11 +485,11 @@ msgid "" "Py_END_CRITICAL_SECTION();" msgstr "" -#: howto/free-threading-extensions.rst:302 +#: howto/free-threading-extensions.rst:310 msgid "How Critical Sections Work" msgstr "" -#: howto/free-threading-extensions.rst:304 +#: howto/free-threading-extensions.rst:312 msgid "" "Unlike traditional locks, critical sections do not guarantee exclusive " "access throughout their entire duration. If a thread would block while " @@ -490,51 +498,51 @@ msgid "" "then resumed when the blocking operation completes." msgstr "" -#: howto/free-threading-extensions.rst:310 +#: howto/free-threading-extensions.rst:318 msgid "" "This behavior is similar to what happens with the GIL when a thread makes a " "blocking call. The key differences are:" msgstr "" -#: howto/free-threading-extensions.rst:313 +#: howto/free-threading-extensions.rst:321 msgid "Critical sections operate on a per-object basis rather than globally" msgstr "" -#: howto/free-threading-extensions.rst:315 +#: howto/free-threading-extensions.rst:323 msgid "" "Critical sections follow a stack discipline within each thread (the " "\"begin\" and \"end\" macros enforce this since they must be paired and " "within the same scope)" msgstr "" -#: howto/free-threading-extensions.rst:318 +#: howto/free-threading-extensions.rst:326 msgid "" "Critical sections automatically release and reacquire locks around potential " "blocking operations" msgstr "" -#: howto/free-threading-extensions.rst:322 +#: howto/free-threading-extensions.rst:330 msgid "Deadlock Avoidance" msgstr "" -#: howto/free-threading-extensions.rst:324 +#: howto/free-threading-extensions.rst:332 msgid "Critical sections help avoid deadlocks in two ways:" msgstr "" -#: howto/free-threading-extensions.rst:326 +#: howto/free-threading-extensions.rst:334 msgid "" "If a thread tries to acquire a lock that's already held by another thread, " "it first suspends all of its active critical sections, temporarily releasing " "their locks" msgstr "" -#: howto/free-threading-extensions.rst:330 +#: howto/free-threading-extensions.rst:338 msgid "" "When the blocking operation completes, only the top-most critical section is " "reacquired first" msgstr "" -#: howto/free-threading-extensions.rst:333 +#: howto/free-threading-extensions.rst:341 msgid "" "This means you cannot rely on nested critical sections to lock multiple " "objects at once, as the inner critical section may suspend the outer ones. " @@ -542,7 +550,7 @@ msgid "" "simultaneously." msgstr "" -#: howto/free-threading-extensions.rst:337 +#: howto/free-threading-extensions.rst:345 msgid "" "Note that the locks described above are only :c:type:`!PyMutex` based locks. " "The critical section implementation does not know about or affect other " @@ -553,18 +561,18 @@ msgid "" "not be released and therefore does not get the same deadlock avoidance." msgstr "" -#: howto/free-threading-extensions.rst:346 +#: howto/free-threading-extensions.rst:354 msgid "Important Considerations" msgstr "" -#: howto/free-threading-extensions.rst:348 +#: howto/free-threading-extensions.rst:356 msgid "" "Critical sections may temporarily release their locks, allowing other " "threads to modify the protected data. Be careful about making assumptions " "about the state of the data after operations that might block." msgstr "" -#: howto/free-threading-extensions.rst:352 +#: howto/free-threading-extensions.rst:360 msgid "" "Because locks can be temporarily released (suspended), entering a critical " "section does not guarantee exclusive access to the protected resource " @@ -574,34 +582,34 @@ msgid "" "This is similar to how the GIL can be released during blocking calls." msgstr "" -#: howto/free-threading-extensions.rst:359 +#: howto/free-threading-extensions.rst:367 msgid "" "Only the lock(s) associated with the most recently entered (top-most) " "critical section are guaranteed to be held at any given time. Locks for " "outer, nested critical sections might have been suspended." msgstr "" -#: howto/free-threading-extensions.rst:363 +#: howto/free-threading-extensions.rst:371 msgid "" "You can lock at most two objects simultaneously with these APIs. If you need " "to lock more objects, you'll need to restructure your code." msgstr "" -#: howto/free-threading-extensions.rst:366 +#: howto/free-threading-extensions.rst:374 msgid "" "While critical sections will not deadlock if you attempt to lock the same " "object twice, they are less efficient than purpose-built reentrant locks for " "this use case." msgstr "" -#: howto/free-threading-extensions.rst:370 +#: howto/free-threading-extensions.rst:378 msgid "" "When using :c:macro:`Py_BEGIN_CRITICAL_SECTION2`, the order of the objects " "doesn't affect correctness (the implementation handles deadlock avoidance), " "but it's good practice to always lock objects in a consistent order." msgstr "" -#: howto/free-threading-extensions.rst:374 +#: howto/free-threading-extensions.rst:382 msgid "" "Remember that the critical section macros are primarily for protecting " "access to *Python objects* that might be involved in internal CPython " @@ -610,34 +618,34 @@ msgid "" "synchronization primitives might be more appropriate." msgstr "" -#: howto/free-threading-extensions.rst:382 +#: howto/free-threading-extensions.rst:390 msgid "Building Extensions for the Free-Threaded Build" msgstr "" -#: howto/free-threading-extensions.rst:384 +#: howto/free-threading-extensions.rst:392 msgid "" "C API extensions need to be built specifically for the free-threaded build. " "The wheels, shared libraries, and binaries are indicated by a ``t`` suffix." msgstr "" -#: howto/free-threading-extensions.rst:387 +#: howto/free-threading-extensions.rst:395 msgid "" "`pypa/manylinux `_ supports the free-" "threaded build, with the ``t`` suffix, such as ``python3.13t``." msgstr "" -#: howto/free-threading-extensions.rst:389 +#: howto/free-threading-extensions.rst:397 msgid "" "`pypa/cibuildwheel `_ supports the " -"free-threaded build if you set `CIBW_FREE_THREADED_SUPPORT `_." +"free-threaded build if you set `CIBW_ENABLE to cpython-freethreading " +"`_." msgstr "" -#: howto/free-threading-extensions.rst:394 +#: howto/free-threading-extensions.rst:402 msgid "Limited C API and Stable ABI" msgstr "" -#: howto/free-threading-extensions.rst:396 +#: howto/free-threading-extensions.rst:404 msgid "" "The free-threaded build does not currently support the :ref:`Limited C API " "` or the stable ABI. If you use `setuptools `_: A community-maintained porting guide for " diff --git a/howto/free-threading-python.po b/howto/free-threading-python.po index 592184ce..3cabd05c 100644 --- a/howto/free-threading-python.po +++ b/howto/free-threading-python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,76 +18,79 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: howto/free-threading-python.rst:5 -msgid "Python experimental support for free threading" +msgid "Python support for free threading" msgstr "" #: howto/free-threading-python.rst:7 msgid "" -"Starting with the 3.13 release, CPython has experimental support for a build " -"of Python called :term:`free threading` where the :term:`global interpreter " -"lock` (GIL) is disabled. Free-threaded execution allows for full " -"utilization of the available processing power by running threads in parallel " -"on available CPU cores. While not all software will benefit from this " -"automatically, programs designed with threading in mind will run faster on " -"multi-core hardware." +"Starting with the 3.13 release, CPython has support for a build of Python " +"called :term:`free threading` where the :term:`global interpreter lock` " +"(GIL) is disabled. Free-threaded execution allows for full utilization of " +"the available processing power by running threads in parallel on available " +"CPU cores. While not all software will benefit from this automatically, " +"programs designed with threading in mind will run faster on multi-core " +"hardware." msgstr "" #: howto/free-threading-python.rst:14 msgid "" -"**The free-threaded mode is experimental** and work is ongoing to improve " -"it: expect some bugs and a substantial single-threaded performance hit." +"The free-threaded mode is working and continues to be improved, but there is " +"some additional overhead in single-threaded workloads compared to the " +"regular build. Additionally, third-party packages, in particular ones with " +"an :term:`extension module`, may not be ready for use in a free-threaded " +"build, and will re-enable the :term:`GIL`." msgstr "" -#: howto/free-threading-python.rst:17 +#: howto/free-threading-python.rst:20 msgid "" "This document describes the implications of free threading for Python code. " "See :ref:`freethreading-extensions-howto` for information on how to write C " "extensions that support the free-threaded build." msgstr "" -#: howto/free-threading-python.rst:23 +#: howto/free-threading-python.rst:26 msgid "" ":pep:`703` – Making the Global Interpreter Lock Optional in CPython for an " "overall description of free-threaded Python." msgstr "" -#: howto/free-threading-python.rst:28 +#: howto/free-threading-python.rst:31 msgid "Installation" msgstr "" -#: howto/free-threading-python.rst:30 +#: howto/free-threading-python.rst:33 msgid "" "Starting with Python 3.13, the official macOS and Windows installers " "optionally support installing free-threaded Python binaries. The installers " "are available at https://www.python.org/downloads/." msgstr "" -#: howto/free-threading-python.rst:34 +#: howto/free-threading-python.rst:37 msgid "" "For information on other platforms, see the `Installing a Free-Threaded " -"Python `_, a " +"Python `_, a " "community-maintained installation guide for installing free-threaded Python." msgstr "" -#: howto/free-threading-python.rst:38 +#: howto/free-threading-python.rst:41 msgid "" "When building CPython from source, the :option:`--disable-gil` configure " "option should be used to build a free-threaded Python interpreter." msgstr "" -#: howto/free-threading-python.rst:43 +#: howto/free-threading-python.rst:46 msgid "Identifying free-threaded Python" msgstr "" -#: howto/free-threading-python.rst:45 +#: howto/free-threading-python.rst:48 msgid "" "To check if the current interpreter supports free-threading, :option:`python " -"-VV <-V>` and :data:`sys.version` contain \"experimental free-threading " -"build\". The new :func:`sys._is_gil_enabled` function can be used to check " -"whether the GIL is actually disabled in the running process." +"-VV <-V>` and :data:`sys.version` contain \"free-threading build\". The new :" +"func:`sys._is_gil_enabled` function can be used to check whether the GIL is " +"actually disabled in the running process." msgstr "" -#: howto/free-threading-python.rst:50 +#: howto/free-threading-python.rst:53 msgid "" "The ``sysconfig.get_config_var(\"Py_GIL_DISABLED\")`` configuration variable " "can be used to determine whether the build supports free threading. If the " @@ -95,43 +98,43 @@ msgid "" "the recommended mechanism for decisions related to the build configuration." msgstr "" -#: howto/free-threading-python.rst:57 +#: howto/free-threading-python.rst:60 msgid "The global interpreter lock in free-threaded Python" msgstr "" -#: howto/free-threading-python.rst:59 +#: howto/free-threading-python.rst:62 msgid "" "Free-threaded builds of CPython support optionally running with the GIL " "enabled at runtime using the environment variable :envvar:`PYTHON_GIL` or " "the command-line option :option:`-X gil`." msgstr "" -#: howto/free-threading-python.rst:63 +#: howto/free-threading-python.rst:66 msgid "" "The GIL may also automatically be enabled when importing a C-API extension " "module that is not explicitly marked as supporting free threading. A " "warning will be printed in this case." msgstr "" -#: howto/free-threading-python.rst:67 +#: howto/free-threading-python.rst:70 msgid "" "In addition to individual package documentation, the following websites " "track the status of popular packages support for free threading:" msgstr "" -#: howto/free-threading-python.rst:70 +#: howto/free-threading-python.rst:73 msgid "https://py-free-threading.github.io/tracking/" msgstr "" -#: howto/free-threading-python.rst:71 +#: howto/free-threading-python.rst:74 msgid "https://hugovk.github.io/free-threaded-wheels/" msgstr "" -#: howto/free-threading-python.rst:75 +#: howto/free-threading-python.rst:78 msgid "Thread safety" msgstr "" -#: howto/free-threading-python.rst:77 +#: howto/free-threading-python.rst:80 msgid "" "The free-threaded build of CPython aims to provide similar thread-safety " "behavior at the Python level to the default GIL-enabled build. Built-in " @@ -143,27 +146,27 @@ msgid "" "current or future behavior." msgstr "" -#: howto/free-threading-python.rst:88 +#: howto/free-threading-python.rst:91 msgid "" "It's recommended to use the :class:`threading.Lock` or other synchronization " "primitives instead of relying on the internal locks of built-in types, when " "possible." msgstr "" -#: howto/free-threading-python.rst:94 +#: howto/free-threading-python.rst:97 msgid "Known limitations" msgstr "" -#: howto/free-threading-python.rst:96 +#: howto/free-threading-python.rst:99 msgid "" "This section describes known limitations of the free-threaded CPython build." msgstr "" -#: howto/free-threading-python.rst:99 +#: howto/free-threading-python.rst:102 msgid "Immortalization" msgstr "" -#: howto/free-threading-python.rst:101 +#: howto/free-threading-python.rst:104 msgid "" "The free-threaded build of the 3.13 release makes some objects :term:" "`immortal`. Immortal objects are not deallocated and have reference counts " @@ -171,53 +174,53 @@ msgid "" "that would prevent efficient multi-threaded scaling." msgstr "" -#: howto/free-threading-python.rst:106 +#: howto/free-threading-python.rst:109 msgid "" "An object will be made immortal when a new thread is started for the first " "time after the main thread is running. The following objects are " "immortalized:" msgstr "" -#: howto/free-threading-python.rst:109 +#: howto/free-threading-python.rst:112 msgid "" ":ref:`function ` objects declared at the module level" msgstr "" -#: howto/free-threading-python.rst:110 +#: howto/free-threading-python.rst:113 msgid ":ref:`method ` descriptors" msgstr "" -#: howto/free-threading-python.rst:111 +#: howto/free-threading-python.rst:114 msgid ":ref:`code ` objects" msgstr "" -#: howto/free-threading-python.rst:112 +#: howto/free-threading-python.rst:115 msgid ":term:`module` objects and their dictionaries" msgstr "" -#: howto/free-threading-python.rst:113 +#: howto/free-threading-python.rst:116 msgid ":ref:`classes ` (type objects)" msgstr "" -#: howto/free-threading-python.rst:115 +#: howto/free-threading-python.rst:118 msgid "" "Because immortal objects are never deallocated, applications that create " "many objects of these types may see increased memory usage. This is " "expected to be addressed in the 3.14 release." msgstr "" -#: howto/free-threading-python.rst:119 +#: howto/free-threading-python.rst:122 msgid "" "Additionally, numeric and string literals in the code as well as strings " "returned by :func:`sys.intern` are also immortalized. This behavior is " "expected to remain in the 3.14 free-threaded build." msgstr "" -#: howto/free-threading-python.rst:125 +#: howto/free-threading-python.rst:128 msgid "Frame objects" msgstr "" -#: howto/free-threading-python.rst:127 +#: howto/free-threading-python.rst:130 msgid "" "It is not safe to access :ref:`frame ` objects from other " "threads and doing so may cause your program to crash . This means that :" @@ -227,22 +230,22 @@ msgid "" "passed to another thread." msgstr "" -#: howto/free-threading-python.rst:135 +#: howto/free-threading-python.rst:138 msgid "Iterators" msgstr "" -#: howto/free-threading-python.rst:137 +#: howto/free-threading-python.rst:140 msgid "" "Sharing the same iterator object between multiple threads is generally not " "safe and threads may see duplicate or missing elements when iterating or " "crash the interpreter." msgstr "" -#: howto/free-threading-python.rst:143 +#: howto/free-threading-python.rst:146 msgid "Single-threaded performance" msgstr "" -#: howto/free-threading-python.rst:145 +#: howto/free-threading-python.rst:148 msgid "" "The free-threaded build has additional overhead when executing Python code " "compared to the default GIL-enabled build. In 3.13, this overhead is about " @@ -256,21 +259,21 @@ msgid "" "GIL-enabled build." msgstr "" -#: howto/free-threading-python.rst:158 +#: howto/free-threading-python.rst:161 msgid "Behavioral changes" msgstr "" -#: howto/free-threading-python.rst:160 +#: howto/free-threading-python.rst:163 msgid "" "This section describes CPython behavioural changes with the free-threaded " "build." msgstr "" -#: howto/free-threading-python.rst:165 +#: howto/free-threading-python.rst:168 msgid "Context variables" msgstr "" -#: howto/free-threading-python.rst:167 +#: howto/free-threading-python.rst:170 msgid "" "In the free-threaded build, the flag :data:`~sys.flags." "thread_inherit_context` is set to true by default which causes threads " @@ -280,11 +283,11 @@ msgid "" "start with an empty :class:`~contextvars.Context()`." msgstr "" -#: howto/free-threading-python.rst:177 +#: howto/free-threading-python.rst:180 msgid "Warning filters" msgstr "" -#: howto/free-threading-python.rst:179 +#: howto/free-threading-python.rst:182 msgid "" "In the free-threaded build, the flag :data:`~sys.flags." "context_aware_warnings` is set to true by default. In the default GIL-" diff --git a/howto/functional.po b/howto/functional.po index ad7eda35..3dfee915 100644 --- a/howto/functional.po +++ b/howto/functional.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/gdb_helpers.po b/howto/gdb_helpers.po index 37dd8545..26f30b9a 100644 --- a/howto/gdb_helpers.po +++ b/howto/gdb_helpers.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/index.po b/howto/index.po index 88ae6a7c..73f17ed1 100644 --- a/howto/index.po +++ b/howto/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-10 22:23+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/howto/instrumentation.po b/howto/instrumentation.po index ccca84ed..794b45b2 100644 --- a/howto/instrumentation.po +++ b/howto/instrumentation.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/ipaddress.po b/howto/ipaddress.po index 448d50a6..4c66a3da 100644 --- a/howto/ipaddress.po +++ b/howto/ipaddress.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/isolating-extensions.po b/howto/isolating-extensions.po index 1020b409..9dc768bd 100644 --- a/howto/isolating-extensions.po +++ b/howto/isolating-extensions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -254,8 +254,8 @@ msgstr "" msgid "" "If it is necessary to use process-global state, the simplest way to avoid " "issues with multiple interpreters is to explicitly prevent a module from " -"being loaded more than once per process—see `Opt-Out: Limiting to One Module " -"Object per Process`_." +"being loaded more than once per process—see :ref:`isolating-extensions-" +"optout`." msgstr "" #: howto/isolating-extensions.rst:175 @@ -311,11 +311,11 @@ msgid "" "c>`__; example module initialization shown at the bottom of the file." msgstr "" -#: howto/isolating-extensions.rst:211 +#: howto/isolating-extensions.rst:213 msgid "Opt-Out: Limiting to One Module Object per Process" msgstr "" -#: howto/isolating-extensions.rst:213 +#: howto/isolating-extensions.rst:215 msgid "" "A non-negative ``PyModuleDef.m_size`` signals that a module supports " "multiple interpreters correctly. If this is not yet the case for your " @@ -323,35 +323,51 @@ msgid "" "For example::" msgstr "" -#: howto/isolating-extensions.rst:218 +#: howto/isolating-extensions.rst:220 msgid "" +"// A process-wide flag\n" "static int loaded = 0;\n" "\n" +"// Mutex to provide thread safety (only needed for free-threaded Python)\n" +"static PyMutex modinit_mutex = {0};\n" +"\n" "static int\n" "exec_module(PyObject* module)\n" "{\n" +" PyMutex_Lock(&modinit_mutex);\n" " if (loaded) {\n" +" PyMutex_Unlock(&modinit_mutex);\n" " PyErr_SetString(PyExc_ImportError,\n" " \"cannot load module more than once per process\");\n" " return -1;\n" " }\n" " loaded = 1;\n" +" PyMutex_Unlock(&modinit_mutex);\n" " // ... rest of initialization\n" "}" msgstr "" -#: howto/isolating-extensions.rst:234 +#: howto/isolating-extensions.rst:242 +msgid "" +"If your module's :c:member:`PyModuleDef.m_clear` function is able to prepare " +"for future re-initialization, it should clear the ``loaded`` flag. In this " +"case, your module won't support multiple instances existing *concurrently*, " +"but it will, for example, support being loaded after Python runtime shutdown " +"(:c:func:`Py_FinalizeEx`) and re-initialization (:c:func:`Py_Initialize`)." +msgstr "" + +#: howto/isolating-extensions.rst:251 msgid "Module State Access from Functions" msgstr "" -#: howto/isolating-extensions.rst:236 +#: howto/isolating-extensions.rst:253 msgid "" "Accessing the state from module-level functions is straightforward. " "Functions get the module object as their first argument; for extracting the " "state, you can use ``PyModule_GetState``::" msgstr "" -#: howto/isolating-extensions.rst:240 +#: howto/isolating-extensions.rst:257 msgid "" "static PyObject *\n" "func(PyObject *module, PyObject *args)\n" @@ -364,25 +380,25 @@ msgid "" "}" msgstr "" -#: howto/isolating-extensions.rst:251 +#: howto/isolating-extensions.rst:268 msgid "" "``PyModule_GetState`` may return ``NULL`` without setting an exception if " "there is no module state, i.e. ``PyModuleDef.m_size`` was zero. In your own " "module, you're in control of ``m_size``, so this is easy to prevent." msgstr "" -#: howto/isolating-extensions.rst:258 +#: howto/isolating-extensions.rst:275 msgid "Heap Types" msgstr "" -#: howto/isolating-extensions.rst:260 +#: howto/isolating-extensions.rst:277 msgid "" "Traditionally, types defined in C code are *static*; that is, ``static " "PyTypeObject`` structures defined directly in code and initialized using " "``PyType_Ready()``." msgstr "" -#: howto/isolating-extensions.rst:264 +#: howto/isolating-extensions.rst:281 msgid "" "Such types are necessarily shared across the process. Sharing them between " "module objects requires paying attention to any state they own or access. To " @@ -390,7 +406,7 @@ msgid "" "for example, you can't set ``str.myattribute = 123``." msgstr "" -#: howto/isolating-extensions.rst:270 +#: howto/isolating-extensions.rst:287 msgid "" "Sharing truly immutable objects between interpreters is fine, as long as " "they don't provide access to mutable objects. However, in CPython, every " @@ -400,7 +416,7 @@ msgid "" "process-wide GIL." msgstr "" -#: howto/isolating-extensions.rst:277 +#: howto/isolating-extensions.rst:294 msgid "" "Because they are immutable and process-global, static types cannot access " "\"their\" module state. If any method of such a type requires access to " @@ -409,15 +425,15 @@ msgid "" "Python's ``class`` statement." msgstr "" -#: howto/isolating-extensions.rst:284 +#: howto/isolating-extensions.rst:301 msgid "For new modules, using heap types by default is a good rule of thumb." msgstr "" -#: howto/isolating-extensions.rst:288 +#: howto/isolating-extensions.rst:305 msgid "Changing Static Types to Heap Types" msgstr "" -#: howto/isolating-extensions.rst:290 +#: howto/isolating-extensions.rst:307 msgid "" "Static types can be converted to heap types, but note that the heap type API " "was not designed for \"lossless\" conversion from static types—that is, " @@ -427,101 +443,101 @@ msgid "" "slots). Always test the details that are important to you." msgstr "" -#: howto/isolating-extensions.rst:299 +#: howto/isolating-extensions.rst:316 msgid "" "Watch out for the following two points in particular (but note that this is " "not a comprehensive list):" msgstr "" -#: howto/isolating-extensions.rst:302 +#: howto/isolating-extensions.rst:319 msgid "" "Unlike static types, heap type objects are mutable by default. Use the :c:" "macro:`Py_TPFLAGS_IMMUTABLETYPE` flag to prevent mutability." msgstr "" -#: howto/isolating-extensions.rst:304 +#: howto/isolating-extensions.rst:321 msgid "" "Heap types inherit :c:member:`~PyTypeObject.tp_new` by default, so it may " "become possible to instantiate them from Python code. You can prevent this " "with the :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag." msgstr "" -#: howto/isolating-extensions.rst:310 +#: howto/isolating-extensions.rst:327 msgid "Defining Heap Types" msgstr "" -#: howto/isolating-extensions.rst:312 +#: howto/isolating-extensions.rst:329 msgid "" "Heap types can be created by filling a :c:struct:`PyType_Spec` structure, a " "description or \"blueprint\" of a class, and calling :c:func:" "`PyType_FromModuleAndSpec` to construct a new class object." msgstr "" -#: howto/isolating-extensions.rst:317 +#: howto/isolating-extensions.rst:334 msgid "" "Other functions, like :c:func:`PyType_FromSpec`, can also create heap types, " "but :c:func:`PyType_FromModuleAndSpec` associates the module with the class, " "allowing access to the module state from methods." msgstr "" -#: howto/isolating-extensions.rst:321 +#: howto/isolating-extensions.rst:338 msgid "" "The class should generally be stored in *both* the module state (for safe " "access from C) and the module's ``__dict__`` (for access from Python code)." msgstr "" -#: howto/isolating-extensions.rst:327 +#: howto/isolating-extensions.rst:344 msgid "Garbage-Collection Protocol" msgstr "" -#: howto/isolating-extensions.rst:329 +#: howto/isolating-extensions.rst:346 msgid "" "Instances of heap types hold a reference to their type. This ensures that " "the type isn't destroyed before all its instances are, but may result in " "reference cycles that need to be broken by the garbage collector." msgstr "" -#: howto/isolating-extensions.rst:334 +#: howto/isolating-extensions.rst:351 msgid "" "To avoid memory leaks, instances of heap types must implement the garbage " "collection protocol. That is, heap types should:" msgstr "" -#: howto/isolating-extensions.rst:338 +#: howto/isolating-extensions.rst:355 msgid "Have the :c:macro:`Py_TPFLAGS_HAVE_GC` flag." msgstr "" -#: howto/isolating-extensions.rst:339 +#: howto/isolating-extensions.rst:356 msgid "" "Define a traverse function using ``Py_tp_traverse``, which visits the type " "(e.g. using ``Py_VISIT(Py_TYPE(self))``)." msgstr "" -#: howto/isolating-extensions.rst:342 +#: howto/isolating-extensions.rst:359 msgid "" "Please refer to the documentation of :c:macro:`Py_TPFLAGS_HAVE_GC` and :c:" "member:`~PyTypeObject.tp_traverse` for additional considerations." msgstr "" -#: howto/isolating-extensions.rst:346 +#: howto/isolating-extensions.rst:363 msgid "" "The API for defining heap types grew organically, leaving it somewhat " "awkward to use in its current state. The following sections will guide you " "through common issues." msgstr "" -#: howto/isolating-extensions.rst:352 +#: howto/isolating-extensions.rst:369 msgid "``tp_traverse`` in Python 3.8 and lower" msgstr "" -#: howto/isolating-extensions.rst:354 +#: howto/isolating-extensions.rst:371 msgid "" "The requirement to visit the type from ``tp_traverse`` was added in Python " "3.9. If you support Python 3.8 and lower, the traverse function must *not* " "visit the type, so it must be more complicated::" msgstr "" -#: howto/isolating-extensions.rst:358 +#: howto/isolating-extensions.rst:375 msgid "" "static int my_traverse(PyObject *self, visitproc visit, void *arg)\n" "{\n" @@ -532,27 +548,27 @@ msgid "" "}" msgstr "" -#: howto/isolating-extensions.rst:366 +#: howto/isolating-extensions.rst:383 msgid "" "Unfortunately, :c:data:`Py_Version` was only added in Python 3.11. As a " "replacement, use:" msgstr "" -#: howto/isolating-extensions.rst:369 +#: howto/isolating-extensions.rst:386 msgid ":c:macro:`PY_VERSION_HEX`, if not using the stable ABI, or" msgstr "" -#: howto/isolating-extensions.rst:370 +#: howto/isolating-extensions.rst:387 msgid "" ":py:data:`sys.version_info` (via :c:func:`PySys_GetObject` and :c:func:" "`PyArg_ParseTuple`)." msgstr "" -#: howto/isolating-extensions.rst:375 +#: howto/isolating-extensions.rst:392 msgid "Delegating ``tp_traverse``" msgstr "" -#: howto/isolating-extensions.rst:377 +#: howto/isolating-extensions.rst:394 msgid "" "If your traverse function delegates to the :c:member:`~PyTypeObject." "tp_traverse` of its base class (or another type), ensure that " @@ -560,19 +576,19 @@ msgid "" "expected to visit the type in ``tp_traverse``." msgstr "" -#: howto/isolating-extensions.rst:382 +#: howto/isolating-extensions.rst:399 msgid "For example, if your traverse function includes::" msgstr "" -#: howto/isolating-extensions.rst:384 +#: howto/isolating-extensions.rst:401 msgid "base->tp_traverse(self, visit, arg)" msgstr "" -#: howto/isolating-extensions.rst:386 +#: howto/isolating-extensions.rst:403 msgid "...and ``base`` may be a static type, then it should also include::" msgstr "" -#: howto/isolating-extensions.rst:388 +#: howto/isolating-extensions.rst:405 msgid "" "if (base->tp_flags & Py_TPFLAGS_HEAPTYPE) {\n" " // a heap type's tp_traverse already visited Py_TYPE(self)\n" @@ -583,38 +599,38 @@ msgid "" "}" msgstr "" -#: howto/isolating-extensions.rst:396 +#: howto/isolating-extensions.rst:413 msgid "" "It is not necessary to handle the type's reference count in :c:member:" "`~PyTypeObject.tp_new` and :c:member:`~PyTypeObject.tp_clear`." msgstr "" -#: howto/isolating-extensions.rst:401 +#: howto/isolating-extensions.rst:418 msgid "Defining ``tp_dealloc``" msgstr "" -#: howto/isolating-extensions.rst:403 +#: howto/isolating-extensions.rst:420 msgid "" "If your type has a custom :c:member:`~PyTypeObject.tp_dealloc` function, it " "needs to:" msgstr "" -#: howto/isolating-extensions.rst:406 +#: howto/isolating-extensions.rst:423 msgid "" "call :c:func:`PyObject_GC_UnTrack` before any fields are invalidated, and" msgstr "" -#: howto/isolating-extensions.rst:407 +#: howto/isolating-extensions.rst:424 msgid "decrement the reference count of the type." msgstr "" -#: howto/isolating-extensions.rst:409 +#: howto/isolating-extensions.rst:426 msgid "" "To keep the type valid while ``tp_free`` is called, the type's refcount " "needs to be decremented *after* the instance is deallocated. For example::" msgstr "" -#: howto/isolating-extensions.rst:412 +#: howto/isolating-extensions.rst:429 msgid "" "static void my_dealloc(PyObject *self)\n" "{\n" @@ -626,81 +642,81 @@ msgid "" "}" msgstr "" -#: howto/isolating-extensions.rst:421 +#: howto/isolating-extensions.rst:438 msgid "" "The default ``tp_dealloc`` function does this, so if your type does *not* " "override ``tp_dealloc`` you don't need to add it." msgstr "" -#: howto/isolating-extensions.rst:427 +#: howto/isolating-extensions.rst:444 msgid "Not overriding ``tp_free``" msgstr "" -#: howto/isolating-extensions.rst:429 +#: howto/isolating-extensions.rst:446 msgid "" "The :c:member:`~PyTypeObject.tp_free` slot of a heap type must be set to :c:" "func:`PyObject_GC_Del`. This is the default; do not override it." msgstr "" -#: howto/isolating-extensions.rst:435 +#: howto/isolating-extensions.rst:452 msgid "Avoiding ``PyObject_New``" msgstr "" -#: howto/isolating-extensions.rst:437 +#: howto/isolating-extensions.rst:454 msgid "GC-tracked objects need to be allocated using GC-aware functions." msgstr "" -#: howto/isolating-extensions.rst:439 +#: howto/isolating-extensions.rst:456 msgid "If you use use :c:func:`PyObject_New` or :c:func:`PyObject_NewVar`:" msgstr "" -#: howto/isolating-extensions.rst:441 +#: howto/isolating-extensions.rst:458 msgid "" "Get and call type's :c:member:`~PyTypeObject.tp_alloc` slot, if possible. " "That is, replace ``TYPE *o = PyObject_New(TYPE, typeobj)`` with::" msgstr "" -#: howto/isolating-extensions.rst:444 +#: howto/isolating-extensions.rst:461 msgid "TYPE *o = typeobj->tp_alloc(typeobj, 0);" msgstr "" -#: howto/isolating-extensions.rst:446 +#: howto/isolating-extensions.rst:463 msgid "" "Replace ``o = PyObject_NewVar(TYPE, typeobj, size)`` with the same, but use " "size instead of the 0." msgstr "" -#: howto/isolating-extensions.rst:449 +#: howto/isolating-extensions.rst:466 msgid "" "If the above is not possible (e.g. inside a custom ``tp_alloc``), call :c:" "func:`PyObject_GC_New` or :c:func:`PyObject_GC_NewVar`::" msgstr "" -#: howto/isolating-extensions.rst:452 +#: howto/isolating-extensions.rst:469 msgid "" "TYPE *o = PyObject_GC_New(TYPE, typeobj);\n" "\n" "TYPE *o = PyObject_GC_NewVar(TYPE, typeobj, size);" msgstr "" -#: howto/isolating-extensions.rst:458 +#: howto/isolating-extensions.rst:475 msgid "Module State Access from Classes" msgstr "" -#: howto/isolating-extensions.rst:460 +#: howto/isolating-extensions.rst:477 msgid "" "If you have a type object defined with :c:func:`PyType_FromModuleAndSpec`, " "you can call :c:func:`PyType_GetModule` to get the associated module, and " "then :c:func:`PyModule_GetState` to get the module's state." msgstr "" -#: howto/isolating-extensions.rst:464 +#: howto/isolating-extensions.rst:481 msgid "" "To save a some tedious error-handling boilerplate code, you can combine " "these two steps with :c:func:`PyType_GetModuleState`, resulting in::" msgstr "" -#: howto/isolating-extensions.rst:467 +#: howto/isolating-extensions.rst:484 msgid "" "my_struct *state = (my_struct*)PyType_GetModuleState(type);\n" "if (state == NULL) {\n" @@ -708,11 +724,11 @@ msgid "" "}" msgstr "" -#: howto/isolating-extensions.rst:474 +#: howto/isolating-extensions.rst:491 msgid "Module State Access from Regular Methods" msgstr "" -#: howto/isolating-extensions.rst:476 +#: howto/isolating-extensions.rst:493 msgid "" "Accessing the module-level state from methods of a class is somewhat more " "complicated, but is possible thanks to API introduced in Python 3.9. To get " @@ -720,27 +736,27 @@ msgid "" "module state from it." msgstr "" -#: howto/isolating-extensions.rst:481 +#: howto/isolating-extensions.rst:498 msgid "" "The largest roadblock is getting *the class a method was defined in*, or " "that method's \"defining class\" for short. The defining class can have a " "reference to the module it is part of." msgstr "" -#: howto/isolating-extensions.rst:485 +#: howto/isolating-extensions.rst:502 msgid "" "Do not confuse the defining class with ``Py_TYPE(self)``. If the method is " "called on a *subclass* of your type, ``Py_TYPE(self)`` will refer to that " "subclass, which may be defined in different module than yours." msgstr "" -#: howto/isolating-extensions.rst:490 +#: howto/isolating-extensions.rst:507 msgid "" "The following Python code can illustrate the concept. ``Base." "get_defining_class`` returns ``Base`` even if ``type(self) == Sub``:" msgstr "" -#: howto/isolating-extensions.rst:494 +#: howto/isolating-extensions.rst:511 msgid "" "class Base:\n" " def get_type_of_self(self):\n" @@ -753,7 +769,7 @@ msgid "" " pass" msgstr "" -#: howto/isolating-extensions.rst:506 +#: howto/isolating-extensions.rst:523 msgid "" "For a method to get its \"defining class\", it must use the :ref:" "`METH_METHOD | METH_FASTCALL | METH_KEYWORDS `__." msgstr "" -#: howto/isolating-extensions.rst:617 +#: howto/isolating-extensions.rst:634 msgid "Per-Class Scope" msgstr "" -#: howto/isolating-extensions.rst:619 +#: howto/isolating-extensions.rst:636 msgid "" "It is currently (as of Python 3.11) not possible to attach state to " "individual *types* without relying on CPython implementation details (which " @@ -904,11 +920,11 @@ msgid "" "per-class scope)." msgstr "" -#: howto/isolating-extensions.rst:626 +#: howto/isolating-extensions.rst:643 msgid "Lossless Conversion to Heap Types" msgstr "" -#: howto/isolating-extensions.rst:628 +#: howto/isolating-extensions.rst:645 msgid "" "The heap type API was not designed for \"lossless\" conversion from static " "types; that is, creating a type that works exactly like a given static type." diff --git a/howto/logging-cookbook.po b/howto/logging-cookbook.po index 578730fe..14302f29 100644 --- a/howto/logging-cookbook.po +++ b/howto/logging-cookbook.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/logging.po b/howto/logging.po index d11b8218..460464c2 100644 --- a/howto/logging.po +++ b/howto/logging.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/mro.po b/howto/mro.po index eda93225..209affb8 100644 --- a/howto/mro.po +++ b/howto/mro.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/perf_profiling.po b/howto/perf_profiling.po index fc2a37b6..d12a979b 100644 --- a/howto/perf_profiling.po +++ b/howto/perf_profiling.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/pyporting.po b/howto/pyporting.po index a76f97da..797234ed 100644 --- a/howto/pyporting.po +++ b/howto/pyporting.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-12-06 13:40+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/howto/regex.po b/howto/regex.po index 33067d75..85a98a0e 100644 --- a/howto/regex.po +++ b/howto/regex.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/remote_debugging.po b/howto/remote_debugging.po index 0aa0fffa..8ff49507 100644 --- a/howto/remote_debugging.po +++ b/howto/remote_debugging.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/howto/sockets.po b/howto/sockets.po index 2de0d562..7a66411c 100644 --- a/howto/sockets.po +++ b/howto/sockets.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/sorting.po b/howto/sorting.po index df699518..d331a623 100644 --- a/howto/sorting.po +++ b/howto/sorting.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/timerfd.po b/howto/timerfd.po index ff5c4a5d..a737a982 100644 --- a/howto/timerfd.po +++ b/howto/timerfd.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/unicode.po b/howto/unicode.po index 14ca21ac..6ccddee3 100644 --- a/howto/unicode.po +++ b/howto/unicode.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/howto/urllib2.po b/howto/urllib2.po index 9bd68219..66258a01 100644 --- a/howto/urllib2.po +++ b/howto/urllib2.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -380,82 +380,37 @@ msgstr "" #: howto/urllib2.rst:247 msgid "" ":attr:`http.server.BaseHTTPRequestHandler.responses` is a useful dictionary " -"of response codes in that shows all the response codes used by :rfc:`2616`. " -"The dictionary is reproduced here for convenience ::" +"of response codes that shows all the response codes used by :rfc:`2616`. An " +"excerpt from the dictionary is shown below ::" msgstr "" #: howto/urllib2.rst:251 msgid "" -"# Table mapping response codes to messages; entries have the\n" -"# form {code: (shortmessage, longmessage)}.\n" "responses = {\n" -" 100: ('Continue', 'Request received, please continue'),\n" -" 101: ('Switching Protocols',\n" -" 'Switching to new protocol; obey Upgrade header'),\n" -"\n" -" 200: ('OK', 'Request fulfilled, document follows'),\n" -" 201: ('Created', 'Document created, URL follows'),\n" -" 202: ('Accepted',\n" -" 'Request accepted, processing continues off-line'),\n" -" 203: ('Non-Authoritative Information', 'Request fulfilled from cache'),\n" -" 204: ('No Content', 'Request fulfilled, nothing follows'),\n" -" 205: ('Reset Content', 'Clear input form for further input.'),\n" -" 206: ('Partial Content', 'Partial content follows.'),\n" -"\n" -" 300: ('Multiple Choices',\n" -" 'Object has several resources -- see URI list'),\n" -" 301: ('Moved Permanently', 'Object moved permanently -- see URI list'),\n" -" 302: ('Found', 'Object moved temporarily -- see URI list'),\n" -" 303: ('See Other', 'Object moved -- see Method and URL list'),\n" -" 304: ('Not Modified',\n" -" 'Document has not changed since given time'),\n" -" 305: ('Use Proxy',\n" -" 'You must use proxy specified in Location to access this '\n" -" 'resource.'),\n" -" 307: ('Temporary Redirect',\n" -" 'Object moved temporarily -- see URI list'),\n" -"\n" -" 400: ('Bad Request',\n" -" 'Bad request syntax or unsupported method'),\n" -" 401: ('Unauthorized',\n" -" 'No permission -- see authorization schemes'),\n" -" 402: ('Payment Required',\n" -" 'No payment -- see charging schemes'),\n" -" 403: ('Forbidden',\n" -" 'Request forbidden -- authorization will not help'),\n" -" 404: ('Not Found', 'Nothing matches the given URI'),\n" -" 405: ('Method Not Allowed',\n" -" 'Specified method is invalid for this server.'),\n" -" 406: ('Not Acceptable', 'URI not available in preferred format.'),\n" -" 407: ('Proxy Authentication Required', 'You must authenticate with '\n" -" 'this proxy before proceeding.'),\n" -" 408: ('Request Timeout', 'Request timed out; try again later.'),\n" -" 409: ('Conflict', 'Request conflict.'),\n" -" 410: ('Gone',\n" -" 'URI no longer exists and has been permanently removed.'),\n" -" 411: ('Length Required', 'Client must specify Content-Length.'),\n" -" 412: ('Precondition Failed', 'Precondition in headers is false.'),\n" -" 413: ('Request Entity Too Large', 'Entity is too large.'),\n" -" 414: ('Request-URI Too Long', 'URI is too long.'),\n" -" 415: ('Unsupported Media Type', 'Entity body in unsupported format.'),\n" -" 416: ('Requested Range Not Satisfiable',\n" -" 'Cannot satisfy request range.'),\n" -" 417: ('Expectation Failed',\n" -" 'Expect condition could not be satisfied.'),\n" -"\n" -" 500: ('Internal Server Error', 'Server got itself in trouble'),\n" -" 501: ('Not Implemented',\n" -" 'Server does not support this operation'),\n" -" 502: ('Bad Gateway', 'Invalid responses from another server/proxy.'),\n" -" 503: ('Service Unavailable',\n" -" 'The server cannot process the request due to a high load'),\n" -" 504: ('Gateway Timeout',\n" -" 'The gateway server did not receive a timely response'),\n" -" 505: ('HTTP Version Not Supported', 'Cannot fulfill request.'),\n" +" ...\n" +" : ('OK', 'Request fulfilled, document follows'),\n" +" ...\n" +" : ('Forbidden',\n" +" 'Request forbidden -- authorization will " +"'\n" +" 'not help'),\n" +" : ('Not Found',\n" +" 'Nothing matches the given URI'),\n" +" ...\n" +" : (\"I'm a Teapot\",\n" +" 'Server refuses to brew coffee because " +"'\n" +" 'it is a teapot'),\n" +" ...\n" +" : ('Service Unavailable',\n" +" 'The server cannot process the " +"'\n" +" 'request due to a high load'),\n" +" ...\n" " }" msgstr "" -#: howto/urllib2.rst:319 +#: howto/urllib2.rst:271 msgid "" "When an error is raised the server responds by returning an HTTP error code " "*and* an error page. You can use the :exc:`~urllib.error.HTTPError` instance " @@ -464,7 +419,7 @@ msgid "" "``urllib.response`` module::" msgstr "" -#: howto/urllib2.rst:324 +#: howto/urllib2.rst:276 msgid "" ">>> req = urllib.request.Request('http://www.python.org/fish.html')\n" ">>> try:\n" @@ -482,22 +437,22 @@ msgid "" " ..." msgstr "" -#: howto/urllib2.rst:339 +#: howto/urllib2.rst:291 msgid "Wrapping it Up" msgstr "" -#: howto/urllib2.rst:341 +#: howto/urllib2.rst:293 msgid "" "So if you want to be prepared for :exc:`~urllib.error.HTTPError` *or* :exc:" "`~urllib.error.URLError` there are two basic approaches. I prefer the second " "approach." msgstr "" -#: howto/urllib2.rst:345 +#: howto/urllib2.rst:297 msgid "Number 1" msgstr "" -#: howto/urllib2.rst:350 +#: howto/urllib2.rst:302 msgid "" "from urllib.request import Request, urlopen\n" "from urllib.error import URLError, HTTPError\n" @@ -514,17 +469,17 @@ msgid "" " # everything is fine" msgstr "" -#: howto/urllib2.rst:367 +#: howto/urllib2.rst:319 msgid "" "The ``except HTTPError`` *must* come first, otherwise ``except URLError`` " "will *also* catch an :exc:`~urllib.error.HTTPError`." msgstr "" -#: howto/urllib2.rst:371 +#: howto/urllib2.rst:323 msgid "Number 2" msgstr "" -#: howto/urllib2.rst:375 +#: howto/urllib2.rst:327 msgid "" "from urllib.request import Request, urlopen\n" "from urllib.error import URLError\n" @@ -542,18 +497,18 @@ msgid "" " # everything is fine" msgstr "" -#: howto/urllib2.rst:392 +#: howto/urllib2.rst:344 msgid "info and geturl" msgstr "" -#: howto/urllib2.rst:394 +#: howto/urllib2.rst:346 msgid "" "The response returned by urlopen (or the :exc:`~urllib.error.HTTPError` " "instance) has two useful methods :meth:`!info` and :meth:`!geturl` and is " "defined in the module :mod:`urllib.response`." msgstr "" -#: howto/urllib2.rst:398 +#: howto/urllib2.rst:350 msgid "" "**geturl** - this returns the real URL of the page fetched. This is useful " "because ``urlopen`` (or the opener object used) may have followed a " @@ -561,14 +516,14 @@ msgid "" "requested." msgstr "" -#: howto/urllib2.rst:402 +#: howto/urllib2.rst:354 msgid "" "**info** - this returns a dictionary-like object that describes the page " "fetched, particularly the headers sent by the server. It is currently an :" "class:`http.client.HTTPMessage` instance." msgstr "" -#: howto/urllib2.rst:406 +#: howto/urllib2.rst:358 msgid "" "Typical headers include 'Content-length', 'Content-type', and so on. See the " "`Quick Reference to HTTP Headers `_ for a " @@ -576,11 +531,11 @@ msgid "" "use." msgstr "" -#: howto/urllib2.rst:413 +#: howto/urllib2.rst:365 msgid "Openers and Handlers" msgstr "" -#: howto/urllib2.rst:415 +#: howto/urllib2.rst:367 msgid "" "When you fetch a URL you use an opener (an instance of the perhaps " "confusingly named :class:`urllib.request.OpenerDirector`). Normally we have " @@ -591,20 +546,20 @@ msgid "" "HTTP redirections or HTTP cookies." msgstr "" -#: howto/urllib2.rst:423 +#: howto/urllib2.rst:375 msgid "" "You will want to create openers if you want to fetch URLs with specific " "handlers installed, for example to get an opener that handles cookies, or to " "get an opener that does not handle redirections." msgstr "" -#: howto/urllib2.rst:427 +#: howto/urllib2.rst:379 msgid "" "To create an opener, instantiate an ``OpenerDirector``, and then call ``." "add_handler(some_handler_instance)`` repeatedly." msgstr "" -#: howto/urllib2.rst:430 +#: howto/urllib2.rst:382 msgid "" "Alternatively, you can use ``build_opener``, which is a convenience function " "for creating opener objects with a single function call. ``build_opener`` " @@ -612,31 +567,31 @@ msgid "" "or override the default handlers." msgstr "" -#: howto/urllib2.rst:435 +#: howto/urllib2.rst:387 msgid "" "Other sorts of handlers you might want to can handle proxies, " "authentication, and other common but slightly specialised situations." msgstr "" -#: howto/urllib2.rst:438 +#: howto/urllib2.rst:390 msgid "" "``install_opener`` can be used to make an ``opener`` object the (global) " "default opener. This means that calls to ``urlopen`` will use the opener you " "have installed." msgstr "" -#: howto/urllib2.rst:442 +#: howto/urllib2.rst:394 msgid "" "Opener objects have an ``open`` method, which can be called directly to " "fetch urls in the same way as the ``urlopen`` function: there's no need to " "call ``install_opener``, except as a convenience." msgstr "" -#: howto/urllib2.rst:448 +#: howto/urllib2.rst:400 msgid "Basic Authentication" msgstr "" -#: howto/urllib2.rst:450 +#: howto/urllib2.rst:402 msgid "" "To illustrate creating and installing a handler we will use the " "``HTTPBasicAuthHandler``. For a more detailed discussion of this subject -- " @@ -645,7 +600,7 @@ msgid "" "www.voidspace.org.uk/python/articles/authentication.shtml>`__." msgstr "" -#: howto/urllib2.rst:456 +#: howto/urllib2.rst:408 msgid "" "When authentication is required, the server sends a header (as well as the " "401 error code) requesting authentication. This specifies the " @@ -653,15 +608,15 @@ msgid "" "Authenticate: SCHEME realm=\"REALM\"``." msgstr "" -#: howto/urllib2.rst:461 +#: howto/urllib2.rst:413 msgid "e.g." msgstr "" -#: howto/urllib2.rst:463 +#: howto/urllib2.rst:415 msgid "WWW-Authenticate: Basic realm=\"cPanel Users\"" msgstr "" -#: howto/urllib2.rst:468 +#: howto/urllib2.rst:420 msgid "" "The client should then retry the request with the appropriate name and " "password for the realm included as a header in the request. This is 'basic " @@ -669,7 +624,7 @@ msgid "" "of ``HTTPBasicAuthHandler`` and an opener to use this handler." msgstr "" -#: howto/urllib2.rst:473 +#: howto/urllib2.rst:425 msgid "" "The ``HTTPBasicAuthHandler`` uses an object called a password manager to " "handle the mapping of URLs and realms to passwords and usernames. If you " @@ -682,13 +637,13 @@ msgid "" "by providing ``None`` as the realm argument to the ``add_password`` method." msgstr "" -#: howto/urllib2.rst:483 +#: howto/urllib2.rst:435 msgid "" "The top-level URL is the first URL that requires authentication. URLs " "\"deeper\" than the URL you pass to .add_password() will also match. ::" msgstr "" -#: howto/urllib2.rst:486 +#: howto/urllib2.rst:438 msgid "" "# create a password manager\n" "password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()\n" @@ -711,7 +666,7 @@ msgid "" "urllib.request.install_opener(opener)" msgstr "" -#: howto/urllib2.rst:508 +#: howto/urllib2.rst:460 msgid "" "In the above example we only supplied our ``HTTPBasicAuthHandler`` to " "``build_opener``. By default openers have the handlers for normal situations " @@ -721,7 +676,7 @@ msgid "" "``FileHandler``, ``DataHandler``, ``HTTPErrorProcessor``." msgstr "" -#: howto/urllib2.rst:515 +#: howto/urllib2.rst:467 msgid "" "``top_level_url`` is in fact *either* a full URL (including the 'http:' " "scheme component and the hostname and optionally the port number) e.g. " @@ -732,11 +687,11 @@ msgid "" "example ``\"joe:password@example.com\"`` is not correct." msgstr "" -#: howto/urllib2.rst:525 +#: howto/urllib2.rst:477 msgid "Proxies" msgstr "" -#: howto/urllib2.rst:527 +#: howto/urllib2.rst:479 msgid "" "**urllib** will auto-detect your proxy settings and use those. This is " "through the ``ProxyHandler``, which is part of the normal handler chain when " @@ -746,37 +701,37 @@ msgid "" "similar steps to setting up a `Basic Authentication`_ handler: ::" msgstr "" -#: howto/urllib2.rst:534 +#: howto/urllib2.rst:486 msgid "" ">>> proxy_support = urllib.request.ProxyHandler({})\n" ">>> opener = urllib.request.build_opener(proxy_support)\n" ">>> urllib.request.install_opener(opener)" msgstr "" -#: howto/urllib2.rst:540 +#: howto/urllib2.rst:492 msgid "" "Currently ``urllib.request`` *does not* support fetching of ``https`` " "locations through a proxy. However, this can be enabled by extending urllib." "request as shown in the recipe [#]_." msgstr "" -#: howto/urllib2.rst:546 +#: howto/urllib2.rst:498 msgid "" "``HTTP_PROXY`` will be ignored if a variable ``REQUEST_METHOD`` is set; see " "the documentation on :func:`~urllib.request.getproxies`." msgstr "" -#: howto/urllib2.rst:551 +#: howto/urllib2.rst:503 msgid "Sockets and Layers" msgstr "" -#: howto/urllib2.rst:553 +#: howto/urllib2.rst:505 msgid "" "The Python support for fetching resources from the web is layered. urllib " "uses the :mod:`http.client` library, which in turn uses the socket library." msgstr "" -#: howto/urllib2.rst:556 +#: howto/urllib2.rst:508 msgid "" "As of Python 2.3 you can specify how long a socket should wait for a " "response before timing out. This can be useful in applications which have to " @@ -786,7 +741,7 @@ msgid "" "sockets using ::" msgstr "" -#: howto/urllib2.rst:562 +#: howto/urllib2.rst:514 msgid "" "import socket\n" "import urllib.request\n" @@ -801,38 +756,38 @@ msgid "" "response = urllib.request.urlopen(req)" msgstr "" -#: howto/urllib2.rst:579 +#: howto/urllib2.rst:531 msgid "Footnotes" msgstr "" -#: howto/urllib2.rst:581 +#: howto/urllib2.rst:533 msgid "This document was reviewed and revised by John Lee." msgstr "" -#: howto/urllib2.rst:583 +#: howto/urllib2.rst:535 msgid "Google for example." msgstr "" -#: howto/urllib2.rst:584 +#: howto/urllib2.rst:536 msgid "" "Browser sniffing is a very bad practice for website design - building sites " "using web standards is much more sensible. Unfortunately a lot of sites " "still send different versions to different browsers." msgstr "" -#: howto/urllib2.rst:587 +#: howto/urllib2.rst:539 msgid "" "The user agent for MSIE 6 is *'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT " "5.1; SV1; .NET CLR 1.1.4322)'*" msgstr "" -#: howto/urllib2.rst:589 +#: howto/urllib2.rst:541 msgid "" "For details of more HTTP request headers, see `Quick Reference to HTTP " "Headers`_." msgstr "" -#: howto/urllib2.rst:591 +#: howto/urllib2.rst:543 msgid "" "In my case I have to use a proxy to access the internet at work. If you " "attempt to fetch *localhost* URLs through this proxy it blocks them. IE is " @@ -840,7 +795,7 @@ msgid "" "with a localhost server, I have to prevent urllib from using the proxy." msgstr "" -#: howto/urllib2.rst:596 +#: howto/urllib2.rst:548 msgid "" "urllib opener for SSL proxy (CONNECT method): `ASPN Cookbook Recipe \n" "Language-Team: LANGUAGE \n" diff --git a/library/__future__.po b/library/__future__.po index 28d50b54..f2578f79 100644 --- a/library/__future__.po +++ b/library/__future__.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/__main__.po b/library/__main__.po index 5cb05415..9c80e737 100644 --- a/library/__main__.po +++ b/library/__main__.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/_thread.po b/library/_thread.po index f0b4684a..14fe4e3b 100644 --- a/library/_thread.po +++ b/library/_thread.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/abc.po b/library/abc.po index b2fb08c6..69bfa187 100644 --- a/library/abc.po +++ b/library/abc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/aifc.po b/library/aifc.po index 18d52ceb..f95c0a48 100644 --- a/library/aifc.po +++ b/library/aifc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-12-23 14:33+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/allos.po b/library/allos.po index f1bbf595..34c5a133 100644 --- a/library/allos.po +++ b/library/allos.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/annotationlib.po b/library/annotationlib.po index c745fe6c..1f1f286b 100644 --- a/library/annotationlib.po +++ b/library/annotationlib.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -208,33 +209,33 @@ msgstr "" #: library/annotationlib.rst:133 msgid "" +"Special value used to signal that an annotate function is being evaluated in " +"a special environment with fake globals. When passed this value, annotate " +"functions should either return the same value as for the :attr:`Format." +"VALUE` format, or raise :exc:`NotImplementedError` to signal that they do " +"not support execution in this environment. This format is only used " +"internally and should not be passed to the functions in this module." +msgstr "" + +#: library/annotationlib.rst:144 +msgid "" "Values are real annotation values (as per :attr:`Format.VALUE` format) for " "defined values, and :class:`ForwardRef` proxies for undefined values. Real " "objects may contain references to :class:`ForwardRef` proxy objects." msgstr "" -#: library/annotationlib.rst:141 +#: library/annotationlib.rst:152 msgid "" "Values are the text string of the annotation as it appears in the source " "code, up to modifications including, but not restricted to, whitespace " "normalizations and constant values optimizations." msgstr "" -#: library/annotationlib.rst:145 +#: library/annotationlib.rst:156 msgid "" "The exact values of these strings may change in future versions of Python." msgstr "" -#: library/annotationlib.rst:150 -msgid "" -"Special value used to signal that an annotate function is being evaluated in " -"a special environment with fake globals. When passed this value, annotate " -"functions should either return the same value as for the :attr:`Format." -"VALUE` format, or raise :exc:`NotImplementedError` to signal that they do " -"not support execution in this environment. This format is only used " -"internally and should not be passed to the functions in this module." -msgstr "" - #: library/annotationlib.rst:162 msgid "A proxy object for forward references in annotations." msgstr "" @@ -306,11 +307,18 @@ msgid "" "be necessary to evaluate them successfully." msgstr "" -#: library/annotationlib.rst:218 -msgid "Functions" +#: library/annotationlib.rst:214 +msgid "" +"If no *owner*, *globals*, *locals*, or *type_params* are provided and the :" +"class:`~ForwardRef` does not contain information about its origin, empty " +"globals and locals dictionaries are used." msgstr "" #: library/annotationlib.rst:222 +msgid "Functions" +msgstr "" + +#: library/annotationlib.rst:226 msgid "" "Convert an annotations dict containing runtime values to a dict containing " "only strings. If the values are not already strings, they are converted " @@ -319,13 +327,13 @@ msgid "" "have access to the code creating the annotations." msgstr "" -#: library/annotationlib.rst:229 +#: library/annotationlib.rst:233 msgid "" "For example, this is used to implement the :attr:`~Format.STRING` for :class:" "`typing.TypedDict` classes created through the functional syntax:" msgstr "" -#: library/annotationlib.rst:232 +#: library/annotationlib.rst:236 msgid "" ">>> from typing import TypedDict\n" ">>> Movie = TypedDict(\"movie\", {\"name\": str, \"year\": int})\n" @@ -333,14 +341,14 @@ msgid "" "{'name': 'str', 'year': 'int'}" msgstr "" -#: library/annotationlib.rst:243 +#: library/annotationlib.rst:247 msgid "" "Call the :term:`annotate function` *annotate* with the given *format*, a " "member of the :class:`Format` enum, and return the annotations dictionary " "produced by the function." msgstr "" -#: library/annotationlib.rst:247 +#: library/annotationlib.rst:251 msgid "" "This helper function is required because annotate functions generated by the " "compiler for functions, classes, and modules only support the :attr:`~Format." @@ -351,21 +359,21 @@ msgid "" "while a class is being constructed." msgstr "" -#: library/annotationlib.rst:256 +#: library/annotationlib.rst:260 msgid "" "*owner* is the object that owns the annotation function, usually a function, " "class, or module. If provided, it is used in the :attr:`~Format.FORWARDREF` " "format to produce a :class:`ForwardRef` object that carries more information." msgstr "" -#: library/annotationlib.rst:263 +#: library/annotationlib.rst:267 msgid "" ":PEP:`PEP 649 <649#the-stringizer-and-the-fake-globals-environment>` " "contains an explanation of the implementation technique used by this " "function." msgstr "" -#: library/annotationlib.rst:271 +#: library/annotationlib.rst:275 msgid "" "Call the :term:`evaluate function` *evaluate* with the given *format*, a " "member of the :class:`Format` enum, and return the value produced by the " @@ -374,55 +382,55 @@ msgid "" "function returns a single value." msgstr "" -#: library/annotationlib.rst:277 +#: library/annotationlib.rst:281 msgid "" "This is intended for use with the evaluate functions generated for lazily " "evaluated elements related to type aliases and type parameters:" msgstr "" -#: library/annotationlib.rst:280 +#: library/annotationlib.rst:284 msgid ":meth:`typing.TypeAliasType.evaluate_value`, the value of type aliases" msgstr "" -#: library/annotationlib.rst:281 +#: library/annotationlib.rst:285 msgid ":meth:`typing.TypeVar.evaluate_bound`, the bound of type variables" msgstr "" -#: library/annotationlib.rst:282 +#: library/annotationlib.rst:286 msgid "" ":meth:`typing.TypeVar.evaluate_constraints`, the constraints of type " "variables" msgstr "" -#: library/annotationlib.rst:284 +#: library/annotationlib.rst:288 msgid "" ":meth:`typing.TypeVar.evaluate_default`, the default value of type variables" msgstr "" -#: library/annotationlib.rst:286 +#: library/annotationlib.rst:290 msgid "" ":meth:`typing.ParamSpec.evaluate_default`, the default value of parameter " "specifications" msgstr "" -#: library/annotationlib.rst:288 +#: library/annotationlib.rst:292 msgid "" ":meth:`typing.TypeVarTuple.evaluate_default`, the default value of type " "variable tuples" msgstr "" -#: library/annotationlib.rst:291 +#: library/annotationlib.rst:295 msgid "" "*owner* is the object that owns the evaluate function, such as the type " "alias or type variable object." msgstr "" -#: library/annotationlib.rst:294 +#: library/annotationlib.rst:298 msgid "" "*format* can be used to control the format in which the value is returned:" msgstr "" -#: library/annotationlib.rst:296 +#: library/annotationlib.rst:300 msgid "" ">>> type Alias = undefined\n" ">>> call_evaluate_function(Alias.evaluate_value, Format.VALUE)\n" @@ -435,7 +443,7 @@ msgid "" "'undefined'" msgstr "" -#: library/annotationlib.rst:312 +#: library/annotationlib.rst:316 msgid "" "Retrieve the :term:`annotate function` from a class namespace dictionary " "*namespace*. Return :const:`!None` if the namespace does not contain an " @@ -445,31 +453,31 @@ msgid "" "` for an example using this function in a metaclass." msgstr "" -#: library/annotationlib.rst:322 +#: library/annotationlib.rst:326 msgid "Compute the annotations dict for an object." msgstr "" -#: library/annotationlib.rst:324 +#: library/annotationlib.rst:328 msgid "" "*obj* may be a callable, class, module, or other object with :attr:`~object." "__annotate__` or :attr:`~object.__annotations__` attributes. Passing any " "other object raises :exc:`TypeError`." msgstr "" -#: library/annotationlib.rst:328 +#: library/annotationlib.rst:332 msgid "" "The *format* parameter controls the format in which annotations are " "returned, and must be a member of the :class:`Format` enum or its integer " "equivalent. The different formats work as follows:" msgstr "" -#: library/annotationlib.rst:332 +#: library/annotationlib.rst:336 msgid "" "VALUE: :attr:`!object.__annotations__` is tried first; if that does not " "exist, the :attr:`!object.__annotate__` function is called if it exists." msgstr "" -#: library/annotationlib.rst:334 +#: library/annotationlib.rst:338 msgid "" "FORWARDREF: If :attr:`!object.__annotations__` exists and can be evaluated " "successfully, it is used; otherwise, the :attr:`!object.__annotate__` " @@ -477,25 +485,25 @@ msgid "" "__annotations__` is tried again and any error from accessing it is re-raised." msgstr "" -#: library/annotationlib.rst:338 +#: library/annotationlib.rst:342 msgid "" "STRING: If :attr:`!object.__annotate__` exists, it is called first; " "otherwise, :attr:`!object.__annotations__` is used and stringified using :" "func:`annotations_to_string`." msgstr "" -#: library/annotationlib.rst:342 +#: library/annotationlib.rst:346 msgid "" "Returns a dict. :func:`!get_annotations` returns a new dict every time it's " "called; calling it twice on the same object will return two different but " "equivalent dicts." msgstr "" -#: library/annotationlib.rst:346 +#: library/annotationlib.rst:350 msgid "This function handles several details for you:" msgstr "" -#: library/annotationlib.rst:348 +#: library/annotationlib.rst:352 msgid "" "If *eval_str* is true, values of type :class:`!str` will be un-stringized " "using :func:`eval`. This is intended for use with stringized annotations " @@ -503,33 +511,33 @@ msgid "" "to true with formats other than :attr:`Format.VALUE`." msgstr "" -#: library/annotationlib.rst:353 +#: library/annotationlib.rst:357 msgid "" "If *obj* doesn't have an annotations dict, returns an empty dict. (Functions " "and methods always have an annotations dict; classes, modules, and other " "types of callables may not.)" msgstr "" -#: library/annotationlib.rst:357 +#: library/annotationlib.rst:361 msgid "" "Ignores inherited annotations on classes, as well as annotations on " "metaclasses. If a class doesn't have its own annotations dict, returns an " "empty dict." msgstr "" -#: library/annotationlib.rst:360 +#: library/annotationlib.rst:364 msgid "" "All accesses to object members and dict values are done using ``getattr()`` " "and ``dict.get()`` for safety." msgstr "" -#: library/annotationlib.rst:363 +#: library/annotationlib.rst:367 msgid "" "*eval_str* controls whether or not values of type :class:`!str` are replaced " "with the result of calling :func:`eval` on those values:" msgstr "" -#: library/annotationlib.rst:366 +#: library/annotationlib.rst:370 msgid "" "If eval_str is true, :func:`eval` is called on values of type :class:`!str`. " "(Note that :func:`!get_annotations` doesn't catch exceptions; if :func:" @@ -537,13 +545,13 @@ msgid "" "get_annotations` call.)" msgstr "" -#: library/annotationlib.rst:370 +#: library/annotationlib.rst:374 msgid "" "If *eval_str* is false (the default), values of type :class:`!str` are " "unchanged." msgstr "" -#: library/annotationlib.rst:373 +#: library/annotationlib.rst:377 msgid "" "*globals* and *locals* are passed in to :func:`eval`; see the documentation " "for :func:`eval` for more information. If *globals* or *locals* is :const:`!" @@ -551,17 +559,17 @@ msgid "" "contingent on ``type(obj)``:" msgstr "" -#: library/annotationlib.rst:378 +#: library/annotationlib.rst:382 msgid "If *obj* is a module, *globals* defaults to ``obj.__dict__``." msgstr "" -#: library/annotationlib.rst:379 +#: library/annotationlib.rst:383 msgid "" "If *obj* is a class, *globals* defaults to ``sys.modules[obj.__module__]." "__dict__`` and *locals* defaults to the *obj* class namespace." msgstr "" -#: library/annotationlib.rst:382 +#: library/annotationlib.rst:386 msgid "" "If *obj* is a callable, *globals* defaults to :attr:`obj.__globals__ " "`, although if *obj* is a wrapped function (using :" @@ -569,14 +577,14 @@ msgid "" "is unwrapped until a non-wrapped function is found." msgstr "" -#: library/annotationlib.rst:388 +#: library/annotationlib.rst:392 msgid "" "Calling :func:`!get_annotations` is best practice for accessing the " "annotations dict of any object. See :ref:`annotations-howto` for more " "information on annotations best practices." msgstr "" -#: library/annotationlib.rst:392 +#: library/annotationlib.rst:396 msgid "" ">>> def f(a: int, b: str) -> float:\n" "... pass\n" @@ -584,14 +592,14 @@ msgid "" "{'a': , 'b': , 'return': }" msgstr "" -#: library/annotationlib.rst:403 +#: library/annotationlib.rst:407 msgid "" "Convert an arbitrary Python value to a format suitable for use by the :attr:" "`~Format.STRING` format. This calls :func:`repr` for most objects, but has " "special handling for some objects, such as type objects." msgstr "" -#: library/annotationlib.rst:407 +#: library/annotationlib.rst:411 msgid "" "This is meant as a helper for user-provided annotate functions that support " "the :attr:`~Format.STRING` format but do not have access to the code " @@ -600,15 +608,15 @@ msgid "" "commonly encountered in annotations." msgstr "" -#: library/annotationlib.rst:417 +#: library/annotationlib.rst:421 msgid "Recipes" msgstr "" -#: library/annotationlib.rst:422 +#: library/annotationlib.rst:426 msgid "Using annotations in a metaclass" msgstr "" -#: library/annotationlib.rst:424 +#: library/annotationlib.rst:428 msgid "" "A :ref:`metaclass ` may want to inspect or even modify the " "annotations in a class body during class creation. Doing so requires " @@ -622,20 +630,20 @@ msgid "" "names that cannot yet be resolved when the class is created." msgstr "" -#: library/annotationlib.rst:435 +#: library/annotationlib.rst:439 msgid "" "To modify the annotations, it is best to create a wrapper annotate function " "that calls the original annotate function, makes any necessary adjustments, " "and returns the result." msgstr "" -#: library/annotationlib.rst:439 +#: library/annotationlib.rst:443 msgid "" "Below is an example of a metaclass that filters out all :class:`typing." "ClassVar` annotations from the class and puts them in a separate attribute:" msgstr "" -#: library/annotationlib.rst:442 +#: library/annotationlib.rst:446 msgid "" "import annotationlib\n" "import typing\n" @@ -685,3 +693,249 @@ msgid "" "attribute\n" " return typ" msgstr "" + +#: library/annotationlib.rst:494 +msgid "Limitations of the ``STRING`` format" +msgstr "" + +#: library/annotationlib.rst:496 +msgid "" +"The :attr:`~Format.STRING` format is meant to approximate the source code of " +"the annotation, but the implementation strategy used means that it is not " +"always possible to recover the exact source code." +msgstr "" + +#: library/annotationlib.rst:500 +msgid "" +"First, the stringifier of course cannot recover any information that is not " +"present in the compiled code, including comments, whitespace, " +"parenthesization, and operations that get simplified by the compiler." +msgstr "" + +#: library/annotationlib.rst:504 +msgid "" +"Second, the stringifier can intercept almost all operations that involve " +"names looked up in some scope, but it cannot intercept operations that " +"operate fully on constants. As a corollary, this also means it is not safe " +"to request the ``STRING`` format on untrusted code: Python is powerful " +"enough that it is possible to achieve arbitrary code execution even with no " +"access to any globals or builtins. For example:" +msgstr "" + +#: library/annotationlib.rst:510 +msgid "" +">>> def f(x: (1).__class__.__base__.__subclasses__()[-1].__init__." +"__builtins__[\"print\"](\"Hello world\")): pass\n" +"...\n" +">>> annotationlib.get_annotations(f, format=annotationlib.Format.SOURCE)\n" +"Hello world\n" +"{'x': 'None'}" +msgstr "" + +#: library/annotationlib.rst:519 +msgid "" +"This particular example works as of the time of writing, but it relies on " +"implementation details and is not guaranteed to work in the future." +msgstr "" + +#: library/annotationlib.rst:522 +msgid "" +"Among the different kinds of expressions that exist in Python, as " +"represented by the :mod:`ast` module, some expressions are supported, " +"meaning that the ``STRING`` format can generally recover the original source " +"code; others are unsupported, meaning that they may result in incorrect " +"output or an error." +msgstr "" + +#: library/annotationlib.rst:527 +msgid "The following are supported (sometimes with caveats):" +msgstr "" + +#: library/annotationlib.rst:529 +msgid ":class:`ast.BinOp`" +msgstr "" + +#: library/annotationlib.rst:530 +msgid ":class:`ast.UnaryOp`" +msgstr "" + +#: library/annotationlib.rst:532 +msgid "" +":class:`ast.Invert` (``~``), :class:`ast.UAdd` (``+``), and :class:`ast." +"USub` (``-``) are supported" +msgstr "" + +#: library/annotationlib.rst:533 +msgid ":class:`ast.Not` (``not``) is not supported" +msgstr "" + +#: library/annotationlib.rst:535 +msgid ":class:`ast.Dict` (except when using ``**`` unpacking)" +msgstr "" + +#: library/annotationlib.rst:536 +msgid ":class:`ast.Set`" +msgstr "" + +#: library/annotationlib.rst:537 +msgid ":class:`ast.Compare`" +msgstr "" + +#: library/annotationlib.rst:539 +msgid ":class:`ast.Eq` and :class:`ast.NotEq` are supported" +msgstr "" + +#: library/annotationlib.rst:540 +msgid "" +":class:`ast.Lt`, :class:`ast.LtE`, :class:`ast.Gt`, and :class:`ast.GtE` are " +"supported, but the operand may be flipped" +msgstr "" + +#: library/annotationlib.rst:541 +msgid "" +":class:`ast.Is`, :class:`ast.IsNot`, :class:`ast.In`, and :class:`ast.NotIn` " +"are not supported" +msgstr "" + +#: library/annotationlib.rst:543 +msgid ":class:`ast.Call` (except when using ``**`` unpacking)" +msgstr "" + +#: library/annotationlib.rst:544 +msgid "" +":class:`ast.Constant` (though not the exact representation of the constant; " +"for example, escape sequences in strings are lost; hexadecimal numbers are " +"converted to decimal)" +msgstr "" + +#: library/annotationlib.rst:546 +msgid ":class:`ast.Attribute` (assuming the value is not a constant)" +msgstr "" + +#: library/annotationlib.rst:547 +msgid ":class:`ast.Subscript` (assuming the value is not a constant)" +msgstr "" + +#: library/annotationlib.rst:548 +msgid ":class:`ast.Starred` (``*`` unpacking)" +msgstr "" + +#: library/annotationlib.rst:549 +msgid ":class:`ast.Name`" +msgstr "" + +#: library/annotationlib.rst:550 +msgid ":class:`ast.List`" +msgstr "" + +#: library/annotationlib.rst:551 +msgid ":class:`ast.Tuple`" +msgstr "" + +#: library/annotationlib.rst:552 +msgid ":class:`ast.Slice`" +msgstr "" + +#: library/annotationlib.rst:554 +msgid "" +"The following are unsupported, but throw an informative error when " +"encountered by the stringifier:" +msgstr "" + +#: library/annotationlib.rst:557 +msgid "" +":class:`ast.FormattedValue` (f-strings; error is not detected if conversion " +"specifiers like ``!r`` are used)" +msgstr "" + +#: library/annotationlib.rst:559 +msgid ":class:`ast.JoinedStr` (f-strings)" +msgstr "" + +#: library/annotationlib.rst:561 +msgid "The following are unsupported and result in incorrect output:" +msgstr "" + +#: library/annotationlib.rst:563 +msgid ":class:`ast.BoolOp` (``and`` and ``or``)" +msgstr "" + +#: library/annotationlib.rst:564 +msgid ":class:`ast.IfExp`" +msgstr "" + +#: library/annotationlib.rst:565 +msgid ":class:`ast.Lambda`" +msgstr "" + +#: library/annotationlib.rst:566 +msgid ":class:`ast.ListComp`" +msgstr "" + +#: library/annotationlib.rst:567 +msgid ":class:`ast.SetComp`" +msgstr "" + +#: library/annotationlib.rst:568 +msgid ":class:`ast.DictComp`" +msgstr "" + +#: library/annotationlib.rst:569 +msgid ":class:`ast.GeneratorExp`" +msgstr "" + +#: library/annotationlib.rst:571 +msgid "" +"The following are disallowed in annotation scopes and therefore not relevant:" +msgstr "" + +#: library/annotationlib.rst:573 +msgid ":class:`ast.NamedExpr` (``:=``)" +msgstr "" + +#: library/annotationlib.rst:574 +msgid ":class:`ast.Await`" +msgstr "" + +#: library/annotationlib.rst:575 +msgid ":class:`ast.Yield`" +msgstr "" + +#: library/annotationlib.rst:576 +msgid ":class:`ast.YieldFrom`" +msgstr "" + +#: library/annotationlib.rst:580 +msgid "Limitations of the ``FORWARDREF`` format" +msgstr "" + +#: library/annotationlib.rst:582 +msgid "" +"The :attr:`~Format.FORWARDREF` format aims to produce real values as much as " +"possible, with anything that cannot be resolved replaced with :class:" +"`ForwardRef` objects. It is affected by broadly the same Limitations as the :" +"attr:`~Format.STRING` format: annotations that perform operations on " +"literals or that use unsupported expression types may raise exceptions when " +"evaluated using the :attr:`~Format.FORWARDREF` format." +msgstr "" + +#: library/annotationlib.rst:589 +msgid "Below are a few examples of the behavior with unsupported expressions:" +msgstr "" + +#: library/annotationlib.rst:591 +msgid "" +">>> from annotationlib import get_annotations, Format\n" +">>> def zerodiv(x: 1 / 0): ...\n" +">>> get_annotations(zerodiv, format=Format.STRING)\n" +"Traceback (most recent call last):\n" +" ...\n" +"ZeroDivisionError: division by zero\n" +">>> get_annotations(zerodiv, format=Format.FORWARDREF)\n" +"Traceback (most recent call last):\n" +" ...\n" +"ZeroDivisionError: division by zero\n" +">>> def ifexp(x: 1 if y else 0): ...\n" +">>> get_annotations(ifexp, format=Format.STRING)\n" +"{'x': '1'}" +msgstr "" diff --git a/library/archiving.po b/library/archiving.po index b986dd69..a1d8276d 100644 --- a/library/archiving.po +++ b/library/archiving.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,7 +24,7 @@ msgstr "" #: library/archiving.rst:7 msgid "" "The modules described in this chapter support data compression with the " -"zlib, gzip, bzip2 and lzma algorithms, and the creation of ZIP- and tar-" -"format archives. See also :ref:`archiving-operations` provided by the :mod:" -"`shutil` module." +"zlib, gzip, bzip2, lzma, and zstd algorithms, and the creation of ZIP- and " +"tar-format archives. See also :ref:`archiving-operations` provided by the :" +"mod:`shutil` module." msgstr "" diff --git a/library/argparse.po b/library/argparse.po index e86f2908..97b905c2 100644 --- a/library/argparse.po +++ b/library/argparse.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2932,16 +2932,21 @@ msgstr "" #: library/argparse.rst:2125 msgid "" -"Sometimes a script may only parse a few of the command-line arguments, " -"passing the remaining arguments on to another script or program. In these " -"cases, the :meth:`~ArgumentParser.parse_known_args` method can be useful. " -"It works much like :meth:`~ArgumentParser.parse_args` except that it does " -"not produce an error when extra arguments are present. Instead, it returns " -"a two item tuple containing the populated namespace and the list of " -"remaining argument strings." +"Sometimes a script only needs to handle a specific set of command-line " +"arguments, leaving any unrecognized arguments for another script or program. " +"In these cases, the :meth:`~ArgumentParser.parse_known_args` method can be " +"useful." msgstr "" -#: library/argparse.rst:2134 +#: library/argparse.rst:2130 +msgid "" +"This method works similarly to :meth:`~ArgumentParser.parse_args`, but it " +"does not raise an error for extra, unrecognized arguments. Instead, it " +"parses the known arguments and returns a two item tuple that contains the " +"populated namespace and the list of any unrecognized arguments." +msgstr "" + +#: library/argparse.rst:2137 msgid "" ">>> parser = argparse.ArgumentParser()\n" ">>> parser.add_argument('--foo', action='store_true')\n" @@ -2950,7 +2955,7 @@ msgid "" "(Namespace(bar='BAR', foo=True), ['--badger', 'spam'])" msgstr "" -#: library/argparse.rst:2141 +#: library/argparse.rst:2144 msgid "" ":ref:`Prefix matching ` rules apply to :meth:" "`~ArgumentParser.parse_known_args`. The parser may consume an option even if " @@ -2958,11 +2963,11 @@ msgid "" "remaining arguments list." msgstr "" -#: library/argparse.rst:2148 +#: library/argparse.rst:2151 msgid "Customizing file parsing" msgstr "" -#: library/argparse.rst:2152 +#: library/argparse.rst:2155 msgid "" "Arguments that are read from a file (see the *fromfile_prefix_chars* keyword " "argument to the :class:`ArgumentParser` constructor) are read one argument " @@ -2970,38 +2975,38 @@ msgid "" "reading." msgstr "" -#: library/argparse.rst:2157 +#: library/argparse.rst:2160 msgid "" "This method takes a single argument *arg_line* which is a string read from " "the argument file. It returns a list of arguments parsed from this string. " "The method is called once per line read from the argument file, in order." msgstr "" -#: library/argparse.rst:2161 +#: library/argparse.rst:2164 msgid "" "A useful override of this method is one that treats each space-separated " "word as an argument. The following example demonstrates how to do this::" msgstr "" -#: library/argparse.rst:2164 +#: library/argparse.rst:2167 msgid "" "class MyArgumentParser(argparse.ArgumentParser):\n" " def convert_arg_line_to_args(self, arg_line):\n" " return arg_line.split()" msgstr "" -#: library/argparse.rst:2170 +#: library/argparse.rst:2173 msgid "Exiting methods" msgstr "" -#: library/argparse.rst:2174 +#: library/argparse.rst:2177 msgid "" "This method terminates the program, exiting with the specified *status* and, " "if given, it prints a *message* to :data:`sys.stderr` before that. The user " "can override this method to handle these steps differently::" msgstr "" -#: library/argparse.rst:2178 +#: library/argparse.rst:2181 msgid "" "class ErrorCatchingArgumentParser(argparse.ArgumentParser):\n" " def exit(self, status=0, message=None):\n" @@ -3010,17 +3015,17 @@ msgid "" " exit(status)" msgstr "" -#: library/argparse.rst:2186 +#: library/argparse.rst:2189 msgid "" "This method prints a usage message, including the *message*, to :data:`sys." "stderr` and terminates the program with a status code of 2." msgstr "" -#: library/argparse.rst:2191 +#: library/argparse.rst:2194 msgid "Intermixed parsing" msgstr "" -#: library/argparse.rst:2196 +#: library/argparse.rst:2199 msgid "" "A number of Unix commands allow the user to intermix optional arguments with " "positional arguments. The :meth:`~ArgumentParser.parse_intermixed_args` " @@ -3028,7 +3033,7 @@ msgid "" "parsing style." msgstr "" -#: library/argparse.rst:2201 +#: library/argparse.rst:2204 msgid "" "These parsers do not support all the :mod:`!argparse` features, and will " "raise exceptions if unsupported features are used. In particular, " @@ -3036,7 +3041,7 @@ msgid "" "positionals are not supported." msgstr "" -#: library/argparse.rst:2206 +#: library/argparse.rst:2209 msgid "" "The following example shows the difference between :meth:`~ArgumentParser." "parse_known_args` and :meth:`~ArgumentParser.parse_intermixed_args`: the " @@ -3044,7 +3049,7 @@ msgid "" "collects all the positionals into ``rest``. ::" msgstr "" -#: library/argparse.rst:2212 +#: library/argparse.rst:2215 msgid "" ">>> parser = argparse.ArgumentParser()\n" ">>> parser.add_argument('--foo')\n" @@ -3056,7 +3061,7 @@ msgid "" "Namespace(cmd='doit', foo='bar', rest=[1, 2, 3])" msgstr "" -#: library/argparse.rst:2221 +#: library/argparse.rst:2224 msgid "" ":meth:`~ArgumentParser.parse_known_intermixed_args` returns a two item tuple " "containing the populated namespace and the list of remaining argument " @@ -3064,11 +3069,11 @@ msgid "" "there are any remaining unparsed argument strings." msgstr "" -#: library/argparse.rst:2230 +#: library/argparse.rst:2233 msgid "Registering custom types or actions" msgstr "" -#: library/argparse.rst:2234 +#: library/argparse.rst:2237 msgid "" "Sometimes it's desirable to use a custom string in error messages to provide " "more user-friendly output. In these cases, :meth:`!register` can be used to " @@ -3076,7 +3081,7 @@ msgid "" "the type by their registered name instead of their callable name." msgstr "" -#: library/argparse.rst:2239 +#: library/argparse.rst:2242 msgid "" "The :meth:`!register` method accepts three arguments - a *registry_name*, " "specifying the internal registry where the object will be stored (e.g., " @@ -3084,12 +3089,12 @@ msgid "" "be registered, and object, the callable to be registered." msgstr "" -#: library/argparse.rst:2244 +#: library/argparse.rst:2247 msgid "" "The following example shows how to register a custom type with a parser::" msgstr "" -#: library/argparse.rst:2246 +#: library/argparse.rst:2249 msgid "" ">>> import argparse\n" ">>> parser = argparse.ArgumentParser()\n" @@ -3105,26 +3110,26 @@ msgid "" "PROG: error: argument --foo: invalid 'hexadecimal integer' value: '1.2'" msgstr "" -#: library/argparse.rst:2258 +#: library/argparse.rst:2261 msgid "Exceptions" msgstr "" -#: library/argparse.rst:2262 +#: library/argparse.rst:2265 msgid "An error from creating or using an argument (optional or positional)." msgstr "" -#: library/argparse.rst:2264 +#: library/argparse.rst:2267 msgid "" "The string value of this exception is the message, augmented with " "information about the argument that caused it." msgstr "" -#: library/argparse.rst:2269 +#: library/argparse.rst:2272 msgid "" "Raised when something goes wrong converting a command line string to a type." msgstr "" -#: library/argparse.rst:2273 +#: library/argparse.rst:2276 msgid "Guides and Tutorials" msgstr "" diff --git a/library/array.po b/library/array.po index 42a14bad..8adb599f 100644 --- a/library/array.po +++ b/library/array.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/ast.po b/library/ast.po index 77f6463a..4726251a 100644 --- a/library/ast.po +++ b/library/ast.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -516,9 +516,9 @@ msgstr "" msgid "" "A constant value. The ``value`` attribute of the ``Constant`` literal " "contains the Python object it represents. The values represented can be " -"simple types such as a number, string or ``None``, but also immutable " -"container types (tuples and frozensets) if all of their elements are " -"constant." +"instances of :class:`str`, :class:`bytes`, :class:`int`, :class:`float`, :" +"class:`complex`, and :class:`bool`, and the constants :data:`None` and :data:" +"`Ellipsis`." msgstr "" #: library/ast.rst:284 @@ -2900,19 +2900,19 @@ msgstr "" #: library/ast.rst:2448 msgid "" -"If *show_empty* is ``False`` (the default), empty lists and fields that are " -"``None`` will be omitted from the output." +"If *show_empty* is false (the default), optional empty lists will be omitted " +"from the output. Optional ``None`` values are always omitted." msgstr "" -#: library/ast.rst:2451 +#: library/ast.rst:2452 msgid "Added the *indent* option." msgstr "" -#: library/ast.rst:2454 +#: library/ast.rst:2455 msgid "Added the *show_empty* option." msgstr "" -#: library/ast.rst:2457 +#: library/ast.rst:2458 msgid "" ">>> print(ast.dump(ast.parse(\"\"\"\\\n" "... async def f():\n" @@ -2940,45 +2940,45 @@ msgid "" " type_ignores=[])" msgstr "" -#: library/ast.rst:2488 +#: library/ast.rst:2489 msgid "Compiler flags" msgstr "" -#: library/ast.rst:2490 +#: library/ast.rst:2491 msgid "" "The following flags may be passed to :func:`compile` in order to change " "effects on the compilation of a program:" msgstr "" -#: library/ast.rst:2495 +#: library/ast.rst:2496 msgid "" "Enables support for top-level ``await``, ``async for``, ``async with`` and " "async comprehensions." msgstr "" -#: library/ast.rst:2502 +#: library/ast.rst:2503 msgid "" "Generates and returns an abstract syntax tree instead of returning a " "compiled code object." msgstr "" -#: library/ast.rst:2507 +#: library/ast.rst:2508 msgid "" "The returned AST is optimized according to the *optimize* argument in :func:" "`compile` or :func:`ast.parse`." msgstr "" -#: library/ast.rst:2514 +#: library/ast.rst:2515 msgid "" "Enables support for :pep:`484` and :pep:`526` style type comments (``# type: " "``, ``# type: ignore ``)." msgstr "" -#: library/ast.rst:2522 +#: library/ast.rst:2523 msgid "Recursively compares two ASTs." msgstr "" -#: library/ast.rst:2524 +#: library/ast.rst:2525 msgid "" "*compare_attributes* affects whether AST attributes are considered in the " "comparison. If *compare_attributes* is ``False`` (default), then attributes " @@ -2987,75 +2987,75 @@ msgid "" "similar details. Attributes include line numbers and column offsets." msgstr "" -#: library/ast.rst:2537 +#: library/ast.rst:2538 msgid "Command-line usage" msgstr "" -#: library/ast.rst:2541 +#: library/ast.rst:2542 msgid "" "The :mod:`ast` module can be executed as a script from the command line. It " "is as simple as:" msgstr "" -#: library/ast.rst:2544 +#: library/ast.rst:2545 msgid "python -m ast [-m ] [-a] [infile]" msgstr "" -#: library/ast.rst:2548 +#: library/ast.rst:2549 msgid "The following options are accepted:" msgstr "" -#: library/ast.rst:2554 +#: library/ast.rst:2555 msgid "Show the help message and exit." msgstr "" -#: library/ast.rst:2559 +#: library/ast.rst:2560 msgid "" "Specify what kind of code must be compiled, like the *mode* argument in :" "func:`parse`." msgstr "" -#: library/ast.rst:2564 +#: library/ast.rst:2565 msgid "Don't parse type comments." msgstr "" -#: library/ast.rst:2568 +#: library/ast.rst:2569 msgid "Include attributes such as line numbers and column offsets." msgstr "" -#: library/ast.rst:2573 +#: library/ast.rst:2574 msgid "Indentation of nodes in AST (number of spaces)." msgstr "" -#: library/ast.rst:2577 +#: library/ast.rst:2578 msgid "" "Python version in the format 3.x (for example, 3.10). Defaults to the " "current version of the interpreter." msgstr "" -#: library/ast.rst:2585 +#: library/ast.rst:2586 msgid "Optimization level for parser. Defaults to no optimization." msgstr "" -#: library/ast.rst:2591 +#: library/ast.rst:2592 msgid "" "Show empty lists and fields that are ``None``. Defaults to not showing empty " "objects." msgstr "" -#: library/ast.rst:2597 +#: library/ast.rst:2598 msgid "" "If :file:`infile` is specified its contents are parsed to AST and dumped to " "stdout. Otherwise, the content is read from stdin." msgstr "" -#: library/ast.rst:2603 +#: library/ast.rst:2604 msgid "" "`Green Tree Snakes `_, an external " "documentation resource, has good details on working with Python ASTs." msgstr "" -#: library/ast.rst:2606 +#: library/ast.rst:2607 msgid "" "`ASTTokens `_ " "annotates Python ASTs with the positions of tokens and text in the source " @@ -3063,21 +3063,21 @@ msgid "" "transformations." msgstr "" -#: library/ast.rst:2611 +#: library/ast.rst:2612 msgid "" "`leoAst.py `_ unifies the token-based and parse-tree-based views of python programs " "by inserting two-way links between tokens and ast nodes." msgstr "" -#: library/ast.rst:2616 +#: library/ast.rst:2617 msgid "" "`LibCST `_ parses code as a Concrete Syntax " "Tree that looks like an ast tree and keeps all formatting details. It's " "useful for building automated refactoring (codemod) applications and linters." msgstr "" -#: library/ast.rst:2621 +#: library/ast.rst:2622 msgid "" "`Parso `_ is a Python parser that supports " "error recovery and round-trip parsing for different Python versions (in " diff --git a/library/asynchat.po b/library/asynchat.po index 9a42a9f8..69d426c3 100644 --- a/library/asynchat.po +++ b/library/asynchat.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-20 17:00+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/library/asyncio-api-index.po b/library/asyncio-api-index.po index 61c9595b..4b9cb833 100644 --- a/library/asyncio-api-index.po +++ b/library/asyncio-api-index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-dev.po b/library/asyncio-dev.po index da69ef59..52af63a3 100644 --- a/library/asyncio-dev.po +++ b/library/asyncio-dev.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -90,36 +90,29 @@ msgstr "" #: library/asyncio-dev.rst:49 msgid "" -"asyncio checks for :ref:`coroutines that were not awaited ` and logs them; this mitigates the \"forgotten await\" " -"pitfall." -msgstr "" - -#: library/asyncio-dev.rst:53 -msgid "" "Many non-threadsafe asyncio APIs (such as :meth:`loop.call_soon` and :meth:" "`loop.call_at` methods) raise an exception if they are called from a wrong " "thread." msgstr "" -#: library/asyncio-dev.rst:57 +#: library/asyncio-dev.rst:53 msgid "" "The execution time of the I/O selector is logged if it takes too long to " "perform an I/O operation." msgstr "" -#: library/asyncio-dev.rst:60 +#: library/asyncio-dev.rst:56 msgid "" "Callbacks taking longer than 100 milliseconds are logged. The :attr:`loop." "slow_callback_duration` attribute can be used to set the minimum execution " "duration in seconds that is considered \"slow\"." msgstr "" -#: library/asyncio-dev.rst:68 +#: library/asyncio-dev.rst:64 msgid "Concurrency and Multithreading" msgstr "" -#: library/asyncio-dev.rst:70 +#: library/asyncio-dev.rst:66 msgid "" "An event loop runs in a thread (typically the main thread) and executes all " "callbacks and Tasks in its thread. While a Task is running in the event " @@ -128,17 +121,17 @@ msgid "" "executes the next Task." msgstr "" -#: library/asyncio-dev.rst:76 +#: library/asyncio-dev.rst:72 msgid "" "To schedule a :term:`callback` from another OS thread, the :meth:`loop." "call_soon_threadsafe` method should be used. Example::" msgstr "" -#: library/asyncio-dev.rst:79 +#: library/asyncio-dev.rst:75 msgid "loop.call_soon_threadsafe(callback, *args)" msgstr "" -#: library/asyncio-dev.rst:81 +#: library/asyncio-dev.rst:77 msgid "" "Almost all asyncio objects are not thread safe, which is typically not a " "problem unless there is code that works with them from outside of a Task or " @@ -146,18 +139,18 @@ msgid "" "API, the :meth:`loop.call_soon_threadsafe` method should be used, e.g.::" msgstr "" -#: library/asyncio-dev.rst:87 +#: library/asyncio-dev.rst:83 msgid "loop.call_soon_threadsafe(fut.cancel)" msgstr "" -#: library/asyncio-dev.rst:89 +#: library/asyncio-dev.rst:85 msgid "" "To schedule a coroutine object from a different OS thread, the :func:" "`run_coroutine_threadsafe` function should be used. It returns a :class:" "`concurrent.futures.Future` to access the result::" msgstr "" -#: library/asyncio-dev.rst:93 +#: library/asyncio-dev.rst:89 msgid "" "async def coro_func():\n" " return await asyncio.sleep(1, 42)\n" @@ -169,11 +162,11 @@ msgid "" "result = future.result()" msgstr "" -#: library/asyncio-dev.rst:102 +#: library/asyncio-dev.rst:98 msgid "To handle signals the event loop must be run in the main thread." msgstr "" -#: library/asyncio-dev.rst:105 +#: library/asyncio-dev.rst:101 msgid "" "The :meth:`loop.run_in_executor` method can be used with a :class:" "`concurrent.futures.ThreadPoolExecutor` or :class:`~concurrent.futures." @@ -181,7 +174,7 @@ msgid "" "without blocking the OS thread that the event loop runs in." msgstr "" -#: library/asyncio-dev.rst:111 +#: library/asyncio-dev.rst:107 msgid "" "There is currently no way to schedule coroutines or callbacks directly from " "a different process (such as one started with :mod:`multiprocessing`). The :" @@ -194,18 +187,18 @@ msgid "" "different process." msgstr "" -#: library/asyncio-dev.rst:125 +#: library/asyncio-dev.rst:121 msgid "Running Blocking Code" msgstr "" -#: library/asyncio-dev.rst:127 +#: library/asyncio-dev.rst:123 msgid "" "Blocking (CPU-bound) code should not be called directly. For example, if a " "function performs a CPU-intensive calculation for 1 second, all concurrent " "asyncio Tasks and IO operations would be delayed by 1 second." msgstr "" -#: library/asyncio-dev.rst:132 +#: library/asyncio-dev.rst:128 msgid "" "An executor can be used to run a task in a different thread, including in a " "different interpreter, or even in a different process to avoid blocking the " @@ -213,45 +206,45 @@ msgid "" "for more details." msgstr "" -#: library/asyncio-dev.rst:142 +#: library/asyncio-dev.rst:138 msgid "Logging" msgstr "" -#: library/asyncio-dev.rst:144 +#: library/asyncio-dev.rst:140 msgid "" "asyncio uses the :mod:`logging` module and all logging is performed via the " "``\"asyncio\"`` logger." msgstr "" -#: library/asyncio-dev.rst:147 +#: library/asyncio-dev.rst:143 msgid "" "The default log level is :py:const:`logging.INFO`, which can be easily " "adjusted::" msgstr "" -#: library/asyncio-dev.rst:150 +#: library/asyncio-dev.rst:146 msgid "logging.getLogger(\"asyncio\").setLevel(logging.WARNING)" msgstr "" -#: library/asyncio-dev.rst:153 +#: library/asyncio-dev.rst:149 msgid "" "Network logging can block the event loop. It is recommended to use a " "separate thread for handling logs or use non-blocking IO. For example, see :" "ref:`blocking-handlers`." msgstr "" -#: library/asyncio-dev.rst:161 +#: library/asyncio-dev.rst:157 msgid "Detect never-awaited coroutines" msgstr "" -#: library/asyncio-dev.rst:163 +#: library/asyncio-dev.rst:159 msgid "" "When a coroutine function is called, but not awaited (e.g. ``coro()`` " "instead of ``await coro()``) or the coroutine is not scheduled with :meth:" "`asyncio.create_task`, asyncio will emit a :exc:`RuntimeWarning`::" msgstr "" -#: library/asyncio-dev.rst:168 +#: library/asyncio-dev.rst:164 msgid "" "import asyncio\n" "\n" @@ -264,21 +257,21 @@ msgid "" "asyncio.run(main())" msgstr "" -#: library/asyncio-dev.rst:223 +#: library/asyncio-dev.rst:219 msgid "Output::" msgstr "" -#: library/asyncio-dev.rst:180 +#: library/asyncio-dev.rst:176 msgid "" "test.py:7: RuntimeWarning: coroutine 'test' was never awaited\n" " test()" msgstr "" -#: library/asyncio-dev.rst:239 +#: library/asyncio-dev.rst:235 msgid "Output in debug mode::" msgstr "" -#: library/asyncio-dev.rst:185 +#: library/asyncio-dev.rst:181 msgid "" "test.py:7: RuntimeWarning: coroutine 'test' was never awaited\n" "Coroutine created at (most recent call last)\n" @@ -292,23 +285,23 @@ msgid "" " test()" msgstr "" -#: library/asyncio-dev.rst:196 +#: library/asyncio-dev.rst:192 msgid "" "The usual fix is to either await the coroutine or call the :meth:`asyncio." "create_task` function::" msgstr "" -#: library/asyncio-dev.rst:199 +#: library/asyncio-dev.rst:195 msgid "" "async def main():\n" " await test()" msgstr "" -#: library/asyncio-dev.rst:204 +#: library/asyncio-dev.rst:200 msgid "Detect never-retrieved exceptions" msgstr "" -#: library/asyncio-dev.rst:206 +#: library/asyncio-dev.rst:202 msgid "" "If a :meth:`Future.set_exception` is called but the Future object is never " "awaited on, the exception would never be propagated to the user code. In " @@ -316,11 +309,11 @@ msgid "" "garbage collected." msgstr "" -#: library/asyncio-dev.rst:211 +#: library/asyncio-dev.rst:207 msgid "Example of an unhandled exception::" msgstr "" -#: library/asyncio-dev.rst:213 +#: library/asyncio-dev.rst:209 msgid "" "import asyncio\n" "\n" @@ -333,7 +326,7 @@ msgid "" "asyncio.run(main())" msgstr "" -#: library/asyncio-dev.rst:225 +#: library/asyncio-dev.rst:221 msgid "" "Task exception was never retrieved\n" "future: \n" @@ -345,17 +338,17 @@ msgid "" "Exception: not consumed" msgstr "" -#: library/asyncio-dev.rst:234 +#: library/asyncio-dev.rst:230 msgid "" ":ref:`Enable the debug mode ` to get the traceback where " "the task was created::" msgstr "" -#: library/asyncio-dev.rst:237 +#: library/asyncio-dev.rst:233 msgid "asyncio.run(main(), debug=True)" msgstr "" -#: library/asyncio-dev.rst:241 +#: library/asyncio-dev.rst:237 msgid "" "Task exception was never retrieved\n" "future: \n" diff --git a/library/asyncio-eventloop.po b/library/asyncio-eventloop.po index b3698af4..8a352087 100644 --- a/library/asyncio-eventloop.po +++ b/library/asyncio-eventloop.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -259,8 +259,8 @@ msgid "" "used." msgstr "" -#: library/asyncio-eventloop.rst:183 library/asyncio-eventloop.rst:1315 -#: library/asyncio-eventloop.rst:1771 +#: library/asyncio-eventloop.rst:183 library/asyncio-eventloop.rst:1336 +#: library/asyncio-eventloop.rst:1792 msgid "Example::" msgstr "" @@ -501,18 +501,25 @@ msgstr "" #: library/asyncio-eventloop.rst:373 msgid "" +"The full function signature is largely the same as that of the :class:`Task` " +"constructor (or factory) - all of the keyword arguments to this function are " +"passed through to that interface." +msgstr "" + +#: library/asyncio-eventloop.rst:377 +msgid "" "If the *name* argument is provided and not ``None``, it is set as the name " "of the task using :meth:`Task.set_name`." msgstr "" -#: library/asyncio-eventloop.rst:376 +#: library/asyncio-eventloop.rst:380 msgid "" "An optional keyword-only *context* argument allows specifying a custom :" "class:`contextvars.Context` for the *coro* to run in. The current context " "copy is created when no *context* is provided." msgstr "" -#: library/asyncio-eventloop.rst:380 +#: library/asyncio-eventloop.rst:384 msgid "" "An optional keyword-only *eager_start* argument allows specifying if the " "task should execute eagerly during the call to create_task, or be scheduled " @@ -520,23 +527,38 @@ msgid "" "set_task_factory` will be used." msgstr "" -#: library/asyncio-eventloop.rst:385 +#: library/asyncio-eventloop.rst:389 msgid "Added the *name* parameter." msgstr "" -#: library/asyncio-eventloop.rst:388 +#: library/asyncio-eventloop.rst:392 msgid "Added the *context* parameter." msgstr "" -#: library/asyncio-eventloop.rst:391 -msgid "Added the *eager_start* parameter." +#: library/asyncio-eventloop.rst:395 +msgid "" +"Added ``kwargs`` which passes on arbitrary extra parameters, including " +"``name`` and ``context``." +msgstr "" + +#: library/asyncio-eventloop.rst:398 +msgid "" +"Rolled back the change that passes on *name* and *context* (if it is None), " +"while still passing on other arbitrary keyword arguments (to avoid breaking " +"backwards compatibility with 3.13.3)." msgstr "" -#: library/asyncio-eventloop.rst:396 +#: library/asyncio-eventloop.rst:402 +msgid "" +"All *kwargs* are now passed on. The *eager_start* parameter works with eager " +"task factories." +msgstr "" + +#: library/asyncio-eventloop.rst:407 msgid "Set a task factory that will be used by :meth:`loop.create_task`." msgstr "" -#: library/asyncio-eventloop.rst:399 +#: library/asyncio-eventloop.rst:410 msgid "" "If *factory* is ``None`` the default task factory will be set. Otherwise, " "*factory* must be a *callable* with the signature matching ``(loop, coro, " @@ -545,80 +567,96 @@ msgid "" "return a :class:`asyncio.Task`-compatible object." msgstr "" -#: library/asyncio-eventloop.rst:407 +#: library/asyncio-eventloop.rst:416 +msgid "Required that all *kwargs* are passed on to :class:`asyncio.Task`." +msgstr "" + +#: library/asyncio-eventloop.rst:419 +msgid "" +"*name* is no longer passed to task factories. *context* is no longer passed " +"to task factories if it is ``None``." +msgstr "" + +#: library/asyncio-eventloop.rst:423 +msgid "" +"*name* and *context* are now unconditionally passed on to task factories " +"again." +msgstr "" + +#: library/asyncio-eventloop.rst:428 msgid "Return a task factory or ``None`` if the default one is in use." msgstr "" -#: library/asyncio-eventloop.rst:411 +#: library/asyncio-eventloop.rst:432 msgid "Opening network connections" msgstr "" -#: library/asyncio-eventloop.rst:423 +#: library/asyncio-eventloop.rst:444 msgid "" "Open a streaming transport connection to a given address specified by *host* " "and *port*." msgstr "" -#: library/asyncio-eventloop.rst:426 +#: library/asyncio-eventloop.rst:447 msgid "" "The socket family can be either :py:const:`~socket.AF_INET` or :py:const:" "`~socket.AF_INET6` depending on *host* (or the *family* argument, if " "provided)." msgstr "" -#: library/asyncio-eventloop.rst:430 +#: library/asyncio-eventloop.rst:451 msgid "The socket type will be :py:const:`~socket.SOCK_STREAM`." msgstr "" -#: library/asyncio-eventloop.rst:432 library/asyncio-eventloop.rst:1225 -#: library/asyncio-eventloop.rst:1242 +#: library/asyncio-eventloop.rst:453 library/asyncio-eventloop.rst:1246 +#: library/asyncio-eventloop.rst:1263 msgid "" "*protocol_factory* must be a callable returning an :ref:`asyncio protocol " "` implementation." msgstr "" -#: library/asyncio-eventloop.rst:435 +#: library/asyncio-eventloop.rst:456 msgid "" "This method will try to establish the connection in the background. When " "successful, it returns a ``(transport, protocol)`` pair." msgstr "" -#: library/asyncio-eventloop.rst:438 +#: library/asyncio-eventloop.rst:459 msgid "The chronological synopsis of the underlying operation is as follows:" msgstr "" -#: library/asyncio-eventloop.rst:440 +#: library/asyncio-eventloop.rst:461 msgid "" "The connection is established and a :ref:`transport ` is " "created for it." msgstr "" -#: library/asyncio-eventloop.rst:443 +#: library/asyncio-eventloop.rst:464 msgid "" "*protocol_factory* is called without arguments and is expected to return a :" "ref:`protocol ` instance." msgstr "" -#: library/asyncio-eventloop.rst:446 +#: library/asyncio-eventloop.rst:467 msgid "" "The protocol instance is coupled with the transport by calling its :meth:" "`~BaseProtocol.connection_made` method." msgstr "" -#: library/asyncio-eventloop.rst:449 +#: library/asyncio-eventloop.rst:470 msgid "A ``(transport, protocol)`` tuple is returned on success." msgstr "" -#: library/asyncio-eventloop.rst:451 +#: library/asyncio-eventloop.rst:472 msgid "" "The created transport is an implementation-dependent bidirectional stream." msgstr "" -#: library/asyncio-eventloop.rst:454 library/asyncio-eventloop.rst:587 +#: library/asyncio-eventloop.rst:475 library/asyncio-eventloop.rst:608 msgid "Other arguments:" msgstr "" -#: library/asyncio-eventloop.rst:456 +#: library/asyncio-eventloop.rst:477 msgid "" "*ssl*: if given and not false, a SSL/TLS transport is created (by default a " "plain TCP transport is created). If *ssl* is a :class:`ssl.SSLContext` " @@ -627,11 +665,11 @@ msgid "" "is used." msgstr "" -#: library/asyncio-eventloop.rst:462 +#: library/asyncio-eventloop.rst:483 msgid ":ref:`SSL/TLS security considerations `" msgstr "" -#: library/asyncio-eventloop.rst:464 +#: library/asyncio-eventloop.rst:485 msgid "" "*server_hostname* sets or overrides the hostname that the target server's " "certificate will be matched against. Should only be passed if *ssl* is not " @@ -642,7 +680,7 @@ msgid "" "potential man-in-the-middle attacks)." msgstr "" -#: library/asyncio-eventloop.rst:472 +#: library/asyncio-eventloop.rst:493 msgid "" "*family*, *proto*, *flags* are the optional address family, protocol and " "flags to be passed through to getaddrinfo() for *host* resolution. If given, " @@ -650,7 +688,7 @@ msgid "" "constants." msgstr "" -#: library/asyncio-eventloop.rst:477 +#: library/asyncio-eventloop.rst:498 msgid "" "*happy_eyeballs_delay*, if given, enables Happy Eyeballs for this " "connection. It should be a floating-point number representing the amount of " @@ -660,7 +698,7 @@ msgid "" "the RFC is ``0.25`` (250 milliseconds)." msgstr "" -#: library/asyncio-eventloop.rst:485 +#: library/asyncio-eventloop.rst:506 msgid "" "*interleave* controls address reordering when a host name resolves to " "multiple IP addresses. If ``0`` or unspecified, no reordering is done, and " @@ -671,7 +709,7 @@ msgid "" "*happy_eyeballs_delay* is not specified, and ``1`` if it is." msgstr "" -#: library/asyncio-eventloop.rst:494 +#: library/asyncio-eventloop.rst:515 msgid "" "*sock*, if given, should be an existing, already connected :class:`socket." "socket` object to be used by the transport. If *sock* is given, none of " @@ -679,37 +717,37 @@ msgid "" "*interleave* and *local_addr* should be specified." msgstr "" -#: library/asyncio-eventloop.rst:502 library/asyncio-eventloop.rst:618 -#: library/asyncio-eventloop.rst:866 +#: library/asyncio-eventloop.rst:523 library/asyncio-eventloop.rst:639 +#: library/asyncio-eventloop.rst:887 msgid "" "The *sock* argument transfers ownership of the socket to the transport " "created. To close the socket, call the transport's :meth:`~asyncio." "BaseTransport.close` method." msgstr "" -#: library/asyncio-eventloop.rst:506 +#: library/asyncio-eventloop.rst:527 msgid "" "*local_addr*, if given, is a ``(local_host, local_port)`` tuple used to bind " "the socket locally. The *local_host* and *local_port* are looked up using " "``getaddrinfo()``, similarly to *host* and *port*." msgstr "" -#: library/asyncio-eventloop.rst:510 library/asyncio-eventloop.rst:962 +#: library/asyncio-eventloop.rst:531 library/asyncio-eventloop.rst:983 msgid "" "*ssl_handshake_timeout* is (for a TLS connection) the time in seconds to " "wait for the TLS handshake to complete before aborting the connection. " "``60.0`` seconds if ``None`` (default)." msgstr "" -#: library/asyncio-eventloop.rst:514 library/asyncio-eventloop.rst:773 -#: library/asyncio-eventloop.rst:877 library/asyncio-eventloop.rst:966 +#: library/asyncio-eventloop.rst:535 library/asyncio-eventloop.rst:794 +#: library/asyncio-eventloop.rst:898 library/asyncio-eventloop.rst:987 msgid "" "*ssl_shutdown_timeout* is the time in seconds to wait for the SSL shutdown " "to complete before aborting the connection. ``30.0`` seconds if ``None`` " "(default)." msgstr "" -#: library/asyncio-eventloop.rst:518 +#: library/asyncio-eventloop.rst:539 msgid "" "*all_errors* determines what exceptions are raised when a connection cannot " "be created. By default, only a single ``Exception`` is raised: the first " @@ -719,25 +757,25 @@ msgid "" "(even if there is only one)." msgstr "" -#: library/asyncio-eventloop.rst:528 library/asyncio-eventloop.rst:785 +#: library/asyncio-eventloop.rst:549 library/asyncio-eventloop.rst:806 msgid "Added support for SSL/TLS in :class:`ProactorEventLoop`." msgstr "" -#: library/asyncio-eventloop.rst:532 +#: library/asyncio-eventloop.rst:553 msgid "" "The socket option :ref:`socket.TCP_NODELAY ` is set " "by default for all TCP connections." msgstr "" -#: library/asyncio-eventloop.rst:537 library/asyncio-eventloop.rst:887 +#: library/asyncio-eventloop.rst:558 library/asyncio-eventloop.rst:908 msgid "Added the *ssl_handshake_timeout* parameter." msgstr "" -#: library/asyncio-eventloop.rst:541 +#: library/asyncio-eventloop.rst:562 msgid "Added the *happy_eyeballs_delay* and *interleave* parameters." msgstr "" -#: library/asyncio-eventloop.rst:543 +#: library/asyncio-eventloop.rst:564 msgid "" "Happy Eyeballs Algorithm: Success with Dual-Stack Hosts. When a server's " "IPv4 path and protocol are working, but the server's IPv6 path and protocol " @@ -748,68 +786,68 @@ msgid "" "visible delay and provides an algorithm." msgstr "" -#: library/asyncio-eventloop.rst:552 +#: library/asyncio-eventloop.rst:573 msgid "For more information: https://datatracker.ietf.org/doc/html/rfc6555" msgstr "" -#: library/asyncio-eventloop.rst:556 library/asyncio-eventloop.rst:682 -#: library/asyncio-eventloop.rst:799 library/asyncio-eventloop.rst:839 -#: library/asyncio-eventloop.rst:891 library/asyncio-eventloop.rst:974 +#: library/asyncio-eventloop.rst:577 library/asyncio-eventloop.rst:703 +#: library/asyncio-eventloop.rst:820 library/asyncio-eventloop.rst:860 +#: library/asyncio-eventloop.rst:912 library/asyncio-eventloop.rst:995 msgid "Added the *ssl_shutdown_timeout* parameter." msgstr "" -#: library/asyncio-eventloop.rst:558 +#: library/asyncio-eventloop.rst:579 msgid "*all_errors* was added." msgstr "" -#: library/asyncio-eventloop.rst:563 +#: library/asyncio-eventloop.rst:584 msgid "" "The :func:`open_connection` function is a high-level alternative API. It " "returns a pair of (:class:`StreamReader`, :class:`StreamWriter`) that can be " "used directly in async/await code." msgstr "" -#: library/asyncio-eventloop.rst:574 +#: library/asyncio-eventloop.rst:595 msgid "Create a datagram connection." msgstr "" -#: library/asyncio-eventloop.rst:576 +#: library/asyncio-eventloop.rst:597 msgid "" "The socket family can be either :py:const:`~socket.AF_INET`, :py:const:" "`~socket.AF_INET6`, or :py:const:`~socket.AF_UNIX`, depending on *host* (or " "the *family* argument, if provided)." msgstr "" -#: library/asyncio-eventloop.rst:580 +#: library/asyncio-eventloop.rst:601 msgid "The socket type will be :py:const:`~socket.SOCK_DGRAM`." msgstr "" -#: library/asyncio-eventloop.rst:582 library/asyncio-eventloop.rst:709 -#: library/asyncio-eventloop.rst:858 +#: library/asyncio-eventloop.rst:603 library/asyncio-eventloop.rst:730 +#: library/asyncio-eventloop.rst:879 msgid "" "*protocol_factory* must be a callable returning a :ref:`protocol ` implementation." msgstr "" -#: library/asyncio-eventloop.rst:585 library/asyncio-eventloop.rst:664 +#: library/asyncio-eventloop.rst:606 library/asyncio-eventloop.rst:685 msgid "A tuple of ``(transport, protocol)`` is returned on success." msgstr "" -#: library/asyncio-eventloop.rst:589 +#: library/asyncio-eventloop.rst:610 msgid "" "*local_addr*, if given, is a ``(local_host, local_port)`` tuple used to bind " "the socket locally. The *local_host* and *local_port* are looked up using :" "meth:`getaddrinfo`." msgstr "" -#: library/asyncio-eventloop.rst:593 +#: library/asyncio-eventloop.rst:614 msgid "" "*remote_addr*, if given, is a ``(remote_host, remote_port)`` tuple used to " "connect the socket to a remote address. The *remote_host* and *remote_port* " "are looked up using :meth:`getaddrinfo`." msgstr "" -#: library/asyncio-eventloop.rst:597 +#: library/asyncio-eventloop.rst:618 msgid "" "*family*, *proto*, *flags* are the optional address family, protocol and " "flags to be passed through to :meth:`getaddrinfo` for *host* resolution. If " @@ -817,7 +855,7 @@ msgid "" "module constants." msgstr "" -#: library/asyncio-eventloop.rst:602 +#: library/asyncio-eventloop.rst:623 msgid "" "*reuse_port* tells the kernel to allow this endpoint to be bound to the same " "port as other existing endpoints are bound to, so long as they all set this " @@ -826,13 +864,13 @@ msgid "" "is not defined then this capability is unsupported." msgstr "" -#: library/asyncio-eventloop.rst:608 +#: library/asyncio-eventloop.rst:629 msgid "" "*allow_broadcast* tells the kernel to allow this endpoint to send messages " "to the broadcast address." msgstr "" -#: library/asyncio-eventloop.rst:611 +#: library/asyncio-eventloop.rst:632 msgid "" "*sock* can optionally be specified in order to use a preexisting, already " "connected, :class:`socket.socket` object to be used by the transport. If " @@ -840,37 +878,37 @@ msgid "" "`None`)." msgstr "" -#: library/asyncio-eventloop.rst:622 +#: library/asyncio-eventloop.rst:643 msgid "" "See :ref:`UDP echo client protocol ` and :" "ref:`UDP echo server protocol ` examples." msgstr "" -#: library/asyncio-eventloop.rst:625 +#: library/asyncio-eventloop.rst:646 msgid "" "The *family*, *proto*, *flags*, *reuse_address*, *reuse_port*, " "*allow_broadcast*, and *sock* parameters were added." msgstr "" -#: library/asyncio-eventloop.rst:629 +#: library/asyncio-eventloop.rst:650 msgid "Added support for Windows." msgstr "" -#: library/asyncio-eventloop.rst:632 +#: library/asyncio-eventloop.rst:653 msgid "" "The *reuse_address* parameter is no longer supported, as using :ref:`socket." "SO_REUSEADDR ` poses a significant security concern " "for UDP. Explicitly passing ``reuse_address=True`` will raise an exception." msgstr "" -#: library/asyncio-eventloop.rst:638 +#: library/asyncio-eventloop.rst:659 msgid "" "When multiple processes with differing UIDs assign sockets to an identical " "UDP socket address with ``SO_REUSEADDR``, incoming packets can become " "randomly distributed among the sockets." msgstr "" -#: library/asyncio-eventloop.rst:642 +#: library/asyncio-eventloop.rst:663 msgid "" "For supported platforms, *reuse_port* can be used as a replacement for " "similar functionality. With *reuse_port*, :ref:`socket.SO_REUSEPORT ` is set by default " "for all TCP connections." msgstr "" -#: library/asyncio-eventloop.rst:803 +#: library/asyncio-eventloop.rst:824 msgid "" "The :func:`start_server` function is a higher-level alternative API that " "returns a pair of :class:`StreamReader` and :class:`StreamWriter` that can " "be used in an async/await code." msgstr "" -#: library/asyncio-eventloop.rst:815 +#: library/asyncio-eventloop.rst:836 msgid "" "Similar to :meth:`loop.create_server` but works with the :py:const:`~socket." "AF_UNIX` socket family." msgstr "" -#: library/asyncio-eventloop.rst:818 +#: library/asyncio-eventloop.rst:839 msgid "" "*path* is the name of a Unix domain socket, and is required, unless a *sock* " "argument is provided. Abstract Unix sockets, :class:`str`, :class:`bytes`, " "and :class:`~pathlib.Path` paths are supported." msgstr "" -#: library/asyncio-eventloop.rst:823 +#: library/asyncio-eventloop.rst:844 msgid "" "If *cleanup_socket* is true then the Unix socket will automatically be " "removed from the filesystem when the server is closed, unless the socket has " "been replaced after the server has been created." msgstr "" -#: library/asyncio-eventloop.rst:827 +#: library/asyncio-eventloop.rst:848 msgid "" "See the documentation of the :meth:`loop.create_server` method for " "information about arguments to this method." msgstr "" -#: library/asyncio-eventloop.rst:834 +#: library/asyncio-eventloop.rst:855 msgid "" "Added the *ssl_handshake_timeout* and *start_serving* parameters. The *path* " "parameter can now be a :class:`~pathlib.Path` object." msgstr "" -#: library/asyncio-eventloop.rst:843 +#: library/asyncio-eventloop.rst:864 msgid "Added the *cleanup_socket* parameter." msgstr "" -#: library/asyncio-eventloop.rst:851 +#: library/asyncio-eventloop.rst:872 msgid "Wrap an already accepted connection into a transport/protocol pair." msgstr "" -#: library/asyncio-eventloop.rst:853 +#: library/asyncio-eventloop.rst:874 msgid "" "This method can be used by servers that accept connections outside of " "asyncio but that use asyncio to handle them." msgstr "" -#: library/asyncio-eventloop.rst:856 library/asyncio-eventloop.rst:948 +#: library/asyncio-eventloop.rst:877 library/asyncio-eventloop.rst:969 msgid "Parameters:" msgstr "" -#: library/asyncio-eventloop.rst:861 +#: library/asyncio-eventloop.rst:882 msgid "" "*sock* is a preexisting socket object returned from :meth:`socket.accept " "`." msgstr "" -#: library/asyncio-eventloop.rst:870 +#: library/asyncio-eventloop.rst:891 msgid "" "*ssl* can be set to an :class:`~ssl.SSLContext` to enable SSL over the " "accepted connections." msgstr "" -#: library/asyncio-eventloop.rst:873 +#: library/asyncio-eventloop.rst:894 msgid "" "*ssl_handshake_timeout* is (for an SSL connection) the time in seconds to " "wait for the SSL handshake to complete before aborting the connection. " "``60.0`` seconds if ``None`` (default)." msgstr "" -#: library/asyncio-eventloop.rst:881 +#: library/asyncio-eventloop.rst:902 msgid "Returns a ``(transport, protocol)`` pair." msgstr "" -#: library/asyncio-eventloop.rst:895 +#: library/asyncio-eventloop.rst:916 msgid "Transferring files" msgstr "" -#: library/asyncio-eventloop.rst:901 +#: library/asyncio-eventloop.rst:922 msgid "" "Send a *file* over a *transport*. Return the total number of bytes sent." msgstr "" -#: library/asyncio-eventloop.rst:904 +#: library/asyncio-eventloop.rst:925 msgid "The method uses high-performance :meth:`os.sendfile` if available." msgstr "" -#: library/asyncio-eventloop.rst:906 +#: library/asyncio-eventloop.rst:927 msgid "*file* must be a regular file object opened in binary mode." msgstr "" -#: library/asyncio-eventloop.rst:908 library/asyncio-eventloop.rst:1169 +#: library/asyncio-eventloop.rst:929 library/asyncio-eventloop.rst:1190 msgid "" "*offset* tells from where to start reading the file. If specified, *count* " "is the total number of bytes to transmit as opposed to sending the file " @@ -1161,35 +1199,35 @@ msgid "" "obtain the actual number of bytes sent." msgstr "" -#: library/asyncio-eventloop.rst:915 +#: library/asyncio-eventloop.rst:936 msgid "" "*fallback* set to ``True`` makes asyncio to manually read and send the file " "when the platform does not support the sendfile system call (e.g. Windows or " "SSL socket on Unix)." msgstr "" -#: library/asyncio-eventloop.rst:919 +#: library/asyncio-eventloop.rst:940 msgid "" "Raise :exc:`SendfileNotAvailableError` if the system does not support the " "*sendfile* syscall and *fallback* is ``False``." msgstr "" -#: library/asyncio-eventloop.rst:926 +#: library/asyncio-eventloop.rst:947 msgid "TLS Upgrade" msgstr "" -#: library/asyncio-eventloop.rst:934 +#: library/asyncio-eventloop.rst:955 msgid "Upgrade an existing transport-based connection to TLS." msgstr "" -#: library/asyncio-eventloop.rst:936 +#: library/asyncio-eventloop.rst:957 msgid "" "Create a TLS coder/decoder instance and insert it between the *transport* " "and the *protocol*. The coder/decoder implements both *transport*-facing " "protocol and *protocol*-facing transport." msgstr "" -#: library/asyncio-eventloop.rst:940 +#: library/asyncio-eventloop.rst:961 msgid "" "Return the created two-interface instance. After *await*, the *protocol* " "must stop using the original *transport* and communicate with the returned " @@ -1197,85 +1235,85 @@ msgid "" "exchanges extra TLS session packets with *transport*." msgstr "" -#: library/asyncio-eventloop.rst:945 +#: library/asyncio-eventloop.rst:966 msgid "" "In some situations (e.g. when the passed transport is already closing) this " "may return ``None``." msgstr "" -#: library/asyncio-eventloop.rst:950 +#: library/asyncio-eventloop.rst:971 msgid "" "*transport* and *protocol* instances that methods like :meth:`~loop." "create_server` and :meth:`~loop.create_connection` return." msgstr "" -#: library/asyncio-eventloop.rst:954 +#: library/asyncio-eventloop.rst:975 msgid "*sslcontext*: a configured instance of :class:`~ssl.SSLContext`." msgstr "" -#: library/asyncio-eventloop.rst:956 +#: library/asyncio-eventloop.rst:977 msgid "" "*server_side* pass ``True`` when a server-side connection is being upgraded " "(like the one created by :meth:`~loop.create_server`)." msgstr "" -#: library/asyncio-eventloop.rst:959 +#: library/asyncio-eventloop.rst:980 msgid "" "*server_hostname*: sets or overrides the host name that the target server's " "certificate will be matched against." msgstr "" -#: library/asyncio-eventloop.rst:979 +#: library/asyncio-eventloop.rst:1000 msgid "Watching file descriptors" msgstr "" -#: library/asyncio-eventloop.rst:983 +#: library/asyncio-eventloop.rst:1004 msgid "" "Start monitoring the *fd* file descriptor for read availability and invoke " "*callback* with the specified arguments once *fd* is available for reading." msgstr "" -#: library/asyncio-eventloop.rst:987 library/asyncio-eventloop.rst:1001 +#: library/asyncio-eventloop.rst:1008 library/asyncio-eventloop.rst:1022 msgid "" "Any preexisting callback registered for *fd* is cancelled and replaced by " "*callback*." msgstr "" -#: library/asyncio-eventloop.rst:992 +#: library/asyncio-eventloop.rst:1013 msgid "" "Stop monitoring the *fd* file descriptor for read availability. Returns " "``True`` if *fd* was previously being monitored for reads." msgstr "" -#: library/asyncio-eventloop.rst:997 +#: library/asyncio-eventloop.rst:1018 msgid "" "Start monitoring the *fd* file descriptor for write availability and invoke " "*callback* with the specified arguments once *fd* is available for writing." msgstr "" -#: library/asyncio-eventloop.rst:1004 library/asyncio-eventloop.rst:1282 +#: library/asyncio-eventloop.rst:1025 library/asyncio-eventloop.rst:1303 msgid "" "Use :func:`functools.partial` :ref:`to pass keyword arguments ` to *callback*." msgstr "" -#: library/asyncio-eventloop.rst:1009 +#: library/asyncio-eventloop.rst:1030 msgid "" "Stop monitoring the *fd* file descriptor for write availability. Returns " "``True`` if *fd* was previously being monitored for writes." msgstr "" -#: library/asyncio-eventloop.rst:1012 +#: library/asyncio-eventloop.rst:1033 msgid "" "See also :ref:`Platform Support ` section for some " "limitations of these methods." msgstr "" -#: library/asyncio-eventloop.rst:1017 +#: library/asyncio-eventloop.rst:1038 msgid "Working with socket objects directly" msgstr "" -#: library/asyncio-eventloop.rst:1019 +#: library/asyncio-eventloop.rst:1040 msgid "" "In general, protocol implementations that use transport-based APIs such as :" "meth:`loop.create_connection` and :meth:`loop.create_server` are faster than " @@ -1284,68 +1322,68 @@ msgid "" "socket` objects directly is more convenient." msgstr "" -#: library/asyncio-eventloop.rst:1029 +#: library/asyncio-eventloop.rst:1050 msgid "" "Receive up to *nbytes* from *sock*. Asynchronous version of :meth:`socket." "recv() `." msgstr "" -#: library/asyncio-eventloop.rst:1032 +#: library/asyncio-eventloop.rst:1053 msgid "Return the received data as a bytes object." msgstr "" -#: library/asyncio-eventloop.rst:1034 library/asyncio-eventloop.rst:1049 -#: library/asyncio-eventloop.rst:1061 library/asyncio-eventloop.rst:1074 -#: library/asyncio-eventloop.rst:1090 library/asyncio-eventloop.rst:1106 -#: library/asyncio-eventloop.rst:1117 library/asyncio-eventloop.rst:1144 -#: library/asyncio-eventloop.rst:1183 +#: library/asyncio-eventloop.rst:1055 library/asyncio-eventloop.rst:1070 +#: library/asyncio-eventloop.rst:1082 library/asyncio-eventloop.rst:1095 +#: library/asyncio-eventloop.rst:1111 library/asyncio-eventloop.rst:1127 +#: library/asyncio-eventloop.rst:1138 library/asyncio-eventloop.rst:1165 +#: library/asyncio-eventloop.rst:1204 msgid "*sock* must be a non-blocking socket." msgstr "" -#: library/asyncio-eventloop.rst:1036 +#: library/asyncio-eventloop.rst:1057 msgid "" "Even though this method was always documented as a coroutine method, " "releases before Python 3.7 returned a :class:`Future`. Since Python 3.7 this " "is an ``async def`` method." msgstr "" -#: library/asyncio-eventloop.rst:1044 +#: library/asyncio-eventloop.rst:1065 msgid "" "Receive data from *sock* into the *buf* buffer. Modeled after the blocking :" "meth:`socket.recv_into() ` method." msgstr "" -#: library/asyncio-eventloop.rst:1047 +#: library/asyncio-eventloop.rst:1068 msgid "Return the number of bytes written to the buffer." msgstr "" -#: library/asyncio-eventloop.rst:1056 +#: library/asyncio-eventloop.rst:1077 msgid "" "Receive a datagram of up to *bufsize* from *sock*. Asynchronous version of :" "meth:`socket.recvfrom() `." msgstr "" -#: library/asyncio-eventloop.rst:1059 +#: library/asyncio-eventloop.rst:1080 msgid "Return a tuple of (received data, remote address)." msgstr "" -#: library/asyncio-eventloop.rst:1068 +#: library/asyncio-eventloop.rst:1089 msgid "" "Receive a datagram of up to *nbytes* from *sock* into *buf*. Asynchronous " "version of :meth:`socket.recvfrom_into() `." msgstr "" -#: library/asyncio-eventloop.rst:1072 +#: library/asyncio-eventloop.rst:1093 msgid "Return a tuple of (number of bytes received, remote address)." msgstr "" -#: library/asyncio-eventloop.rst:1081 +#: library/asyncio-eventloop.rst:1102 msgid "" "Send *data* to the *sock* socket. Asynchronous version of :meth:`socket." "sendall() `." msgstr "" -#: library/asyncio-eventloop.rst:1084 +#: library/asyncio-eventloop.rst:1105 msgid "" "This method continues to send to the socket until either all data in *data* " "has been sent or an error occurs. ``None`` is returned on success. On " @@ -1354,33 +1392,33 @@ msgid "" "the connection." msgstr "" -#: library/asyncio-eventloop.rst:1092 library/asyncio-eventloop.rst:1146 +#: library/asyncio-eventloop.rst:1113 library/asyncio-eventloop.rst:1167 msgid "" "Even though the method was always documented as a coroutine method, before " "Python 3.7 it returned a :class:`Future`. Since Python 3.7, this is an " "``async def`` method." msgstr "" -#: library/asyncio-eventloop.rst:1100 +#: library/asyncio-eventloop.rst:1121 msgid "" "Send a datagram from *sock* to *address*. Asynchronous version of :meth:" "`socket.sendto() `." msgstr "" -#: library/asyncio-eventloop.rst:1104 +#: library/asyncio-eventloop.rst:1125 msgid "Return the number of bytes sent." msgstr "" -#: library/asyncio-eventloop.rst:1113 +#: library/asyncio-eventloop.rst:1134 msgid "Connect *sock* to a remote socket at *address*." msgstr "" -#: library/asyncio-eventloop.rst:1115 +#: library/asyncio-eventloop.rst:1136 msgid "" "Asynchronous version of :meth:`socket.connect() `." msgstr "" -#: library/asyncio-eventloop.rst:1119 +#: library/asyncio-eventloop.rst:1140 msgid "" "``address`` no longer needs to be resolved. ``sock_connect`` will try to " "check if the *address* is already resolved by calling :func:`socket." @@ -1388,19 +1426,19 @@ msgid "" "*address*." msgstr "" -#: library/asyncio-eventloop.rst:1128 +#: library/asyncio-eventloop.rst:1149 msgid "" ":meth:`loop.create_connection` and :func:`asyncio.open_connection() " "`." msgstr "" -#: library/asyncio-eventloop.rst:1135 +#: library/asyncio-eventloop.rst:1156 msgid "" "Accept a connection. Modeled after the blocking :meth:`socket.accept() " "` method." msgstr "" -#: library/asyncio-eventloop.rst:1138 +#: library/asyncio-eventloop.rst:1159 msgid "" "The socket must be bound to an address and listening for connections. The " "return value is a pair ``(conn, address)`` where *conn* is a *new* socket " @@ -1408,57 +1446,57 @@ msgid "" "the address bound to the socket on the other end of the connection." msgstr "" -#: library/asyncio-eventloop.rst:1153 +#: library/asyncio-eventloop.rst:1174 msgid ":meth:`loop.create_server` and :func:`start_server`." msgstr "" -#: library/asyncio-eventloop.rst:1159 +#: library/asyncio-eventloop.rst:1180 msgid "" "Send a file using high-performance :mod:`os.sendfile` if possible. Return " "the total number of bytes sent." msgstr "" -#: library/asyncio-eventloop.rst:1162 +#: library/asyncio-eventloop.rst:1183 msgid "" "Asynchronous version of :meth:`socket.sendfile() `." msgstr "" -#: library/asyncio-eventloop.rst:1164 +#: library/asyncio-eventloop.rst:1185 msgid "" "*sock* must be a non-blocking :const:`socket.SOCK_STREAM` :class:`~socket." "socket`." msgstr "" -#: library/asyncio-eventloop.rst:1167 +#: library/asyncio-eventloop.rst:1188 msgid "*file* must be a regular file object open in binary mode." msgstr "" -#: library/asyncio-eventloop.rst:1176 +#: library/asyncio-eventloop.rst:1197 msgid "" "*fallback*, when set to ``True``, makes asyncio manually read and send the " "file when the platform does not support the sendfile syscall (e.g. Windows " "or SSL socket on Unix)." msgstr "" -#: library/asyncio-eventloop.rst:1180 +#: library/asyncio-eventloop.rst:1201 msgid "" "Raise :exc:`SendfileNotAvailableError` if the system does not support " "*sendfile* syscall and *fallback* is ``False``." msgstr "" -#: library/asyncio-eventloop.rst:1189 +#: library/asyncio-eventloop.rst:1210 msgid "DNS" msgstr "" -#: library/asyncio-eventloop.rst:1195 +#: library/asyncio-eventloop.rst:1216 msgid "Asynchronous version of :meth:`socket.getaddrinfo`." msgstr "" -#: library/asyncio-eventloop.rst:1200 +#: library/asyncio-eventloop.rst:1221 msgid "Asynchronous version of :meth:`socket.getnameinfo`." msgstr "" -#: library/asyncio-eventloop.rst:1203 +#: library/asyncio-eventloop.rst:1224 msgid "" "Both *getaddrinfo* and *getnameinfo* internally utilize their synchronous " "versions through the loop's default thread pool executor. When this executor " @@ -1468,7 +1506,7 @@ msgid "" "executor with a larger number of workers." msgstr "" -#: library/asyncio-eventloop.rst:1210 +#: library/asyncio-eventloop.rst:1231 msgid "" "Both *getaddrinfo* and *getnameinfo* methods were always documented to " "return a coroutine, but prior to Python 3.7 they were, in fact, returning :" @@ -1476,66 +1514,66 @@ msgid "" "coroutines." msgstr "" -#: library/asyncio-eventloop.rst:1218 +#: library/asyncio-eventloop.rst:1239 msgid "Working with pipes" msgstr "" -#: library/asyncio-eventloop.rst:1223 +#: library/asyncio-eventloop.rst:1244 msgid "Register the read end of *pipe* in the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1228 +#: library/asyncio-eventloop.rst:1249 msgid "*pipe* is a :term:`file-like object `." msgstr "" -#: library/asyncio-eventloop.rst:1230 +#: library/asyncio-eventloop.rst:1251 msgid "" "Return pair ``(transport, protocol)``, where *transport* supports the :class:" "`ReadTransport` interface and *protocol* is an object instantiated by the " "*protocol_factory*." msgstr "" -#: library/asyncio-eventloop.rst:1234 library/asyncio-eventloop.rst:1251 +#: library/asyncio-eventloop.rst:1255 library/asyncio-eventloop.rst:1272 msgid "" "With :class:`SelectorEventLoop` event loop, the *pipe* is set to non-" "blocking mode." msgstr "" -#: library/asyncio-eventloop.rst:1240 +#: library/asyncio-eventloop.rst:1261 msgid "Register the write end of *pipe* in the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1245 +#: library/asyncio-eventloop.rst:1266 msgid "*pipe* is :term:`file-like object `." msgstr "" -#: library/asyncio-eventloop.rst:1247 +#: library/asyncio-eventloop.rst:1268 msgid "" "Return pair ``(transport, protocol)``, where *transport* supports :class:" "`WriteTransport` interface and *protocol* is an object instantiated by the " "*protocol_factory*." msgstr "" -#: library/asyncio-eventloop.rst:1256 +#: library/asyncio-eventloop.rst:1277 msgid "" ":class:`SelectorEventLoop` does not support the above methods on Windows. " "Use :class:`ProactorEventLoop` instead for Windows." msgstr "" -#: library/asyncio-eventloop.rst:1261 +#: library/asyncio-eventloop.rst:1282 msgid "" "The :meth:`loop.subprocess_exec` and :meth:`loop.subprocess_shell` methods." msgstr "" -#: library/asyncio-eventloop.rst:1266 +#: library/asyncio-eventloop.rst:1287 msgid "Unix signals" msgstr "" -#: library/asyncio-eventloop.rst:1272 +#: library/asyncio-eventloop.rst:1293 msgid "Set *callback* as the handler for the *signum* signal." msgstr "" -#: library/asyncio-eventloop.rst:1274 +#: library/asyncio-eventloop.rst:1295 msgid "" "The callback will be invoked by *loop*, along with other queued callbacks " "and runnable coroutines of that event loop. Unlike signal handlers " @@ -1543,40 +1581,40 @@ msgid "" "function is allowed to interact with the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1279 +#: library/asyncio-eventloop.rst:1300 msgid "" "Raise :exc:`ValueError` if the signal number is invalid or uncatchable. " "Raise :exc:`RuntimeError` if there is a problem setting up the handler." msgstr "" -#: library/asyncio-eventloop.rst:1285 +#: library/asyncio-eventloop.rst:1306 msgid "" "Like :func:`signal.signal`, this function must be invoked in the main thread." msgstr "" -#: library/asyncio-eventloop.rst:1290 +#: library/asyncio-eventloop.rst:1311 msgid "Remove the handler for the *sig* signal." msgstr "" -#: library/asyncio-eventloop.rst:1292 +#: library/asyncio-eventloop.rst:1313 msgid "" "Return ``True`` if the signal handler was removed, or ``False`` if no " "handler was set for the given signal." msgstr "" -#: library/asyncio-eventloop.rst:1299 +#: library/asyncio-eventloop.rst:1320 msgid "The :mod:`signal` module." msgstr "" -#: library/asyncio-eventloop.rst:1303 +#: library/asyncio-eventloop.rst:1324 msgid "Executing code in thread or process pools" msgstr "" -#: library/asyncio-eventloop.rst:1307 +#: library/asyncio-eventloop.rst:1328 msgid "Arrange for *func* to be called in the specified executor." msgstr "" -#: library/asyncio-eventloop.rst:1309 +#: library/asyncio-eventloop.rst:1330 msgid "" "The *executor* argument should be an :class:`concurrent.futures.Executor` " "instance. The default executor is used if *executor* is ``None``. The " @@ -1585,7 +1623,7 @@ msgid "" "and used by :func:`run_in_executor` if needed." msgstr "" -#: library/asyncio-eventloop.rst:1317 +#: library/asyncio-eventloop.rst:1338 msgid "" "import asyncio\n" "import concurrent.futures\n" @@ -1634,7 +1672,7 @@ msgid "" " asyncio.run(main())" msgstr "" -#: library/asyncio-eventloop.rst:1363 +#: library/asyncio-eventloop.rst:1384 msgid "" "Note that the entry point guard (``if __name__ == '__main__'``) is required " "for option 3 due to the peculiarities of :mod:`multiprocessing`, which is " @@ -1642,17 +1680,17 @@ msgid "" "importing of main module `." msgstr "" -#: library/asyncio-eventloop.rst:1368 +#: library/asyncio-eventloop.rst:1389 msgid "This method returns a :class:`asyncio.Future` object." msgstr "" -#: library/asyncio-eventloop.rst:1370 +#: library/asyncio-eventloop.rst:1391 msgid "" "Use :func:`functools.partial` :ref:`to pass keyword arguments ` to *func*." msgstr "" -#: library/asyncio-eventloop.rst:1373 +#: library/asyncio-eventloop.rst:1394 msgid "" ":meth:`loop.run_in_executor` no longer configures the ``max_workers`` of the " "thread pool executor it creates, instead leaving it up to the thread pool " @@ -1660,7 +1698,7 @@ msgid "" "default." msgstr "" -#: library/asyncio-eventloop.rst:1382 +#: library/asyncio-eventloop.rst:1403 msgid "" "Set *executor* as the default executor used by :meth:`run_in_executor`. " "*executor* must be an instance of :class:`~concurrent.futures." @@ -1668,25 +1706,25 @@ msgid "" "InterpreterPoolExecutor`." msgstr "" -#: library/asyncio-eventloop.rst:1387 +#: library/asyncio-eventloop.rst:1408 msgid "" "*executor* must be an instance of :class:`~concurrent.futures." "ThreadPoolExecutor`." msgstr "" -#: library/asyncio-eventloop.rst:1393 +#: library/asyncio-eventloop.rst:1414 msgid "Error Handling API" msgstr "" -#: library/asyncio-eventloop.rst:1395 +#: library/asyncio-eventloop.rst:1416 msgid "Allows customizing how exceptions are handled in the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1399 +#: library/asyncio-eventloop.rst:1420 msgid "Set *handler* as the new event loop exception handler." msgstr "" -#: library/asyncio-eventloop.rst:1401 +#: library/asyncio-eventloop.rst:1422 msgid "" "If *handler* is ``None``, the default exception handler will be set. " "Otherwise, *handler* must be a callable with the signature matching ``(loop, " @@ -1695,190 +1733,190 @@ msgid "" "(see :meth:`call_exception_handler` documentation for details about context)." msgstr "" -#: library/asyncio-eventloop.rst:1409 +#: library/asyncio-eventloop.rst:1430 msgid "" "If the handler is called on behalf of a :class:`~asyncio.Task` or :class:" "`~asyncio.Handle`, it is run in the :class:`contextvars.Context` of that " "task or callback handle." msgstr "" -#: library/asyncio-eventloop.rst:1415 +#: library/asyncio-eventloop.rst:1436 msgid "" "The handler may be called in the :class:`~contextvars.Context` of the task " "or handle where the exception originated." msgstr "" -#: library/asyncio-eventloop.rst:1420 +#: library/asyncio-eventloop.rst:1441 msgid "" "Return the current exception handler, or ``None`` if no custom exception " "handler was set." msgstr "" -#: library/asyncio-eventloop.rst:1427 +#: library/asyncio-eventloop.rst:1448 msgid "Default exception handler." msgstr "" -#: library/asyncio-eventloop.rst:1429 +#: library/asyncio-eventloop.rst:1450 msgid "" "This is called when an exception occurs and no exception handler is set. " "This can be called by a custom exception handler that wants to defer to the " "default handler behavior." msgstr "" -#: library/asyncio-eventloop.rst:1433 +#: library/asyncio-eventloop.rst:1454 msgid "" "*context* parameter has the same meaning as in :meth:" "`call_exception_handler`." msgstr "" -#: library/asyncio-eventloop.rst:1438 +#: library/asyncio-eventloop.rst:1459 msgid "Call the current event loop exception handler." msgstr "" -#: library/asyncio-eventloop.rst:1440 +#: library/asyncio-eventloop.rst:1461 msgid "" "*context* is a ``dict`` object containing the following keys (new keys may " "be introduced in future Python versions):" msgstr "" -#: library/asyncio-eventloop.rst:1443 +#: library/asyncio-eventloop.rst:1464 msgid "'message': Error message;" msgstr "" -#: library/asyncio-eventloop.rst:1444 +#: library/asyncio-eventloop.rst:1465 msgid "'exception' (optional): Exception object;" msgstr "" -#: library/asyncio-eventloop.rst:1445 +#: library/asyncio-eventloop.rst:1466 msgid "'future' (optional): :class:`asyncio.Future` instance;" msgstr "" -#: library/asyncio-eventloop.rst:1446 +#: library/asyncio-eventloop.rst:1467 msgid "'task' (optional): :class:`asyncio.Task` instance;" msgstr "" -#: library/asyncio-eventloop.rst:1447 +#: library/asyncio-eventloop.rst:1468 msgid "'handle' (optional): :class:`asyncio.Handle` instance;" msgstr "" -#: library/asyncio-eventloop.rst:1448 +#: library/asyncio-eventloop.rst:1469 msgid "'protocol' (optional): :ref:`Protocol ` instance;" msgstr "" -#: library/asyncio-eventloop.rst:1449 +#: library/asyncio-eventloop.rst:1470 msgid "'transport' (optional): :ref:`Transport ` instance;" msgstr "" -#: library/asyncio-eventloop.rst:1450 +#: library/asyncio-eventloop.rst:1471 msgid "'socket' (optional): :class:`socket.socket` instance;" msgstr "" -#: library/asyncio-eventloop.rst:1451 +#: library/asyncio-eventloop.rst:1472 msgid "'source_traceback' (optional): Traceback of the source;" msgstr "" -#: library/asyncio-eventloop.rst:1452 +#: library/asyncio-eventloop.rst:1473 msgid "'handle_traceback' (optional): Traceback of the handle;" msgstr "" -#: library/asyncio-eventloop.rst:1453 +#: library/asyncio-eventloop.rst:1474 msgid "'asyncgen' (optional): Asynchronous generator that caused" msgstr "" -#: library/asyncio-eventloop.rst:1454 +#: library/asyncio-eventloop.rst:1475 msgid "the exception." msgstr "" -#: library/asyncio-eventloop.rst:1458 +#: library/asyncio-eventloop.rst:1479 msgid "" "This method should not be overloaded in subclassed event loops. For custom " "exception handling, use the :meth:`set_exception_handler` method." msgstr "" -#: library/asyncio-eventloop.rst:1463 +#: library/asyncio-eventloop.rst:1484 msgid "Enabling debug mode" msgstr "" -#: library/asyncio-eventloop.rst:1467 +#: library/asyncio-eventloop.rst:1488 msgid "Get the debug mode (:class:`bool`) of the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1469 +#: library/asyncio-eventloop.rst:1490 msgid "" "The default value is ``True`` if the environment variable :envvar:" "`PYTHONASYNCIODEBUG` is set to a non-empty string, ``False`` otherwise." msgstr "" -#: library/asyncio-eventloop.rst:1475 +#: library/asyncio-eventloop.rst:1496 msgid "Set the debug mode of the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1479 +#: library/asyncio-eventloop.rst:1500 msgid "" "The new :ref:`Python Development Mode ` can now also be used to " "enable the debug mode." msgstr "" -#: library/asyncio-eventloop.rst:1484 +#: library/asyncio-eventloop.rst:1505 msgid "" "This attribute can be used to set the minimum execution duration in seconds " "that is considered \"slow\". When debug mode is enabled, \"slow\" callbacks " "are logged." msgstr "" -#: library/asyncio-eventloop.rst:1488 +#: library/asyncio-eventloop.rst:1509 msgid "Default value is 100 milliseconds." msgstr "" -#: library/asyncio-eventloop.rst:1492 +#: library/asyncio-eventloop.rst:1513 msgid "The :ref:`debug mode of asyncio `." msgstr "" -#: library/asyncio-eventloop.rst:1496 +#: library/asyncio-eventloop.rst:1517 msgid "Running Subprocesses" msgstr "" -#: library/asyncio-eventloop.rst:1498 +#: library/asyncio-eventloop.rst:1519 msgid "" "Methods described in this subsections are low-level. In regular async/await " "code consider using the high-level :func:`asyncio.create_subprocess_shell` " "and :func:`asyncio.create_subprocess_exec` convenience functions instead." msgstr "" -#: library/asyncio-eventloop.rst:1505 +#: library/asyncio-eventloop.rst:1526 msgid "" "On Windows, the default event loop :class:`ProactorEventLoop` supports " "subprocesses, whereas :class:`SelectorEventLoop` does not. See :ref:" "`Subprocess Support on Windows ` for details." msgstr "" -#: library/asyncio-eventloop.rst:1517 +#: library/asyncio-eventloop.rst:1538 msgid "" "Create a subprocess from one or more string arguments specified by *args*." msgstr "" -#: library/asyncio-eventloop.rst:1520 +#: library/asyncio-eventloop.rst:1541 msgid "*args* must be a list of strings represented by:" msgstr "" -#: library/asyncio-eventloop.rst:1522 +#: library/asyncio-eventloop.rst:1543 msgid ":class:`str`;" msgstr "" -#: library/asyncio-eventloop.rst:1523 +#: library/asyncio-eventloop.rst:1544 msgid "" "or :class:`bytes`, encoded to the :ref:`filesystem encoding `." msgstr "" -#: library/asyncio-eventloop.rst:1526 +#: library/asyncio-eventloop.rst:1547 msgid "" "The first string specifies the program executable, and the remaining strings " "specify the arguments. Together, string arguments form the ``argv`` of the " "program." msgstr "" -#: library/asyncio-eventloop.rst:1530 +#: library/asyncio-eventloop.rst:1551 msgid "" "This is similar to the standard library :class:`subprocess.Popen` class " "called with ``shell=False`` and the list of strings passed as the first " @@ -1886,81 +1924,81 @@ msgid "" "which is list of strings, *subprocess_exec* takes multiple string arguments." msgstr "" -#: library/asyncio-eventloop.rst:1536 +#: library/asyncio-eventloop.rst:1557 msgid "" "The *protocol_factory* must be a callable returning a subclass of the :class:" "`asyncio.SubprocessProtocol` class." msgstr "" -#: library/asyncio-eventloop.rst:1539 +#: library/asyncio-eventloop.rst:1560 msgid "Other parameters:" msgstr "" -#: library/asyncio-eventloop.rst:1541 +#: library/asyncio-eventloop.rst:1562 msgid "*stdin* can be any of these:" msgstr "" -#: library/asyncio-eventloop.rst:1543 library/asyncio-eventloop.rst:1554 -#: library/asyncio-eventloop.rst:1564 +#: library/asyncio-eventloop.rst:1564 library/asyncio-eventloop.rst:1575 +#: library/asyncio-eventloop.rst:1585 msgid "a file-like object" msgstr "" -#: library/asyncio-eventloop.rst:1544 +#: library/asyncio-eventloop.rst:1565 msgid "" "an existing file descriptor (a positive integer), for example those created " "with :meth:`os.pipe`" msgstr "" -#: library/asyncio-eventloop.rst:1545 library/asyncio-eventloop.rst:1555 -#: library/asyncio-eventloop.rst:1565 +#: library/asyncio-eventloop.rst:1566 library/asyncio-eventloop.rst:1576 +#: library/asyncio-eventloop.rst:1586 msgid "" "the :const:`subprocess.PIPE` constant (default) which will create a new pipe " "and connect it," msgstr "" -#: library/asyncio-eventloop.rst:1547 library/asyncio-eventloop.rst:1557 -#: library/asyncio-eventloop.rst:1567 +#: library/asyncio-eventloop.rst:1568 library/asyncio-eventloop.rst:1578 +#: library/asyncio-eventloop.rst:1588 msgid "" "the value ``None`` which will make the subprocess inherit the file " "descriptor from this process" msgstr "" -#: library/asyncio-eventloop.rst:1549 library/asyncio-eventloop.rst:1559 -#: library/asyncio-eventloop.rst:1569 +#: library/asyncio-eventloop.rst:1570 library/asyncio-eventloop.rst:1580 +#: library/asyncio-eventloop.rst:1590 msgid "" "the :const:`subprocess.DEVNULL` constant which indicates that the special :" "data:`os.devnull` file will be used" msgstr "" -#: library/asyncio-eventloop.rst:1552 +#: library/asyncio-eventloop.rst:1573 msgid "*stdout* can be any of these:" msgstr "" -#: library/asyncio-eventloop.rst:1562 +#: library/asyncio-eventloop.rst:1583 msgid "*stderr* can be any of these:" msgstr "" -#: library/asyncio-eventloop.rst:1571 +#: library/asyncio-eventloop.rst:1592 msgid "" "the :const:`subprocess.STDOUT` constant which will connect the standard " "error stream to the process' standard output stream" msgstr "" -#: library/asyncio-eventloop.rst:1574 +#: library/asyncio-eventloop.rst:1595 msgid "" "All other keyword arguments are passed to :class:`subprocess.Popen` without " "interpretation, except for *bufsize*, *universal_newlines*, *shell*, *text*, " "*encoding* and *errors*, which should not be specified at all." msgstr "" -#: library/asyncio-eventloop.rst:1579 +#: library/asyncio-eventloop.rst:1600 msgid "" "The ``asyncio`` subprocess API does not support decoding the streams as " "text. :func:`bytes.decode` can be used to convert the bytes returned from " "the stream to text." msgstr "" -#: library/asyncio-eventloop.rst:1583 +#: library/asyncio-eventloop.rst:1604 msgid "" "If a file-like object passed as *stdin*, *stdout* or *stderr* represents a " "pipe, then the other side of this pipe should be registered with :meth:" @@ -1968,52 +2006,52 @@ msgid "" "the event loop." msgstr "" -#: library/asyncio-eventloop.rst:1588 +#: library/asyncio-eventloop.rst:1609 msgid "" "See the constructor of the :class:`subprocess.Popen` class for documentation " "on other arguments." msgstr "" -#: library/asyncio-eventloop.rst:1591 +#: library/asyncio-eventloop.rst:1612 msgid "" "Returns a pair of ``(transport, protocol)``, where *transport* conforms to " "the :class:`asyncio.SubprocessTransport` base class and *protocol* is an " "object instantiated by the *protocol_factory*." msgstr "" -#: library/asyncio-eventloop.rst:1600 +#: library/asyncio-eventloop.rst:1621 msgid "" "Create a subprocess from *cmd*, which can be a :class:`str` or a :class:" "`bytes` string encoded to the :ref:`filesystem encoding `, using the platform's \"shell\" syntax." msgstr "" -#: library/asyncio-eventloop.rst:1605 +#: library/asyncio-eventloop.rst:1626 msgid "" "This is similar to the standard library :class:`subprocess.Popen` class " "called with ``shell=True``." msgstr "" -#: library/asyncio-eventloop.rst:1608 +#: library/asyncio-eventloop.rst:1629 msgid "" "The *protocol_factory* must be a callable returning a subclass of the :class:" "`SubprocessProtocol` class." msgstr "" -#: library/asyncio-eventloop.rst:1611 +#: library/asyncio-eventloop.rst:1632 msgid "" "See :meth:`~loop.subprocess_exec` for more details about the remaining " "arguments." msgstr "" -#: library/asyncio-eventloop.rst:1614 +#: library/asyncio-eventloop.rst:1635 msgid "" "Returns a pair of ``(transport, protocol)``, where *transport* conforms to " "the :class:`SubprocessTransport` base class and *protocol* is an object " "instantiated by the *protocol_factory*." msgstr "" -#: library/asyncio-eventloop.rst:1619 +#: library/asyncio-eventloop.rst:1640 msgid "" "It is the application's responsibility to ensure that all whitespace and " "special characters are quoted appropriately to avoid `shell injection " @@ -2023,74 +2061,74 @@ msgid "" "used to construct shell commands." msgstr "" -#: library/asyncio-eventloop.rst:1628 +#: library/asyncio-eventloop.rst:1649 msgid "Callback Handles" msgstr "" -#: library/asyncio-eventloop.rst:1632 +#: library/asyncio-eventloop.rst:1653 msgid "" "A callback wrapper object returned by :meth:`loop.call_soon`, :meth:`loop." "call_soon_threadsafe`." msgstr "" -#: library/asyncio-eventloop.rst:1637 +#: library/asyncio-eventloop.rst:1658 msgid "" "Return the :class:`contextvars.Context` object associated with the handle." msgstr "" -#: library/asyncio-eventloop.rst:1644 +#: library/asyncio-eventloop.rst:1665 msgid "" "Cancel the callback. If the callback has already been canceled or executed, " "this method has no effect." msgstr "" -#: library/asyncio-eventloop.rst:1649 +#: library/asyncio-eventloop.rst:1670 msgid "Return ``True`` if the callback was cancelled." msgstr "" -#: library/asyncio-eventloop.rst:1655 +#: library/asyncio-eventloop.rst:1676 msgid "" "A callback wrapper object returned by :meth:`loop.call_later`, and :meth:" "`loop.call_at`." msgstr "" -#: library/asyncio-eventloop.rst:1658 +#: library/asyncio-eventloop.rst:1679 msgid "This class is a subclass of :class:`Handle`." msgstr "" -#: library/asyncio-eventloop.rst:1662 +#: library/asyncio-eventloop.rst:1683 msgid "Return a scheduled callback time as :class:`float` seconds." msgstr "" -#: library/asyncio-eventloop.rst:1664 +#: library/asyncio-eventloop.rst:1685 msgid "" "The time is an absolute timestamp, using the same time reference as :meth:" "`loop.time`." msgstr "" -#: library/asyncio-eventloop.rst:1671 +#: library/asyncio-eventloop.rst:1692 msgid "Server Objects" msgstr "" -#: library/asyncio-eventloop.rst:1673 +#: library/asyncio-eventloop.rst:1694 msgid "" "Server objects are created by :meth:`loop.create_server`, :meth:`loop." "create_unix_server`, :func:`start_server`, and :func:`start_unix_server` " "functions." msgstr "" -#: library/asyncio-eventloop.rst:1677 +#: library/asyncio-eventloop.rst:1698 msgid "Do not instantiate the :class:`Server` class directly." msgstr "" -#: library/asyncio-eventloop.rst:1681 +#: library/asyncio-eventloop.rst:1702 msgid "" "*Server* objects are asynchronous context managers. When used in an ``async " "with`` statement, it's guaranteed that the Server object is closed and not " "accepting new connections when the ``async with`` statement is completed::" msgstr "" -#: library/asyncio-eventloop.rst:1686 +#: library/asyncio-eventloop.rst:1707 msgid "" "srv = await loop.create_server(...)\n" "\n" @@ -2100,81 +2138,81 @@ msgid "" "# At this point, srv is closed and no longer accepts new connections." msgstr "" -#: library/asyncio-eventloop.rst:1694 +#: library/asyncio-eventloop.rst:1715 msgid "Server object is an asynchronous context manager since Python 3.7." msgstr "" -#: library/asyncio-eventloop.rst:1697 +#: library/asyncio-eventloop.rst:1718 msgid "" "This class was exposed publicly as ``asyncio.Server`` in Python 3.9.11, " "3.10.3 and 3.11." msgstr "" -#: library/asyncio-eventloop.rst:1702 +#: library/asyncio-eventloop.rst:1723 msgid "" "Stop serving: close listening sockets and set the :attr:`sockets` attribute " "to ``None``." msgstr "" -#: library/asyncio-eventloop.rst:1705 +#: library/asyncio-eventloop.rst:1726 msgid "" "The sockets that represent existing incoming client connections are left " "open." msgstr "" -#: library/asyncio-eventloop.rst:1708 +#: library/asyncio-eventloop.rst:1729 msgid "" "The server is closed asynchronously; use the :meth:`wait_closed` coroutine " "to wait until the server is closed (and no more connections are active)." msgstr "" -#: library/asyncio-eventloop.rst:1714 +#: library/asyncio-eventloop.rst:1735 msgid "Close all existing incoming client connections." msgstr "" -#: library/asyncio-eventloop.rst:1716 +#: library/asyncio-eventloop.rst:1737 msgid "" "Calls :meth:`~asyncio.BaseTransport.close` on all associated transports." msgstr "" -#: library/asyncio-eventloop.rst:1719 +#: library/asyncio-eventloop.rst:1740 msgid "" ":meth:`close` should be called before :meth:`close_clients` when closing the " "server to avoid races with new clients connecting." msgstr "" -#: library/asyncio-eventloop.rst:1726 +#: library/asyncio-eventloop.rst:1747 msgid "" "Close all existing incoming client connections immediately, without waiting " "for pending operations to complete." msgstr "" -#: library/asyncio-eventloop.rst:1729 +#: library/asyncio-eventloop.rst:1750 msgid "" "Calls :meth:`~asyncio.WriteTransport.abort` on all associated transports." msgstr "" -#: library/asyncio-eventloop.rst:1732 +#: library/asyncio-eventloop.rst:1753 msgid "" ":meth:`close` should be called before :meth:`abort_clients` when closing the " "server to avoid races with new clients connecting." msgstr "" -#: library/asyncio-eventloop.rst:1739 +#: library/asyncio-eventloop.rst:1760 msgid "Return the event loop associated with the server object." msgstr "" -#: library/asyncio-eventloop.rst:1746 +#: library/asyncio-eventloop.rst:1767 msgid "Start accepting connections." msgstr "" -#: library/asyncio-eventloop.rst:1748 +#: library/asyncio-eventloop.rst:1769 msgid "" "This method is idempotent, so it can be called when the server is already " "serving." msgstr "" -#: library/asyncio-eventloop.rst:1751 +#: library/asyncio-eventloop.rst:1772 msgid "" "The *start_serving* keyword-only parameter to :meth:`loop.create_server` " "and :meth:`asyncio.start_server` allows creating a Server object that is not " @@ -2183,19 +2221,19 @@ msgid "" "accepting connections." msgstr "" -#: library/asyncio-eventloop.rst:1763 +#: library/asyncio-eventloop.rst:1784 msgid "" "Start accepting connections until the coroutine is cancelled. Cancellation " "of ``serve_forever`` task causes the server to be closed." msgstr "" -#: library/asyncio-eventloop.rst:1767 +#: library/asyncio-eventloop.rst:1788 msgid "" "This method can be called if the server is already accepting connections. " "Only one ``serve_forever`` task can exist per one *Server* object." msgstr "" -#: library/asyncio-eventloop.rst:1773 +#: library/asyncio-eventloop.rst:1794 msgid "" "async def client_connected(reader, writer):\n" " # Communicate with the client with\n" @@ -2210,56 +2248,56 @@ msgid "" "asyncio.run(main('127.0.0.1', 0))" msgstr "" -#: library/asyncio-eventloop.rst:1789 +#: library/asyncio-eventloop.rst:1810 msgid "Return ``True`` if the server is accepting new connections." msgstr "" -#: library/asyncio-eventloop.rst:1796 +#: library/asyncio-eventloop.rst:1817 msgid "" "Wait until the :meth:`close` method completes and all active connections " "have finished." msgstr "" -#: library/asyncio-eventloop.rst:1801 +#: library/asyncio-eventloop.rst:1822 msgid "" "List of socket-like objects, ``asyncio.trsock.TransportSocket``, which the " "server is listening on." msgstr "" -#: library/asyncio-eventloop.rst:1804 +#: library/asyncio-eventloop.rst:1825 msgid "" "Prior to Python 3.7 ``Server.sockets`` used to return an internal list of " "server sockets directly. In 3.7 a copy of that list is returned." msgstr "" -#: library/asyncio-eventloop.rst:1814 +#: library/asyncio-eventloop.rst:1835 msgid "Event Loop Implementations" msgstr "" -#: library/asyncio-eventloop.rst:1816 +#: library/asyncio-eventloop.rst:1837 msgid "" "asyncio ships with two different event loop implementations: :class:" "`SelectorEventLoop` and :class:`ProactorEventLoop`." msgstr "" -#: library/asyncio-eventloop.rst:1819 +#: library/asyncio-eventloop.rst:1840 msgid "By default asyncio is configured to use :class:`EventLoop`." msgstr "" -#: library/asyncio-eventloop.rst:1824 +#: library/asyncio-eventloop.rst:1845 msgid "" "A subclass of :class:`AbstractEventLoop` based on the :mod:`selectors` " "module." msgstr "" -#: library/asyncio-eventloop.rst:1827 +#: library/asyncio-eventloop.rst:1848 msgid "" "Uses the most efficient *selector* available for the given platform. It is " "also possible to manually configure the exact selector implementation to be " "used::" msgstr "" -#: library/asyncio-eventloop.rst:1831 +#: library/asyncio-eventloop.rst:1852 msgid "" "import asyncio\n" "import selectors\n" @@ -2272,45 +2310,45 @@ msgid "" "asyncio.run(main(), loop_factory=loop_factory)" msgstr "" -#: library/asyncio-eventloop.rst:1846 +#: library/asyncio-eventloop.rst:1867 msgid "" "A subclass of :class:`AbstractEventLoop` for Windows that uses \"I/O " "Completion Ports\" (IOCP)." msgstr "" -#: library/asyncio-eventloop.rst:1852 +#: library/asyncio-eventloop.rst:1873 msgid "" "`MSDN documentation on I/O Completion Ports `_." msgstr "" -#: library/asyncio-eventloop.rst:1857 +#: library/asyncio-eventloop.rst:1878 msgid "" "An alias to the most efficient available subclass of :class:" "`AbstractEventLoop` for the given platform." msgstr "" -#: library/asyncio-eventloop.rst:1860 +#: library/asyncio-eventloop.rst:1881 msgid "" "It is an alias to :class:`SelectorEventLoop` on Unix and :class:" "`ProactorEventLoop` on Windows." msgstr "" -#: library/asyncio-eventloop.rst:1866 +#: library/asyncio-eventloop.rst:1887 msgid "Abstract base class for asyncio-compliant event loops." msgstr "" -#: library/asyncio-eventloop.rst:1868 +#: library/asyncio-eventloop.rst:1889 msgid "" "The :ref:`asyncio-event-loop-methods` section lists all methods that an " "alternative implementation of ``AbstractEventLoop`` should have defined." msgstr "" -#: library/asyncio-eventloop.rst:1874 +#: library/asyncio-eventloop.rst:1895 msgid "Examples" msgstr "" -#: library/asyncio-eventloop.rst:1876 +#: library/asyncio-eventloop.rst:1897 msgid "" "Note that all examples in this section **purposefully** show how to use the " "low-level event loop APIs, such as :meth:`loop.run_forever` and :meth:`loop." @@ -2318,17 +2356,17 @@ msgid "" "consider using the high-level functions like :func:`asyncio.run`." msgstr "" -#: library/asyncio-eventloop.rst:1886 +#: library/asyncio-eventloop.rst:1907 msgid "Hello World with call_soon()" msgstr "" -#: library/asyncio-eventloop.rst:1888 +#: library/asyncio-eventloop.rst:1909 msgid "" "An example using the :meth:`loop.call_soon` method to schedule a callback. " "The callback displays ``\"Hello World\"`` and then stops the event loop::" msgstr "" -#: library/asyncio-eventloop.rst:1892 +#: library/asyncio-eventloop.rst:1913 msgid "" "import asyncio\n" "\n" @@ -2349,24 +2387,24 @@ msgid "" " loop.close()" msgstr "" -#: library/asyncio-eventloop.rst:1912 +#: library/asyncio-eventloop.rst:1933 msgid "" "A similar :ref:`Hello World ` example created with a coroutine " "and the :func:`run` function." msgstr "" -#: library/asyncio-eventloop.rst:1919 +#: library/asyncio-eventloop.rst:1940 msgid "Display the current date with call_later()" msgstr "" -#: library/asyncio-eventloop.rst:1921 +#: library/asyncio-eventloop.rst:1942 msgid "" "An example of a callback displaying the current date every second. The " "callback uses the :meth:`loop.call_later` method to reschedule itself after " "5 seconds, and then stops the event loop::" msgstr "" -#: library/asyncio-eventloop.rst:1925 +#: library/asyncio-eventloop.rst:1946 msgid "" "import asyncio\n" "import datetime\n" @@ -2391,23 +2429,23 @@ msgid "" " loop.close()" msgstr "" -#: library/asyncio-eventloop.rst:1949 +#: library/asyncio-eventloop.rst:1970 msgid "" "A similar :ref:`current date ` example created with a " "coroutine and the :func:`run` function." msgstr "" -#: library/asyncio-eventloop.rst:1956 +#: library/asyncio-eventloop.rst:1977 msgid "Watch a file descriptor for read events" msgstr "" -#: library/asyncio-eventloop.rst:1958 +#: library/asyncio-eventloop.rst:1979 msgid "" "Wait until a file descriptor received some data using the :meth:`loop." "add_reader` method and then close the event loop::" msgstr "" -#: library/asyncio-eventloop.rst:1961 +#: library/asyncio-eventloop.rst:1982 msgid "" "import asyncio\n" "from socket import socketpair\n" @@ -2443,33 +2481,33 @@ msgid "" " loop.close()" msgstr "" -#: library/asyncio-eventloop.rst:1996 +#: library/asyncio-eventloop.rst:2017 msgid "" "A similar :ref:`example ` using " "transports, protocols, and the :meth:`loop.create_connection` method." msgstr "" -#: library/asyncio-eventloop.rst:2000 +#: library/asyncio-eventloop.rst:2021 msgid "" "Another similar :ref:`example ` " "using the high-level :func:`asyncio.open_connection` function and streams." msgstr "" -#: library/asyncio-eventloop.rst:2008 +#: library/asyncio-eventloop.rst:2029 msgid "Set signal handlers for SIGINT and SIGTERM" msgstr "" -#: library/asyncio-eventloop.rst:2010 +#: library/asyncio-eventloop.rst:2031 msgid "(This ``signals`` example only works on Unix.)" msgstr "" -#: library/asyncio-eventloop.rst:2012 +#: library/asyncio-eventloop.rst:2033 msgid "" "Register handlers for signals :const:`~signal.SIGINT` and :const:`~signal." "SIGTERM` using the :meth:`loop.add_signal_handler` method::" msgstr "" -#: library/asyncio-eventloop.rst:2015 +#: library/asyncio-eventloop.rst:2036 msgid "" "import asyncio\n" "import functools\n" diff --git a/library/asyncio-exceptions.po b/library/asyncio-exceptions.po index 039d836e..46db5c36 100644 --- a/library/asyncio-exceptions.po +++ b/library/asyncio-exceptions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-extending.po b/library/asyncio-extending.po index ed35d9ff..9b1bc8f3 100644 --- a/library/asyncio-extending.po +++ b/library/asyncio-extending.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-future.po b/library/asyncio-future.po index e3882c6f..3d6a24a5 100644 --- a/library/asyncio-future.po +++ b/library/asyncio-future.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-graph.po b/library/asyncio-graph.po index 2e963b7f..abb487f6 100644 --- a/library/asyncio-graph.po +++ b/library/asyncio-graph.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/library/asyncio-llapi-index.po b/library/asyncio-llapi-index.po index fdd5b53f..6013c83e 100644 --- a/library/asyncio-llapi-index.po +++ b/library/asyncio-llapi-index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-platforms.po b/library/asyncio-platforms.po index 6c7a5e9e..6e8ba321 100644 --- a/library/asyncio-platforms.po +++ b/library/asyncio-platforms.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-policy.po b/library/asyncio-policy.po index a69203a4..0fd3d961 100644 --- a/library/asyncio-policy.po +++ b/library/asyncio-policy.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-protocol.po b/library/asyncio-protocol.po index 3e255067..000bd756 100644 --- a/library/asyncio-protocol.po +++ b/library/asyncio-protocol.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-queue.po b/library/asyncio-queue.po index e1c77500..71da97f9 100644 --- a/library/asyncio-queue.po +++ b/library/asyncio-queue.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-05 22:16+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/asyncio-runner.po b/library/asyncio-runner.po index 6be781f5..493b3b3b 100644 --- a/library/asyncio-runner.po +++ b/library/asyncio-runner.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-stream.po b/library/asyncio-stream.po index b5807d23..c1f613b5 100644 --- a/library/asyncio-stream.po +++ b/library/asyncio-stream.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -36,7 +36,7 @@ msgstr "" msgid "Here is an example of a TCP echo client written using asyncio streams::" msgstr "" -#: library/asyncio-stream.rst:430 +#: library/asyncio-stream.rst:437 msgid "" "import asyncio\n" "\n" @@ -111,12 +111,12 @@ msgstr "" msgid "Added the *happy_eyeballs_delay* and *interleave* parameters." msgstr "" -#: library/asyncio-stream.rst:128 library/asyncio-stream.rst:195 +#: library/asyncio-stream.rst:128 library/asyncio-stream.rst:199 msgid "Removed the *loop* parameter." msgstr "" -#: library/asyncio-stream.rst:131 library/asyncio-stream.rst:198 -#: library/asyncio-stream.rst:397 +#: library/asyncio-stream.rst:131 library/asyncio-stream.rst:202 +#: library/asyncio-stream.rst:404 msgid "Added the *ssl_shutdown_timeout* parameter." msgstr "" @@ -144,7 +144,7 @@ msgid "" "The rest of the arguments are passed directly to :meth:`loop.create_server`." msgstr "" -#: library/asyncio-stream.rst:185 +#: library/asyncio-stream.rst:189 msgid "" "The *sock* argument transfers ownership of the socket to the server created. " "To close the socket, call the server's :meth:`~asyncio.Server.close` method." @@ -175,7 +175,7 @@ msgstr "" msgid "See also the documentation of :meth:`loop.create_unix_connection`." msgstr "" -#: library/asyncio-stream.rst:189 +#: library/asyncio-stream.rst:193 msgid "Availability" msgstr "" @@ -194,104 +194,115 @@ msgid "Similar to :func:`start_server` but works with Unix sockets." msgstr "" #: library/asyncio-stream.rst:181 +msgid "" +"If *cleanup_socket* is true then the Unix socket will automatically be " +"removed from the filesystem when the server is closed, unless the socket has " +"been replaced after the server has been created." +msgstr "" + +#: library/asyncio-stream.rst:185 msgid "See also the documentation of :meth:`loop.create_unix_server`." msgstr "" -#: library/asyncio-stream.rst:191 +#: library/asyncio-stream.rst:195 msgid "" "Added the *ssl_handshake_timeout* and *start_serving* parameters. The *path* " "parameter can now be a :term:`path-like object`." msgstr "" -#: library/asyncio-stream.rst:203 +#: library/asyncio-stream.rst:205 +msgid "Added the *cleanup_socket* parameter." +msgstr "" + +#: library/asyncio-stream.rst:210 msgid "StreamReader" msgstr "" -#: library/asyncio-stream.rst:207 +#: library/asyncio-stream.rst:214 msgid "" "Represents a reader object that provides APIs to read data from the IO " "stream. As an :term:`asynchronous iterable`, the object supports the :" "keyword:`async for` statement." msgstr "" -#: library/asyncio-stream.rst:211 +#: library/asyncio-stream.rst:218 msgid "" "It is not recommended to instantiate *StreamReader* objects directly; use :" "func:`open_connection` and :func:`start_server` instead." msgstr "" -#: library/asyncio-stream.rst:217 +#: library/asyncio-stream.rst:224 msgid "Acknowledge the EOF." msgstr "" -#: library/asyncio-stream.rst:222 +#: library/asyncio-stream.rst:229 msgid "Read up to *n* bytes from the stream." msgstr "" -#: library/asyncio-stream.rst:224 +#: library/asyncio-stream.rst:231 msgid "" "If *n* is not provided or set to ``-1``, read until EOF, then return all " "read :class:`bytes`. If EOF was received and the internal buffer is empty, " "return an empty ``bytes`` object." msgstr "" -#: library/asyncio-stream.rst:229 +#: library/asyncio-stream.rst:236 msgid "If *n* is ``0``, return an empty ``bytes`` object immediately." msgstr "" -#: library/asyncio-stream.rst:231 +#: library/asyncio-stream.rst:238 msgid "" "If *n* is positive, return at most *n* available ``bytes`` as soon as at " "least 1 byte is available in the internal buffer. If EOF is received before " "any byte is read, return an empty ``bytes`` object." msgstr "" -#: library/asyncio-stream.rst:239 +#: library/asyncio-stream.rst:246 msgid "" "Read one line, where \"line\" is a sequence of bytes ending with ``\\n``." msgstr "" -#: library/asyncio-stream.rst:242 +#: library/asyncio-stream.rst:249 msgid "" "If EOF is received and ``\\n`` was not found, the method returns partially " "read data." msgstr "" -#: library/asyncio-stream.rst:245 +#: library/asyncio-stream.rst:252 msgid "" "If EOF is received and the internal buffer is empty, return an empty " "``bytes`` object." msgstr "" -#: library/asyncio-stream.rst:251 +#: library/asyncio-stream.rst:258 msgid "Read exactly *n* bytes." msgstr "" -#: library/asyncio-stream.rst:253 +#: library/asyncio-stream.rst:260 msgid "" "Raise an :exc:`IncompleteReadError` if EOF is reached before *n* can be " "read. Use the :attr:`IncompleteReadError.partial` attribute to get the " "partially read data." msgstr "" -#: library/asyncio-stream.rst:260 +#: library/asyncio-stream.rst:267 msgid "Read data from the stream until *separator* is found." msgstr "" -#: library/asyncio-stream.rst:262 +#: library/asyncio-stream.rst:269 msgid "" "On success, the data and separator will be removed from the internal buffer " "(consumed). Returned data will include the separator at the end." msgstr "" -#: library/asyncio-stream.rst:266 +#: library/asyncio-stream.rst:273 msgid "" "If the amount of data read exceeds the configured stream limit, a :exc:" "`LimitOverrunError` exception is raised, and the data is left in the " "internal buffer and can be read again." msgstr "" -#: library/asyncio-stream.rst:270 +#: library/asyncio-stream.rst:277 msgid "" "If EOF is reached before the complete separator is found, an :exc:" "`IncompleteReadError` exception is raised, and the internal buffer is " @@ -299,7 +310,7 @@ msgid "" "portion of the separator." msgstr "" -#: library/asyncio-stream.rst:275 +#: library/asyncio-stream.rst:282 msgid "" "The *separator* may also be a tuple of separators. In this case the return " "value will be the shortest possible that has any separator as the suffix. " @@ -307,107 +318,107 @@ msgid "" "separator is considered to be the one that matched." msgstr "" -#: library/asyncio-stream.rst:285 +#: library/asyncio-stream.rst:292 msgid "The *separator* parameter may now be a :class:`tuple` of separators." msgstr "" -#: library/asyncio-stream.rst:290 +#: library/asyncio-stream.rst:297 msgid "Return ``True`` if the buffer is empty and :meth:`feed_eof` was called." msgstr "" -#: library/asyncio-stream.rst:295 +#: library/asyncio-stream.rst:302 msgid "StreamWriter" msgstr "" -#: library/asyncio-stream.rst:299 +#: library/asyncio-stream.rst:306 msgid "" "Represents a writer object that provides APIs to write data to the IO stream." msgstr "" -#: library/asyncio-stream.rst:302 +#: library/asyncio-stream.rst:309 msgid "" "It is not recommended to instantiate *StreamWriter* objects directly; use :" "func:`open_connection` and :func:`start_server` instead." msgstr "" -#: library/asyncio-stream.rst:308 +#: library/asyncio-stream.rst:315 msgid "" "The method attempts to write the *data* to the underlying socket " "immediately. If that fails, the data is queued in an internal write buffer " "until it can be sent." msgstr "" -#: library/asyncio-stream.rst:324 +#: library/asyncio-stream.rst:331 msgid "The method should be used along with the ``drain()`` method::" msgstr "" -#: library/asyncio-stream.rst:314 +#: library/asyncio-stream.rst:321 msgid "" "stream.write(data)\n" "await stream.drain()" msgstr "" -#: library/asyncio-stream.rst:319 +#: library/asyncio-stream.rst:326 msgid "" "The method writes a list (or any iterable) of bytes to the underlying socket " "immediately. If that fails, the data is queued in an internal write buffer " "until it can be sent." msgstr "" -#: library/asyncio-stream.rst:326 +#: library/asyncio-stream.rst:333 msgid "" "stream.writelines(lines)\n" "await stream.drain()" msgstr "" -#: library/asyncio-stream.rst:331 +#: library/asyncio-stream.rst:338 msgid "The method closes the stream and the underlying socket." msgstr "" -#: library/asyncio-stream.rst:333 +#: library/asyncio-stream.rst:340 msgid "" "The method should be used, though not mandatory, along with the " "``wait_closed()`` method::" msgstr "" -#: library/asyncio-stream.rst:336 +#: library/asyncio-stream.rst:343 msgid "" "stream.close()\n" "await stream.wait_closed()" msgstr "" -#: library/asyncio-stream.rst:341 +#: library/asyncio-stream.rst:348 msgid "" "Return ``True`` if the underlying transport supports the :meth:`write_eof` " "method, ``False`` otherwise." msgstr "" -#: library/asyncio-stream.rst:346 +#: library/asyncio-stream.rst:353 msgid "" "Close the write end of the stream after the buffered write data is flushed." msgstr "" -#: library/asyncio-stream.rst:351 +#: library/asyncio-stream.rst:358 msgid "Return the underlying asyncio transport." msgstr "" -#: library/asyncio-stream.rst:355 +#: library/asyncio-stream.rst:362 msgid "" "Access optional transport information; see :meth:`BaseTransport." "get_extra_info` for details." msgstr "" -#: library/asyncio-stream.rst:361 +#: library/asyncio-stream.rst:368 msgid "Wait until it is appropriate to resume writing to the stream. Example::" msgstr "" -#: library/asyncio-stream.rst:364 +#: library/asyncio-stream.rst:371 msgid "" "writer.write(data)\n" "await writer.drain()" msgstr "" -#: library/asyncio-stream.rst:367 +#: library/asyncio-stream.rst:374 msgid "" "This is a flow control method that interacts with the underlying IO write " "buffer. When the size of the buffer reaches the high watermark, *drain()* " @@ -416,82 +427,82 @@ msgid "" "`drain` returns immediately." msgstr "" -#: library/asyncio-stream.rst:378 +#: library/asyncio-stream.rst:385 msgid "Upgrade an existing stream-based connection to TLS." msgstr "" -#: library/asyncio-stream.rst:380 +#: library/asyncio-stream.rst:387 msgid "Parameters:" msgstr "" -#: library/asyncio-stream.rst:382 +#: library/asyncio-stream.rst:389 msgid "*sslcontext*: a configured instance of :class:`~ssl.SSLContext`." msgstr "" -#: library/asyncio-stream.rst:384 +#: library/asyncio-stream.rst:391 msgid "" "*server_hostname*: sets or overrides the host name that the target server's " "certificate will be matched against." msgstr "" -#: library/asyncio-stream.rst:387 +#: library/asyncio-stream.rst:394 msgid "" "*ssl_handshake_timeout* is the time in seconds to wait for the TLS handshake " "to complete before aborting the connection. ``60.0`` seconds if ``None`` " "(default)." msgstr "" -#: library/asyncio-stream.rst:391 +#: library/asyncio-stream.rst:398 msgid "" "*ssl_shutdown_timeout* is the time in seconds to wait for the SSL shutdown " "to complete before aborting the connection. ``30.0`` seconds if ``None`` " "(default)." msgstr "" -#: library/asyncio-stream.rst:403 +#: library/asyncio-stream.rst:410 msgid "" "Return ``True`` if the stream is closed or in the process of being closed." msgstr "" -#: library/asyncio-stream.rst:411 +#: library/asyncio-stream.rst:418 msgid "Wait until the stream is closed." msgstr "" -#: library/asyncio-stream.rst:413 +#: library/asyncio-stream.rst:420 msgid "" "Should be called after :meth:`close` to wait until the underlying connection " "is closed, ensuring that all data has been flushed before e.g. exiting the " "program." msgstr "" -#: library/asyncio-stream.rst:421 +#: library/asyncio-stream.rst:428 msgid "Examples" msgstr "" -#: library/asyncio-stream.rst:426 +#: library/asyncio-stream.rst:433 msgid "TCP echo client using streams" msgstr "" -#: library/asyncio-stream.rst:428 +#: library/asyncio-stream.rst:435 msgid "TCP echo client using the :func:`asyncio.open_connection` function::" msgstr "" -#: library/asyncio-stream.rst:452 +#: library/asyncio-stream.rst:459 msgid "" "The :ref:`TCP echo client protocol " "` example uses the low-level :meth:" "`loop.create_connection` method." msgstr "" -#: library/asyncio-stream.rst:459 +#: library/asyncio-stream.rst:466 msgid "TCP echo server using streams" msgstr "" -#: library/asyncio-stream.rst:461 +#: library/asyncio-stream.rst:468 msgid "TCP echo server using the :func:`asyncio.start_server` function::" msgstr "" -#: library/asyncio-stream.rst:463 +#: library/asyncio-stream.rst:470 msgid "" "import asyncio\n" "\n" @@ -523,23 +534,23 @@ msgid "" "asyncio.run(main())" msgstr "" -#: library/asyncio-stream.rst:495 +#: library/asyncio-stream.rst:502 msgid "" "The :ref:`TCP echo server protocol " "` example uses the :meth:`loop." "create_server` method." msgstr "" -#: library/asyncio-stream.rst:500 +#: library/asyncio-stream.rst:507 msgid "Get HTTP headers" msgstr "" -#: library/asyncio-stream.rst:502 +#: library/asyncio-stream.rst:509 msgid "" "Simple example querying HTTP headers of the URL passed on the command line::" msgstr "" -#: library/asyncio-stream.rst:504 +#: library/asyncio-stream.rst:511 msgid "" "import asyncio\n" "import urllib.parse\n" @@ -578,33 +589,33 @@ msgid "" "asyncio.run(print_http_headers(url))" msgstr "" -#: library/asyncio-stream.rst:541 +#: library/asyncio-stream.rst:548 msgid "Usage::" msgstr "" -#: library/asyncio-stream.rst:543 +#: library/asyncio-stream.rst:550 msgid "python example.py http://example.com/path/page.html" msgstr "" -#: library/asyncio-stream.rst:545 +#: library/asyncio-stream.rst:552 msgid "or with HTTPS::" msgstr "" -#: library/asyncio-stream.rst:547 +#: library/asyncio-stream.rst:554 msgid "python example.py https://example.com/path/page.html" msgstr "" -#: library/asyncio-stream.rst:553 +#: library/asyncio-stream.rst:560 msgid "Register an open socket to wait for data using streams" msgstr "" -#: library/asyncio-stream.rst:555 +#: library/asyncio-stream.rst:562 msgid "" "Coroutine waiting until a socket receives data using the :func:" "`open_connection` function::" msgstr "" -#: library/asyncio-stream.rst:558 +#: library/asyncio-stream.rst:565 msgid "" "import asyncio\n" "import socket\n" @@ -637,14 +648,14 @@ msgid "" "asyncio.run(wait_for_data())" msgstr "" -#: library/asyncio-stream.rst:590 +#: library/asyncio-stream.rst:597 msgid "" "The :ref:`register an open socket to wait for data using a protocol " "` example uses a low-level protocol and " "the :meth:`loop.create_connection` method." msgstr "" -#: library/asyncio-stream.rst:594 +#: library/asyncio-stream.rst:601 msgid "" "The :ref:`watch a file descriptor for read events " "` example uses the low-level :meth:`loop." diff --git a/library/asyncio-subprocess.po b/library/asyncio-subprocess.po index 97fd7674..b21eaf82 100644 --- a/library/asyncio-subprocess.po +++ b/library/asyncio-subprocess.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-sync.po b/library/asyncio-sync.po index e5484bfe..e424e14a 100644 --- a/library/asyncio-sync.po +++ b/library/asyncio-sync.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncio-task.po b/library/asyncio-task.po index e70e5632..dc280a69 100644 --- a/library/asyncio-task.po +++ b/library/asyncio-task.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -350,31 +350,40 @@ msgstr "" #: library/asyncio-task.rst:246 msgid "" -"If *name* is not ``None``, it is set as the name of the task using :meth:" -"`Task.set_name`." +"The full function signature is largely the same as that of the :class:`Task` " +"constructor (or factory) - all of the keyword arguments to this function are " +"passed through to that interface." msgstr "" -#: library/asyncio-task.rst:249 +#: library/asyncio-task.rst:250 msgid "" "An optional keyword-only *context* argument allows specifying a custom :" "class:`contextvars.Context` for the *coro* to run in. The current context " "copy is created when no *context* is provided." msgstr "" -#: library/asyncio-task.rst:253 +#: library/asyncio-task.rst:254 +msgid "" +"An optional keyword-only *eager_start* argument allows specifying if the " +"task should execute eagerly during the call to create_task, or be scheduled " +"later. If *eager_start* is not passed the mode set by :meth:`loop." +"set_task_factory` will be used." +msgstr "" + +#: library/asyncio-task.rst:259 msgid "" "The task is executed in the loop returned by :func:`get_running_loop`, :exc:" "`RuntimeError` is raised if there is no running loop in current thread." msgstr "" -#: library/asyncio-task.rst:259 +#: library/asyncio-task.rst:265 msgid "" ":meth:`asyncio.TaskGroup.create_task` is a new alternative leveraging " "structural concurrency; it allows for waiting for a group of related tasks " "with strong safety guarantees." msgstr "" -#: library/asyncio-task.rst:265 +#: library/asyncio-task.rst:271 msgid "" "Save a reference to the result of this function, to avoid a task " "disappearing mid-execution. The event loop only keeps weak references to " @@ -383,7 +392,7 @@ msgid "" "tasks, gather them in a collection::" msgstr "" -#: library/asyncio-task.rst:272 +#: library/asyncio-task.rst:278 msgid "" "background_tasks = set()\n" "\n" @@ -399,25 +408,29 @@ msgid "" " task.add_done_callback(background_tasks.discard)" msgstr "" -#: library/asyncio-task.rst:1237 +#: library/asyncio-task.rst:1250 msgid "Added the *name* parameter." msgstr "" -#: library/asyncio-task.rst:1244 +#: library/asyncio-task.rst:1257 msgid "Added the *context* parameter." msgstr "" -#: library/asyncio-task.rst:295 +#: library/asyncio-task.rst:299 +msgid "Added the *eager_start* parameter by passing on all *kwargs*." +msgstr "" + +#: library/asyncio-task.rst:304 msgid "Task Cancellation" msgstr "" -#: library/asyncio-task.rst:297 +#: library/asyncio-task.rst:306 msgid "" "Tasks can easily and safely be cancelled. When a task is cancelled, :exc:" "`asyncio.CancelledError` will be raised in the task at the next opportunity." msgstr "" -#: library/asyncio-task.rst:301 +#: library/asyncio-task.rst:310 msgid "" "It is recommended that coroutines use ``try/finally`` blocks to robustly " "perform clean-up logic. In case :exc:`asyncio.CancelledError` is explicitly " @@ -426,7 +439,7 @@ msgid "" "code will not need to be aware of it." msgstr "" -#: library/asyncio-task.rst:307 +#: library/asyncio-task.rst:316 msgid "" "The asyncio components that enable structured concurrency, like :class:" "`asyncio.TaskGroup` and :func:`asyncio.timeout`, are implemented using " @@ -437,24 +450,24 @@ msgid "" "``uncancel()`` to completely remove the cancellation state." msgstr "" -#: library/asyncio-task.rst:319 +#: library/asyncio-task.rst:328 msgid "Task Groups" msgstr "" -#: library/asyncio-task.rst:321 +#: library/asyncio-task.rst:330 msgid "" "Task groups combine a task creation API with a convenient and reliable way " "to wait for all tasks in the group to finish." msgstr "" -#: library/asyncio-task.rst:326 +#: library/asyncio-task.rst:335 msgid "" "An :ref:`asynchronous context manager ` holding a " "group of tasks. Tasks can be added to the group using :meth:`create_task`. " "All tasks are awaited when the context manager exits." msgstr "" -#: library/asyncio-task.rst:335 +#: library/asyncio-task.rst:344 msgid "" "Create a task in this task group. The signature matches that of :func:" "`asyncio.create_task`. If the task group is inactive (e.g. not yet entered, " @@ -462,16 +475,20 @@ msgid "" "given ``coro``." msgstr "" -#: library/asyncio-task.rst:343 +#: library/asyncio-task.rst:352 msgid "Close the given coroutine if the task group is not active." msgstr "" -#: library/asyncio-task.rst:551 library/asyncio-task.rst:782 -#: library/asyncio-task.rst:849 +#: library/asyncio-task.rst:356 +msgid "Passes on all *kwargs* to :meth:`loop.create_task`" +msgstr "" + +#: library/asyncio-task.rst:564 library/asyncio-task.rst:795 +#: library/asyncio-task.rst:862 msgid "Example::" msgstr "" -#: library/asyncio-task.rst:347 +#: library/asyncio-task.rst:360 msgid "" "async def main():\n" " async with asyncio.TaskGroup() as tg:\n" @@ -481,7 +498,7 @@ msgid "" "result()}\")" msgstr "" -#: library/asyncio-task.rst:353 +#: library/asyncio-task.rst:366 msgid "" "The ``async with`` statement will wait for all tasks in the group to finish. " "While waiting, new tasks may still be added to the group (for example, by " @@ -490,7 +507,7 @@ msgid "" "block is exited, no new tasks may be added to the group." msgstr "" -#: library/asyncio-task.rst:360 +#: library/asyncio-task.rst:373 msgid "" "The first time any of the tasks belonging to the group fails with an " "exception other than :exc:`asyncio.CancelledError`, the remaining tasks in " @@ -502,7 +519,7 @@ msgid "" "bubble out of the containing ``async with`` statement." msgstr "" -#: library/asyncio-task.rst:370 +#: library/asyncio-task.rst:383 msgid "" "Once all tasks have finished, if any tasks have failed with an exception " "other than :exc:`asyncio.CancelledError`, those exceptions are combined in " @@ -510,7 +527,7 @@ msgid "" "their documentation) which is then raised." msgstr "" -#: library/asyncio-task.rst:377 +#: library/asyncio-task.rst:390 msgid "" "Two base exceptions are treated specially: If any task fails with :exc:" "`KeyboardInterrupt` or :exc:`SystemExit`, the task group still cancels the " @@ -519,7 +536,7 @@ msgid "" "`ExceptionGroup` or :exc:`BaseExceptionGroup`." msgstr "" -#: library/asyncio-task.rst:383 +#: library/asyncio-task.rst:396 msgid "" "If the body of the ``async with`` statement exits with an exception (so :" "meth:`~object.__aexit__` is called with an exception set), this is treated " @@ -531,7 +548,7 @@ msgid "" "`KeyboardInterrupt` and :exc:`SystemExit` as in the previous paragraph." msgstr "" -#: library/asyncio-task.rst:395 +#: library/asyncio-task.rst:408 msgid "" "Task groups are careful not to mix up the internal cancellation used to " "\"wake up\" their :meth:`~object.__aexit__` with cancellation requests for " @@ -542,7 +559,7 @@ msgid "" "receive another cancellation and process its own exceptions." msgstr "" -#: library/asyncio-task.rst:403 +#: library/asyncio-task.rst:416 msgid "" "In the case where a task group is cancelled externally and also must raise " "an :exc:`ExceptionGroup`, it will call the parent task's :meth:`~asyncio." @@ -550,30 +567,30 @@ msgid "" "be raised at the next :keyword:`await`, so the cancellation is not lost." msgstr "" -#: library/asyncio-task.rst:409 +#: library/asyncio-task.rst:422 msgid "" "Task groups preserve the cancellation count reported by :meth:`asyncio.Task." "cancelling`." msgstr "" -#: library/asyncio-task.rst:414 +#: library/asyncio-task.rst:427 msgid "" "Improved handling of simultaneous internal and external cancellations and " "correct preservation of cancellation counts." msgstr "" -#: library/asyncio-task.rst:418 +#: library/asyncio-task.rst:431 msgid "Terminating a Task Group" msgstr "" -#: library/asyncio-task.rst:420 +#: library/asyncio-task.rst:433 msgid "" "While terminating a task group is not natively supported by the standard " "library, termination can be achieved by adding an exception-raising task to " "the task group and ignoring the raised exception:" msgstr "" -#: library/asyncio-task.rst:424 +#: library/asyncio-task.rst:437 msgid "" "import asyncio\n" "from asyncio import TaskGroup\n" @@ -606,49 +623,49 @@ msgid "" "asyncio.run(main())" msgstr "" -#: library/asyncio-task.rst:456 +#: library/asyncio-task.rst:469 msgid "Expected output:" msgstr "" -#: library/asyncio-task.rst:458 +#: library/asyncio-task.rst:471 msgid "" "Task 1: start\n" "Task 2: start\n" "Task 1: done" msgstr "" -#: library/asyncio-task.rst:465 +#: library/asyncio-task.rst:478 msgid "Sleeping" msgstr "" -#: library/asyncio-task.rst:470 +#: library/asyncio-task.rst:483 msgid "Block for *delay* seconds." msgstr "" -#: library/asyncio-task.rst:472 +#: library/asyncio-task.rst:485 msgid "" "If *result* is provided, it is returned to the caller when the coroutine " "completes." msgstr "" -#: library/asyncio-task.rst:475 +#: library/asyncio-task.rst:488 msgid "" "``sleep()`` always suspends the current task, allowing other tasks to run." msgstr "" -#: library/asyncio-task.rst:478 +#: library/asyncio-task.rst:491 msgid "" "Setting the delay to 0 provides an optimized path to allow other tasks to " "run. This can be used by long-running functions to avoid blocking the event " "loop for the full duration of the function call." msgstr "" -#: library/asyncio-task.rst:484 +#: library/asyncio-task.rst:497 msgid "" "Example of coroutine displaying the current date every second for 5 seconds::" msgstr "" -#: library/asyncio-task.rst:487 +#: library/asyncio-task.rst:500 msgid "" "import asyncio\n" "import datetime\n" @@ -665,39 +682,39 @@ msgid "" "asyncio.run(display_date())" msgstr "" -#: library/asyncio-task.rst:600 library/asyncio-task.rst:874 -#: library/asyncio-task.rst:986 +#: library/asyncio-task.rst:613 library/asyncio-task.rst:887 +#: library/asyncio-task.rst:999 msgid "Removed the *loop* parameter." msgstr "" -#: library/asyncio-task.rst:505 +#: library/asyncio-task.rst:518 msgid "Raises :exc:`ValueError` if *delay* is :data:`~math.nan`." msgstr "" -#: library/asyncio-task.rst:510 +#: library/asyncio-task.rst:523 msgid "Running Tasks Concurrently" msgstr "" -#: library/asyncio-task.rst:514 +#: library/asyncio-task.rst:527 msgid "" "Run :ref:`awaitable objects ` in the *aws* sequence " "*concurrently*." msgstr "" -#: library/asyncio-task.rst:517 +#: library/asyncio-task.rst:530 msgid "" "If any awaitable in *aws* is a coroutine, it is automatically scheduled as a " "Task." msgstr "" -#: library/asyncio-task.rst:520 +#: library/asyncio-task.rst:533 msgid "" "If all awaitables are completed successfully, the result is an aggregate " "list of returned values. The order of result values corresponds to the " "order of awaitables in *aws*." msgstr "" -#: library/asyncio-task.rst:524 +#: library/asyncio-task.rst:537 msgid "" "If *return_exceptions* is ``False`` (default), the first raised exception is " "immediately propagated to the task that awaits on ``gather()``. Other " @@ -705,19 +722,19 @@ msgid "" "run." msgstr "" -#: library/asyncio-task.rst:529 +#: library/asyncio-task.rst:542 msgid "" "If *return_exceptions* is ``True``, exceptions are treated the same as " "successful results, and aggregated in the result list." msgstr "" -#: library/asyncio-task.rst:532 +#: library/asyncio-task.rst:545 msgid "" "If ``gather()`` is *cancelled*, all submitted awaitables (that have not " "completed yet) are also *cancelled*." msgstr "" -#: library/asyncio-task.rst:535 +#: library/asyncio-task.rst:548 msgid "" "If any Task or Future from the *aws* sequence is *cancelled*, it is treated " "as if it raised :exc:`CancelledError` -- the ``gather()`` call is **not** " @@ -725,7 +742,7 @@ msgid "" "submitted Task/Future to cause other Tasks/Futures to be cancelled." msgstr "" -#: library/asyncio-task.rst:542 +#: library/asyncio-task.rst:555 msgid "" "A new alternative to create and run tasks concurrently and wait for their " "completion is :class:`asyncio.TaskGroup`. *TaskGroup* provides stronger " @@ -735,7 +752,7 @@ msgid "" "tasks)." msgstr "" -#: library/asyncio-task.rst:553 +#: library/asyncio-task.rst:566 msgid "" "import asyncio\n" "\n" @@ -774,7 +791,7 @@ msgid "" "# [2, 6, 24]" msgstr "" -#: library/asyncio-task.rst:589 +#: library/asyncio-task.rst:602 msgid "" "If *return_exceptions* is false, cancelling gather() after it has been " "marked done won't cancel any submitted awaitables. For instance, gather can " @@ -783,28 +800,28 @@ msgid "" "the awaitables) from gather won't cancel any other awaitables." msgstr "" -#: library/asyncio-task.rst:596 +#: library/asyncio-task.rst:609 msgid "" "If the *gather* itself is cancelled, the cancellation is propagated " "regardless of *return_exceptions*." msgstr "" -#: library/asyncio-task.rst:603 +#: library/asyncio-task.rst:616 msgid "" "Deprecation warning is emitted if no positional arguments are provided or " "not all positional arguments are Future-like objects and there is no running " "event loop." msgstr "" -#: library/asyncio-task.rst:612 +#: library/asyncio-task.rst:625 msgid "Eager Task Factory" msgstr "" -#: library/asyncio-task.rst:616 +#: library/asyncio-task.rst:629 msgid "A task factory for eager task execution." msgstr "" -#: library/asyncio-task.rst:618 +#: library/asyncio-task.rst:631 msgid "" "When using this factory (via :meth:`loop.set_task_factory(asyncio." "eager_task_factory) `), coroutines begin execution " @@ -814,13 +831,13 @@ msgid "" "synchronously." msgstr "" -#: library/asyncio-task.rst:624 +#: library/asyncio-task.rst:637 msgid "" "A common example where this is beneficial is coroutines which employ caching " "or memoization to avoid actual I/O when possible." msgstr "" -#: library/asyncio-task.rst:629 +#: library/asyncio-task.rst:642 msgid "" "Immediate execution of the coroutine is a semantic change. If the coroutine " "returns or raises, the task is never scheduled to the event loop. If the " @@ -829,60 +846,60 @@ msgid "" "the application's task execution order is likely to change." msgstr "" -#: library/asyncio-task.rst:640 +#: library/asyncio-task.rst:653 msgid "" "Create an eager task factory, similar to :func:`eager_task_factory`, using " "the provided *custom_task_constructor* when creating a new task instead of " "the default :class:`Task`." msgstr "" -#: library/asyncio-task.rst:644 +#: library/asyncio-task.rst:657 msgid "" "*custom_task_constructor* must be a *callable* with the signature matching " "the signature of :class:`Task.__init__ `. The callable must return a :" "class:`asyncio.Task`-compatible object." msgstr "" -#: library/asyncio-task.rst:648 +#: library/asyncio-task.rst:661 msgid "" "This function returns a *callable* intended to be used as a task factory of " "an event loop via :meth:`loop.set_task_factory(factory) `)." msgstr "" -#: library/asyncio-task.rst:655 +#: library/asyncio-task.rst:668 msgid "Shielding From Cancellation" msgstr "" -#: library/asyncio-task.rst:659 +#: library/asyncio-task.rst:672 msgid "" "Protect an :ref:`awaitable object ` from being :meth:" "`cancelled `." msgstr "" -#: library/asyncio-task.rst:829 +#: library/asyncio-task.rst:842 msgid "If *aw* is a coroutine it is automatically scheduled as a Task." msgstr "" -#: library/asyncio-task.rst:664 +#: library/asyncio-task.rst:677 msgid "The statement::" msgstr "" -#: library/asyncio-task.rst:666 +#: library/asyncio-task.rst:679 msgid "" "task = asyncio.create_task(something())\n" "res = await shield(task)" msgstr "" -#: library/asyncio-task.rst:669 +#: library/asyncio-task.rst:682 msgid "is equivalent to::" msgstr "" -#: library/asyncio-task.rst:671 +#: library/asyncio-task.rst:684 msgid "res = await something()" msgstr "" -#: library/asyncio-task.rst:673 +#: library/asyncio-task.rst:686 msgid "" "*except* that if the coroutine containing it is cancelled, the Task running " "in ``something()`` is not cancelled. From the point of view of " @@ -891,20 +908,20 @@ msgid "" "`CancelledError`." msgstr "" -#: library/asyncio-task.rst:679 +#: library/asyncio-task.rst:692 msgid "" "If ``something()`` is cancelled by other means (i.e. from within itself) " "that would also cancel ``shield()``." msgstr "" -#: library/asyncio-task.rst:682 +#: library/asyncio-task.rst:695 msgid "" "If it is desired to completely ignore cancellation (not recommended) the " "``shield()`` function should be combined with a try/except clause, as " "follows::" msgstr "" -#: library/asyncio-task.rst:686 +#: library/asyncio-task.rst:699 msgid "" "task = asyncio.create_task(something())\n" "try:\n" @@ -913,7 +930,7 @@ msgid "" " res = None" msgstr "" -#: library/asyncio-task.rst:694 +#: library/asyncio-task.rst:707 msgid "" "Save a reference to tasks passed to this function, to avoid a task " "disappearing mid-execution. The event loop only keeps weak references to " @@ -921,43 +938,43 @@ msgid "" "any time, even before it's done." msgstr "" -#: library/asyncio-task.rst:702 +#: library/asyncio-task.rst:715 msgid "" "Deprecation warning is emitted if *aw* is not Future-like object and there " "is no running event loop." msgstr "" -#: library/asyncio-task.rst:708 +#: library/asyncio-task.rst:721 msgid "Timeouts" msgstr "" -#: library/asyncio-task.rst:712 +#: library/asyncio-task.rst:725 msgid "" "Return an :ref:`asynchronous context manager ` that " "can be used to limit the amount of time spent waiting on something." msgstr "" -#: library/asyncio-task.rst:716 +#: library/asyncio-task.rst:729 msgid "" "*delay* can either be ``None``, or a float/int number of seconds to wait. If " "*delay* is ``None``, no time limit will be applied; this can be useful if " "the delay is unknown when the context manager is created." msgstr "" -#: library/asyncio-task.rst:721 +#: library/asyncio-task.rst:734 msgid "" "In either case, the context manager can be rescheduled after creation using :" "meth:`Timeout.reschedule`." msgstr "" -#: library/asyncio-task.rst:726 +#: library/asyncio-task.rst:739 msgid "" "async def main():\n" " async with asyncio.timeout(10):\n" " await long_running_task()" msgstr "" -#: library/asyncio-task.rst:730 +#: library/asyncio-task.rst:743 msgid "" "If ``long_running_task`` takes more than 10 seconds to complete, the context " "manager will cancel the current task and handle the resulting :exc:`asyncio." @@ -965,18 +982,18 @@ msgid "" "can be caught and handled." msgstr "" -#: library/asyncio-task.rst:737 +#: library/asyncio-task.rst:750 msgid "" "The :func:`asyncio.timeout` context manager is what transforms the :exc:" "`asyncio.CancelledError` into a :exc:`TimeoutError`, which means the :exc:" "`TimeoutError` can only be caught *outside* of the context manager." msgstr "" -#: library/asyncio-task.rst:742 +#: library/asyncio-task.rst:755 msgid "Example of catching :exc:`TimeoutError`::" msgstr "" -#: library/asyncio-task.rst:744 +#: library/asyncio-task.rst:757 msgid "" "async def main():\n" " try:\n" @@ -988,48 +1005,48 @@ msgid "" " print(\"This statement will run regardless.\")" msgstr "" -#: library/asyncio-task.rst:753 +#: library/asyncio-task.rst:766 msgid "" "The context manager produced by :func:`asyncio.timeout` can be rescheduled " "to a different deadline and inspected." msgstr "" -#: library/asyncio-task.rst:758 +#: library/asyncio-task.rst:771 msgid "" "An :ref:`asynchronous context manager ` for " "cancelling overdue coroutines." msgstr "" -#: library/asyncio-task.rst:761 +#: library/asyncio-task.rst:774 msgid "" "``when`` should be an absolute time at which the context should time out, as " "measured by the event loop's clock:" msgstr "" -#: library/asyncio-task.rst:764 +#: library/asyncio-task.rst:777 msgid "If ``when`` is ``None``, the timeout will never trigger." msgstr "" -#: library/asyncio-task.rst:765 +#: library/asyncio-task.rst:778 msgid "" "If ``when < loop.time()``, the timeout will trigger on the next iteration of " "the event loop." msgstr "" -#: library/asyncio-task.rst:770 +#: library/asyncio-task.rst:783 msgid "" "Return the current deadline, or ``None`` if the current deadline is not set." msgstr "" -#: library/asyncio-task.rst:775 +#: library/asyncio-task.rst:788 msgid "Reschedule the timeout." msgstr "" -#: library/asyncio-task.rst:779 +#: library/asyncio-task.rst:792 msgid "Return whether the context manager has exceeded its deadline (expired)." msgstr "" -#: library/asyncio-task.rst:784 +#: library/asyncio-task.rst:797 msgid "" "async def main():\n" " try:\n" @@ -1047,17 +1064,17 @@ msgid "" " print(\"Looks like we haven't finished on time.\")" msgstr "" -#: library/asyncio-task.rst:799 +#: library/asyncio-task.rst:812 msgid "Timeout context managers can be safely nested." msgstr "" -#: library/asyncio-task.rst:805 +#: library/asyncio-task.rst:818 msgid "" "Similar to :func:`asyncio.timeout`, except *when* is the absolute time to " "stop waiting, or ``None``." msgstr "" -#: library/asyncio-task.rst:810 +#: library/asyncio-task.rst:823 msgid "" "async def main():\n" " loop = get_running_loop()\n" @@ -1071,41 +1088,41 @@ msgid "" " print(\"This statement will run regardless.\")" msgstr "" -#: library/asyncio-task.rst:826 +#: library/asyncio-task.rst:839 msgid "" "Wait for the *aw* :ref:`awaitable ` to complete with a " "timeout." msgstr "" -#: library/asyncio-task.rst:831 +#: library/asyncio-task.rst:844 msgid "" "*timeout* can either be ``None`` or a float or int number of seconds to wait " "for. If *timeout* is ``None``, block until the future completes." msgstr "" -#: library/asyncio-task.rst:835 +#: library/asyncio-task.rst:848 msgid "" "If a timeout occurs, it cancels the task and raises :exc:`TimeoutError`." msgstr "" -#: library/asyncio-task.rst:838 +#: library/asyncio-task.rst:851 msgid "" "To avoid the task :meth:`cancellation `, wrap it in :func:" "`shield`." msgstr "" -#: library/asyncio-task.rst:841 +#: library/asyncio-task.rst:854 msgid "" "The function will wait until the future is actually cancelled, so the total " "wait time may exceed the *timeout*. If an exception happens during " "cancellation, it is propagated." msgstr "" -#: library/asyncio-task.rst:845 +#: library/asyncio-task.rst:858 msgid "If the wait is cancelled, the future *aw* is also cancelled." msgstr "" -#: library/asyncio-task.rst:851 +#: library/asyncio-task.rst:864 msgid "" "async def eternity():\n" " # Sleep for one hour\n" @@ -1126,107 +1143,107 @@ msgid "" "# timeout!" msgstr "" -#: library/asyncio-task.rst:869 +#: library/asyncio-task.rst:882 msgid "" "When *aw* is cancelled due to a timeout, ``wait_for`` waits for *aw* to be " "cancelled. Previously, it raised :exc:`TimeoutError` immediately." msgstr "" -#: library/asyncio-task.rst:877 +#: library/asyncio-task.rst:890 msgid "Raises :exc:`TimeoutError` instead of :exc:`asyncio.TimeoutError`." msgstr "" -#: library/asyncio-task.rst:882 +#: library/asyncio-task.rst:895 msgid "Waiting Primitives" msgstr "" -#: library/asyncio-task.rst:887 +#: library/asyncio-task.rst:900 msgid "" "Run :class:`~asyncio.Future` and :class:`~asyncio.Task` instances in the " "*aws* iterable concurrently and block until the condition specified by " "*return_when*." msgstr "" -#: library/asyncio-task.rst:891 +#: library/asyncio-task.rst:904 msgid "The *aws* iterable must not be empty." msgstr "" -#: library/asyncio-task.rst:893 +#: library/asyncio-task.rst:906 msgid "Returns two sets of Tasks/Futures: ``(done, pending)``." msgstr "" -#: library/asyncio-task.rst:895 +#: library/asyncio-task.rst:908 msgid "Usage::" msgstr "" -#: library/asyncio-task.rst:897 +#: library/asyncio-task.rst:910 msgid "done, pending = await asyncio.wait(aws)" msgstr "" -#: library/asyncio-task.rst:899 +#: library/asyncio-task.rst:912 msgid "" "*timeout* (a float or int), if specified, can be used to control the maximum " "number of seconds to wait before returning." msgstr "" -#: library/asyncio-task.rst:902 +#: library/asyncio-task.rst:915 msgid "" "Note that this function does not raise :exc:`TimeoutError`. Futures or Tasks " "that aren't done when the timeout occurs are simply returned in the second " "set." msgstr "" -#: library/asyncio-task.rst:906 +#: library/asyncio-task.rst:919 msgid "" "*return_when* indicates when this function should return. It must be one of " "the following constants:" msgstr "" -#: library/asyncio-task.rst:912 +#: library/asyncio-task.rst:925 msgid "Constant" msgstr "" -#: library/asyncio-task.rst:913 +#: library/asyncio-task.rst:926 msgid "Description" msgstr "" -#: library/asyncio-task.rst:916 +#: library/asyncio-task.rst:929 msgid "The function will return when any future finishes or is cancelled." msgstr "" -#: library/asyncio-task.rst:919 +#: library/asyncio-task.rst:932 msgid "" "The function will return when any future finishes by raising an exception. " "If no future raises an exception then it is equivalent to :const:" "`ALL_COMPLETED`." msgstr "" -#: library/asyncio-task.rst:924 +#: library/asyncio-task.rst:937 msgid "The function will return when all futures finish or are cancelled." msgstr "" -#: library/asyncio-task.rst:926 +#: library/asyncio-task.rst:939 msgid "" "Unlike :func:`~asyncio.wait_for`, ``wait()`` does not cancel the futures " "when a timeout occurs." msgstr "" -#: library/asyncio-task.rst:932 +#: library/asyncio-task.rst:945 msgid "Passing coroutine objects to ``wait()`` directly is forbidden." msgstr "" -#: library/asyncio-task.rst:993 +#: library/asyncio-task.rst:1006 msgid "Added support for generators yielding tasks." msgstr "" -#: library/asyncio-task.rst:941 +#: library/asyncio-task.rst:954 msgid "" "Run :ref:`awaitable objects ` in the *aws* iterable " "concurrently. The returned object can be iterated to obtain the results of " "the awaitables as they finish." msgstr "" -#: library/asyncio-task.rst:945 +#: library/asyncio-task.rst:958 msgid "" "The object returned by ``as_completed()`` can be iterated as an :term:" "`asynchronous iterator` or a plain :term:`iterator`. When asynchronous " @@ -1235,7 +1252,7 @@ msgid "" "tasks with their results. Example::" msgstr "" -#: library/asyncio-task.rst:951 +#: library/asyncio-task.rst:964 msgid "" "ipv4_connect = create_task(open_connection(\"127.0.0.1\", 80))\n" "ipv6_connect = create_task(open_connection(\"::1\", 80))\n" @@ -1252,20 +1269,20 @@ msgid "" " print(\"IPv4 connection established.\")" msgstr "" -#: library/asyncio-task.rst:965 +#: library/asyncio-task.rst:978 msgid "" "During asynchronous iteration, implicitly-created tasks will be yielded for " "supplied awaitables that aren't tasks or futures." msgstr "" -#: library/asyncio-task.rst:968 +#: library/asyncio-task.rst:981 msgid "" "When used as a plain iterator, each iteration yields a new coroutine that " "returns the result or raises the exception of the next completed awaitable. " "This pattern is compatible with Python versions older than 3.13::" msgstr "" -#: library/asyncio-task.rst:972 +#: library/asyncio-task.rst:985 msgid "" "ipv4_connect = create_task(open_connection(\"127.0.0.1\", 80))\n" "ipv6_connect = create_task(open_connection(\"::1\", 80))\n" @@ -1278,34 +1295,34 @@ msgid "" " reader, writer = await next_connect" msgstr "" -#: library/asyncio-task.rst:982 +#: library/asyncio-task.rst:995 msgid "" "A :exc:`TimeoutError` is raised if the timeout occurs before all awaitables " "are done. This is raised by the ``async for`` loop during asynchronous " "iteration or by the coroutines yielded during plain iteration." msgstr "" -#: library/asyncio-task.rst:989 +#: library/asyncio-task.rst:1002 msgid "" "Deprecation warning is emitted if not all awaitable objects in the *aws* " "iterable are Future-like objects and there is no running event loop." msgstr "" -#: library/asyncio-task.rst:996 +#: library/asyncio-task.rst:1009 msgid "" "The result can now be used as either an :term:`asynchronous iterator` or as " "a plain :term:`iterator` (previously it was only a plain iterator)." msgstr "" -#: library/asyncio-task.rst:1002 +#: library/asyncio-task.rst:1015 msgid "Running in Threads" msgstr "" -#: library/asyncio-task.rst:1007 +#: library/asyncio-task.rst:1020 msgid "Asynchronously run function *func* in a separate thread." msgstr "" -#: library/asyncio-task.rst:1009 +#: library/asyncio-task.rst:1022 msgid "" "Any \\*args and \\*\\*kwargs supplied for this function are directly passed " "to *func*. Also, the current :class:`contextvars.Context` is propagated, " @@ -1313,19 +1330,19 @@ msgid "" "separate thread." msgstr "" -#: library/asyncio-task.rst:1014 +#: library/asyncio-task.rst:1027 msgid "" "Return a coroutine that can be awaited to get the eventual result of *func*." msgstr "" -#: library/asyncio-task.rst:1016 +#: library/asyncio-task.rst:1029 msgid "" "This coroutine function is primarily intended to be used for executing IO-" "bound functions/methods that would otherwise block the event loop if they " "were run in the main thread. For example::" msgstr "" -#: library/asyncio-task.rst:1020 +#: library/asyncio-task.rst:1033 msgid "" "def blocking_io():\n" " print(f\"start blocking_io at {time.strftime('%X')}\")\n" @@ -1354,7 +1371,7 @@ msgid "" "# finished main at 19:50:54" msgstr "" -#: library/asyncio-task.rst:1046 +#: library/asyncio-task.rst:1059 msgid "" "Directly calling ``blocking_io()`` in any coroutine would block the event " "loop for its duration, resulting in an additional 1 second of run time. " @@ -1362,7 +1379,7 @@ msgid "" "thread without blocking the event loop." msgstr "" -#: library/asyncio-task.rst:1053 +#: library/asyncio-task.rst:1066 msgid "" "Due to the :term:`GIL`, ``asyncio.to_thread()`` can typically only be used " "to make IO-bound functions non-blocking. However, for extension modules that " @@ -1370,27 +1387,27 @@ msgid "" "``asyncio.to_thread()`` can also be used for CPU-bound functions." msgstr "" -#: library/asyncio-task.rst:1062 +#: library/asyncio-task.rst:1075 msgid "Scheduling From Other Threads" msgstr "" -#: library/asyncio-task.rst:1066 +#: library/asyncio-task.rst:1079 msgid "Submit a coroutine to the given event loop. Thread-safe." msgstr "" -#: library/asyncio-task.rst:1068 +#: library/asyncio-task.rst:1081 msgid "" "Return a :class:`concurrent.futures.Future` to wait for the result from " "another OS thread." msgstr "" -#: library/asyncio-task.rst:1071 +#: library/asyncio-task.rst:1084 msgid "" "This function is meant to be called from a different OS thread than the one " "where the event loop is running. Example::" msgstr "" -#: library/asyncio-task.rst:1074 +#: library/asyncio-task.rst:1087 msgid "" "def in_thread(loop: asyncio.AbstractEventLoop) -> None:\n" " # Run some blocking IO\n" @@ -1414,11 +1431,11 @@ msgid "" " await asyncio.to_thread(in_thread, loop)" msgstr "" -#: library/asyncio-task.rst:1094 +#: library/asyncio-task.rst:1107 msgid "It's also possible to run the other way around. Example::" msgstr "" -#: library/asyncio-task.rst:1096 +#: library/asyncio-task.rst:1109 msgid "" "@contextlib.contextmanager\n" "def loop_in_thread() -> Generator[asyncio.AbstractEventLoop]:\n" @@ -1454,13 +1471,13 @@ msgid "" " assert future.result(timeout=2) == 3" msgstr "" -#: library/asyncio-task.rst:1128 +#: library/asyncio-task.rst:1141 msgid "" "If an exception is raised in the coroutine, the returned Future will be " "notified. It can also be used to cancel the task in the event loop::" msgstr "" -#: library/asyncio-task.rst:1132 +#: library/asyncio-task.rst:1145 msgid "" "try:\n" " result = future.result(timeout)\n" @@ -1473,59 +1490,59 @@ msgid "" " print(f'The coroutine returned: {result!r}')" msgstr "" -#: library/asyncio-task.rst:1142 +#: library/asyncio-task.rst:1155 msgid "" "See the :ref:`concurrency and multithreading ` " "section of the documentation." msgstr "" -#: library/asyncio-task.rst:1145 +#: library/asyncio-task.rst:1158 msgid "" "Unlike other asyncio functions this function requires the *loop* argument to " "be passed explicitly." msgstr "" -#: library/asyncio-task.rst:1152 +#: library/asyncio-task.rst:1165 msgid "Introspection" msgstr "" -#: library/asyncio-task.rst:1157 +#: library/asyncio-task.rst:1170 msgid "" "Return the currently running :class:`Task` instance, or ``None`` if no task " "is running." msgstr "" -#: library/asyncio-task.rst:1160 +#: library/asyncio-task.rst:1173 msgid "" "If *loop* is ``None`` :func:`get_running_loop` is used to get the current " "loop." msgstr "" -#: library/asyncio-task.rst:1168 +#: library/asyncio-task.rst:1181 msgid "Return a set of not yet finished :class:`Task` objects run by the loop." msgstr "" -#: library/asyncio-task.rst:1171 +#: library/asyncio-task.rst:1184 msgid "" "If *loop* is ``None``, :func:`get_running_loop` is used for getting current " "loop." msgstr "" -#: library/asyncio-task.rst:1179 +#: library/asyncio-task.rst:1192 msgid "Return ``True`` if *obj* is a coroutine object." msgstr "" -#: library/asyncio-task.rst:1185 +#: library/asyncio-task.rst:1198 msgid "Task Object" msgstr "" -#: library/asyncio-task.rst:1189 +#: library/asyncio-task.rst:1202 msgid "" "A :class:`Future-like ` object that runs a Python :ref:`coroutine " "`. Not thread-safe." msgstr "" -#: library/asyncio-task.rst:1192 +#: library/asyncio-task.rst:1205 msgid "" "Tasks are used to run coroutines in event loops. If a coroutine awaits on a " "Future, the Task suspends the execution of the coroutine and waits for the " @@ -1533,21 +1550,21 @@ msgid "" "wrapped coroutine resumes." msgstr "" -#: library/asyncio-task.rst:1198 +#: library/asyncio-task.rst:1211 msgid "" "Event loops use cooperative scheduling: an event loop runs one Task at a " "time. While a Task awaits for the completion of a Future, the event loop " "runs other Tasks, callbacks, or performs IO operations." msgstr "" -#: library/asyncio-task.rst:1203 +#: library/asyncio-task.rst:1216 msgid "" "Use the high-level :func:`asyncio.create_task` function to create Tasks, or " "the low-level :meth:`loop.create_task` or :func:`ensure_future` functions. " "Manual instantiation of Tasks is discouraged." msgstr "" -#: library/asyncio-task.rst:1208 +#: library/asyncio-task.rst:1221 msgid "" "To cancel a running Task use the :meth:`cancel` method. Calling it will " "cause the Task to throw a :exc:`CancelledError` exception into the wrapped " @@ -1555,20 +1572,20 @@ msgid "" "cancellation, the Future object will be cancelled." msgstr "" -#: library/asyncio-task.rst:1213 +#: library/asyncio-task.rst:1226 msgid "" ":meth:`cancelled` can be used to check if the Task was cancelled. The method " "returns ``True`` if the wrapped coroutine did not suppress the :exc:" "`CancelledError` exception and was actually cancelled." msgstr "" -#: library/asyncio-task.rst:1218 +#: library/asyncio-task.rst:1231 msgid "" ":class:`asyncio.Task` inherits from :class:`Future` all of its APIs except :" "meth:`Future.set_result` and :meth:`Future.set_exception`." msgstr "" -#: library/asyncio-task.rst:1222 +#: library/asyncio-task.rst:1235 msgid "" "An optional keyword-only *context* argument allows specifying a custom :" "class:`contextvars.Context` for the *coro* to run in. If no *context* is " @@ -1576,7 +1593,7 @@ msgid "" "in the copied context." msgstr "" -#: library/asyncio-task.rst:1227 +#: library/asyncio-task.rst:1240 msgid "" "An optional keyword-only *eager_start* argument allows eagerly starting the " "execution of the :class:`asyncio.Task` at task creation time. If set to " @@ -1586,96 +1603,96 @@ msgid "" "eagerly and will skip scheduling to the event loop." msgstr "" -#: library/asyncio-task.rst:1234 +#: library/asyncio-task.rst:1247 msgid "Added support for the :mod:`contextvars` module." msgstr "" -#: library/asyncio-task.rst:1240 +#: library/asyncio-task.rst:1253 msgid "" "Deprecation warning is emitted if *loop* is not specified and there is no " "running event loop." msgstr "" -#: library/asyncio-task.rst:1247 +#: library/asyncio-task.rst:1260 msgid "Added the *eager_start* parameter." msgstr "" -#: library/asyncio-task.rst:1252 +#: library/asyncio-task.rst:1265 msgid "Return ``True`` if the Task is *done*." msgstr "" -#: library/asyncio-task.rst:1254 +#: library/asyncio-task.rst:1267 msgid "" "A Task is *done* when the wrapped coroutine either returned a value, raised " "an exception, or the Task was cancelled." msgstr "" -#: library/asyncio-task.rst:1259 +#: library/asyncio-task.rst:1272 msgid "Return the result of the Task." msgstr "" -#: library/asyncio-task.rst:1261 +#: library/asyncio-task.rst:1274 msgid "" "If the Task is *done*, the result of the wrapped coroutine is returned (or " "if the coroutine raised an exception, that exception is re-raised.)" msgstr "" -#: library/asyncio-task.rst:1279 +#: library/asyncio-task.rst:1292 msgid "" "If the Task has been *cancelled*, this method raises a :exc:`CancelledError` " "exception." msgstr "" -#: library/asyncio-task.rst:1268 +#: library/asyncio-task.rst:1281 msgid "" "If the Task's result isn't yet available, this method raises an :exc:" "`InvalidStateError` exception." msgstr "" -#: library/asyncio-task.rst:1273 +#: library/asyncio-task.rst:1286 msgid "Return the exception of the Task." msgstr "" -#: library/asyncio-task.rst:1275 +#: library/asyncio-task.rst:1288 msgid "" "If the wrapped coroutine raised an exception that exception is returned. If " "the wrapped coroutine returned normally this method returns ``None``." msgstr "" -#: library/asyncio-task.rst:1282 +#: library/asyncio-task.rst:1295 msgid "" "If the Task isn't *done* yet, this method raises an :exc:`InvalidStateError` " "exception." msgstr "" -#: library/asyncio-task.rst:1287 +#: library/asyncio-task.rst:1300 msgid "Add a callback to be run when the Task is *done*." msgstr "" -#: library/asyncio-task.rst:1298 +#: library/asyncio-task.rst:1311 msgid "This method should only be used in low-level callback-based code." msgstr "" -#: library/asyncio-task.rst:1291 +#: library/asyncio-task.rst:1304 msgid "" "See the documentation of :meth:`Future.add_done_callback` for more details." msgstr "" -#: library/asyncio-task.rst:1296 +#: library/asyncio-task.rst:1309 msgid "Remove *callback* from the callbacks list." msgstr "" -#: library/asyncio-task.rst:1300 +#: library/asyncio-task.rst:1313 msgid "" "See the documentation of :meth:`Future.remove_done_callback` for more " "details." msgstr "" -#: library/asyncio-task.rst:1305 +#: library/asyncio-task.rst:1318 msgid "Return the list of stack frames for this Task." msgstr "" -#: library/asyncio-task.rst:1307 +#: library/asyncio-task.rst:1320 msgid "" "If the wrapped coroutine is not done, this returns the stack where it is " "suspended. If the coroutine has completed successfully or was cancelled, " @@ -1683,15 +1700,15 @@ msgid "" "this returns the list of traceback frames." msgstr "" -#: library/asyncio-task.rst:1313 +#: library/asyncio-task.rst:1326 msgid "The frames are always ordered from oldest to newest." msgstr "" -#: library/asyncio-task.rst:1315 +#: library/asyncio-task.rst:1328 msgid "Only one stack frame is returned for a suspended coroutine." msgstr "" -#: library/asyncio-task.rst:1317 +#: library/asyncio-task.rst:1330 msgid "" "The optional *limit* argument sets the maximum number of frames to return; " "by default all available frames are returned. The ordering of the returned " @@ -1700,87 +1717,87 @@ msgid "" "are returned. (This matches the behavior of the traceback module.)" msgstr "" -#: library/asyncio-task.rst:1326 +#: library/asyncio-task.rst:1339 msgid "Print the stack or traceback for this Task." msgstr "" -#: library/asyncio-task.rst:1328 +#: library/asyncio-task.rst:1341 msgid "" "This produces output similar to that of the traceback module for the frames " "retrieved by :meth:`get_stack`." msgstr "" -#: library/asyncio-task.rst:1331 +#: library/asyncio-task.rst:1344 msgid "The *limit* argument is passed to :meth:`get_stack` directly." msgstr "" -#: library/asyncio-task.rst:1333 +#: library/asyncio-task.rst:1346 msgid "" "The *file* argument is an I/O stream to which the output is written; by " "default output is written to :data:`sys.stdout`." msgstr "" -#: library/asyncio-task.rst:1338 +#: library/asyncio-task.rst:1351 msgid "Return the coroutine object wrapped by the :class:`Task`." msgstr "" -#: library/asyncio-task.rst:1342 +#: library/asyncio-task.rst:1355 msgid "" "This will return ``None`` for Tasks which have already completed eagerly. " "See the :ref:`Eager Task Factory `." msgstr "" -#: library/asyncio-task.rst:1349 +#: library/asyncio-task.rst:1362 msgid "Newly added eager task execution means result may be ``None``." msgstr "" -#: library/asyncio-task.rst:1353 +#: library/asyncio-task.rst:1366 msgid "" "Return the :class:`contextvars.Context` object associated with the task." msgstr "" -#: library/asyncio-task.rst:1360 +#: library/asyncio-task.rst:1373 msgid "Return the name of the Task." msgstr "" -#: library/asyncio-task.rst:1362 +#: library/asyncio-task.rst:1375 msgid "" "If no name has been explicitly assigned to the Task, the default asyncio " "Task implementation generates a default name during instantiation." msgstr "" -#: library/asyncio-task.rst:1370 +#: library/asyncio-task.rst:1383 msgid "Set the name of the Task." msgstr "" -#: library/asyncio-task.rst:1372 +#: library/asyncio-task.rst:1385 msgid "" "The *value* argument can be any object, which is then converted to a string." msgstr "" -#: library/asyncio-task.rst:1375 +#: library/asyncio-task.rst:1388 msgid "" "In the default Task implementation, the name will be visible in the :func:" "`repr` output of a task object." msgstr "" -#: library/asyncio-task.rst:1382 +#: library/asyncio-task.rst:1395 msgid "Request the Task to be cancelled." msgstr "" -#: library/asyncio-task.rst:1384 +#: library/asyncio-task.rst:1397 msgid "" "If the Task is already *done* or *cancelled*, return ``False``, otherwise, " "return ``True``." msgstr "" -#: library/asyncio-task.rst:1387 +#: library/asyncio-task.rst:1400 msgid "" "The method arranges for a :exc:`CancelledError` exception to be thrown into " "the wrapped coroutine on the next cycle of the event loop." msgstr "" -#: library/asyncio-task.rst:1390 +#: library/asyncio-task.rst:1403 msgid "" "The coroutine then has a chance to clean up or even deny the request by " "suppressing the exception with a :keyword:`try` ... ... ``except " @@ -1792,21 +1809,21 @@ msgid "" "addition to catching the exception." msgstr "" -#: library/asyncio-task.rst:1400 +#: library/asyncio-task.rst:1413 msgid "Added the *msg* parameter." msgstr "" -#: library/asyncio-task.rst:1403 +#: library/asyncio-task.rst:1416 msgid "The ``msg`` parameter is propagated from cancelled task to its awaiter." msgstr "" -#: library/asyncio-task.rst:1408 +#: library/asyncio-task.rst:1421 msgid "" "The following example illustrates how coroutines can intercept the " "cancellation request::" msgstr "" -#: library/asyncio-task.rst:1411 +#: library/asyncio-task.rst:1424 msgid "" "async def cancel_me():\n" " print('cancel_me(): before sleep')\n" @@ -1843,32 +1860,32 @@ msgid "" "# main(): cancel_me is cancelled now" msgstr "" -#: library/asyncio-task.rst:1447 +#: library/asyncio-task.rst:1460 msgid "Return ``True`` if the Task is *cancelled*." msgstr "" -#: library/asyncio-task.rst:1449 +#: library/asyncio-task.rst:1462 msgid "" "The Task is *cancelled* when the cancellation was requested with :meth:" "`cancel` and the wrapped coroutine propagated the :exc:`CancelledError` " "exception thrown into it." msgstr "" -#: library/asyncio-task.rst:1455 +#: library/asyncio-task.rst:1468 msgid "Decrement the count of cancellation requests to this Task." msgstr "" -#: library/asyncio-task.rst:1457 +#: library/asyncio-task.rst:1470 msgid "Returns the remaining number of cancellation requests." msgstr "" -#: library/asyncio-task.rst:1459 +#: library/asyncio-task.rst:1472 msgid "" "Note that once execution of a cancelled task completed, further calls to :" "meth:`uncancel` are ineffective." msgstr "" -#: library/asyncio-task.rst:1464 +#: library/asyncio-task.rst:1477 msgid "" "This method is used by asyncio's internals and isn't expected to be used by " "end-user code. In particular, if a Task gets successfully uncancelled, this " @@ -1877,7 +1894,7 @@ msgid "" "respective structured block. For example::" msgstr "" -#: library/asyncio-task.rst:1471 +#: library/asyncio-task.rst:1484 msgid "" "async def make_request_with_timeout():\n" " try:\n" @@ -1891,7 +1908,7 @@ msgid "" " await unrelated_code()" msgstr "" -#: library/asyncio-task.rst:1482 +#: library/asyncio-task.rst:1495 msgid "" "While the block with ``make_request()`` and ``make_another_request()`` might " "get cancelled due to the timeout, ``unrelated_code()`` should continue " @@ -1900,14 +1917,14 @@ msgid "" "similar fashion." msgstr "" -#: library/asyncio-task.rst:1488 +#: library/asyncio-task.rst:1501 msgid "" "If end-user code is, for some reason, suppressing cancellation by catching :" "exc:`CancelledError`, it needs to call this method to remove the " "cancellation state." msgstr "" -#: library/asyncio-task.rst:1492 +#: library/asyncio-task.rst:1505 msgid "" "When this method decrements the cancellation count to zero, the method " "checks if a previous :meth:`cancel` call had arranged for :exc:" @@ -1916,17 +1933,17 @@ msgid "" "``_must_cancel`` flag)." msgstr "" -#: library/asyncio-task.rst:1498 +#: library/asyncio-task.rst:1511 msgid "Changed to rescind pending cancellation requests upon reaching zero." msgstr "" -#: library/asyncio-task.rst:1503 +#: library/asyncio-task.rst:1516 msgid "" "Return the number of pending cancellation requests to this Task, i.e., the " "number of calls to :meth:`cancel` less the number of :meth:`uncancel` calls." msgstr "" -#: library/asyncio-task.rst:1507 +#: library/asyncio-task.rst:1520 msgid "" "Note that if this number is greater than zero but the Task is still " "executing, :meth:`cancelled` will still return ``False``. This is because " @@ -1935,7 +1952,7 @@ msgid "" "to zero." msgstr "" -#: library/asyncio-task.rst:1513 +#: library/asyncio-task.rst:1526 msgid "" "This method is used by asyncio's internals and isn't expected to be used by " "end-user code. See :meth:`uncancel` for more details." diff --git a/library/asyncio.po b/library/asyncio.po index 867f287c..7277700c 100644 --- a/library/asyncio.po +++ b/library/asyncio.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/asyncore.po b/library/asyncore.po index 1ecc6063..232c56c4 100644 --- a/library/asyncore.po +++ b/library/asyncore.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/atexit.po b/library/atexit.po index f1cc3c74..7bbf17fb 100644 --- a/library/atexit.po +++ b/library/atexit.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/audioop.po b/library/audioop.po index 9cf9830e..b06c971c 100644 --- a/library/audioop.po +++ b/library/audioop.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/audit_events.po b/library/audit_events.po index dd7ba257..63d69f8f 100644 --- a/library/audit_events.po +++ b/library/audit_events.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/base64.po b/library/base64.po index 73cf4cb3..2a539f35 100644 --- a/library/base64.po +++ b/library/base64.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -28,22 +28,14 @@ msgstr "" #: library/base64.rst:16 msgid "" "This module provides functions for encoding binary data to printable ASCII " -"characters and decoding such encodings back to binary data. It provides " -"encoding and decoding functions for the encodings specified in :rfc:`4648`, " -"which defines the Base16, Base32, and Base64 algorithms, and for the de-" -"facto standard Ascii85 and Base85 encodings." +"characters and decoding such encodings back to binary data. This includes " +"the :ref:`encodings specified in ` :rfc:`4648` (Base64, " +"Base32 and Base16) and the non-standard :ref:`Base85 encodings `." msgstr "" #: library/base64.rst:22 msgid "" -"The :rfc:`4648` encodings are suitable for encoding binary data so that it " -"can be safely sent by email, used as parts of URLs, or included as part of " -"an HTTP POST request. The encoding algorithm is not the same as the :" -"program:`uuencode` program." -msgstr "" - -#: library/base64.rst:27 -msgid "" "There are two interfaces provided by this module. The modern interface " "supports encoding :term:`bytes-like objects ` to ASCII :" "class:`bytes`, and decoding :term:`bytes-like objects ` " @@ -51,40 +43,47 @@ msgid "" "defined in :rfc:`4648` (normal, and URL- and filesystem-safe) are supported." msgstr "" -#: library/base64.rst:33 +#: library/base64.rst:28 msgid "" -"The legacy interface does not support decoding from strings, but it does " -"provide functions for encoding and decoding to and from :term:`file objects " -"`. It only supports the Base64 standard alphabet, and it adds " -"newlines every 76 characters as per :rfc:`2045`. Note that if you are " -"looking for :rfc:`2045` support you probably want to be looking at the :mod:" -"`email` package instead." +"The :ref:`legacy interface ` does not support decoding from " +"strings, but it does provide functions for encoding and decoding to and " +"from :term:`file objects `. It only supports the Base64 " +"standard alphabet, and it adds newlines every 76 characters as per :rfc:" +"`2045`. Note that if you are looking for :rfc:`2045` support you probably " +"want to be looking at the :mod:`email` package instead." msgstr "" -#: library/base64.rst:41 +#: library/base64.rst:36 msgid "" "ASCII-only Unicode strings are now accepted by the decoding functions of the " "modern interface." msgstr "" -#: library/base64.rst:45 +#: library/base64.rst:40 msgid "" "Any :term:`bytes-like objects ` are now accepted by all " "encoding and decoding functions in this module. Ascii85/Base85 support " "added." msgstr "" -#: library/base64.rst:49 -msgid "The modern interface provides:" +#: library/base64.rst:48 +msgid "RFC 4648 Encodings" msgstr "" -#: library/base64.rst:53 +#: library/base64.rst:50 +msgid "" +"The :rfc:`4648` encodings are suitable for encoding binary data so that it " +"can be safely sent by email, used as parts of URLs, or included as part of " +"an HTTP POST request." +msgstr "" + +#: library/base64.rst:56 msgid "" "Encode the :term:`bytes-like object` *s* using Base64 and return the " "encoded :class:`bytes`." msgstr "" -#: library/base64.rst:56 +#: library/base64.rst:59 msgid "" "Optional *altchars* must be a :term:`bytes-like object` of length 2 which " "specifies an alternative alphabet for the ``+`` and ``/`` characters. This " @@ -93,32 +92,32 @@ msgid "" "used." msgstr "" -#: library/base64.rst:61 +#: library/base64.rst:64 msgid "" "May assert or raise a :exc:`ValueError` if the length of *altchars* is not " "2. Raises a :exc:`TypeError` if *altchars* is not a :term:`bytes-like " "object`." msgstr "" -#: library/base64.rst:67 +#: library/base64.rst:70 msgid "" "Decode the Base64 encoded :term:`bytes-like object` or ASCII string *s* and " "return the decoded :class:`bytes`." msgstr "" -#: library/base64.rst:70 +#: library/base64.rst:73 msgid "" "Optional *altchars* must be a :term:`bytes-like object` or ASCII string of " "length 2 which specifies the alternative alphabet used instead of the ``+`` " "and ``/`` characters." msgstr "" -#: library/base64.rst:74 +#: library/base64.rst:77 msgid "" "A :exc:`binascii.Error` exception is raised if *s* is incorrectly padded." msgstr "" -#: library/base64.rst:77 +#: library/base64.rst:80 msgid "" "If *validate* is ``False`` (the default), characters that are neither in the " "normal base-64 alphabet nor the alternative alphabet are discarded prior to " @@ -126,30 +125,30 @@ msgid "" "in the input result in a :exc:`binascii.Error`." msgstr "" -#: library/base64.rst:83 +#: library/base64.rst:86 msgid "" "For more information about the strict base64 check, see :func:`binascii." "a2b_base64`" msgstr "" -#: library/base64.rst:85 +#: library/base64.rst:88 msgid "" "May assert or raise a :exc:`ValueError` if the length of *altchars* is not 2." msgstr "" -#: library/base64.rst:89 +#: library/base64.rst:92 msgid "" "Encode :term:`bytes-like object` *s* using the standard Base64 alphabet and " "return the encoded :class:`bytes`." msgstr "" -#: library/base64.rst:95 +#: library/base64.rst:98 msgid "" "Decode :term:`bytes-like object` or ASCII string *s* using the standard " "Base64 alphabet and return the decoded :class:`bytes`." msgstr "" -#: library/base64.rst:101 +#: library/base64.rst:104 msgid "" "Encode :term:`bytes-like object` *s* using the URL- and filesystem-safe " "alphabet, which substitutes ``-`` instead of ``+`` and ``_`` instead of ``/" @@ -157,7 +156,7 @@ msgid "" "The result can still contain ``=``." msgstr "" -#: library/base64.rst:110 +#: library/base64.rst:113 msgid "" "Decode :term:`bytes-like object` or ASCII string *s* using the URL- and " "filesystem-safe alphabet, which substitutes ``-`` instead of ``+`` and ``_`` " @@ -165,25 +164,25 @@ msgid "" "class:`bytes`." msgstr "" -#: library/base64.rst:119 +#: library/base64.rst:122 msgid "" "Encode the :term:`bytes-like object` *s* using Base32 and return the " "encoded :class:`bytes`." msgstr "" -#: library/base64.rst:125 +#: library/base64.rst:128 msgid "" "Decode the Base32 encoded :term:`bytes-like object` or ASCII string *s* and " "return the decoded :class:`bytes`." msgstr "" -#: library/base64.rst:176 +#: library/base64.rst:179 msgid "" "Optional *casefold* is a flag specifying whether a lowercase alphabet is " "acceptable as input. For security purposes, the default is ``False``." msgstr "" -#: library/base64.rst:132 +#: library/base64.rst:135 msgid "" ":rfc:`4648` allows for optional mapping of the digit 0 (zero) to the letter " "O (oh), and for optional mapping of the digit 1 (one) to either the letter I " @@ -194,25 +193,25 @@ msgid "" "input." msgstr "" -#: library/base64.rst:180 +#: library/base64.rst:183 msgid "" "A :exc:`binascii.Error` is raised if *s* is incorrectly padded or if there " "are non-alphabet characters present in the input." msgstr "" -#: library/base64.rst:146 +#: library/base64.rst:149 msgid "" "Similar to :func:`b32encode` but uses the Extended Hex Alphabet, as defined " "in :rfc:`4648`." msgstr "" -#: library/base64.rst:154 +#: library/base64.rst:157 msgid "" "Similar to :func:`b32decode` but uses the Extended Hex Alphabet, as defined " "in :rfc:`4648`." msgstr "" -#: library/base64.rst:157 +#: library/base64.rst:160 msgid "" "This version does not allow the digit 0 (zero) to the letter O (oh) and " "digit 1 (one) to either the letter I (eye) or letter L (el) mappings, all " @@ -220,70 +219,114 @@ msgid "" "interchangeable." msgstr "" -#: library/base64.rst:167 +#: library/base64.rst:170 msgid "" "Encode the :term:`bytes-like object` *s* using Base16 and return the " "encoded :class:`bytes`." msgstr "" -#: library/base64.rst:173 +#: library/base64.rst:176 msgid "" "Decode the Base16 encoded :term:`bytes-like object` or ASCII string *s* and " "return the decoded :class:`bytes`." msgstr "" -#: library/base64.rst:187 +#: library/base64.rst:190 +msgid "Base85 Encodings" +msgstr "" + +#: library/base64.rst:192 +msgid "" +"Base85 encoding is not formally specified but rather a de facto standard, " +"thus different systems perform the encoding differently." +msgstr "" + +#: library/base64.rst:195 +msgid "" +"The :func:`a85encode` and :func:`b85encode` functions in this module are two " +"implementations of the de facto standard. You should call the function with " +"the Base85 implementation used by the software you intend to work with." +msgstr "" + +#: library/base64.rst:199 +msgid "" +"The two functions present in this module differ in how they handle the " +"following:" +msgstr "" + +#: library/base64.rst:201 +msgid "Whether to include enclosing ``<~`` and ``~>`` markers" +msgstr "" + +#: library/base64.rst:202 +msgid "Whether to include newline characters" +msgstr "" + +#: library/base64.rst:203 +msgid "The set of ASCII characters used for encoding" +msgstr "" + +#: library/base64.rst:204 +msgid "Handling of null bytes" +msgstr "" + +#: library/base64.rst:206 +msgid "" +"Refer to the documentation of the individual functions for more information." +msgstr "" + +#: library/base64.rst:210 msgid "" "Encode the :term:`bytes-like object` *b* using Ascii85 and return the " "encoded :class:`bytes`." msgstr "" -#: library/base64.rst:190 +#: library/base64.rst:213 msgid "" "*foldspaces* is an optional flag that uses the special short sequence 'y' " "instead of 4 consecutive spaces (ASCII 0x20) as supported by 'btoa'. This " "feature is not supported by the \"standard\" Ascii85 encoding." msgstr "" -#: library/base64.rst:194 +#: library/base64.rst:217 msgid "" "*wrapcol* controls whether the output should have newline (``b'\\n'``) " "characters added to it. If this is non-zero, each output line will be at " "most this many characters long, excluding the trailing newline." msgstr "" -#: library/base64.rst:198 +#: library/base64.rst:221 msgid "" "*pad* controls whether the input is padded to a multiple of 4 before " "encoding. Note that the ``btoa`` implementation always pads." msgstr "" -#: library/base64.rst:201 +#: library/base64.rst:224 msgid "" "*adobe* controls whether the encoded byte sequence is framed with ``<~`` and " "``~>``, which is used by the Adobe implementation." msgstr "" -#: library/base64.rst:209 +#: library/base64.rst:232 msgid "" "Decode the Ascii85 encoded :term:`bytes-like object` or ASCII string *b* and " "return the decoded :class:`bytes`." msgstr "" -#: library/base64.rst:212 +#: library/base64.rst:235 msgid "" "*foldspaces* is a flag that specifies whether the 'y' short sequence should " "be accepted as shorthand for 4 consecutive spaces (ASCII 0x20). This feature " "is not supported by the \"standard\" Ascii85 encoding." msgstr "" -#: library/base64.rst:216 +#: library/base64.rst:239 msgid "" "*adobe* controls whether the input sequence is in Adobe Ascii85 format (i.e. " "is framed with <~ and ~>)." msgstr "" -#: library/base64.rst:219 +#: library/base64.rst:242 msgid "" "*ignorechars* should be a :term:`bytes-like object` or ASCII string " "containing characters to ignore from the input. This should only contain " @@ -291,44 +334,44 @@ msgid "" "ASCII." msgstr "" -#: library/base64.rst:229 +#: library/base64.rst:252 msgid "" "Encode the :term:`bytes-like object` *b* using base85 (as used in e.g. git-" "style binary diffs) and return the encoded :class:`bytes`." msgstr "" -#: library/base64.rst:232 +#: library/base64.rst:255 msgid "" "If *pad* is true, the input is padded with ``b'\\0'`` so its length is a " "multiple of 4 bytes before encoding." msgstr "" -#: library/base64.rst:240 +#: library/base64.rst:263 msgid "" "Decode the base85-encoded :term:`bytes-like object` or ASCII string *b* and " "return the decoded :class:`bytes`. Padding is implicitly removed, if " "necessary." msgstr "" -#: library/base64.rst:249 +#: library/base64.rst:272 msgid "" "Encode the :term:`bytes-like object` *s* using Z85 (as used in ZeroMQ) and " "return the encoded :class:`bytes`. See `Z85 specification `_ for more information." msgstr "" -#: library/base64.rst:258 +#: library/base64.rst:281 msgid "" "Decode the Z85-encoded :term:`bytes-like object` or ASCII string *s* and " "return the decoded :class:`bytes`. See `Z85 specification `_ for more information." msgstr "" -#: library/base64.rst:265 -msgid "The legacy interface:" +#: library/base64.rst:291 +msgid "Legacy Interface" msgstr "" -#: library/base64.rst:269 +#: library/base64.rst:295 msgid "" "Decode the contents of the binary *input* file and write the resulting " "binary data to the *output* file. *input* and *output* must be :term:`file " @@ -336,13 +379,13 @@ msgid "" "returns an empty bytes object." msgstr "" -#: library/base64.rst:277 +#: library/base64.rst:303 msgid "" "Decode the :term:`bytes-like object` *s*, which must contain one or more " "lines of base64 encoded data, and return the decoded :class:`bytes`." msgstr "" -#: library/base64.rst:285 +#: library/base64.rst:311 msgid "" "Encode the contents of the binary *input* file and write the resulting " "base64 encoded data to the *output* file. *input* and *output* must be :term:" @@ -352,7 +395,7 @@ msgid "" "the output always ends with a newline, as per :rfc:`2045` (MIME)." msgstr "" -#: library/base64.rst:295 +#: library/base64.rst:321 msgid "" "Encode the :term:`bytes-like object` *s*, which can contain arbitrary binary " "data, and return :class:`bytes` containing the base64-encoded data, with " @@ -360,38 +403,38 @@ msgid "" "that there is a trailing newline, as per :rfc:`2045` (MIME)." msgstr "" -#: library/base64.rst:303 +#: library/base64.rst:329 msgid "An example usage of the module:" msgstr "" -#: library/base64.rst:316 +#: library/base64.rst:342 msgid "Security Considerations" msgstr "" -#: library/base64.rst:318 +#: library/base64.rst:344 msgid "" "A new security considerations section was added to :rfc:`4648` (section 12); " "it's recommended to review the security section for any code deployed to " "production." msgstr "" -#: library/base64.rst:323 +#: library/base64.rst:349 msgid "Module :mod:`binascii`" msgstr "" -#: library/base64.rst:324 +#: library/base64.rst:350 msgid "" "Support module containing ASCII-to-binary and binary-to-ASCII conversions." msgstr "" -#: library/base64.rst:326 +#: library/base64.rst:352 msgid "" ":rfc:`1521` - MIME (Multipurpose Internet Mail Extensions) Part One: " "Mechanisms for Specifying and Describing the Format of Internet Message " "Bodies" msgstr "" -#: library/base64.rst:327 +#: library/base64.rst:353 msgid "" "Section 5.2, \"Base64 Content-Transfer-Encoding,\" provides the definition " "of the base64 encoding." diff --git a/library/bdb.po b/library/bdb.po index 2640c9b5..5651a040 100644 --- a/library/bdb.po +++ b/library/bdb.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/binary.po b/library/binary.po index b3e35bcd..22e43b29 100644 --- a/library/binary.po +++ b/library/binary.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-20 17:46+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/library/binascii.po b/library/binascii.po index 5f88de65..d5d17cb4 100644 --- a/library/binascii.po +++ b/library/binascii.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/bisect.po b/library/bisect.po index 9ca0dbee..75ef15ab 100644 --- a/library/bisect.po +++ b/library/bisect.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/builtins.po b/library/builtins.po index fd656648..3dff8dbf 100644 --- a/library/builtins.po +++ b/library/builtins.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/bz2.po b/library/bz2.po index 45d09f97..6f0073db 100644 --- a/library/bz2.po +++ b/library/bz2.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/calendar.po b/library/calendar.po index 83a7a6ec..32ff76de 100644 --- a/library/calendar.po +++ b/library/calendar.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/cgi.po b/library/cgi.po index 15137da9..71fe2249 100644 --- a/library/cgi.po +++ b/library/cgi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/cgitb.po b/library/cgitb.po index 87effd81..259146d0 100644 --- a/library/cgitb.po +++ b/library/cgitb.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/chunk.po b/library/chunk.po index 2eb96418..51924259 100644 --- a/library/chunk.po +++ b/library/chunk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/cmath.po b/library/cmath.po index d4ead8a9..cf43eba7 100644 --- a/library/cmath.po +++ b/library/cmath.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/cmd.po b/library/cmd.po index 8ab2b852..033c646f 100644 --- a/library/cmd.po +++ b/library/cmd.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/cmdline.po b/library/cmdline.po index 613893e0..9e9836df 100644 --- a/library/cmdline.po +++ b/library/cmdline.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-21 12:24+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/library/cmdlinelibs.po b/library/cmdlinelibs.po index 8f3c49f0..c9d9cd1f 100644 --- a/library/cmdlinelibs.po +++ b/library/cmdlinelibs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/code.po b/library/code.po index 1576f301..e828fc74 100644 --- a/library/code.po +++ b/library/code.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -42,7 +42,15 @@ msgid "" "``'__console__'`` and key ``'__doc__'`` set to ``None``." msgstr "" -#: library/code.rst:28 +#: library/code.rst:25 +msgid "" +"Note that functions and classes objects created under an :class:`!" +"InteractiveInterpreter` instance will belong to the namespace specified by " +"*locals*. They are only pickleable if *locals* is the namespace of an " +"existing module." +msgstr "" + +#: library/code.rst:34 msgid "" "Closely emulate the behavior of the interactive Python interpreter. This " "class builds on :class:`InteractiveInterpreter` and adds prompting using the " @@ -51,11 +59,11 @@ msgid "" "`SystemExit`, but instead return to the calling code." msgstr "" -#: library/code.rst:52 +#: library/code.rst:58 msgid "Added *local_exit* parameter." msgstr "" -#: library/code.rst:39 +#: library/code.rst:45 msgid "" "Convenience function to run a read-eval-print loop. This creates a new " "instance of :class:`InteractiveConsole` and sets *readfunc* to be used as " @@ -68,11 +76,11 @@ msgid "" "provided. The console object is discarded after use." msgstr "" -#: library/code.rst:49 +#: library/code.rst:55 msgid "Added *exitmsg* parameter." msgstr "" -#: library/code.rst:57 +#: library/code.rst:63 msgid "" "This function is useful for programs that want to emulate Python's " "interpreter main loop (a.k.a. the read-eval-print loop). The tricky part is " @@ -82,7 +90,7 @@ msgid "" "real interpreter main loop." msgstr "" -#: library/code.rst:64 +#: library/code.rst:70 msgid "" "*source* is the source string; *filename* is the optional filename from " "which source was read, defaulting to ``''``; and *symbol* is the " @@ -90,7 +98,7 @@ msgid "" "``'eval'`` or ``'exec'``." msgstr "" -#: library/code.rst:69 +#: library/code.rst:75 msgid "" "Returns a code object (the same as ``compile(source, filename, symbol)``) if " "the command is complete and valid; ``None`` if the command is incomplete; " @@ -99,18 +107,18 @@ msgid "" "contains an invalid literal." msgstr "" -#: library/code.rst:79 +#: library/code.rst:85 msgid "Interactive Interpreter Objects" msgstr "" -#: library/code.rst:84 +#: library/code.rst:90 msgid "" "Compile and run some source in the interpreter. Arguments are the same as " "for :func:`compile_command`; the default for *filename* is ``''``, " "and for *symbol* is ``'single'``. One of several things can happen:" msgstr "" -#: library/code.rst:88 +#: library/code.rst:94 msgid "" "The input is incorrect; :func:`compile_command` raised an exception (:exc:" "`SyntaxError` or :exc:`OverflowError`). A syntax traceback will be printed " @@ -118,13 +126,13 @@ msgid "" "``False``." msgstr "" -#: library/code.rst:93 +#: library/code.rst:99 msgid "" "The input is incomplete, and more input is required; :func:`compile_command` " "returned ``None``. :meth:`runsource` returns ``True``." msgstr "" -#: library/code.rst:96 +#: library/code.rst:102 msgid "" "The input is complete; :func:`compile_command` returned a code object. The " "code is executed by calling the :meth:`runcode` (which also handles run-time " @@ -132,27 +140,27 @@ msgid "" "``False``." msgstr "" -#: library/code.rst:100 +#: library/code.rst:106 msgid "" "The return value can be used to decide whether to use ``sys.ps1`` or ``sys." "ps2`` to prompt the next line." msgstr "" -#: library/code.rst:106 +#: library/code.rst:112 msgid "" "Execute a code object. When an exception occurs, :meth:`showtraceback` is " "called to display a traceback. All exceptions are caught except :exc:" "`SystemExit`, which is allowed to propagate." msgstr "" -#: library/code.rst:110 +#: library/code.rst:116 msgid "" "A note about :exc:`KeyboardInterrupt`: this exception may occur elsewhere in " "this code, and may not always be caught. The caller should be prepared to " "deal with it." msgstr "" -#: library/code.rst:117 +#: library/code.rst:123 msgid "" "Display the syntax error that just occurred. This does not display a stack " "trace because there isn't one for syntax errors. If *filename* is given, it " @@ -161,38 +169,38 @@ msgid "" "string. The output is written by the :meth:`write` method." msgstr "" -#: library/code.rst:126 +#: library/code.rst:132 msgid "" "Display the exception that just occurred. We remove the first stack item " "because it is within the interpreter object implementation. The output is " "written by the :meth:`write` method." msgstr "" -#: library/code.rst:130 +#: library/code.rst:136 msgid "" "The full chained traceback is displayed instead of just the primary " "traceback." msgstr "" -#: library/code.rst:136 +#: library/code.rst:142 msgid "" "Write a string to the standard error stream (``sys.stderr``). Derived " "classes should override this to provide the appropriate output handling as " "needed." msgstr "" -#: library/code.rst:143 +#: library/code.rst:149 msgid "Interactive Console Objects" msgstr "" -#: library/code.rst:145 +#: library/code.rst:151 msgid "" "The :class:`InteractiveConsole` class is a subclass of :class:" "`InteractiveInterpreter`, and so offers all the methods of the interpreter " "objects as well as the following additions." msgstr "" -#: library/code.rst:152 +#: library/code.rst:158 msgid "" "Closely emulate the interactive Python console. The optional *banner* " "argument specify the banner to print before the first interaction; by " @@ -202,22 +210,22 @@ msgid "" "close!)." msgstr "" -#: library/code.rst:158 +#: library/code.rst:164 msgid "" "The optional *exitmsg* argument specifies an exit message printed when " "exiting. Pass the empty string to suppress the exit message. If *exitmsg* is " "not given or ``None``, a default message is printed." msgstr "" -#: library/code.rst:162 +#: library/code.rst:168 msgid "To suppress printing any banner, pass an empty string." msgstr "" -#: library/code.rst:165 +#: library/code.rst:171 msgid "Print an exit message when exiting." msgstr "" -#: library/code.rst:171 +#: library/code.rst:177 msgid "" "Push a line of source text to the interpreter. The line should not have a " "trailing newline; it may have internal newlines. The line is appended to a " @@ -230,11 +238,11 @@ msgid "" "same as :meth:`!runsource`)." msgstr "" -#: library/code.rst:183 +#: library/code.rst:189 msgid "Remove any unhandled source text from the input buffer." msgstr "" -#: library/code.rst:188 +#: library/code.rst:194 msgid "" "Write a prompt and read a line. The returned line does not include the " "trailing newline. When the user enters the EOF key sequence, :exc:" diff --git a/library/codecs.po b/library/codecs.po index 6a713c56..6ac2a7e4 100644 --- a/library/codecs.po +++ b/library/codecs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/codeop.po b/library/codeop.po index 1814ae49..686da5e8 100644 --- a/library/codeop.po +++ b/library/codeop.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/collections.abc.po b/library/collections.abc.po index b3a4cf1c..ecaa8fff 100644 --- a/library/collections.abc.po +++ b/library/collections.abc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-02 23:52+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/collections.po b/library/collections.po index 46d2df73..c8ee4623 100644 --- a/library/collections.po +++ b/library/collections.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/colorsys.po b/library/colorsys.po index ddf5f862..fe74af11 100644 --- a/library/colorsys.po +++ b/library/colorsys.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-20 12:46+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/library/compileall.po b/library/compileall.po index 7203d66b..1e8afbdf 100644 --- a/library/compileall.po +++ b/library/compileall.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -86,26 +86,40 @@ msgid "" "executed." msgstr "" -#: library/compileall.rst:61 +#: library/compileall.rst:60 msgid "" -"Remove (``-s``) or append (``-p``) the given prefix of paths recorded in the " -"``.pyc`` files. Cannot be combined with ``-d``." +"Remove the given prefix from paths recorded in the ``.pyc`` files. Paths are " +"made relative to the prefix." +msgstr "" + +#: library/compileall.rst:63 +msgid "This option can be used with ``-p`` but not with ``-d``." msgstr "" #: library/compileall.rst:67 msgid "" +"Prepend the given prefix to paths recorded in the ``.pyc`` files. Use ``-p /" +"`` to make the paths absolute." +msgstr "" + +#: library/compileall.rst:70 +msgid "This option can be used with ``-s`` but not with ``-d``." +msgstr "" + +#: library/compileall.rst:74 +msgid "" "regex is used to search the full path to each file considered for " "compilation, and if the regex produces a match, the file is skipped." msgstr "" -#: library/compileall.rst:72 +#: library/compileall.rst:79 msgid "" "Read the file ``list`` and add each line that it contains to the list of " "files and directories to compile. If ``list`` is ``-``, read lines from " "``stdin``." msgstr "" -#: library/compileall.rst:78 +#: library/compileall.rst:85 msgid "" "Write the byte-code files to their legacy locations and names, which may " "overwrite byte-code files created by another version of Python. The default " @@ -113,7 +127,7 @@ msgid "" "byte-code files from multiple versions of Python to coexist." msgstr "" -#: library/compileall.rst:85 +#: library/compileall.rst:92 msgid "" "Control the maximum recursion level for subdirectories. If this is given, " "then ``-l`` option will not be taken into account. :program:`python -m " @@ -121,13 +135,13 @@ msgid "" " -l`." msgstr "" -#: library/compileall.rst:92 +#: library/compileall.rst:99 msgid "" "Use *N* workers to compile the files within the given directory. If ``0`` is " "used, then the result of :func:`os.process_cpu_count` will be used." msgstr "" -#: library/compileall.rst:98 +#: library/compileall.rst:105 msgid "" "Control how the generated byte-code files are invalidated at runtime. The " "``timestamp`` value, means that ``.pyc`` files with the source timestamp and " @@ -140,53 +154,53 @@ msgid "" "the ``SOURCE_DATE_EPOCH`` environment variable is set." msgstr "" -#: library/compileall.rst:111 +#: library/compileall.rst:118 msgid "" "Compile with the given optimization level. May be used multiple times to " "compile for multiple levels at a time (for example, ``compileall -o 1 -o " "2``)." msgstr "" -#: library/compileall.rst:117 +#: library/compileall.rst:124 msgid "Ignore symlinks pointing outside the given directory." msgstr "" -#: library/compileall.rst:121 +#: library/compileall.rst:128 msgid "" "If two ``.pyc`` files with different optimization level have the same " "content, use hard links to consolidate duplicate files." msgstr "" -#: library/compileall.rst:124 +#: library/compileall.rst:131 msgid "Added the ``-i``, ``-b`` and ``-h`` options." msgstr "" -#: library/compileall.rst:127 +#: library/compileall.rst:134 msgid "" "Added the ``-j``, ``-r``, and ``-qq`` options. ``-q`` option was changed " "to a multilevel value. ``-b`` will always produce a byte-code file ending " "in ``.pyc``, never ``.pyo``." msgstr "" -#: library/compileall.rst:132 +#: library/compileall.rst:139 msgid "Added the ``--invalidation-mode`` option." msgstr "" -#: library/compileall.rst:135 +#: library/compileall.rst:142 msgid "" "Added the ``-s``, ``-p``, ``-e`` and ``--hardlink-dupes`` options. Raised " "the default recursion limit from 10 to :py:func:`sys.getrecursionlimit()`. " "Added the possibility to specify the ``-o`` option multiple times." msgstr "" -#: library/compileall.rst:142 +#: library/compileall.rst:149 msgid "" "There is no command-line option to control the optimization level used by " "the :func:`compile` function, because the Python interpreter itself already " "provides the option: :program:`python -O -m compileall`." msgstr "" -#: library/compileall.rst:146 +#: library/compileall.rst:153 msgid "" "Similarly, the :func:`compile` function respects the :data:`sys." "pycache_prefix` setting. The generated bytecode cache will only be useful " @@ -194,24 +208,24 @@ msgid "" "that will be used at runtime." msgstr "" -#: library/compileall.rst:152 +#: library/compileall.rst:159 msgid "Public functions" msgstr "" -#: library/compileall.rst:156 +#: library/compileall.rst:163 msgid "" "Recursively descend the directory tree named by *dir*, compiling all :file:`." "py` files along the way. Return a true value if all the files compiled " "successfully, and a false value otherwise." msgstr "" -#: library/compileall.rst:160 +#: library/compileall.rst:167 msgid "" "The *maxlevels* parameter is used to limit the depth of the recursion; it " "defaults to ``sys.getrecursionlimit()``." msgstr "" -#: library/compileall.rst:163 +#: library/compileall.rst:170 msgid "" "If *ddir* is given, it is prepended to the path to each file being compiled " "for use in compilation time tracebacks, and is also compiled in to the byte-" @@ -220,13 +234,13 @@ msgid "" "executed." msgstr "" -#: library/compileall.rst:169 +#: library/compileall.rst:176 msgid "" "If *force* is true, modules are re-compiled even if the timestamps are up to " "date." msgstr "" -#: library/compileall.rst:172 +#: library/compileall.rst:179 msgid "" "If *rx* is given, its ``search`` method is called on the complete path to " "each file considered for compilation, and if it returns a true value, the " @@ -234,14 +248,14 @@ msgid "" "expression, given as a :ref:`re.Pattern ` object." msgstr "" -#: library/compileall.rst:254 +#: library/compileall.rst:261 msgid "" "If *quiet* is ``False`` or ``0`` (the default), the filenames and other " "information are printed to standard out. Set to ``1``, only errors are " "printed. Set to ``2``, all output is suppressed." msgstr "" -#: library/compileall.rst:258 +#: library/compileall.rst:265 msgid "" "If *legacy* is true, byte-code files are written to their legacy locations " "and names, which may overwrite byte-code files created by another version of " @@ -250,7 +264,7 @@ msgid "" "coexist." msgstr "" -#: library/compileall.rst:264 +#: library/compileall.rst:271 msgid "" "*optimize* specifies the optimization level for the compiler. It is passed " "to the built-in :func:`compile` function. Accepts also a sequence of " @@ -258,7 +272,7 @@ msgid "" "file in one call." msgstr "" -#: library/compileall.rst:191 +#: library/compileall.rst:198 msgid "" "The argument *workers* specifies how many workers are used to compile files " "in parallel. The default is to not use multiple workers. If the platform " @@ -268,76 +282,76 @@ msgid "" "`ValueError` will be raised." msgstr "" -#: library/compileall.rst:268 +#: library/compileall.rst:275 msgid "" "*invalidation_mode* should be a member of the :class:`py_compile." "PycInvalidationMode` enum and controls how the generated pycs are " "invalidated at runtime." msgstr "" -#: library/compileall.rst:272 +#: library/compileall.rst:279 msgid "" "The *stripdir*, *prependdir* and *limit_sl_dest* arguments correspond to the " "``-s``, ``-p`` and ``-e`` options described above. They may be specified as " "``str`` or :py:class:`os.PathLike`." msgstr "" -#: library/compileall.rst:276 +#: library/compileall.rst:283 msgid "" "If *hardlink_dupes* is true and two ``.pyc`` files with different " "optimization level have the same content, use hard links to consolidate " "duplicate files." msgstr "" -#: library/compileall.rst:307 +#: library/compileall.rst:314 msgid "Added the *legacy* and *optimize* parameter." msgstr "" -#: library/compileall.rst:212 +#: library/compileall.rst:219 msgid "Added the *workers* parameter." msgstr "" -#: library/compileall.rst:281 library/compileall.rst:310 +#: library/compileall.rst:288 library/compileall.rst:317 msgid "*quiet* parameter was changed to a multilevel value." msgstr "" -#: library/compileall.rst:284 library/compileall.rst:313 +#: library/compileall.rst:291 library/compileall.rst:320 msgid "" "The *legacy* parameter only writes out ``.pyc`` files, not ``.pyo`` files no " "matter what the value of *optimize* is." msgstr "" -#: library/compileall.rst:222 +#: library/compileall.rst:229 msgid "Accepts a :term:`path-like object`." msgstr "" -#: library/compileall.rst:288 library/compileall.rst:317 +#: library/compileall.rst:295 library/compileall.rst:324 msgid "The *invalidation_mode* parameter was added." msgstr "" -#: library/compileall.rst:291 library/compileall.rst:320 +#: library/compileall.rst:298 library/compileall.rst:327 msgid "" "The *invalidation_mode* parameter's default value is updated to ``None``." msgstr "" -#: library/compileall.rst:231 +#: library/compileall.rst:238 msgid "Setting *workers* to 0 now chooses the optimal number of cores." msgstr "" -#: library/compileall.rst:234 +#: library/compileall.rst:241 msgid "" "Added *stripdir*, *prependdir*, *limit_sl_dest* and *hardlink_dupes* " "arguments. Default value of *maxlevels* was changed from ``10`` to ``sys." "getrecursionlimit()``" msgstr "" -#: library/compileall.rst:240 +#: library/compileall.rst:247 msgid "" "Compile the file with path *fullname*. Return a true value if the file " "compiled successfully, and a false value otherwise." msgstr "" -#: library/compileall.rst:243 +#: library/compileall.rst:250 msgid "" "If *ddir* is given, it is prepended to the path to the file being compiled " "for use in compilation time tracebacks, and is also compiled in to the byte-" @@ -346,7 +360,7 @@ msgid "" "executed." msgstr "" -#: library/compileall.rst:249 +#: library/compileall.rst:256 msgid "" "If *rx* is given, its ``search`` method is passed the full path name to the " "file being compiled, and if it returns a true value, the file is not " @@ -355,20 +369,20 @@ msgid "" "object." msgstr "" -#: library/compileall.rst:294 +#: library/compileall.rst:301 msgid "" "Added *stripdir*, *prependdir*, *limit_sl_dest* and *hardlink_dupes* " "arguments." msgstr "" -#: library/compileall.rst:299 +#: library/compileall.rst:306 msgid "" "Byte-compile all the :file:`.py` files found along ``sys.path``. Return a " "true value if all the files compiled successfully, and a false value " "otherwise." msgstr "" -#: library/compileall.rst:302 +#: library/compileall.rst:309 msgid "" "If *skip_curdir* is true (the default), the current directory is not " "included in the search. All other parameters are passed to the :func:" @@ -376,13 +390,13 @@ msgid "" "``maxlevels`` defaults to ``0``." msgstr "" -#: library/compileall.rst:323 +#: library/compileall.rst:330 msgid "" "To force a recompile of all the :file:`.py` files in the :file:`Lib/` " "subdirectory and all its subdirectories::" msgstr "" -#: library/compileall.rst:326 +#: library/compileall.rst:333 msgid "" "import compileall\n" "\n" @@ -397,10 +411,10 @@ msgid "" "compileall.compile_dir(pathlib.Path('Lib/'), force=True)" msgstr "" -#: library/compileall.rst:340 +#: library/compileall.rst:347 msgid "Module :mod:`py_compile`" msgstr "" -#: library/compileall.rst:341 +#: library/compileall.rst:348 msgid "Byte-compile a single source file." msgstr "" diff --git a/library/compression.po b/library/compression.po new file mode 100644 index 00000000..8211f561 --- /dev/null +++ b/library/compression.po @@ -0,0 +1,52 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 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.14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: library/compression.rst:2 +msgid "The :mod:`!compression` package" +msgstr "" + +#: library/compression.rst:6 +msgid "" +"The :mod:`!compression` package contains the canonical compression modules " +"containing interfaces to several different compression algorithms. Some of " +"these modules have historically been available as separate modules; those " +"will continue to be available under their original names for compatibility " +"reasons, and will not be removed without a deprecation cycle. The use of " +"modules in :mod:`!compression` is encouraged where practical." +msgstr "" + +#: library/compression.rst:13 +msgid ":mod:`!compression.bz2` -- Re-exports :mod:`bz2`" +msgstr "" + +#: library/compression.rst:14 +msgid ":mod:`!compression.gzip` -- Re-exports :mod:`gzip`" +msgstr "" + +#: library/compression.rst:15 +msgid ":mod:`!compression.lzma` -- Re-exports :mod:`lzma`" +msgstr "" + +#: library/compression.rst:16 +msgid ":mod:`!compression.zlib` -- Re-exports :mod:`zlib`" +msgstr "" + +#: library/compression.rst:17 +msgid "" +":mod:`compression.zstd` -- Wrapper for the Zstandard compression library" +msgstr "" diff --git a/library/compression.zstd.po b/library/compression.zstd.po new file mode 100644 index 00000000..aebde2e3 --- /dev/null +++ b/library/compression.zstd.po @@ -0,0 +1,1126 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 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.14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: library/compression.zstd.rst:2 +msgid "" +":mod:`!compression.zstd` --- Compression compatible with the Zstandard format" +msgstr "" + +#: library/compression.zstd.rst:10 +msgid "**Source code:** :source:`Lib/compression/zstd/__init__.py`" +msgstr "" + +#: library/compression.zstd.rst:14 +msgid "" +"This module provides classes and functions for compressing and decompressing " +"data using the Zstandard (or *zstd*) compression algorithm. The `zstd manual " +"`__ describes " +"Zstandard as \"a fast lossless compression algorithm, targeting real-time " +"compression scenarios at zlib-level and better compression ratios.\" Also " +"included is a file interface that supports reading and writing the contents " +"of ``.zst`` files created by the :program:`zstd` utility, as well as raw " +"zstd compressed streams." +msgstr "" + +#: library/compression.zstd.rst:23 +msgid "The :mod:`!compression.zstd` module contains:" +msgstr "" + +#: library/compression.zstd.rst:25 +msgid "" +"The :func:`.open` function and :class:`ZstdFile` class for reading and " +"writing compressed files." +msgstr "" + +#: library/compression.zstd.rst:27 +msgid "" +"The :class:`ZstdCompressor` and :class:`ZstdDecompressor` classes for " +"incremental (de)compression." +msgstr "" + +#: library/compression.zstd.rst:29 +msgid "" +"The :func:`compress` and :func:`decompress` functions for one-shot " +"(de)compression." +msgstr "" + +#: library/compression.zstd.rst:31 +msgid "" +"The :func:`train_dict` and :func:`finalize_dict` functions and the :class:" +"`ZstdDict` class to train and manage Zstandard dictionaries." +msgstr "" + +#: library/compression.zstd.rst:33 +msgid "" +"The :class:`CompressionParameter`, :class:`DecompressionParameter`, and :" +"class:`Strategy` classes for setting advanced (de)compression parameters." +msgstr "" + +#: library/compression.zstd.rst:38 +msgid "Exceptions" +msgstr "" + +#: library/compression.zstd.rst:42 +msgid "" +"This exception is raised when an error occurs during compression or " +"decompression, or while initializing the (de)compressor state." +msgstr "" + +#: library/compression.zstd.rst:47 +msgid "Reading and writing compressed files" +msgstr "" + +#: library/compression.zstd.rst:52 +msgid "" +"Open a Zstandard-compressed file in binary or text mode, returning a :term:" +"`file object`." +msgstr "" + +#: library/compression.zstd.rst:55 +msgid "" +"The *file* argument can be either a file name (given as a :class:`str`, :" +"class:`bytes` or :term:`path-like ` object), in which case " +"the named file is opened, or it can be an existing file object to read from " +"or write to." +msgstr "" + +#: library/compression.zstd.rst:60 +msgid "" +"The mode argument can be either ``'rb'`` for reading (default), ``'wb'`` for " +"overwriting, ``'ab'`` for appending, or ``'xb'`` for exclusive creation. " +"These can equivalently be given as ``'r'``, ``'w'``, ``'a'``, and ``'x'`` " +"respectively. You may also open in text mode with ``'rt'``, ``'wt'``, " +"``'at'``, and ``'xt'`` respectively." +msgstr "" + +#: library/compression.zstd.rst:66 library/compression.zstd.rst:110 +msgid "" +"When reading, the *options* argument can be a dictionary providing advanced " +"decompression parameters; see :class:`DecompressionParameter` for detailed " +"information about supported parameters. The *zstd_dict* argument is a :class:" +"`ZstdDict` instance to be used during decompression. When reading, if the " +"*level* argument is not None, a :exc:`!TypeError` will be raised." +msgstr "" + +#: library/compression.zstd.rst:73 +msgid "" +"When writing, the *options* argument can be a dictionary providing advanced " +"decompression parameters; see :class:`CompressionParameter` for detailed " +"information about supported parameters. The *level* argument is the " +"compression level to use when writing compressed data. Only one of *level* " +"or *options* may be non-None. The *zstd_dict* argument is a :class:" +"`ZstdDict` instance to be used during compression." +msgstr "" + +#: library/compression.zstd.rst:81 +msgid "" +"In binary mode, this function is equivalent to the :class:`ZstdFile` " +"constructor: ``ZstdFile(file, mode, ...)``. In this case, the *encoding*, " +"*errors*, and *newline* parameters must not be provided." +msgstr "" + +#: library/compression.zstd.rst:85 +msgid "" +"In text mode, a :class:`ZstdFile` object is created, and wrapped in an :" +"class:`io.TextIOWrapper` instance with the specified encoding, error " +"handling behavior, and line endings." +msgstr "" + +#: library/compression.zstd.rst:93 +msgid "Open a Zstandard-compressed file in binary mode." +msgstr "" + +#: library/compression.zstd.rst:95 +msgid "" +"A :class:`ZstdFile` can wrap an already-open :term:`file object`, or operate " +"directly on a named file. The *file* argument specifies either the file " +"object to wrap, or the name of the file to open (as a :class:`str`, :class:" +"`bytes` or :term:`path-like ` object). If wrapping an " +"existing file object, the wrapped file will not be closed when the :class:" +"`ZstdFile` is closed." +msgstr "" + +#: library/compression.zstd.rst:102 +msgid "" +"The *mode* argument can be either ``'rb'`` for reading (default), ``'wb'`` " +"for overwriting, ``'xb'`` for exclusive creation, or ``'ab'`` for appending. " +"These can equivalently be given as ``'r'``, ``'w'``, ``'x'`` and ``'a'`` " +"respectively." +msgstr "" + +#: library/compression.zstd.rst:107 +msgid "" +"If *file* is a file object (rather than an actual file name), a mode of " +"``'w'`` does not truncate the file, and is instead equivalent to ``'a'``." +msgstr "" + +#: library/compression.zstd.rst:117 +msgid "" +"When writing, the *options* argument can be a dictionary providing advanced " +"decompression parameters; see :class:`CompressionParameter` for detailed " +"information about supported parameters. The *level* argument is the " +"compression level to use when writing compressed data. Only one of *level* " +"or *options* may be passed. The *zstd_dict* argument is a :class:`ZstdDict` " +"instance to be used during compression." +msgstr "" + +#: library/compression.zstd.rst:125 +msgid "" +":class:`!ZstdFile` supports all the members specified by :class:`io." +"BufferedIOBase`, except for :meth:`~io.BufferedIOBase.detach` and :meth:`~io." +"IOBase.truncate`. Iteration and the :keyword:`with` statement are supported." +msgstr "" + +#: library/compression.zstd.rst:130 +msgid "The following method and attributes are also provided:" +msgstr "" + +#: library/compression.zstd.rst:134 +msgid "" +"Return buffered data without advancing the file position. At least one byte " +"of data will be returned, unless EOF has been reached. The exact number of " +"bytes returned is unspecified (the *size* argument is ignored)." +msgstr "" + +#: library/compression.zstd.rst:138 +msgid "" +"While calling :meth:`peek` does not change the file position of the :class:" +"`ZstdFile`, it may change the position of the underlying file object (for " +"example, if the :class:`ZstdFile` was constructed by passing a file object " +"for *file*)." +msgstr "" + +#: library/compression.zstd.rst:145 +msgid "``'rb'`` for reading and ``'wb'`` for writing." +msgstr "" + +#: library/compression.zstd.rst:149 +msgid "" +"The name of the Zstandard file. Equivalent to the :attr:`~io.FileIO.name` " +"attribute of the underlying :term:`file object`." +msgstr "" + +#: library/compression.zstd.rst:154 +msgid "Compressing and decompressing data in memory" +msgstr "" + +#: library/compression.zstd.rst:158 +msgid "" +"Compress *data* (a :term:`bytes-like object`), returning the compressed data " +"as a :class:`bytes` object." +msgstr "" + +#: library/compression.zstd.rst:161 library/compression.zstd.rst:205 +msgid "" +"The *level* argument is an integer controlling the level of compression. " +"*level* is an alternative to setting :attr:`CompressionParameter." +"compression_level` in *options*. Use :meth:`~CompressionParameter.bounds` " +"on :attr:`~CompressionParameter.compression_level` to get the values that " +"can be passed for *level*. If advanced compression options are needed, the " +"*level* argument must be omitted and in the *options* dictionary the :attr:`!" +"CompressionParameter.compression_level` parameter should be set." +msgstr "" + +#: library/compression.zstd.rst:170 library/compression.zstd.rst:214 +msgid "" +"The *options* argument is a Python dictionary containing advanced " +"compression parameters. The valid keys and values for compression parameters " +"are documented as part of the :class:`CompressionParameter` documentation." +msgstr "" + +#: library/compression.zstd.rst:174 +msgid "" +"The *zstd_dict* argument is an instance of :class:`ZstdDict` containing " +"trained data to improve compression efficiency. The function :func:" +"`train_dict` can be used to generate a Zstandard dictionary." +msgstr "" + +#: library/compression.zstd.rst:181 +msgid "" +"Decompress *data* (a :term:`bytes-like object`), returning the uncompressed " +"data as a :class:`bytes` object." +msgstr "" + +#: library/compression.zstd.rst:184 library/compression.zstd.rst:306 +msgid "" +"The *options* argument is a Python dictionary containing advanced " +"decompression parameters. The valid keys and values for compression " +"parameters are documented as part of the :class:`DecompressionParameter` " +"documentation." +msgstr "" + +#: library/compression.zstd.rst:189 library/compression.zstd.rst:311 +msgid "" +"The *zstd_dict* argument is an instance of :class:`ZstdDict` containing " +"trained data used during compression. This must be the same Zstandard " +"dictionary used during compression." +msgstr "" + +#: library/compression.zstd.rst:193 +msgid "" +"If *data* is the concatenation of multiple distinct compressed frames, " +"decompress all of these frames, and return the concatenation of the results." +msgstr "" + +#: library/compression.zstd.rst:199 +msgid "" +"Create a compressor object, which can be used to compress data incrementally." +msgstr "" + +#: library/compression.zstd.rst:202 +msgid "" +"For a more convenient way of compressing a single chunk of data, see the " +"module-level function :func:`compress`." +msgstr "" + +#: library/compression.zstd.rst:218 +msgid "" +"The *zstd_dict* argument is an optional instance of :class:`ZstdDict` " +"containing trained data to improve compression efficiency. The function :" +"func:`train_dict` can be used to generate a Zstandard dictionary." +msgstr "" + +#: library/compression.zstd.rst:225 +msgid "" +"Compress *data* (a :term:`bytes-like object`), returning a :class:`bytes` " +"object with compressed data if possible, or otherwise an empty :class:`!" +"bytes` object. Some of *data* may be buffered internally, for use in later " +"calls to :meth:`!compress` and :meth:`~.flush`. The returned data should be " +"concatenated with the output of any previous calls to :meth:`~.compress`." +msgstr "" + +#: library/compression.zstd.rst:232 +msgid "" +"The *mode* argument is a :class:`ZstdCompressor` attribute, either :attr:`~." +"CONTINUE`, :attr:`~.FLUSH_BLOCK`, or :attr:`~.FLUSH_FRAME`." +msgstr "" + +#: library/compression.zstd.rst:236 +msgid "" +"When all data has been provided to the compressor, call the :meth:`~.flush` " +"method to finish the compression process. If :meth:`~.compress` is called " +"with *mode* set to :attr:`~.FLUSH_FRAME`, :meth:`~.flush` should not be " +"called, as it would write out a new empty frame." +msgstr "" + +#: library/compression.zstd.rst:244 +msgid "" +"Finish the compression process, returning a :class:`bytes` object containing " +"any data stored in the compressor's internal buffers." +msgstr "" + +#: library/compression.zstd.rst:247 +msgid "" +"The *mode* argument is a :class:`ZstdCompressor` attribute, either :attr:`~." +"FLUSH_BLOCK`, or :attr:`~.FLUSH_FRAME`." +msgstr "" + +#: library/compression.zstd.rst:252 +msgid "" +"Specify the amount of uncompressed data *size* that will be provided for the " +"next frame. *size* will be written into the frame header of the next frame " +"unless :attr:`CompressionParameter.content_size_flag` is ``False`` or ``0``. " +"A size of ``0`` means that the frame is empty. If *size* is ``None``, the " +"frame header will omit the frame size. Frames that include the uncompressed " +"data size require less memory to decompress, especially at higher " +"compression levels." +msgstr "" + +#: library/compression.zstd.rst:260 +msgid "" +"If :attr:`last_mode` is not :attr:`FLUSH_FRAME`, a :exc:`ValueError` is " +"raised as the compressor is not at the start of a frame. If the pledged size " +"does not match the actual size of data provided to :meth:`.compress`, future " +"calls to :meth:`!compress` or :meth:`flush` may raise :exc:`ZstdError` and " +"the last chunk of data may be lost." +msgstr "" + +#: library/compression.zstd.rst:267 +msgid "" +"After :meth:`flush` or :meth:`.compress` are called with mode :attr:" +"`FLUSH_FRAME`, the next frame will not include the frame size into the " +"header unless :meth:`!set_pledged_input_size` is called again." +msgstr "" + +#: library/compression.zstd.rst:273 +msgid "" +"Collect more data for compression, which may or may not generate output " +"immediately. This mode optimizes the compression ratio by maximizing the " +"amount of data per block and frame." +msgstr "" + +#: library/compression.zstd.rst:279 +msgid "" +"Complete and write a block to the data stream. The data returned so far can " +"be immediately decompressed. Past data can still be referenced in future " +"blocks generated by calls to :meth:`~.compress`, improving compression." +msgstr "" + +#: library/compression.zstd.rst:286 +msgid "" +"Complete and write out a frame. Future data provided to :meth:`~.compress` " +"will be written into a new frame and *cannot* reference past data." +msgstr "" + +#: library/compression.zstd.rst:292 +msgid "" +"The last mode passed to either :meth:`~.compress` or :meth:`~.flush`. The " +"value can be one of :attr:`~.CONTINUE`, :attr:`~.FLUSH_BLOCK`, or :attr:`~." +"FLUSH_FRAME`. The initial value is :attr:`~.FLUSH_FRAME`, signifying that " +"the compressor is at the start of a new frame." +msgstr "" + +#: library/compression.zstd.rst:300 +msgid "" +"Create a decompressor object, which can be used to decompress data " +"incrementally." +msgstr "" + +#: library/compression.zstd.rst:303 +msgid "" +"For a more convenient way of decompressing an entire compressed stream at " +"once, see the module-level function :func:`decompress`." +msgstr "" + +#: library/compression.zstd.rst:316 +msgid "" +"This class does not transparently handle inputs containing multiple " +"compressed frames, unlike the :func:`decompress` function and :class:" +"`ZstdFile` class. To decompress a multi-frame input, you should use :func:" +"`decompress`, :class:`ZstdFile` if working with a :term:`file object`, or " +"multiple :class:`!ZstdDecompressor` instances." +msgstr "" + +#: library/compression.zstd.rst:324 +msgid "" +"Decompress *data* (a :term:`bytes-like object`), returning uncompressed data " +"as bytes. Some of *data* may be buffered internally, for use in later calls " +"to :meth:`!decompress`. The returned data should be concatenated with the " +"output of any previous calls to :meth:`!decompress`." +msgstr "" + +#: library/compression.zstd.rst:330 +msgid "" +"If *max_length* is non-negative, the method returns at most *max_length* " +"bytes of decompressed data. If this limit is reached and further output can " +"be produced, the :attr:`~.needs_input` attribute will be set to ``False``. " +"In this case, the next call to :meth:`~.decompress` may provide *data* as " +"``b''`` to obtain more of the output." +msgstr "" + +#: library/compression.zstd.rst:337 +msgid "" +"If all of the input data was decompressed and returned (either because this " +"was less than *max_length* bytes, or because *max_length* was negative), " +"the :attr:`~.needs_input` attribute will be set to ``True``." +msgstr "" + +#: library/compression.zstd.rst:342 +msgid "" +"Attempting to decompress data after the end of a frame will raise a :exc:" +"`ZstdError`. Any data found after the end of the frame is ignored and saved " +"in the :attr:`~.unused_data` attribute." +msgstr "" + +#: library/compression.zstd.rst:348 +msgid "``True`` if the end-of-stream marker has been reached." +msgstr "" + +#: library/compression.zstd.rst:352 +msgid "Data found after the end of the compressed stream." +msgstr "" + +#: library/compression.zstd.rst:354 +msgid "Before the end of the stream is reached, this will be ``b''``." +msgstr "" + +#: library/compression.zstd.rst:358 +msgid "" +"``False`` if the :meth:`.decompress` method can provide more decompressed " +"data before requiring new compressed input." +msgstr "" + +#: library/compression.zstd.rst:363 +msgid "Zstandard dictionaries" +msgstr "" + +#: library/compression.zstd.rst:368 +msgid "" +"Train a Zstandard dictionary, returning a :class:`ZstdDict` instance. " +"Zstandard dictionaries enable more efficient compression of smaller sizes of " +"data, which is traditionally difficult to compress due to less repetition. " +"If you are compressing multiple similar groups of data (such as similar " +"files), Zstandard dictionaries can improve compression ratios and speed " +"significantly." +msgstr "" + +#: library/compression.zstd.rst:375 +msgid "" +"The *samples* argument (an iterable of :class:`bytes` objects), is the " +"population of samples used to train the Zstandard dictionary." +msgstr "" + +#: library/compression.zstd.rst:378 +msgid "" +"The *dict_size* argument, an integer, is the maximum size (in bytes) the " +"Zstandard dictionary should be. The Zstandard documentation suggests an " +"absolute maximum of no more than 100 KB, but the maximum can often be " +"smaller depending on the data. Larger dictionaries generally slow down " +"compression, but improve compression ratios. Smaller dictionaries lead to " +"faster compression, but reduce the compression ratio." +msgstr "" + +#: library/compression.zstd.rst:388 +msgid "" +"An advanced function for converting a \"raw content\" Zstandard dictionary " +"into a regular Zstandard dictionary. \"Raw content\" dictionaries are a " +"sequence of bytes that do not need to follow the structure of a normal " +"Zstandard dictionary." +msgstr "" + +#: library/compression.zstd.rst:393 +msgid "" +"The *zstd_dict* argument is a :class:`ZstdDict` instance with the :attr:" +"`~ZstdDict.dict_content` containing the raw dictionary contents." +msgstr "" + +#: library/compression.zstd.rst:396 +msgid "" +"The *samples* argument (an iterable of :class:`bytes` objects), contains " +"sample data for generating the Zstandard dictionary." +msgstr "" + +#: library/compression.zstd.rst:399 +msgid "" +"The *dict_size* argument, an integer, is the maximum size (in bytes) the " +"Zstandard dictionary should be. See :func:`train_dict` for suggestions on " +"the maximum dictionary size." +msgstr "" + +#: library/compression.zstd.rst:403 +msgid "" +"The *level* argument (an integer) is the compression level expected to be " +"passed to the compressors using this dictionary. The dictionary information " +"varies for each compression level, so tuning for the proper compression " +"level can make compression more efficient." +msgstr "" + +#: library/compression.zstd.rst:411 +msgid "" +"A wrapper around Zstandard dictionaries. Dictionaries can be used to improve " +"the compression of many small chunks of data. Use :func:`train_dict` if you " +"need to train a new dictionary from sample data." +msgstr "" + +#: library/compression.zstd.rst:415 +msgid "" +"The *dict_content* argument (a :term:`bytes-like object`), is the already " +"trained dictionary information." +msgstr "" + +#: library/compression.zstd.rst:418 +msgid "" +"The *is_raw* argument, a boolean, is an advanced parameter controlling the " +"meaning of *dict_content*. ``True`` means *dict_content* is a \"raw " +"content\" dictionary, without any format restrictions. ``False`` means " +"*dict_content* is an ordinary Zstandard dictionary, created from Zstandard " +"functions, for example, :func:`train_dict` or the external :program:`zstd` " +"CLI." +msgstr "" + +#: library/compression.zstd.rst:424 +msgid "" +"When passing a :class:`!ZstdDict` to a function, the :attr:`!" +"as_digested_dict` and :attr:`!as_undigested_dict` attributes can control how " +"the dictionary is loaded by passing them as the ``zstd_dict`` argument, for " +"example, ``compress(data, zstd_dict=zd.as_digested_dict)``. Digesting a " +"dictionary is a costly operation that occurs when loading a Zstandard " +"dictionary. When making multiple calls to compression or decompression, " +"passing a digested dictionary will reduce the overhead of loading the " +"dictionary." +msgstr "" + +#: library/compression.zstd.rst:433 +msgid "Difference for compression" +msgstr "" + +#: library/compression.zstd.rst:438 +msgid "Digested dictionary" +msgstr "" + +#: library/compression.zstd.rst:439 +msgid "Undigested dictionary" +msgstr "" + +#: library/compression.zstd.rst:440 +msgid "" +"Advanced parameters of the compressor which may be overridden by the " +"dictionary's parameters" +msgstr "" + +#: library/compression.zstd.rst:442 +msgid "" +"``window_log``, ``hash_log``, ``chain_log``, ``search_log``, ``min_match``, " +"``target_length``, ``strategy``, ``enable_long_distance_matching``, " +"``ldm_hash_log``, ``ldm_min_match``, ``ldm_bucket_size_log``, " +"``ldm_hash_rate_log``, and some non-public parameters." +msgstr "" + +#: library/compression.zstd.rst:447 +msgid "None" +msgstr "" + +#: library/compression.zstd.rst:448 +msgid ":class:`!ZstdDict` internally caches the dictionary" +msgstr "" + +#: library/compression.zstd.rst:449 +msgid "" +"Yes. It's faster when loading a digested dictionary again with the same " +"compression level." +msgstr "" + +#: library/compression.zstd.rst:451 +msgid "" +"No. If you wish to load an undigested dictionary multiple times, consider " +"reusing a compressor object." +msgstr "" + +#: library/compression.zstd.rst:454 +msgid "" +"If passing a :class:`!ZstdDict` without any attribute, an undigested " +"dictionary is passed by default when compressing and a digested dictionary " +"is generated if necessary and passed by default when decompressing." +msgstr "" + +#: library/compression.zstd.rst:460 +msgid "" +"The content of the Zstandard dictionary, a ``bytes`` object. It's the same " +"as the *dict_content* argument in the ``__init__`` method. It can be used " +"with other programs, such as the ``zstd`` CLI program." +msgstr "" + +#: library/compression.zstd.rst:466 +msgid "Identifier of the Zstandard dictionary, a non-negative int value." +msgstr "" + +#: library/compression.zstd.rst:468 +msgid "" +"Non-zero means the dictionary is ordinary, created by Zstandard functions " +"and following the Zstandard format." +msgstr "" + +#: library/compression.zstd.rst:471 +msgid "" +"``0`` means a \"raw content\" dictionary, free of any format restriction, " +"used for advanced users." +msgstr "" + +#: library/compression.zstd.rst:476 +msgid "" +"The meaning of ``0`` for :attr:`!ZstdDict.dict_id` is different from the " +"``dictionary_id`` attribute to the :func:`get_frame_info` function." +msgstr "" + +#: library/compression.zstd.rst:482 +msgid "Load as a digested dictionary." +msgstr "" + +#: library/compression.zstd.rst:486 +msgid "Load as an undigested dictionary." +msgstr "" + +#: library/compression.zstd.rst:490 +msgid "Advanced parameter control" +msgstr "" + +#: library/compression.zstd.rst:494 +msgid "" +"An :class:`~enum.IntEnum` containing the advanced compression parameter keys " +"that can be used when compressing data." +msgstr "" + +#: library/compression.zstd.rst:497 library/compression.zstd.rst:725 +msgid "" +"The :meth:`~.bounds` method can be used on any attribute to get the valid " +"values for that parameter." +msgstr "" + +#: library/compression.zstd.rst:500 +msgid "" +"Parameters are optional; any omitted parameter will have it's value selected " +"automatically." +msgstr "" + +#: library/compression.zstd.rst:503 +msgid "" +"Example getting the lower and upper bound of :attr:`~.compression_level`::" +msgstr "" + +#: library/compression.zstd.rst:505 +msgid "lower, upper = CompressionParameter.compression_level.bounds()" +msgstr "" + +#: library/compression.zstd.rst:507 +msgid "Example setting the :attr:`~.window_log` to the maximum size::" +msgstr "" + +#: library/compression.zstd.rst:509 +msgid "" +"_lower, upper = CompressionParameter.window_log.bounds()\n" +"options = {CompressionParameter.window_log: upper}\n" +"compress(b'venezuelan beaver cheese', options=options)" +msgstr "" + +#: library/compression.zstd.rst:515 +msgid "" +"Return the tuple of int bounds, ``(lower, upper)``, of a compression " +"parameter. This method should be called on the attribute you wish to " +"retrieve the bounds of. For example, to get the valid values for :attr:`~." +"compression_level`, one may check the result of ``CompressionParameter." +"compression_level.bounds()``." +msgstr "" + +#: library/compression.zstd.rst:521 library/compression.zstd.rst:743 +msgid "Both the lower and upper bounds are inclusive." +msgstr "" + +#: library/compression.zstd.rst:525 +msgid "" +"A high-level means of setting other compression parameters that affect the " +"speed and ratio of compressing data. Setting the level to zero uses :attr:" +"`COMPRESSION_LEVEL_DEFAULT`." +msgstr "" + +#: library/compression.zstd.rst:531 +msgid "" +"Maximum allowed back-reference distance the compressor can use when " +"compressing data, expressed as power of two, ``1 << window_log`` bytes. This " +"parameter greatly influences the memory usage of compression. Higher values " +"require more memory but gain better compression values." +msgstr "" + +#: library/compression.zstd.rst:536 library/compression.zstd.rst:545 +#: library/compression.zstd.rst:556 library/compression.zstd.rst:564 +#: library/compression.zstd.rst:575 library/compression.zstd.rst:590 +#: library/compression.zstd.rst:621 library/compression.zstd.rst:628 +#: library/compression.zstd.rst:636 library/compression.zstd.rst:644 +#: library/compression.zstd.rst:703 library/compression.zstd.rst:752 +msgid "A value of zero causes the value to be selected automatically." +msgstr "" + +#: library/compression.zstd.rst:540 +msgid "" +"Size of the initial probe table, as a power of two. The resulting memory " +"usage is ``1 << (hash_log+2)`` bytes. Larger tables improve compression " +"ratio of strategies <= :attr:`~Strategy.dfast`, and improve compression " +"speed of strategies > :attr:`~Strategy.dfast`." +msgstr "" + +#: library/compression.zstd.rst:549 +msgid "" +"Size of the multi-probe search table, as a power of two. The resulting " +"memory usage is ``1 << (chain_log+2)`` bytes. Larger tables result in better " +"and slower compression. This parameter has no effect for the :attr:" +"`~Strategy.fast` strategy. It's still useful when using :attr:`~Strategy." +"dfast` strategy, in which case it defines a secondary probe table." +msgstr "" + +#: library/compression.zstd.rst:560 +msgid "" +"Number of search attempts, as a power of two. More attempts result in better " +"and slower compression. This parameter is useless for :attr:`~Strategy.fast` " +"and :attr:`~Strategy.dfast` strategies." +msgstr "" + +#: library/compression.zstd.rst:568 +msgid "" +"Minimum size of searched matches. Larger values increase compression and " +"decompression speed, but decrease ratio. Note that Zstandard can still find " +"matches of smaller size, it just tweaks its search algorithm to look for " +"this size and larger. For all strategies < :attr:`~Strategy.btopt`, the " +"effective minimum is ``4``; for all strategies > :attr:`~Strategy.fast`, the " +"effective maximum is ``6``." +msgstr "" + +#: library/compression.zstd.rst:579 +msgid "The impact of this field depends on the selected :class:`Strategy`." +msgstr "" + +#: library/compression.zstd.rst:581 +msgid "" +"For strategies :attr:`~Strategy.btopt`, :attr:`~Strategy.btultra` and :attr:" +"`~Strategy.btultra2`, the value is the length of a match considered \"good " +"enough\" to stop searching. Larger values make compression ratios better, " +"but compresses slower." +msgstr "" + +#: library/compression.zstd.rst:586 +msgid "" +"For strategy :attr:`~Strategy.fast`, it is the distance between match " +"sampling. Larger values make compression faster, but with a worse " +"compression ratio." +msgstr "" + +#: library/compression.zstd.rst:594 +msgid "" +"The higher the value of selected strategy, the more complex the compression " +"technique used by zstd, resulting in higher compression ratios but slower " +"compression." +msgstr "" + +#: library/compression.zstd.rst:598 +msgid ":class:`Strategy`" +msgstr "" + +#: library/compression.zstd.rst:602 +msgid "" +"Long distance matching can be used to improve compression for large inputs " +"by finding large matches at greater distances. It increases memory usage and " +"window size." +msgstr "" + +#: library/compression.zstd.rst:606 +msgid "" +"``True`` or ``1`` enable long distance matching while ``False`` or ``0`` " +"disable it." +msgstr "" + +#: library/compression.zstd.rst:609 +msgid "" +"Enabling this parameter increases default :attr:`~CompressionParameter." +"window_log` to 128 MiB except when expressly set to a different value. This " +"setting is enabled by default if :attr:`!window_log` >= 128 MiB and the " +"compression strategy >= :attr:`~Strategy.btopt` (compression level 16+)." +msgstr "" + +#: library/compression.zstd.rst:617 +msgid "" +"Size of the table for long distance matching, as a power of two. Larger " +"values increase memory usage and compression ratio, but decrease compression " +"speed." +msgstr "" + +#: library/compression.zstd.rst:625 +msgid "" +"Minimum match size for long distance matcher. Larger or too small values can " +"often decrease the compression ratio." +msgstr "" + +#: library/compression.zstd.rst:632 +msgid "" +"Log size of each bucket in the long distance matcher hash table for " +"collision resolution. Larger values improve collision resolution but " +"decrease compression speed." +msgstr "" + +#: library/compression.zstd.rst:640 +msgid "" +"Frequency of inserting/looking up entries into the long distance matcher " +"hash table. Larger values improve compression speed. Deviating far from the " +"default value will likely result in a compression ratio decrease." +msgstr "" + +#: library/compression.zstd.rst:648 +msgid "" +"Write the size of the data to be compressed into the Zstandard frame header " +"when known prior to compressing." +msgstr "" + +#: library/compression.zstd.rst:651 +msgid "This flag only takes effect under the following scenarios:" +msgstr "" + +#: library/compression.zstd.rst:653 +msgid "Calling :func:`compress` for one-shot compression" +msgstr "" + +#: library/compression.zstd.rst:654 +msgid "" +"Providing all of the data to be compressed in the frame in a single :meth:" +"`ZstdCompressor.compress` call, with the :attr:`ZstdCompressor.FLUSH_FRAME` " +"mode." +msgstr "" + +#: library/compression.zstd.rst:657 +msgid "" +"Calling :meth:`ZstdCompressor.set_pledged_input_size` with the exact amount " +"of data that will be provided to the compressor prior to any calls to :meth:" +"`ZstdCompressor.compress` for the current frame. :meth:`!ZstdCompressor." +"set_pledged_input_size` must be called for each new frame." +msgstr "" + +#: library/compression.zstd.rst:663 +msgid "" +"All other compression calls may not write the size information into the " +"frame header." +msgstr "" + +#: library/compression.zstd.rst:666 +msgid "" +"``True`` or ``1`` enable the content size flag while ``False`` or ``0`` " +"disable it." +msgstr "" + +#: library/compression.zstd.rst:671 +msgid "" +"A four-byte checksum using XXHash64 of the uncompressed content is written " +"at the end of each frame. Zstandard's decompression code verifies the " +"checksum. If there is a mismatch a :class:`ZstdError` exception is raised." +msgstr "" + +#: library/compression.zstd.rst:676 +msgid "" +"``True`` or ``1`` enable checksum generation while ``False`` or ``0`` " +"disable it." +msgstr "" + +#: library/compression.zstd.rst:681 +msgid "" +"When compressing with a :class:`ZstdDict`, the dictionary's ID is written " +"into the frame header." +msgstr "" + +#: library/compression.zstd.rst:684 +msgid "" +"``True`` or ``1`` enable storing the dictionary ID while ``False`` or ``0`` " +"disable it." +msgstr "" + +#: library/compression.zstd.rst:689 +msgid "" +"Select how many threads will be spawned to compress in parallel. When :attr:" +"`!nb_workers` > 0, enables multi-threaded compression, a value of ``1`` " +"means \"one-thread multi-threaded mode\". More workers improve speed, but " +"also increase memory usage and slightly reduce compression ratio." +msgstr "" + +#: library/compression.zstd.rst:694 +msgid "A value of zero disables multi-threading." +msgstr "" + +#: library/compression.zstd.rst:698 +msgid "" +"Size of a compression job, in bytes. This value is enforced only when :attr:" +"`~CompressionParameter.nb_workers` >= 1. Each compression job is completed " +"in parallel, so this value can indirectly impact the number of active " +"threads." +msgstr "" + +#: library/compression.zstd.rst:707 +msgid "" +"Sets how much data is reloaded from previous jobs (threads) for new jobs to " +"be used by the look behind window during compression. This value is only " +"used when :attr:`~CompressionParameter.nb_workers` >= 1. Acceptable values " +"vary from 0 to 9." +msgstr "" + +#: library/compression.zstd.rst:712 +msgid "0 means dynamically set the overlap amount" +msgstr "" + +#: library/compression.zstd.rst:713 +msgid "1 means no overlap" +msgstr "" + +#: library/compression.zstd.rst:714 +msgid "9 means use a full window size from the previous job" +msgstr "" + +#: library/compression.zstd.rst:716 +msgid "" +"Each increment halves/doubles the overlap size. \"8\" means an overlap of " +"``window_size/2``, \"7\" means an overlap of ``window_size/4``, etc." +msgstr "" + +#: library/compression.zstd.rst:721 +msgid "" +"An :class:`~enum.IntEnum` containing the advanced decompression parameter " +"keys that can be used when decompressing data. Parameters are optional; any " +"omitted parameter will have it's value selected automatically." +msgstr "" + +#: library/compression.zstd.rst:728 +msgid "Example setting the :attr:`~.window_log_max` to the maximum size::" +msgstr "" + +#: library/compression.zstd.rst:730 +msgid "" +"data = compress(b'Some very long buffer of bytes...')\n" +"\n" +"_lower, upper = DecompressionParameter.window_log_max.bounds()\n" +"\n" +"options = {DecompressionParameter.window_log_max: upper}\n" +"decompress(data, options=options)" +msgstr "" + +#: library/compression.zstd.rst:739 +msgid "" +"Return the tuple of int bounds, ``(lower, upper)``, of a decompression " +"parameter. This method should be called on the attribute you wish to " +"retrieve the bounds of." +msgstr "" + +#: library/compression.zstd.rst:747 +msgid "" +"The base-two logarithm of the maximum size of the window used during " +"decompression. This can be useful to limit the amount of memory used when " +"decompressing data. A larger maximum window size leads to faster " +"decompression." +msgstr "" + +#: library/compression.zstd.rst:757 +msgid "" +"An :class:`~enum.IntEnum` containing strategies for compression. Higher-" +"numbered strategies correspond to more complex and slower compression." +msgstr "" + +#: library/compression.zstd.rst:763 +msgid "" +"The values of attributes of :class:`!Strategy` are not necessarily stable " +"across zstd versions. Only the ordering of the attributes may be relied " +"upon. The attributes are listed below in order." +msgstr "" + +#: library/compression.zstd.rst:767 +msgid "The following strategies are available:" +msgstr "" + +#: library/compression.zstd.rst:789 +msgid "Miscellaneous" +msgstr "" + +#: library/compression.zstd.rst:793 +msgid "" +"Retrieve a :class:`FrameInfo` object containing metadata about a Zstandard " +"frame. Frames contain metadata related to the compressed data they hold." +msgstr "" + +#: library/compression.zstd.rst:799 +msgid "Metadata related to a Zstandard frame." +msgstr "" + +#: library/compression.zstd.rst:803 +msgid "The size of the decompressed contents of the frame." +msgstr "" + +#: library/compression.zstd.rst:807 +msgid "" +"An integer representing the Zstandard dictionary ID needed for decompressing " +"the frame. ``0`` means the dictionary ID was not recorded in the frame " +"header. This may mean that a Zstandard dictionary is not needed, or that the " +"ID of a required dictionary was not recorded." +msgstr "" + +#: library/compression.zstd.rst:815 +msgid "The default compression level for Zstandard: ``3``." +msgstr "" + +#: library/compression.zstd.rst:820 +msgid "" +"Version number of the runtime zstd library as a tuple of integers (major, " +"minor, release)." +msgstr "" + +#: library/compression.zstd.rst:825 +msgid "Examples" +msgstr "" + +#: library/compression.zstd.rst:827 +msgid "Reading in a compressed file:" +msgstr "" + +#: library/compression.zstd.rst:829 +msgid "" +"from compression import zstd\n" +"\n" +"with zstd.open(\"file.zst\") as f:\n" +" file_content = f.read()" +msgstr "" + +#: library/compression.zstd.rst:836 +msgid "Creating a compressed file:" +msgstr "" + +#: library/compression.zstd.rst:838 +msgid "" +"from compression import zstd\n" +"\n" +"data = b\"Insert Data Here\"\n" +"with zstd.open(\"file.zst\", \"w\") as f:\n" +" f.write(data)" +msgstr "" + +#: library/compression.zstd.rst:846 +msgid "Compressing data in memory:" +msgstr "" + +#: library/compression.zstd.rst:848 +msgid "" +"from compression import zstd\n" +"\n" +"data_in = b\"Insert Data Here\"\n" +"data_out = zstd.compress(data_in)" +msgstr "" + +#: library/compression.zstd.rst:855 +msgid "Incremental compression:" +msgstr "" + +#: library/compression.zstd.rst:857 +msgid "" +"from compression import zstd\n" +"\n" +"comp = zstd.ZstdCompressor()\n" +"out1 = comp.compress(b\"Some data\\n\")\n" +"out2 = comp.compress(b\"Another piece of data\\n\")\n" +"out3 = comp.compress(b\"Even more data\\n\")\n" +"out4 = comp.flush()\n" +"# Concatenate all the partial results:\n" +"result = b\"\".join([out1, out2, out3, out4])" +msgstr "" + +#: library/compression.zstd.rst:869 +msgid "Writing compressed data to an already-open file:" +msgstr "" + +#: library/compression.zstd.rst:871 +msgid "" +"from compression import zstd\n" +"\n" +"with open(\"myfile\", \"wb\") as f:\n" +" f.write(b\"This data will not be compressed\\n\")\n" +" with zstd.open(f, \"w\") as zstf:\n" +" zstf.write(b\"This *will* be compressed\\n\")\n" +" f.write(b\"Not compressed\\n\")" +msgstr "" + +#: library/compression.zstd.rst:881 +msgid "Creating a compressed file using compression parameters:" +msgstr "" + +#: library/compression.zstd.rst:883 +msgid "" +"from compression import zstd\n" +"\n" +"options = {\n" +" zstd.CompressionParameter.checksum_flag: 1\n" +"}\n" +"with zstd.open(\"file.zst\", \"w\", options=options) as f:\n" +" f.write(b\"Mind if I squeeze in?\")" +msgstr "" diff --git a/library/concurrency.po b/library/concurrency.po index d690c379..11512d68 100644 --- a/library/concurrency.po +++ b/library/concurrency.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -30,6 +30,6 @@ msgid "" "an overview:" msgstr "" -#: library/concurrency.rst:27 +#: library/concurrency.rst:28 msgid "The following are support modules for some of the above services:" msgstr "" diff --git a/library/concurrent.futures.po b/library/concurrent.futures.po index ac633494..3650408a 100644 --- a/library/concurrent.futures.po +++ b/library/concurrent.futures.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -274,7 +274,7 @@ msgid "" "easier debugging." msgstr "" -#: library/concurrent.futures.rst:188 library/concurrent.futures.rst:401 +#: library/concurrent.futures.rst:188 library/concurrent.futures.rst:386 msgid "Added the *initializer* and *initargs* arguments." msgstr "" @@ -373,7 +373,7 @@ msgid "" "Each worker's interpreter is isolated from all the other interpreters. " "\"Isolated\" means each interpreter has its own runtime state and operates " "completely independently. For example, if you redirect :data:`sys.stdout` " -"in one interpreter, it will not be automatically redirected any other " +"in one interpreter, it will not be automatically redirected to any other " "interpreter. If you import a module in one interpreter, it is not " "automatically imported in any other. You would need to import the module " "separately in interpreter where you need it. In fact, each module imported " @@ -420,32 +420,17 @@ msgid "" "when sending them to the worker's interpreter." msgstr "" -#: library/concurrent.futures.rst:308 library/concurrent.futures.rst:330 -msgid "" -"Functions defined in the ``__main__`` module cannot be pickled and thus " -"cannot be used." -msgstr "" - -#: library/concurrent.futures.rst:312 +#: library/concurrent.futures.rst:308 msgid "" "The executor may replace uncaught exceptions from *initializer* with :class:" "`~concurrent.futures.interpreter.ExecutionFailed`." msgstr "" -#: library/concurrent.futures.rst:315 -msgid "" -"The optional *shared* argument is a :class:`dict` of objects that all " -"interpreters in the pool share. The *shared* items are added to each " -"interpreter's ``__main__`` module. Not all objects are shareable. Shareable " -"objects include the builtin singletons, :class:`str` and :class:`bytes`, " -"and :class:`memoryview`. See :pep:`734` for more info." -msgstr "" - -#: library/concurrent.futures.rst:322 +#: library/concurrent.futures.rst:311 msgid "Other caveats from parent :class:`ThreadPoolExecutor` apply here." msgstr "" -#: library/concurrent.futures.rst:324 +#: library/concurrent.futures.rst:313 msgid "" ":meth:`~Executor.submit` and :meth:`~Executor.map` work like normal, except " "the worker serializes the callable and arguments using :mod:`pickle` when " @@ -453,7 +438,7 @@ msgid "" "value when sending it back." msgstr "" -#: library/concurrent.futures.rst:333 +#: library/concurrent.futures.rst:318 msgid "" "When a worker's current task raises an uncaught exception, the worker always " "tries to preserve the exception as-is. If that is successful then it also " @@ -464,11 +449,11 @@ msgid "" "class:`~concurrent.futures.interpreter.ExecutionFailed` instance instead." msgstr "" -#: library/concurrent.futures.rst:345 +#: library/concurrent.futures.rst:330 msgid "ProcessPoolExecutor" msgstr "" -#: library/concurrent.futures.rst:347 +#: library/concurrent.futures.rst:332 msgid "" "The :class:`ProcessPoolExecutor` class is an :class:`Executor` subclass that " "uses a pool of processes to execute calls asynchronously. :class:" @@ -478,20 +463,20 @@ msgid "" "returned." msgstr "" -#: library/concurrent.futures.rst:354 +#: library/concurrent.futures.rst:339 msgid "" "The ``__main__`` module must be importable by worker subprocesses. This " "means that :class:`ProcessPoolExecutor` will not work in the interactive " "interpreter." msgstr "" -#: library/concurrent.futures.rst:357 +#: library/concurrent.futures.rst:342 msgid "" "Calling :class:`Executor` or :class:`Future` methods from a callable " "submitted to a :class:`ProcessPoolExecutor` will result in deadlock." msgstr "" -#: library/concurrent.futures.rst:362 +#: library/concurrent.futures.rst:347 msgid "" "An :class:`Executor` subclass that executes calls asynchronously using a " "pool of at most *max_workers* processes. If *max_workers* is ``None`` or " @@ -506,7 +491,7 @@ msgid "" "`multiprocessing-start-methods`." msgstr "" -#: library/concurrent.futures.rst:376 +#: library/concurrent.futures.rst:361 msgid "" "*initializer* is an optional callable that is called at the start of each " "worker process; *initargs* is a tuple of arguments passed to the " @@ -515,7 +500,7 @@ msgid "" "well as any attempt to submit more jobs to the pool." msgstr "" -#: library/concurrent.futures.rst:382 +#: library/concurrent.futures.rst:367 msgid "" "*max_tasks_per_child* is an optional argument that specifies the maximum " "number of tasks a single process can execute before it will exit and be " @@ -526,7 +511,7 @@ msgid "" "with the \"fork\" start method." msgstr "" -#: library/concurrent.futures.rst:390 +#: library/concurrent.futures.rst:375 msgid "" "When one of the worker processes terminates abruptly, a :exc:`~concurrent." "futures.process.BrokenProcessPool` error is now raised. Previously, " @@ -534,19 +519,19 @@ msgid "" "often freeze or deadlock." msgstr "" -#: library/concurrent.futures.rst:397 +#: library/concurrent.futures.rst:382 msgid "" "The *mp_context* argument was added to allow users to control the " "start_method for worker processes created by the pool." msgstr "" -#: library/concurrent.futures.rst:403 +#: library/concurrent.futures.rst:388 msgid "" "The *max_tasks_per_child* argument was added to allow users to control the " "lifetime of workers in the pool." msgstr "" -#: library/concurrent.futures.rst:407 +#: library/concurrent.futures.rst:392 msgid "" "On POSIX systems, if your application has multiple threads and the :mod:" "`multiprocessing` context uses the ``\"fork\"`` start method: The :func:`os." @@ -555,13 +540,13 @@ msgid "" "start method. See the :func:`os.fork` documentation for further explanation." msgstr "" -#: library/concurrent.futures.rst:415 +#: library/concurrent.futures.rst:400 msgid "" "*max_workers* uses :func:`os.process_cpu_count` by default, instead of :func:" "`os.cpu_count`." msgstr "" -#: library/concurrent.futures.rst:419 +#: library/concurrent.futures.rst:404 msgid "" "The default process start method (see :ref:`multiprocessing-start-methods`) " "changed away from *fork*. If you require the *fork* start method for :class:" @@ -569,7 +554,7 @@ msgid "" "get_context(\"fork\")``." msgstr "" -#: library/concurrent.futures.rst:427 +#: library/concurrent.futures.rst:412 msgid "" "Attempt to terminate all living worker processes immediately by calling :" "meth:`Process.terminate ` on each of " @@ -577,13 +562,13 @@ msgid "" "all other resources associated with the executor are freed." msgstr "" -#: library/concurrent.futures.rst:432 library/concurrent.futures.rst:444 +#: library/concurrent.futures.rst:417 library/concurrent.futures.rst:429 msgid "" "After calling this method the caller should no longer submit tasks to the " "executor." msgstr "" -#: library/concurrent.futures.rst:439 +#: library/concurrent.futures.rst:424 msgid "" "Attempt to kill all living worker processes immediately by calling :meth:" "`Process.kill ` on each of them. Internally, " @@ -591,11 +576,11 @@ msgid "" "resources associated with the executor are freed." msgstr "" -#: library/concurrent.futures.rst:452 +#: library/concurrent.futures.rst:437 msgid "ProcessPoolExecutor Example" msgstr "" -#: library/concurrent.futures.rst:455 +#: library/concurrent.futures.rst:440 msgid "" "import concurrent.futures\n" "import math\n" @@ -631,24 +616,24 @@ msgid "" " main()" msgstr "" -#: library/concurrent.futures.rst:490 +#: library/concurrent.futures.rst:475 msgid "Future Objects" msgstr "" -#: library/concurrent.futures.rst:492 +#: library/concurrent.futures.rst:477 msgid "" "The :class:`Future` class encapsulates the asynchronous execution of a " "callable. :class:`Future` instances are created by :meth:`Executor.submit`." msgstr "" -#: library/concurrent.futures.rst:497 +#: library/concurrent.futures.rst:482 msgid "" "Encapsulates the asynchronous execution of a callable. :class:`Future` " "instances are created by :meth:`Executor.submit` and should not be created " "directly except for testing." msgstr "" -#: library/concurrent.futures.rst:503 +#: library/concurrent.futures.rst:488 msgid "" "Attempt to cancel the call. If the call is currently being executed or " "finished running and cannot be cancelled then the method will return " @@ -656,22 +641,22 @@ msgid "" "``True``." msgstr "" -#: library/concurrent.futures.rst:510 +#: library/concurrent.futures.rst:495 msgid "Return ``True`` if the call was successfully cancelled." msgstr "" -#: library/concurrent.futures.rst:514 +#: library/concurrent.futures.rst:499 msgid "" "Return ``True`` if the call is currently being executed and cannot be " "cancelled." msgstr "" -#: library/concurrent.futures.rst:519 +#: library/concurrent.futures.rst:504 msgid "" "Return ``True`` if the call was successfully cancelled or finished running." msgstr "" -#: library/concurrent.futures.rst:524 +#: library/concurrent.futures.rst:509 msgid "" "Return the value returned by the call. If the call hasn't yet completed then " "this method will wait up to *timeout* seconds. If the call hasn't completed " @@ -680,18 +665,18 @@ msgid "" "no limit to the wait time." msgstr "" -#: library/concurrent.futures.rst:531 library/concurrent.futures.rst:545 +#: library/concurrent.futures.rst:516 library/concurrent.futures.rst:530 msgid "" "If the future is cancelled before completing then :exc:`.CancelledError` " "will be raised." msgstr "" -#: library/concurrent.futures.rst:534 +#: library/concurrent.futures.rst:519 msgid "" "If the call raised an exception, this method will raise the same exception." msgstr "" -#: library/concurrent.futures.rst:538 +#: library/concurrent.futures.rst:523 msgid "" "Return the exception raised by the call. If the call hasn't yet completed " "then this method will wait up to *timeout* seconds. If the call hasn't " @@ -700,18 +685,18 @@ msgid "" "``None``, there is no limit to the wait time." msgstr "" -#: library/concurrent.futures.rst:548 +#: library/concurrent.futures.rst:533 msgid "If the call completed without raising, ``None`` is returned." msgstr "" -#: library/concurrent.futures.rst:552 +#: library/concurrent.futures.rst:537 msgid "" "Attaches the callable *fn* to the future. *fn* will be called, with the " "future as its only argument, when the future is cancelled or finishes " "running." msgstr "" -#: library/concurrent.futures.rst:556 +#: library/concurrent.futures.rst:541 msgid "" "Added callables are called in the order that they were added and are always " "called in a thread belonging to the process that added them. If the " @@ -720,26 +705,26 @@ msgid "" "behavior is undefined." msgstr "" -#: library/concurrent.futures.rst:562 +#: library/concurrent.futures.rst:547 msgid "" "If the future has already completed or been cancelled, *fn* will be called " "immediately." msgstr "" -#: library/concurrent.futures.rst:565 +#: library/concurrent.futures.rst:550 msgid "" "The following :class:`Future` methods are meant for use in unit tests and :" "class:`Executor` implementations." msgstr "" -#: library/concurrent.futures.rst:570 +#: library/concurrent.futures.rst:555 msgid "" "This method should only be called by :class:`Executor` implementations " "before executing the work associated with the :class:`Future` and by unit " "tests." msgstr "" -#: library/concurrent.futures.rst:574 +#: library/concurrent.futures.rst:559 msgid "" "If the method returns ``False`` then the :class:`Future` was cancelled, i." "e. :meth:`Future.cancel` was called and returned ``True``. Any threads " @@ -747,47 +732,47 @@ msgid "" "or :func:`wait`) will be woken up." msgstr "" -#: library/concurrent.futures.rst:579 +#: library/concurrent.futures.rst:564 msgid "" "If the method returns ``True`` then the :class:`Future` was not cancelled " "and has been put in the running state, i.e. calls to :meth:`Future.running` " "will return ``True``." msgstr "" -#: library/concurrent.futures.rst:583 +#: library/concurrent.futures.rst:568 msgid "" "This method can only be called once and cannot be called after :meth:`Future." "set_result` or :meth:`Future.set_exception` have been called." msgstr "" -#: library/concurrent.futures.rst:589 +#: library/concurrent.futures.rst:574 msgid "" "Sets the result of the work associated with the :class:`Future` to *result*." msgstr "" -#: library/concurrent.futures.rst:592 library/concurrent.futures.rst:605 +#: library/concurrent.futures.rst:577 library/concurrent.futures.rst:590 msgid "" "This method should only be used by :class:`Executor` implementations and " "unit tests." msgstr "" -#: library/concurrent.futures.rst:595 library/concurrent.futures.rst:608 +#: library/concurrent.futures.rst:580 library/concurrent.futures.rst:593 msgid "" "This method raises :exc:`concurrent.futures.InvalidStateError` if the :class:" "`Future` is already done." msgstr "" -#: library/concurrent.futures.rst:602 +#: library/concurrent.futures.rst:587 msgid "" "Sets the result of the work associated with the :class:`Future` to the :" "class:`Exception` *exception*." msgstr "" -#: library/concurrent.futures.rst:614 +#: library/concurrent.futures.rst:599 msgid "Module Functions" msgstr "" -#: library/concurrent.futures.rst:618 +#: library/concurrent.futures.rst:603 msgid "" "Wait for the :class:`Future` instances (possibly created by different :class:" "`Executor` instances) given by *fs* to complete. Duplicate futures given to " @@ -798,43 +783,43 @@ msgid "" "running futures)." msgstr "" -#: library/concurrent.futures.rst:626 +#: library/concurrent.futures.rst:611 msgid "" "*timeout* can be used to control the maximum number of seconds to wait " "before returning. *timeout* can be an int or float. If *timeout* is not " "specified or ``None``, there is no limit to the wait time." msgstr "" -#: library/concurrent.futures.rst:630 +#: library/concurrent.futures.rst:615 msgid "" "*return_when* indicates when this function should return. It must be one of " "the following constants:" msgstr "" -#: library/concurrent.futures.rst:636 +#: library/concurrent.futures.rst:621 msgid "Constant" msgstr "" -#: library/concurrent.futures.rst:637 +#: library/concurrent.futures.rst:622 msgid "Description" msgstr "" -#: library/concurrent.futures.rst:640 +#: library/concurrent.futures.rst:625 msgid "The function will return when any future finishes or is cancelled." msgstr "" -#: library/concurrent.futures.rst:643 +#: library/concurrent.futures.rst:628 msgid "" "The function will return when any future finishes by raising an exception. " "If no future raises an exception then it is equivalent to :const:" "`ALL_COMPLETED`." msgstr "" -#: library/concurrent.futures.rst:648 +#: library/concurrent.futures.rst:633 msgid "The function will return when all futures finish or are cancelled." msgstr "" -#: library/concurrent.futures.rst:652 +#: library/concurrent.futures.rst:637 msgid "" "Returns an iterator over the :class:`Future` instances (possibly created by " "different :class:`Executor` instances) given by *fs* that yields futures as " @@ -847,69 +832,69 @@ msgid "" "*timeout* is not specified or ``None``, there is no limit to the wait time." msgstr "" -#: library/concurrent.futures.rst:665 +#: library/concurrent.futures.rst:650 msgid ":pep:`3148` -- futures - execute computations asynchronously" msgstr "" -#: library/concurrent.futures.rst:666 +#: library/concurrent.futures.rst:651 msgid "" "The proposal which described this feature for inclusion in the Python " "standard library." msgstr "" -#: library/concurrent.futures.rst:671 +#: library/concurrent.futures.rst:656 msgid "Exception classes" msgstr "" -#: library/concurrent.futures.rst:677 +#: library/concurrent.futures.rst:662 msgid "Raised when a future is cancelled." msgstr "" -#: library/concurrent.futures.rst:681 +#: library/concurrent.futures.rst:666 msgid "" "A deprecated alias of :exc:`TimeoutError`, raised when a future operation " "exceeds the given timeout." msgstr "" -#: library/concurrent.futures.rst:686 +#: library/concurrent.futures.rst:671 msgid "This class was made an alias of :exc:`TimeoutError`." msgstr "" -#: library/concurrent.futures.rst:691 +#: library/concurrent.futures.rst:676 msgid "" "Derived from :exc:`RuntimeError`, this exception class is raised when an " "executor is broken for some reason, and cannot be used to submit or execute " "new tasks." msgstr "" -#: library/concurrent.futures.rst:699 +#: library/concurrent.futures.rst:684 msgid "" "Raised when an operation is performed on a future that is not allowed in the " "current state." msgstr "" -#: library/concurrent.futures.rst:708 +#: library/concurrent.futures.rst:693 msgid "" "Derived from :exc:`~concurrent.futures.BrokenExecutor`, this exception class " "is raised when one of the workers of a :class:`~concurrent.futures." "ThreadPoolExecutor` has failed initializing." msgstr "" -#: library/concurrent.futures.rst:719 +#: library/concurrent.futures.rst:704 msgid "" "Derived from :exc:`~concurrent.futures.thread.BrokenThreadPool`, this " "exception class is raised when one of the workers of a :class:`~concurrent." "futures.InterpreterPoolExecutor` has failed initializing." msgstr "" -#: library/concurrent.futures.rst:728 +#: library/concurrent.futures.rst:713 msgid "" "Raised from :class:`~concurrent.futures.InterpreterPoolExecutor` when the " "given initializer fails or from :meth:`~concurrent.futures.Executor.submit` " "when there's an uncaught exception from the submitted task." msgstr "" -#: library/concurrent.futures.rst:739 +#: library/concurrent.futures.rst:724 msgid "" "Derived from :exc:`~concurrent.futures.BrokenExecutor` (formerly :exc:" "`RuntimeError`), this exception class is raised when one of the workers of " diff --git a/library/concurrent.interpreters.po b/library/concurrent.interpreters.po new file mode 100644 index 00000000..1c818c11 --- /dev/null +++ b/library/concurrent.interpreters.po @@ -0,0 +1,250 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 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.14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: library/concurrent.interpreters.rst:2 +msgid "" +":mod:`!concurrent.interpreters` --- Multiple interpreters in the same process" +msgstr "" + +#: library/concurrent.interpreters.rst:12 +msgid "**Source code:** :source:`Lib/concurrent/interpreters.py`" +msgstr "" + +#: library/concurrent.interpreters.rst:18 +msgid "Introduction" +msgstr "" + +#: library/concurrent.interpreters.rst:20 +msgid "" +"The :mod:`!concurrent.interpreters` module constructs higher-level " +"interfaces on top of the lower level :mod:`!_interpreters` module." +msgstr "" + +#: library/concurrent.interpreters.rst:27 +msgid ":ref:`isolating-extensions-howto`" +msgstr "" + +#: library/concurrent.interpreters.rst:28 +msgid "how to update an extension module to support multiple interpreters" +msgstr "" + +#: library/concurrent.interpreters.rst:30 +msgid ":pep:`554`" +msgstr "" + +#: library/concurrent.interpreters.rst:32 +msgid ":pep:`734`" +msgstr "" + +#: library/concurrent.interpreters.rst:34 +msgid ":pep:`684`" +msgstr "" + +#: includes/wasm-notavail.rst:3 +msgid "Availability" +msgstr "" + +#: includes/wasm-notavail.rst:5 +msgid "" +"This module does not work or is not available on WebAssembly. See :ref:`wasm-" +"availability` for more information." +msgstr "" + +#: library/concurrent.interpreters.rst:42 +msgid "Key details" +msgstr "" + +#: library/concurrent.interpreters.rst:44 +msgid "" +"Before we dive into examples, there are a small number of details to keep in " +"mind about using multiple interpreters:" +msgstr "" + +#: library/concurrent.interpreters.rst:47 +msgid "isolated, by default" +msgstr "" + +#: library/concurrent.interpreters.rst:48 +msgid "no implicit threads" +msgstr "" + +#: library/concurrent.interpreters.rst:49 +msgid "not all PyPI packages support use in multiple interpreters yet" +msgstr "" + +#: library/concurrent.interpreters.rst:53 +msgid "" +"In the context of multiple interpreters, \"isolated\" means that different " +"interpreters do not share any state. In practice, there is some process-" +"global data they all share, but that is managed by the runtime." +msgstr "" + +#: library/concurrent.interpreters.rst:59 +msgid "Reference" +msgstr "" + +#: library/concurrent.interpreters.rst:61 +msgid "This module defines the following functions:" +msgstr "" + +#: library/concurrent.interpreters.rst:65 +msgid "" +"Return a :class:`list` of :class:`Interpreter` objects, one for each " +"existing interpreter." +msgstr "" + +#: library/concurrent.interpreters.rst:70 +msgid "" +"Return an :class:`Interpreter` object for the currently running interpreter." +msgstr "" + +#: library/concurrent.interpreters.rst:75 +msgid "Return an :class:`Interpreter` object for the main interpreter." +msgstr "" + +#: library/concurrent.interpreters.rst:79 +msgid "" +"Initialize a new (idle) Python interpreter and return a :class:`Interpreter` " +"object for it." +msgstr "" + +#: library/concurrent.interpreters.rst:84 +msgid "Interpreter objects" +msgstr "" + +#: library/concurrent.interpreters.rst:88 +msgid "A single interpreter in the current process." +msgstr "" + +#: library/concurrent.interpreters.rst:90 +msgid "" +"Generally, :class:`Interpreter` shouldn't be called directly. Instead, use :" +"func:`create` or one of the other module functions." +msgstr "" + +#: library/concurrent.interpreters.rst:95 +#: library/concurrent.interpreters.rst:101 +msgid "(read-only)" +msgstr "" + +#: library/concurrent.interpreters.rst:97 +msgid "The interpreter's ID." +msgstr "" + +#: library/concurrent.interpreters.rst:103 +msgid "A string describing where the interpreter came from." +msgstr "" + +#: library/concurrent.interpreters.rst:107 +msgid "" +"Return ``True`` if the interpreter is currently executing code in its :mod:`!" +"__main__` module and ``False`` otherwise." +msgstr "" + +#: library/concurrent.interpreters.rst:112 +msgid "Finalize and destroy the interpreter." +msgstr "" + +#: library/concurrent.interpreters.rst:116 +msgid "" +"Bind \"shareable\" objects in the interpreter's :mod:`!__main__` module." +msgstr "" + +#: library/concurrent.interpreters.rst:121 +msgid "Run the given source code in the interpreter (in the current thread)." +msgstr "" + +#: library/concurrent.interpreters.rst:125 +msgid "" +"Return the result of calling running the given function in the interpreter " +"(in the current thread)." +msgstr "" + +#: library/concurrent.interpreters.rst:130 +msgid "Run the given function in the interpreter (in a new thread)." +msgstr "" + +#: library/concurrent.interpreters.rst:133 +msgid "Exceptions" +msgstr "" + +#: library/concurrent.interpreters.rst:137 +msgid "" +"This exception, a subclass of :exc:`Exception`, is raised when an " +"interpreter-related error happens." +msgstr "" + +#: library/concurrent.interpreters.rst:142 +msgid "" +"This exception, a subclass of :exc:`InterpreterError`, is raised when the " +"targeted interpreter no longer exists." +msgstr "" + +#: library/concurrent.interpreters.rst:147 +msgid "" +"This exception, a subclass of :exc:`InterpreterError`, is raised when the " +"running code raised an uncaught exception." +msgstr "" + +#: library/concurrent.interpreters.rst:152 +msgid "A basic snapshot of the exception raised in the other interpreter." +msgstr "" + +#: library/concurrent.interpreters.rst:158 +msgid "" +"This exception, a subclass of :exc:`TypeError`, is raised when an object " +"cannot be sent to another interpreter." +msgstr "" + +#: library/concurrent.interpreters.rst:166 +msgid "Basic usage" +msgstr "" + +#: library/concurrent.interpreters.rst:168 +msgid "Creating an interpreter and running code in it::" +msgstr "" + +#: library/concurrent.interpreters.rst:170 +msgid "" +"from concurrent import interpreters\n" +"\n" +"interp = interpreters.create()\n" +"\n" +"# Run in the current OS thread.\n" +"\n" +"interp.exec('print(\"spam!\")')\n" +"\n" +"interp.exec(\"\"\"if True:\n" +" print('spam!')\n" +" \"\"\")\n" +"\n" +"from textwrap import dedent\n" +"interp.exec(dedent(\"\"\"\n" +" print('spam!')\n" +" \"\"\"))\n" +"\n" +"def run():\n" +" print('spam!')\n" +"\n" +"interp.call(run)\n" +"\n" +"# Run in new OS thread.\n" +"\n" +"t = interp.call_in_thread(run)\n" +"t.join()" +msgstr "" diff --git a/library/concurrent.po b/library/concurrent.po index 1af28724..9e658722 100644 --- a/library/concurrent.po +++ b/library/concurrent.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,9 +22,14 @@ msgid "The :mod:`!concurrent` package" msgstr "" #: library/concurrent.rst:4 -msgid "Currently, there is only one module in this package:" +msgid "This package contains the following modules:" msgstr "" #: library/concurrent.rst:6 msgid ":mod:`concurrent.futures` -- Launching parallel tasks" msgstr "" + +#: library/concurrent.rst:7 +msgid "" +":mod:`concurrent.interpreters` -- Multiple interpreters in the same process" +msgstr "" diff --git a/library/configparser.po b/library/configparser.po index 37b4c4ba..e58f9f78 100644 --- a/library/configparser.po +++ b/library/configparser.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/constants.po b/library/constants.po index f36f7f3b..a20c0b2c 100644 --- a/library/constants.po +++ b/library/constants.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/contextlib.po b/library/contextlib.po index 5856f26b..fde46915 100644 --- a/library/contextlib.po +++ b/library/contextlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/contextvars.po b/library/contextvars.po index 621c2bd0..a3b7ac80 100644 --- a/library/contextvars.po +++ b/library/contextvars.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/copy.po b/library/copy.po index 53090e2d..2517abac 100644 --- a/library/copy.po +++ b/library/copy.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -168,11 +168,11 @@ msgid "" "with values from *changes*." msgstr "" -#: library/copy.rst:128 +#: library/copy.rst:130 msgid "Module :mod:`pickle`" msgstr "" -#: library/copy.rst:129 +#: library/copy.rst:131 msgid "" "Discussion of the special methods used to support object state retrieval and " "restoration." diff --git a/library/copyreg.po b/library/copyreg.po index 1cb5b932..cdaf4336 100644 --- a/library/copyreg.po +++ b/library/copyreg.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/crypt.po b/library/crypt.po index 3cf13250..7a15e12d 100644 --- a/library/crypt.po +++ b/library/crypt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/crypto.po b/library/crypto.po index 3714c977..f54ff146 100644 --- a/library/crypto.po +++ b/library/crypto.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/csv.po b/library/csv.po index c09283a5..5cc71297 100644 --- a/library/csv.po +++ b/library/csv.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -90,9 +90,9 @@ msgstr "" #: library/csv.rst:72 msgid "" "Each row read from the csv file is returned as a list of strings. No " -"automatic data type conversion is performed unless the ``QUOTE_NONNUMERIC`` " -"format option is specified (in which case unquoted fields are transformed " -"into floats)." +"automatic data type conversion is performed unless the :data:" +"`QUOTE_NONNUMERIC` format option is specified (in which case unquoted fields " +"are transformed into floats)." msgstr "" #: library/csv.rst:106 library/csv.rst:219 @@ -396,11 +396,19 @@ msgstr "" #: library/csv.rst:334 msgid "" -"Instructs :class:`reader` objects to convert all non-quoted fields to type " -"*float*." +"Instructs :class:`reader` objects to convert all non-quoted fields to type :" +"class:`float`." msgstr "" -#: library/csv.rst:339 +#: library/csv.rst:337 +msgid "" +"Some numeric types, such as :class:`bool`, :class:`~fractions.Fraction`, or :" +"class:`~enum.IntEnum`, have a string representation that cannot be converted " +"to :class:`float`. They cannot be read in the :data:`QUOTE_NONNUMERIC` and :" +"data:`QUOTE_STRINGS` modes." +msgstr "" + +#: library/csv.rst:345 msgid "" "Instructs :class:`writer` objects to never quote fields. When the current " "*delimiter* occurs in output data it is preceded by the current *escapechar* " @@ -408,51 +416,51 @@ msgid "" "if any characters that require escaping are encountered." msgstr "" -#: library/csv.rst:344 +#: library/csv.rst:350 msgid "" "Instructs :class:`reader` objects to perform no special processing of quote " "characters." msgstr "" -#: library/csv.rst:348 +#: library/csv.rst:354 msgid "" "Instructs :class:`writer` objects to quote all fields which are not " "``None``. This is similar to :data:`QUOTE_ALL`, except that if a field " "value is ``None`` an empty (unquoted) string is written." msgstr "" -#: library/csv.rst:352 +#: library/csv.rst:358 msgid "" "Instructs :class:`reader` objects to interpret an empty (unquoted) field as " "``None`` and to otherwise behave as :data:`QUOTE_ALL`." msgstr "" -#: library/csv.rst:359 +#: library/csv.rst:365 msgid "" "Instructs :class:`writer` objects to always place quotes around fields which " "are strings. This is similar to :data:`QUOTE_NONNUMERIC`, except that if a " "field value is ``None`` an empty (unquoted) string is written." msgstr "" -#: library/csv.rst:363 +#: library/csv.rst:369 msgid "" "Instructs :class:`reader` objects to interpret an empty (unquoted) string as " "``None`` and to otherwise behave as :data:`QUOTE_NONNUMERIC`." msgstr "" -#: library/csv.rst:368 +#: library/csv.rst:374 msgid "The :mod:`csv` module defines the following exception:" msgstr "" -#: library/csv.rst:373 +#: library/csv.rst:379 msgid "Raised by any of the functions when an error is detected." msgstr "" -#: library/csv.rst:378 +#: library/csv.rst:384 msgid "Dialects and Formatting Parameters" msgstr "" -#: library/csv.rst:380 +#: library/csv.rst:386 msgid "" "To make it easier to specify the format of input and output records, " "specific formatting parameters are grouped together into dialects. A " @@ -465,16 +473,16 @@ msgid "" "attributes defined below for the :class:`Dialect` class." msgstr "" -#: library/csv.rst:390 +#: library/csv.rst:396 msgid "Dialects support the following attributes:" msgstr "" -#: library/csv.rst:395 +#: library/csv.rst:401 msgid "" "A one-character string used to separate fields. It defaults to ``','``." msgstr "" -#: library/csv.rst:400 +#: library/csv.rst:406 msgid "" "Controls how instances of *quotechar* appearing inside a field should " "themselves be quoted. When :const:`True`, the character is doubled. When :" @@ -482,13 +490,13 @@ msgid "" "defaults to :const:`True`." msgstr "" -#: library/csv.rst:405 +#: library/csv.rst:411 msgid "" "On output, if *doublequote* is :const:`False` and no *escapechar* is set, :" "exc:`Error` is raised if a *quotechar* is found in a field." msgstr "" -#: library/csv.rst:411 +#: library/csv.rst:417 msgid "" "A one-character string used by the writer to escape the *delimiter* if " "*quoting* is set to :const:`QUOTE_NONE` and the *quotechar* if *doublequote* " @@ -497,64 +505,64 @@ msgid "" "escaping." msgstr "" -#: library/csv.rst:416 +#: library/csv.rst:422 msgid "An empty *escapechar* is not allowed." msgstr "" -#: library/csv.rst:421 +#: library/csv.rst:427 msgid "" "The string used to terminate lines produced by the :class:`writer`. It " "defaults to ``'\\r\\n'``." msgstr "" -#: library/csv.rst:426 +#: library/csv.rst:432 msgid "" "The :class:`reader` is hard-coded to recognise either ``'\\r'`` or ``'\\n'`` " "as end-of-line, and ignores *lineterminator*. This behavior may change in " "the future." msgstr "" -#: library/csv.rst:433 +#: library/csv.rst:439 msgid "" "A one-character string used to quote fields containing special characters, " "such as the *delimiter* or *quotechar*, or which contain new-line " "characters. It defaults to ``'\"'``." msgstr "" -#: library/csv.rst:437 +#: library/csv.rst:443 msgid "An empty *quotechar* is not allowed." msgstr "" -#: library/csv.rst:442 +#: library/csv.rst:448 msgid "" "Controls when quotes should be generated by the writer and recognised by the " "reader. It can take on any of the :ref:`QUOTE_\\* constants ` and defaults to :const:`QUOTE_MINIMAL`." msgstr "" -#: library/csv.rst:449 +#: library/csv.rst:455 msgid "" "When :const:`True`, spaces immediately following the *delimiter* are " "ignored. The default is :const:`False`." msgstr "" -#: library/csv.rst:455 +#: library/csv.rst:461 msgid "" "When ``True``, raise exception :exc:`Error` on bad CSV input. The default is " "``False``." msgstr "" -#: library/csv.rst:461 +#: library/csv.rst:467 msgid "Reader Objects" msgstr "" -#: library/csv.rst:463 +#: library/csv.rst:469 msgid "" "Reader objects (:class:`DictReader` instances and objects returned by the :" "func:`reader` function) have the following public methods:" msgstr "" -#: library/csv.rst:468 +#: library/csv.rst:474 msgid "" "Return the next row of the reader's iterable object as a list (if the object " "was returned from :func:`reader`) or a dict (if it is a :class:`DictReader` " @@ -562,35 +570,35 @@ msgid "" "should call this as ``next(reader)``." msgstr "" -#: library/csv.rst:474 +#: library/csv.rst:480 msgid "Reader objects have the following public attributes:" msgstr "" -#: library/csv.rst:478 +#: library/csv.rst:484 msgid "A read-only description of the dialect in use by the parser." msgstr "" -#: library/csv.rst:483 +#: library/csv.rst:489 msgid "" "The number of lines read from the source iterator. This is not the same as " "the number of records returned, as records can span multiple lines." msgstr "" -#: library/csv.rst:487 +#: library/csv.rst:493 msgid "DictReader objects have the following public attribute:" msgstr "" -#: library/csv.rst:491 +#: library/csv.rst:497 msgid "" "If not passed as a parameter when creating the object, this attribute is " "initialized upon first access or when the first record is read from the file." msgstr "" -#: library/csv.rst:498 +#: library/csv.rst:504 msgid "Writer Objects" msgstr "" -#: library/csv.rst:500 +#: library/csv.rst:506 msgid "" ":class:`writer` objects (:class:`DictWriter` instances and objects returned " "by the :func:`writer` function) have the following public methods. A *row* " @@ -602,58 +610,58 @@ msgid "" "complex numbers at all)." msgstr "" -#: library/csv.rst:511 +#: library/csv.rst:517 msgid "" "Write the *row* parameter to the writer's file object, formatted according " "to the current :class:`Dialect`. Return the return value of the call to the " "*write* method of the underlying file object." msgstr "" -#: library/csv.rst:515 +#: library/csv.rst:521 msgid "Added support of arbitrary iterables." msgstr "" -#: library/csv.rst:520 +#: library/csv.rst:526 msgid "" "Write all elements in *rows* (an iterable of *row* objects as described " "above) to the writer's file object, formatted according to the current " "dialect." msgstr "" -#: library/csv.rst:524 +#: library/csv.rst:530 msgid "Writer objects have the following public attribute:" msgstr "" -#: library/csv.rst:529 +#: library/csv.rst:535 msgid "A read-only description of the dialect in use by the writer." msgstr "" -#: library/csv.rst:532 +#: library/csv.rst:538 msgid "DictWriter objects have the following public method:" msgstr "" -#: library/csv.rst:537 +#: library/csv.rst:543 msgid "" "Write a row with the field names (as specified in the constructor) to the " "writer's file object, formatted according to the current dialect. Return the " "return value of the :meth:`csvwriter.writerow` call used internally." msgstr "" -#: library/csv.rst:542 +#: library/csv.rst:548 msgid "" ":meth:`writeheader` now also returns the value returned by the :meth:" "`csvwriter.writerow` method it uses internally." msgstr "" -#: library/csv.rst:550 +#: library/csv.rst:556 msgid "Examples" msgstr "" -#: library/csv.rst:552 +#: library/csv.rst:558 msgid "The simplest example of reading a CSV file::" msgstr "" -#: library/csv.rst:554 +#: library/csv.rst:560 msgid "" "import csv\n" "with open('some.csv', newline='') as f:\n" @@ -662,11 +670,11 @@ msgid "" " print(row)" msgstr "" -#: library/csv.rst:560 +#: library/csv.rst:566 msgid "Reading a file with an alternate format::" msgstr "" -#: library/csv.rst:562 +#: library/csv.rst:568 msgid "" "import csv\n" "with open('passwd', newline='') as f:\n" @@ -675,11 +683,11 @@ msgid "" " print(row)" msgstr "" -#: library/csv.rst:568 +#: library/csv.rst:574 msgid "The corresponding simplest possible writing example is::" msgstr "" -#: library/csv.rst:570 +#: library/csv.rst:576 msgid "" "import csv\n" "with open('some.csv', 'w', newline='') as f:\n" @@ -687,7 +695,7 @@ msgid "" " writer.writerows(someiterable)" msgstr "" -#: library/csv.rst:575 +#: library/csv.rst:581 msgid "" "Since :func:`open` is used to open a CSV file for reading, the file will by " "default be decoded into unicode using the system default encoding (see :func:" @@ -695,7 +703,7 @@ msgid "" "``encoding`` argument of open::" msgstr "" -#: library/csv.rst:580 +#: library/csv.rst:586 msgid "" "import csv\n" "with open('some.csv', newline='', encoding='utf-8') as f:\n" @@ -704,17 +712,17 @@ msgid "" " print(row)" msgstr "" -#: library/csv.rst:586 +#: library/csv.rst:592 msgid "" "The same applies to writing in something other than the system default " "encoding: specify the encoding argument when opening the output file." msgstr "" -#: library/csv.rst:589 +#: library/csv.rst:595 msgid "Registering a new dialect::" msgstr "" -#: library/csv.rst:591 +#: library/csv.rst:597 msgid "" "import csv\n" "csv.register_dialect('unixpwd', delimiter=':', quoting=csv.QUOTE_NONE)\n" @@ -722,13 +730,13 @@ msgid "" " reader = csv.reader(f, 'unixpwd')" msgstr "" -#: library/csv.rst:596 +#: library/csv.rst:602 msgid "" "A slightly more advanced use of the reader --- catching and reporting " "errors::" msgstr "" -#: library/csv.rst:598 +#: library/csv.rst:604 msgid "" "import csv, sys\n" "filename = 'some.csv'\n" @@ -738,27 +746,27 @@ msgid "" " for row in reader:\n" " print(row)\n" " except csv.Error as e:\n" -" sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))" +" sys.exit(f'file {filename}, line {reader.line_num}: {e}')" msgstr "" -#: library/csv.rst:608 +#: library/csv.rst:614 msgid "" "And while the module doesn't directly support parsing strings, it can easily " "be done::" msgstr "" -#: library/csv.rst:611 +#: library/csv.rst:617 msgid "" "import csv\n" "for row in csv.reader(['one,two,three']):\n" " print(row)" msgstr "" -#: library/csv.rst:617 +#: library/csv.rst:623 msgid "Footnotes" msgstr "" -#: library/csv.rst:618 +#: library/csv.rst:624 msgid "" "If ``newline=''`` is not specified, newlines embedded inside quoted fields " "will not be interpreted correctly, and on platforms that use ``\\r\\n`` " diff --git a/library/ctypes.po b/library/ctypes.po index f8089569..38879773 100644 --- a/library/ctypes.po +++ b/library/ctypes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -311,7 +311,7 @@ msgid "" "learn more about :mod:`ctypes` data types." msgstr "" -#: library/ctypes.rst:2388 +#: library/ctypes.rst:2414 msgid "Fundamental data types" msgstr "" @@ -1175,39 +1175,47 @@ msgid "" "... (\"second_16\", c_int, 16)]\n" "...\n" ">>> print(Int.first_16)\n" -"\n" +"\n" ">>> print(Int.second_16)\n" -"\n" -">>>" +"" +msgstr "" + +#: library/ctypes.rst:721 +msgid "" +"It is important to note that bit field allocation and layout in memory are " +"not defined as a C standard; their implementation is compiler-specific. By " +"default, Python will attempt to match the behavior of a \"native\" compiler " +"for the current platform. See the :attr:`~Structure._layout_` attribute for " +"details on the default behavior and how to change it." msgstr "" -#: library/ctypes.rst:726 +#: library/ctypes.rst:732 msgid "Arrays" msgstr "" -#: library/ctypes.rst:728 +#: library/ctypes.rst:734 msgid "" "Arrays are sequences, containing a fixed number of instances of the same " "type." msgstr "" -#: library/ctypes.rst:730 +#: library/ctypes.rst:736 msgid "" "The recommended way to create array types is by multiplying a data type with " "a positive integer::" msgstr "" -#: library/ctypes.rst:733 +#: library/ctypes.rst:739 msgid "TenPointsArrayType = POINT * 10" msgstr "" -#: library/ctypes.rst:735 +#: library/ctypes.rst:741 msgid "" "Here is an example of a somewhat artificial data type, a structure " "containing 4 POINTs among other stuff::" msgstr "" -#: library/ctypes.rst:738 +#: library/ctypes.rst:744 msgid "" ">>> from ctypes import *\n" ">>> class POINT(Structure):\n" @@ -1223,28 +1231,28 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:751 +#: library/ctypes.rst:757 msgid "Instances are created in the usual way, by calling the class::" msgstr "" -#: library/ctypes.rst:753 +#: library/ctypes.rst:759 msgid "" "arr = TenPointsArrayType()\n" "for pt in arr:\n" " print(pt.x, pt.y)" msgstr "" -#: library/ctypes.rst:757 +#: library/ctypes.rst:763 msgid "" "The above code print a series of ``0 0`` lines, because the array contents " "is initialized to zeros." msgstr "" -#: library/ctypes.rst:760 +#: library/ctypes.rst:766 msgid "Initializers of the correct type can also be specified::" msgstr "" -#: library/ctypes.rst:762 +#: library/ctypes.rst:768 msgid "" ">>> from ctypes import *\n" ">>> TenIntegers = c_int * 10\n" @@ -1257,17 +1265,17 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:776 +#: library/ctypes.rst:782 msgid "Pointers" msgstr "" -#: library/ctypes.rst:778 +#: library/ctypes.rst:784 msgid "" "Pointer instances are created by calling the :func:`pointer` function on a :" "mod:`ctypes` type::" msgstr "" -#: library/ctypes.rst:781 +#: library/ctypes.rst:787 msgid "" ">>> from ctypes import *\n" ">>> i = c_int(42)\n" @@ -1275,26 +1283,26 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:786 +#: library/ctypes.rst:792 msgid "" "Pointer instances have a :attr:`~_Pointer.contents` attribute which returns " "the object to which the pointer points, the ``i`` object above::" msgstr "" -#: library/ctypes.rst:789 +#: library/ctypes.rst:795 msgid "" ">>> pi.contents\n" "c_long(42)\n" ">>>" msgstr "" -#: library/ctypes.rst:793 +#: library/ctypes.rst:799 msgid "" "Note that :mod:`ctypes` does not have OOR (original object return), it " "constructs a new, equivalent object each time you retrieve an attribute::" msgstr "" -#: library/ctypes.rst:796 +#: library/ctypes.rst:802 msgid "" ">>> pi.contents is i\n" "False\n" @@ -1303,14 +1311,14 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:802 +#: library/ctypes.rst:808 msgid "" "Assigning another :class:`c_int` instance to the pointer's contents " "attribute would cause the pointer to point to the memory location where this " "is stored::" msgstr "" -#: library/ctypes.rst:805 +#: library/ctypes.rst:811 msgid "" ">>> i = c_int(99)\n" ">>> pi.contents = i\n" @@ -1319,22 +1327,22 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:814 +#: library/ctypes.rst:820 msgid "Pointer instances can also be indexed with integers::" msgstr "" -#: library/ctypes.rst:816 +#: library/ctypes.rst:822 msgid "" ">>> pi[0]\n" "99\n" ">>>" msgstr "" -#: library/ctypes.rst:820 +#: library/ctypes.rst:826 msgid "Assigning to an integer index changes the pointed to value::" msgstr "" -#: library/ctypes.rst:822 +#: library/ctypes.rst:828 msgid "" ">>> print(i)\n" "c_long(99)\n" @@ -1344,7 +1352,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:829 +#: library/ctypes.rst:835 msgid "" "It is also possible to use indexes different from 0, but you must know what " "you're doing, just as in C: You can access or change arbitrary memory " @@ -1353,7 +1361,7 @@ msgid "" "instead of a single item." msgstr "" -#: library/ctypes.rst:835 +#: library/ctypes.rst:841 msgid "" "Behind the scenes, the :func:`pointer` function does more than simply create " "pointer instances, it has to create pointer *types* first. This is done with " @@ -1361,7 +1369,7 @@ msgid "" "returns a new type::" msgstr "" -#: library/ctypes.rst:840 +#: library/ctypes.rst:846 msgid "" ">>> PI = POINTER(c_int)\n" ">>> PI\n" @@ -1375,13 +1383,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:851 +#: library/ctypes.rst:857 msgid "" "Calling the pointer type without an argument creates a ``NULL`` pointer. " "``NULL`` pointers have a ``False`` boolean value::" msgstr "" -#: library/ctypes.rst:854 +#: library/ctypes.rst:860 msgid "" ">>> null_ptr = POINTER(c_int)()\n" ">>> print(bool(null_ptr))\n" @@ -1389,13 +1397,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:859 +#: library/ctypes.rst:865 msgid "" ":mod:`ctypes` checks for ``NULL`` when dereferencing pointers (but " "dereferencing invalid non-\\ ``NULL`` pointers would crash Python)::" msgstr "" -#: library/ctypes.rst:862 +#: library/ctypes.rst:868 msgid "" ">>> null_ptr[0]\n" "Traceback (most recent call last):\n" @@ -1410,25 +1418,25 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:877 +#: library/ctypes.rst:883 msgid "Thread safety without the GIL" msgstr "" -#: library/ctypes.rst:879 +#: library/ctypes.rst:885 msgid "" -"In Python 3.13, the :term:`GIL` may be disabled on :term:`experimental free " +"From Python 3.13 onward, the :term:`GIL` can be disabled on :term:`free " "threaded ` builds. In ctypes, reads and writes to a single " "object concurrently is safe, but not across multiple objects:" msgstr "" -#: library/ctypes.rst:882 +#: library/ctypes.rst:888 msgid "" ">>> number = c_int(42)\n" ">>> pointer_a = pointer(number)\n" ">>> pointer_b = pointer(number)" msgstr "" -#: library/ctypes.rst:888 +#: library/ctypes.rst:894 msgid "" "In the above, it's only safe for one object to read and write to the address " "at once if the GIL is disabled. So, ``pointer_a`` can be shared and written " @@ -1437,7 +1445,7 @@ msgid "" "Lock` to synchronize access to memory:" msgstr "" -#: library/ctypes.rst:893 +#: library/ctypes.rst:899 msgid "" ">>> import threading\n" ">>> lock = threading.Lock()\n" @@ -1449,11 +1457,11 @@ msgid "" "... pointer_b.contents = 42" msgstr "" -#: library/ctypes.rst:908 +#: library/ctypes.rst:914 msgid "Type conversions" msgstr "" -#: library/ctypes.rst:910 +#: library/ctypes.rst:916 msgid "" "Usually, ctypes does strict type checking. This means, if you have " "``POINTER(c_int)`` in the :attr:`~_CFuncPtr.argtypes` list of a function or " @@ -1464,7 +1472,7 @@ msgid "" "ctypes accepts an array of c_int::" msgstr "" -#: library/ctypes.rst:917 +#: library/ctypes.rst:923 msgid "" ">>> class Bar(Structure):\n" "... _fields_ = [(\"count\", c_int), (\"values\", POINTER(c_int))]\n" @@ -1481,7 +1489,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:931 +#: library/ctypes.rst:937 msgid "" "In addition, if a function argument is explicitly declared to be a pointer " "type (such as ``POINTER(c_int)``) in :attr:`~_CFuncPtr.argtypes`, an object " @@ -1490,17 +1498,17 @@ msgid "" "automatically." msgstr "" -#: library/ctypes.rst:936 +#: library/ctypes.rst:942 msgid "To set a POINTER type field to ``NULL``, you can assign ``None``::" msgstr "" -#: library/ctypes.rst:938 +#: library/ctypes.rst:944 msgid "" ">>> bar.values = None\n" ">>>" msgstr "" -#: library/ctypes.rst:943 +#: library/ctypes.rst:949 msgid "" "Sometimes you have instances of incompatible types. In C, you can cast one " "type into another type. :mod:`ctypes` provides a :func:`cast` function " @@ -1509,7 +1517,7 @@ msgid "" "``values`` field, but not instances of other types::" msgstr "" -#: library/ctypes.rst:949 +#: library/ctypes.rst:955 msgid "" ">>> bar.values = (c_byte * 4)()\n" "Traceback (most recent call last):\n" @@ -1519,11 +1527,11 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:955 +#: library/ctypes.rst:961 msgid "For these cases, the :func:`cast` function is handy." msgstr "" -#: library/ctypes.rst:957 +#: library/ctypes.rst:963 msgid "" "The :func:`cast` function can be used to cast a ctypes instance into a " "pointer to a different ctypes data type. :func:`cast` takes two parameters, " @@ -1532,7 +1540,7 @@ msgid "" "references the same memory block as the first argument::" msgstr "" -#: library/ctypes.rst:963 +#: library/ctypes.rst:969 msgid "" ">>> a = (c_byte * 4)()\n" ">>> cast(a, POINTER(c_int))\n" @@ -1540,13 +1548,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:968 +#: library/ctypes.rst:974 msgid "" "So, :func:`cast` can be used to assign to the ``values`` field of ``Bar`` " "the structure::" msgstr "" -#: library/ctypes.rst:971 +#: library/ctypes.rst:977 msgid "" ">>> bar = Bar()\n" ">>> bar.values = cast((c_byte * 4)(), POINTER(c_int))\n" @@ -1555,18 +1563,18 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:981 +#: library/ctypes.rst:987 msgid "Incomplete Types" msgstr "" -#: library/ctypes.rst:983 +#: library/ctypes.rst:989 msgid "" "*Incomplete Types* are structures, unions or arrays whose members are not " "yet specified. In C, they are specified by forward declarations, which are " "defined later::" msgstr "" -#: library/ctypes.rst:987 +#: library/ctypes.rst:993 msgid "" "struct cell; /* forward declaration */\n" "\n" @@ -1576,13 +1584,13 @@ msgid "" "};" msgstr "" -#: library/ctypes.rst:994 +#: library/ctypes.rst:1000 msgid "" "The straightforward translation into ctypes code would be this, but it does " "not work::" msgstr "" -#: library/ctypes.rst:997 +#: library/ctypes.rst:1003 msgid "" ">>> class cell(Structure):\n" "... _fields_ = [(\"name\", c_char_p),\n" @@ -1595,14 +1603,14 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1007 +#: library/ctypes.rst:1013 msgid "" "because the new ``class cell`` is not available in the class statement " "itself. In :mod:`ctypes`, we can define the ``cell`` class and set the :attr:" "`~Structure._fields_` attribute later, after the class statement::" msgstr "" -#: library/ctypes.rst:1011 +#: library/ctypes.rst:1017 msgid "" ">>> from ctypes import *\n" ">>> class cell(Structure):\n" @@ -1613,13 +1621,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1019 +#: library/ctypes.rst:1025 msgid "" "Let's try it. We create two instances of ``cell``, and let them point to " "each other, and finally follow the pointer chain a few times::" msgstr "" -#: library/ctypes.rst:1022 +#: library/ctypes.rst:1028 msgid "" ">>> c1 = cell()\n" ">>> c1.name = b\"foo\"\n" @@ -1636,24 +1644,24 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1040 +#: library/ctypes.rst:1046 msgid "Callback functions" msgstr "" -#: library/ctypes.rst:1042 +#: library/ctypes.rst:1048 msgid "" ":mod:`ctypes` allows creating C callable function pointers from Python " "callables. These are sometimes called *callback functions*." msgstr "" -#: library/ctypes.rst:1045 +#: library/ctypes.rst:1051 msgid "" "First, you must create a class for the callback function. The class knows " "the calling convention, the return type, and the number and types of " "arguments this function will receive." msgstr "" -#: library/ctypes.rst:1049 +#: library/ctypes.rst:1055 msgid "" "The :func:`CFUNCTYPE` factory function creates types for callback functions " "using the ``cdecl`` calling convention. On Windows, the :func:`WINFUNCTYPE` " @@ -1661,21 +1669,21 @@ msgid "" "calling convention." msgstr "" -#: library/ctypes.rst:1054 +#: library/ctypes.rst:1060 msgid "" "Both of these factory functions are called with the result type as first " "argument, and the callback functions expected argument types as the " "remaining arguments." msgstr "" -#: library/ctypes.rst:1058 +#: library/ctypes.rst:1064 msgid "" "I will present an example here which uses the standard C library's :c:func:`!" "qsort` function, that is used to sort items with the help of a callback " "function. :c:func:`!qsort` will be used to sort an array of integers::" msgstr "" -#: library/ctypes.rst:1062 +#: library/ctypes.rst:1068 msgid "" ">>> IntArray5 = c_int * 5\n" ">>> ia = IntArray5(5, 1, 7, 33, 99)\n" @@ -1684,7 +1692,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1068 +#: library/ctypes.rst:1074 msgid "" ":func:`!qsort` must be called with a pointer to the data to sort, the number " "of items in the data array, the size of one item, and a pointer to the " @@ -1694,25 +1702,25 @@ msgid "" "otherwise." msgstr "" -#: library/ctypes.rst:1074 +#: library/ctypes.rst:1080 msgid "" "So our callback function receives pointers to integers, and must return an " "integer. First we create the ``type`` for the callback function::" msgstr "" -#: library/ctypes.rst:1077 +#: library/ctypes.rst:1083 msgid "" ">>> CMPFUNC = CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))\n" ">>>" msgstr "" -#: library/ctypes.rst:1080 +#: library/ctypes.rst:1086 msgid "" "To get started, here is a simple callback that shows the values it gets " "passed::" msgstr "" -#: library/ctypes.rst:1083 +#: library/ctypes.rst:1089 msgid "" ">>> def py_cmp_func(a, b):\n" "... print(\"py_cmp_func\", a[0], b[0])\n" @@ -1722,11 +1730,11 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1090 +#: library/ctypes.rst:1096 msgid "The result::" msgstr "" -#: library/ctypes.rst:1092 +#: library/ctypes.rst:1098 msgid "" ">>> qsort(ia, len(ia), sizeof(c_int), cmp_func)\n" "py_cmp_func 5 1\n" @@ -1737,11 +1745,11 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1100 +#: library/ctypes.rst:1106 msgid "Now we can actually compare the two items and return a useful result::" msgstr "" -#: library/ctypes.rst:1102 +#: library/ctypes.rst:1108 msgid "" ">>> def py_cmp_func(a, b):\n" "... print(\"py_cmp_func\", a[0], b[0])\n" @@ -1757,11 +1765,11 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1115 +#: library/ctypes.rst:1121 msgid "As we can easily check, our array is sorted now::" msgstr "" -#: library/ctypes.rst:1117 +#: library/ctypes.rst:1123 msgid "" ">>> for i in ia: print(i, end=\" \")\n" "...\n" @@ -1769,13 +1777,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1122 +#: library/ctypes.rst:1128 msgid "" "The function factories can be used as decorator factories, so we may as well " "write::" msgstr "" -#: library/ctypes.rst:1125 +#: library/ctypes.rst:1131 msgid "" ">>> @CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))\n" "... def py_cmp_func(a, b):\n" @@ -1791,14 +1799,14 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1140 +#: library/ctypes.rst:1146 msgid "" "Make sure you keep references to :func:`CFUNCTYPE` objects as long as they " "are used from C code. :mod:`ctypes` doesn't, and if you don't, they may be " "garbage collected, crashing your program when a callback is made." msgstr "" -#: library/ctypes.rst:1144 +#: library/ctypes.rst:1150 msgid "" "Also, note that if the callback function is called in a thread created " "outside of Python's control (e.g. by the foreign code that calls the " @@ -1808,42 +1816,42 @@ msgid "" "even when those calls are made from the same C thread." msgstr "" -#: library/ctypes.rst:1154 +#: library/ctypes.rst:1160 msgid "Accessing values exported from dlls" msgstr "" -#: library/ctypes.rst:1156 +#: library/ctypes.rst:1162 msgid "" "Some shared libraries not only export functions, they also export variables. " "An example in the Python library itself is the :c:data:`Py_Version`, Python " "runtime version number encoded in a single constant integer." msgstr "" -#: library/ctypes.rst:1160 +#: library/ctypes.rst:1166 msgid "" ":mod:`ctypes` can access values like this with the :meth:`~_CData.in_dll` " "class methods of the type. *pythonapi* is a predefined symbol giving access " "to the Python C api::" msgstr "" -#: library/ctypes.rst:1164 +#: library/ctypes.rst:1170 msgid "" ">>> version = ctypes.c_int.in_dll(ctypes.pythonapi, \"Py_Version\")\n" ">>> print(hex(version.value))\n" "0x30c00a0" msgstr "" -#: library/ctypes.rst:1168 +#: library/ctypes.rst:1174 msgid "" "An extended example which also demonstrates the use of pointers accesses " "the :c:data:`PyImport_FrozenModules` pointer exported by Python." msgstr "" -#: library/ctypes.rst:1171 +#: library/ctypes.rst:1177 msgid "Quoting the docs for that value:" msgstr "" -#: library/ctypes.rst:1173 +#: library/ctypes.rst:1179 msgid "" "This pointer is initialized to point to an array of :c:struct:`_frozen` " "records, terminated by one whose members are all ``NULL`` or zero. When a " @@ -1852,13 +1860,13 @@ msgid "" "frozen modules." msgstr "" -#: library/ctypes.rst:1178 +#: library/ctypes.rst:1184 msgid "" "So manipulating this pointer could even prove useful. To restrict the " "example size, we show only how this table can be read with :mod:`ctypes`::" msgstr "" -#: library/ctypes.rst:1181 +#: library/ctypes.rst:1187 msgid "" ">>> from ctypes import *\n" ">>>\n" @@ -1872,20 +1880,20 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1192 +#: library/ctypes.rst:1198 msgid "" "We have defined the :c:struct:`_frozen` data type, so we can get the pointer " "to the table::" msgstr "" -#: library/ctypes.rst:1195 +#: library/ctypes.rst:1201 msgid "" ">>> FrozenTable = POINTER(struct_frozen)\n" ">>> table = FrozenTable.in_dll(pythonapi, \"_PyImport_FrozenBootstrap\")\n" ">>>" msgstr "" -#: library/ctypes.rst:1199 +#: library/ctypes.rst:1205 msgid "" "Since ``table`` is a ``pointer`` to the array of ``struct_frozen`` records, " "we can iterate over it, but we just have to make sure that our loop " @@ -1894,7 +1902,7 @@ msgid "" "the loop when we hit the ``NULL`` entry::" msgstr "" -#: library/ctypes.rst:1205 +#: library/ctypes.rst:1211 msgid "" ">>> for item in table:\n" "... if item.name is None:\n" @@ -1907,28 +1915,28 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1215 +#: library/ctypes.rst:1221 msgid "" "The fact that standard Python has a frozen module and a frozen package " "(indicated by the negative ``size`` member) is not well known, it is only " "used for testing. Try it out with ``import __hello__`` for example." msgstr "" -#: library/ctypes.rst:1223 +#: library/ctypes.rst:1229 msgid "Surprises" msgstr "" -#: library/ctypes.rst:1225 +#: library/ctypes.rst:1231 msgid "" "There are some edges in :mod:`ctypes` where you might expect something other " "than what actually happens." msgstr "" -#: library/ctypes.rst:1228 +#: library/ctypes.rst:1234 msgid "Consider the following example::" msgstr "" -#: library/ctypes.rst:1230 +#: library/ctypes.rst:1236 msgid "" ">>> from ctypes import *\n" ">>> class POINT(Structure):\n" @@ -1949,13 +1957,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1248 +#: library/ctypes.rst:1254 msgid "" "Hm. We certainly expected the last statement to print ``3 4 1 2``. What " "happened? Here are the steps of the ``rc.a, rc.b = rc.b, rc.a`` line above::" msgstr "" -#: library/ctypes.rst:1251 +#: library/ctypes.rst:1257 msgid "" ">>> temp0, temp1 = rc.b, rc.a\n" ">>> rc.a = temp0\n" @@ -1963,7 +1971,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1256 +#: library/ctypes.rst:1262 msgid "" "Note that ``temp0`` and ``temp1`` are objects still using the internal " "buffer of the ``rc`` object above. So executing ``rc.a = temp0`` copies the " @@ -1972,20 +1980,20 @@ msgid "" "have the expected effect." msgstr "" -#: library/ctypes.rst:1262 +#: library/ctypes.rst:1268 msgid "" "Keep in mind that retrieving sub-objects from Structure, Unions, and Arrays " "doesn't *copy* the sub-object, instead it retrieves a wrapper object " "accessing the root-object's underlying buffer." msgstr "" -#: library/ctypes.rst:1266 +#: library/ctypes.rst:1272 msgid "" "Another example that may behave differently from what one would expect is " "this::" msgstr "" -#: library/ctypes.rst:1268 +#: library/ctypes.rst:1274 msgid "" ">>> s = c_char_p()\n" ">>> s.value = b\"abc def ghi\"\n" @@ -1996,13 +2004,13 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1278 +#: library/ctypes.rst:1284 msgid "" "Objects instantiated from :class:`c_char_p` can only have their value set to " "bytes or integers." msgstr "" -#: library/ctypes.rst:1281 +#: library/ctypes.rst:1287 msgid "" "Why is it printing ``False``? ctypes instances are objects containing a " "memory block plus some :term:`descriptor`\\s accessing the contents of the " @@ -2011,16 +2019,16 @@ msgid "" "the contents again constructs a new Python object each time!" msgstr "" -#: library/ctypes.rst:1291 +#: library/ctypes.rst:1297 msgid "Variable-sized data types" msgstr "" -#: library/ctypes.rst:1293 +#: library/ctypes.rst:1299 msgid "" ":mod:`ctypes` provides some support for variable-sized arrays and structures." msgstr "" -#: library/ctypes.rst:1295 +#: library/ctypes.rst:1301 msgid "" "The :func:`resize` function can be used to resize the memory buffer of an " "existing ctypes object. The function takes the object as first argument, " @@ -2029,7 +2037,7 @@ msgid "" "objects type, a :exc:`ValueError` is raised if this is tried::" msgstr "" -#: library/ctypes.rst:1301 +#: library/ctypes.rst:1307 msgid "" ">>> short_array = (c_short * 4)()\n" ">>> print(sizeof(short_array))\n" @@ -2046,14 +2054,14 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1315 +#: library/ctypes.rst:1321 msgid "" "This is nice and fine, but how would one access the additional elements " "contained in this array? Since the type still only knows about 4 elements, " "we get errors accessing other elements::" msgstr "" -#: library/ctypes.rst:1319 +#: library/ctypes.rst:1325 msgid "" ">>> short_array[:]\n" "[0, 0, 0, 0]\n" @@ -2064,28 +2072,28 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1327 +#: library/ctypes.rst:1333 msgid "" "Another way to use variable-sized data types with :mod:`ctypes` is to use " "the dynamic nature of Python, and (re-)define the data type after the " "required size is already known, on a case by case basis." msgstr "" -#: library/ctypes.rst:1335 +#: library/ctypes.rst:1341 msgid "ctypes reference" msgstr "" -#: library/ctypes.rst:1341 +#: library/ctypes.rst:1347 msgid "Finding shared libraries" msgstr "" -#: library/ctypes.rst:1343 +#: library/ctypes.rst:1349 msgid "" "When programming in a compiled language, shared libraries are accessed when " "compiling/linking a program, and when the program is run." msgstr "" -#: library/ctypes.rst:1346 +#: library/ctypes.rst:1352 msgid "" "The purpose of the :func:`~ctypes.util.find_library` function is to locate a " "library in a way similar to what the compiler or runtime loader does (on " @@ -2094,13 +2102,13 @@ msgid "" "and call the runtime loader directly." msgstr "" -#: library/ctypes.rst:1352 +#: library/ctypes.rst:1358 msgid "" "The :mod:`!ctypes.util` module provides a function which can help to " "determine the library to load." msgstr "" -#: library/ctypes.rst:1360 +#: library/ctypes.rst:1366 msgid "" "Try to find a library and return a pathname. *name* is the library name " "without any prefix like *lib*, suffix like ``.so``, ``.dylib`` or version " @@ -2108,29 +2116,29 @@ msgid "" "If no library can be found, returns ``None``." msgstr "" -#: library/ctypes.rst:2093 +#: library/ctypes.rst:2119 msgid "The exact functionality is system dependent." msgstr "" -#: library/ctypes.rst:1367 +#: library/ctypes.rst:1373 msgid "" "On Linux, :func:`~ctypes.util.find_library` tries to run external programs " "(``/sbin/ldconfig``, ``gcc``, ``objdump`` and ``ld``) to find the library " "file. It returns the filename of the library file." msgstr "" -#: library/ctypes.rst:1371 +#: library/ctypes.rst:1377 msgid "" "On Linux, the value of the environment variable ``LD_LIBRARY_PATH`` is used " "when searching for libraries, if a library cannot be found by any other " "means." msgstr "" -#: library/ctypes.rst:1375 +#: library/ctypes.rst:1381 msgid "Here are some examples::" msgstr "" -#: library/ctypes.rst:1377 +#: library/ctypes.rst:1383 msgid "" ">>> from ctypes.util import find_library\n" ">>> find_library(\"m\")\n" @@ -2142,14 +2150,14 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1386 +#: library/ctypes.rst:1392 msgid "" "On macOS and Android, :func:`~ctypes.util.find_library` uses the system's " "standard naming schemes and paths to locate the library, and returns a full " "pathname if successful::" msgstr "" -#: library/ctypes.rst:1390 +#: library/ctypes.rst:1396 msgid "" ">>> from ctypes.util import find_library\n" ">>> find_library(\"c\")\n" @@ -2163,7 +2171,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1401 +#: library/ctypes.rst:1407 msgid "" "On Windows, :func:`~ctypes.util.find_library` searches along the system " "search path, and returns the full pathname, but since there is no predefined " @@ -2171,7 +2179,7 @@ msgid "" "``None``." msgstr "" -#: library/ctypes.rst:1405 +#: library/ctypes.rst:1411 msgid "" "If wrapping a shared library with :mod:`ctypes`, it *may* be better to " "determine the shared library name at development time, and hardcode that " @@ -2179,18 +2187,18 @@ msgid "" "to locate the library at runtime." msgstr "" -#: library/ctypes.rst:1413 +#: library/ctypes.rst:1419 msgid "Listing loaded shared libraries" msgstr "" -#: library/ctypes.rst:1415 +#: library/ctypes.rst:1421 msgid "" "When writing code that relies on code loaded from shared libraries, it can " "be useful to know which shared libraries have already been loaded into the " "current process." msgstr "" -#: library/ctypes.rst:1419 +#: library/ctypes.rst:1425 msgid "" "The :mod:`!ctypes.util` module provides the :func:`~ctypes.util.dllist` " "function, which calls the different APIs provided by the various platforms " @@ -2198,7 +2206,7 @@ msgid "" "current process." msgstr "" -#: library/ctypes.rst:1423 +#: library/ctypes.rst:1429 msgid "" "The exact output of this function will be system dependent. On most " "platforms, the first entry of this list represents the current process " @@ -2206,7 +2214,7 @@ msgid "" "return may look like::" msgstr "" -#: library/ctypes.rst:1428 +#: library/ctypes.rst:1434 msgid "" ">>> from ctypes.util import dllist\n" ">>> dllist()\n" @@ -2214,24 +2222,24 @@ msgid "" "linux-gnu/libc.so.6', ... ]" msgstr "" -#: library/ctypes.rst:1435 +#: library/ctypes.rst:1441 msgid "Loading shared libraries" msgstr "" -#: library/ctypes.rst:1437 +#: library/ctypes.rst:1443 msgid "" "There are several ways to load shared libraries into the Python process. " "One way is to instantiate one of the following classes:" msgstr "" -#: library/ctypes.rst:1443 +#: library/ctypes.rst:1449 msgid "" "Instances of this class represent loaded shared libraries. Functions in " "these libraries use the standard C calling convention, and are assumed to " "return :c:expr:`int`." msgstr "" -#: library/ctypes.rst:1447 +#: library/ctypes.rst:1453 msgid "" "On Windows creating a :class:`CDLL` instance may fail even if the DLL name " "exists. When a dependent DLL of the loaded DLL is not found, a :exc:" @@ -2243,17 +2251,17 @@ msgid "" "determine which one is not found using Windows debugging and tracing tools." msgstr "" -#: library/ctypes.rst:1484 library/ctypes.rst:1515 +#: library/ctypes.rst:1490 library/ctypes.rst:1521 msgid "The *name* parameter can now be a :term:`path-like object`." msgstr "" -#: library/ctypes.rst:1463 +#: library/ctypes.rst:1469 msgid "" "`Microsoft DUMPBIN tool `_ -- A tool to find DLL dependents." msgstr "" -#: library/ctypes.rst:1469 +#: library/ctypes.rst:1475 msgid "" "Instances of this class represent loaded shared libraries, functions in " "these libraries use the ``stdcall`` calling convention, and are assumed to " @@ -2263,32 +2271,32 @@ msgid "" "a failure, an :class:`OSError` is automatically raised." msgstr "" -#: library/ctypes.rst:1493 library/ctypes.rst:1645 library/ctypes.rst:1869 -#: library/ctypes.rst:2073 library/ctypes.rst:2107 library/ctypes.rst:2130 -#: library/ctypes.rst:2154 library/ctypes.rst:2248 library/ctypes.rst:3046 +#: library/ctypes.rst:1499 library/ctypes.rst:1651 library/ctypes.rst:1875 +#: library/ctypes.rst:2099 library/ctypes.rst:2133 library/ctypes.rst:2156 +#: library/ctypes.rst:2180 library/ctypes.rst:2274 library/ctypes.rst:3072 msgid "Availability" msgstr "" -#: library/ctypes.rst:1478 +#: library/ctypes.rst:1484 msgid "" ":exc:`WindowsError` used to be raised, which is now an alias of :exc:" "`OSError`." msgstr "" -#: library/ctypes.rst:1489 +#: library/ctypes.rst:1495 msgid "" "Instances of this class represent loaded shared libraries, functions in " "these libraries use the ``stdcall`` calling convention, and are assumed to " "return :c:expr:`int` by default." msgstr "" -#: library/ctypes.rst:1500 +#: library/ctypes.rst:1506 msgid "" "The Python :term:`global interpreter lock` is released before calling any " "function exported by these libraries, and reacquired afterwards." msgstr "" -#: library/ctypes.rst:1506 +#: library/ctypes.rst:1512 msgid "" "Instances of this class behave like :class:`CDLL` instances, except that the " "Python GIL is *not* released during the function call, and after the " @@ -2296,11 +2304,11 @@ msgid "" "set, a Python exception is raised." msgstr "" -#: library/ctypes.rst:1511 +#: library/ctypes.rst:1517 msgid "Thus, this is only useful to call Python C api functions directly." msgstr "" -#: library/ctypes.rst:1517 +#: library/ctypes.rst:1523 msgid "" "All these classes can be instantiated by calling them with at least one " "argument, the pathname of the shared library. If you have an existing " @@ -2310,7 +2318,7 @@ msgid "" "the process, and to get a handle to it." msgstr "" -#: library/ctypes.rst:1524 +#: library/ctypes.rst:1530 msgid "" "The *mode* parameter can be used to specify how the library is loaded. For " "details, consult the :manpage:`dlopen(3)` manpage. On Windows, *mode* is " @@ -2318,7 +2326,7 @@ msgid "" "configurable." msgstr "" -#: library/ctypes.rst:1529 +#: library/ctypes.rst:1535 msgid "" "The *use_errno* parameter, when set to true, enables a ctypes mechanism that " "allows accessing the system :data:`errno` error number in a safe way. :mod:" @@ -2328,14 +2336,14 @@ msgid "" "private copy, the same happens immediately after the function call." msgstr "" -#: library/ctypes.rst:1536 +#: library/ctypes.rst:1542 msgid "" "The function :func:`ctypes.get_errno` returns the value of the ctypes " "private copy, and the function :func:`ctypes.set_errno` changes the ctypes " "private copy to a new value and returns the former value." msgstr "" -#: library/ctypes.rst:1540 +#: library/ctypes.rst:1546 msgid "" "The *use_last_error* parameter, when set to true, enables the same mechanism " "for the Windows error code which is managed by the :func:`GetLastError` and :" @@ -2344,7 +2352,7 @@ msgid "" "private copy of the windows error code." msgstr "" -#: library/ctypes.rst:1546 +#: library/ctypes.rst:1552 msgid "" "The *winmode* parameter is used on Windows to specify how the library is " "loaded (since *mode* is ignored). It takes any value that is valid for the " @@ -2354,29 +2362,29 @@ msgid "" "ensure the correct library and dependencies are loaded." msgstr "" -#: library/ctypes.rst:1553 +#: library/ctypes.rst:1559 msgid "Added *winmode* parameter." msgstr "" -#: library/ctypes.rst:1560 +#: library/ctypes.rst:1566 msgid "" "Flag to use as *mode* parameter. On platforms where this flag is not " "available, it is defined as the integer zero." msgstr "" -#: library/ctypes.rst:1567 +#: library/ctypes.rst:1573 msgid "" "Flag to use as *mode* parameter. On platforms where this is not available, " "it is the same as *RTLD_GLOBAL*." msgstr "" -#: library/ctypes.rst:1574 +#: library/ctypes.rst:1580 msgid "" "The default mode which is used to load shared libraries. On OSX 10.3, this " "is *RTLD_GLOBAL*, otherwise it is the same as *RTLD_LOCAL*." msgstr "" -#: library/ctypes.rst:1577 +#: library/ctypes.rst:1583 msgid "" "Instances of these classes have no public methods. Functions exported by " "the shared library can be accessed as attributes or by index. Please note " @@ -2385,7 +2393,7 @@ msgid "" "other hand, accessing it through an index returns a new object each time::" msgstr "" -#: library/ctypes.rst:1583 +#: library/ctypes.rst:1589 msgid "" ">>> from ctypes import CDLL\n" ">>> libc = CDLL(\"libc.so.6\") # On Linux\n" @@ -2395,21 +2403,21 @@ msgid "" "False" msgstr "" -#: library/ctypes.rst:1590 +#: library/ctypes.rst:1596 msgid "" "The following public attributes are available, their name starts with an " "underscore to not clash with exported function names:" msgstr "" -#: library/ctypes.rst:1596 +#: library/ctypes.rst:1602 msgid "The system handle used to access the library." msgstr "" -#: library/ctypes.rst:1601 +#: library/ctypes.rst:1607 msgid "The name of the library passed in the constructor." msgstr "" -#: library/ctypes.rst:1603 +#: library/ctypes.rst:1609 msgid "" "Shared libraries can also be loaded by using one of the prefabricated " "objects, which are instances of the :class:`LibraryLoader` class, either by " @@ -2417,13 +2425,13 @@ msgid "" "library as attribute of the loader instance." msgstr "" -#: library/ctypes.rst:1611 +#: library/ctypes.rst:1617 msgid "" "Class which loads shared libraries. *dlltype* should be one of the :class:" "`CDLL`, :class:`PyDLL`, :class:`WinDLL`, or :class:`OleDLL` types." msgstr "" -#: library/ctypes.rst:1614 +#: library/ctypes.rst:1620 msgid "" ":meth:`!__getattr__` has special behavior: It allows loading a shared " "library by accessing it as attribute of a library loader instance. The " @@ -2431,39 +2439,39 @@ msgid "" "each time." msgstr "" -#: library/ctypes.rst:1620 +#: library/ctypes.rst:1626 msgid "" "Load a shared library into the process and return it. This method always " "returns a new instance of the library." msgstr "" -#: library/ctypes.rst:1624 +#: library/ctypes.rst:1630 msgid "These prefabricated library loaders are available:" msgstr "" -#: library/ctypes.rst:1629 +#: library/ctypes.rst:1635 msgid "Creates :class:`CDLL` instances." msgstr "" -#: library/ctypes.rst:1635 +#: library/ctypes.rst:1641 msgid "Creates :class:`WinDLL` instances." msgstr "" -#: library/ctypes.rst:1643 +#: library/ctypes.rst:1649 msgid "Creates :class:`OleDLL` instances." msgstr "" -#: library/ctypes.rst:1651 +#: library/ctypes.rst:1657 msgid "Creates :class:`PyDLL` instances." msgstr "" -#: library/ctypes.rst:1654 +#: library/ctypes.rst:1660 msgid "" "For accessing the C Python api directly, a ready-to-use Python shared " "library object is available:" msgstr "" -#: library/ctypes.rst:1660 +#: library/ctypes.rst:1666 msgid "" "An instance of :class:`PyDLL` that exposes Python C API functions as " "attributes. Note that all these functions are assumed to return C :c:expr:" @@ -2471,32 +2479,32 @@ msgid "" "correct :attr:`!restype` attribute to use these functions." msgstr "" -#: library/ctypes.rst:1667 +#: library/ctypes.rst:1673 msgid "" "Loading a library through any of these objects raises an :ref:`auditing " "event ` ``ctypes.dlopen`` with string argument ``name``, the name " "used to load the library." msgstr "" -#: library/ctypes.rst:1673 +#: library/ctypes.rst:1679 msgid "" "Accessing a function on a loaded library raises an auditing event ``ctypes." "dlsym`` with arguments ``library`` (the library object) and ``name`` (the " "symbol's name as a string or integer)." msgstr "" -#: library/ctypes.rst:1679 +#: library/ctypes.rst:1685 msgid "" "In cases when only the library handle is available rather than the object, " "accessing a function raises an auditing event ``ctypes.dlsym/handle`` with " "arguments ``handle`` (the raw library handle) and ``name``." msgstr "" -#: library/ctypes.rst:1686 +#: library/ctypes.rst:1692 msgid "Foreign functions" msgstr "" -#: library/ctypes.rst:1688 +#: library/ctypes.rst:1694 msgid "" "As explained in the previous section, foreign functions can be accessed as " "attributes of loaded shared libraries. The function objects created in this " @@ -2505,13 +2513,13 @@ msgid "" "library loader." msgstr "" -#: library/ctypes.rst:1693 +#: library/ctypes.rst:1699 msgid "" "They are instances of a private local class :class:`!_FuncPtr` (not exposed " "in :mod:`!ctypes`) which inherits from the private :class:`_CFuncPtr` class:" msgstr "" -#: library/ctypes.rst:1696 +#: library/ctypes.rst:1702 msgid "" ">>> import ctypes\n" ">>> lib = ctypes.CDLL(None)\n" @@ -2521,29 +2529,29 @@ msgid "" "False" msgstr "" -#: library/ctypes.rst:1707 +#: library/ctypes.rst:1713 msgid "Base class for C callable foreign functions." msgstr "" -#: library/ctypes.rst:1709 +#: library/ctypes.rst:1715 msgid "" "Instances of foreign functions are also C compatible data types; they " "represent C function pointers." msgstr "" -#: library/ctypes.rst:1712 +#: library/ctypes.rst:1718 msgid "" "This behavior can be customized by assigning to special attributes of the " "foreign function object." msgstr "" -#: library/ctypes.rst:1717 +#: library/ctypes.rst:1723 msgid "" "Assign a ctypes type to specify the result type of the foreign function. Use " "``None`` for :c:expr:`void`, a function not returning anything." msgstr "" -#: library/ctypes.rst:1720 +#: library/ctypes.rst:1726 msgid "" "It is possible to assign a callable Python object that is not a ctypes type, " "in this case the function is assumed to return a C :c:expr:`int`, and the " @@ -2553,7 +2561,7 @@ msgid "" "callable to the :attr:`errcheck` attribute." msgstr "" -#: library/ctypes.rst:1729 +#: library/ctypes.rst:1735 msgid "" "Assign a tuple of ctypes types to specify the argument types that the " "function accepts. Functions using the ``stdcall`` calling convention can " @@ -2562,7 +2570,7 @@ msgid "" "unspecified arguments as well." msgstr "" -#: library/ctypes.rst:1735 +#: library/ctypes.rst:1741 msgid "" "When a foreign function is called, each actual argument is passed to the :" "meth:`~_CData.from_param` class method of the items in the :attr:`argtypes` " @@ -2572,7 +2580,7 @@ msgid "" "object using ctypes conversion rules." msgstr "" -#: library/ctypes.rst:1742 +#: library/ctypes.rst:1748 msgid "" "New: It is now possible to put items in argtypes which are not ctypes types, " "but each item must have a :meth:`~_CData.from_param` method which returns a " @@ -2580,38 +2588,38 @@ msgid "" "defining adapters that can adapt custom objects as function parameters." msgstr "" -#: library/ctypes.rst:1749 +#: library/ctypes.rst:1755 msgid "" "Assign a Python function or another callable to this attribute. The callable " "will be called with three or more arguments:" msgstr "" -#: library/ctypes.rst:1756 +#: library/ctypes.rst:1762 msgid "" "*result* is what the foreign function returns, as specified by the :attr:`!" "restype` attribute." msgstr "" -#: library/ctypes.rst:1759 +#: library/ctypes.rst:1765 msgid "" "*func* is the foreign function object itself, this allows reusing the same " "callable object to check or post process the results of several functions." msgstr "" -#: library/ctypes.rst:1763 +#: library/ctypes.rst:1769 msgid "" "*arguments* is a tuple containing the parameters originally passed to the " "function call, this allows specializing the behavior on the arguments used." msgstr "" -#: library/ctypes.rst:1767 +#: library/ctypes.rst:1773 msgid "" "The object that this function returns will be returned from the foreign " "function call, but it can also check the result value and raise an exception " "if the foreign function call failed." msgstr "" -#: library/ctypes.rst:1774 +#: library/ctypes.rst:1780 msgid "" "On Windows, when a foreign function call raises a system exception (for " "example, due to an access violation), it will be captured and replaced with " @@ -2620,18 +2628,18 @@ msgid "" "hook to replace the exception with its own." msgstr "" -#: library/ctypes.rst:1782 +#: library/ctypes.rst:1788 msgid "" "Some ways to invoke foreign function calls as well as some of the functions " "in this module may raise an auditing event ``ctypes.call_function`` with " "arguments ``function pointer`` and ``arguments``." msgstr "" -#: library/ctypes.rst:1789 +#: library/ctypes.rst:1795 msgid "Function prototypes" msgstr "" -#: library/ctypes.rst:1791 +#: library/ctypes.rst:1797 msgid "" "Foreign functions can also be created by instantiating function prototypes. " "Function prototypes are similar to function prototypes in C; they describe a " @@ -2642,7 +2650,7 @@ msgid "" "``@wrapper`` syntax. See :ref:`ctypes-callback-functions` for examples." msgstr "" -#: library/ctypes.rst:1802 +#: library/ctypes.rst:1808 msgid "" "The returned function prototype creates functions that use the standard C " "calling convention. The function will release the GIL during the call. If " @@ -2651,37 +2659,37 @@ msgid "" "after the call; *use_last_error* does the same for the Windows error code." msgstr "" -#: library/ctypes.rst:1812 +#: library/ctypes.rst:1818 msgid "" "The returned function prototype creates functions that use the ``stdcall`` " "calling convention. The function will release the GIL during the call. " "*use_errno* and *use_last_error* have the same meaning as above." msgstr "" -#: library/ctypes.rst:1822 +#: library/ctypes.rst:1828 msgid "" "The returned function prototype creates functions that use the Python " "calling convention. The function will *not* release the GIL during the call." msgstr "" -#: library/ctypes.rst:1825 +#: library/ctypes.rst:1831 msgid "" "Function prototypes created by these factory functions can be instantiated " "in different ways, depending on the type and number of the parameters in the " "call:" msgstr "" -#: library/ctypes.rst:1832 +#: library/ctypes.rst:1838 msgid "" "Returns a foreign function at the specified address which must be an integer." msgstr "" -#: library/ctypes.rst:1839 +#: library/ctypes.rst:1845 msgid "" "Create a C callable function (a callback function) from a Python *callable*." msgstr "" -#: library/ctypes.rst:1846 +#: library/ctypes.rst:1852 msgid "" "Returns a foreign function exported by a shared library. *func_spec* must be " "a 2-tuple ``(name_or_ordinal, library)``. The first item is the name of the " @@ -2689,7 +2697,7 @@ msgid "" "small integer. The second item is the shared library instance." msgstr "" -#: library/ctypes.rst:1856 +#: library/ctypes.rst:1862 msgid "" "Returns a foreign function that will call a COM method. *vtbl_index* is the " "index into the virtual function table, a small non-negative integer. *name* " @@ -2697,86 +2705,86 @@ msgid "" "identifier which is used in extended error reporting." msgstr "" -#: library/ctypes.rst:1861 +#: library/ctypes.rst:1867 msgid "" "If *iid* is not specified, an :exc:`OSError` is raised if the COM method " "call fails. If *iid* is specified, a :exc:`~ctypes.COMError` is raised " "instead." msgstr "" -#: library/ctypes.rst:1865 +#: library/ctypes.rst:1871 msgid "" "COM methods use a special calling convention: They require a pointer to the " "COM interface as first argument, in addition to those parameters that are " "specified in the :attr:`!argtypes` tuple." msgstr "" -#: library/ctypes.rst:1872 +#: library/ctypes.rst:1878 msgid "" "The optional *paramflags* parameter creates foreign function wrappers with " "much more functionality than the features described above." msgstr "" -#: library/ctypes.rst:1875 +#: library/ctypes.rst:1881 msgid "" "*paramflags* must be a tuple of the same length as :attr:`~_CFuncPtr." "argtypes`." msgstr "" -#: library/ctypes.rst:1877 +#: library/ctypes.rst:1883 msgid "" "Each item in this tuple contains further information about a parameter, it " "must be a tuple containing one, two, or three items." msgstr "" -#: library/ctypes.rst:1880 +#: library/ctypes.rst:1886 msgid "" "The first item is an integer containing a combination of direction flags for " "the parameter:" msgstr "" -#: library/ctypes.rst:1883 +#: library/ctypes.rst:1889 msgid "1" msgstr "" -#: library/ctypes.rst:1884 +#: library/ctypes.rst:1890 msgid "Specifies an input parameter to the function." msgstr "" -#: library/ctypes.rst:1886 +#: library/ctypes.rst:1892 msgid "2" msgstr "" -#: library/ctypes.rst:1887 +#: library/ctypes.rst:1893 msgid "Output parameter. The foreign function fills in a value." msgstr "" -#: library/ctypes.rst:1889 +#: library/ctypes.rst:1895 msgid "4" msgstr "" -#: library/ctypes.rst:1890 +#: library/ctypes.rst:1896 msgid "Input parameter which defaults to the integer zero." msgstr "" -#: library/ctypes.rst:1892 +#: library/ctypes.rst:1898 msgid "" "The optional second item is the parameter name as string. If this is " "specified, the foreign function can be called with named parameters." msgstr "" -#: library/ctypes.rst:1895 +#: library/ctypes.rst:1901 msgid "The optional third item is the default value for this parameter." msgstr "" -#: library/ctypes.rst:1898 +#: library/ctypes.rst:1904 msgid "" "The following example demonstrates how to wrap the Windows ``MessageBoxW`` " "function so that it supports default parameters and named arguments. The C " "declaration from the windows header file is this::" msgstr "" -#: library/ctypes.rst:1902 +#: library/ctypes.rst:1908 msgid "" "WINUSERAPI int WINAPI\n" "MessageBoxW(\n" @@ -2786,11 +2794,11 @@ msgid "" " UINT uType);" msgstr "" -#: library/ctypes.rst:1932 +#: library/ctypes.rst:1938 msgid "Here is the wrapping with :mod:`ctypes`::" msgstr "" -#: library/ctypes.rst:1911 +#: library/ctypes.rst:1917 msgid "" ">>> from ctypes import c_int, WINFUNCTYPE, windll\n" ">>> from ctypes.wintypes import HWND, LPCWSTR, UINT\n" @@ -2800,18 +2808,18 @@ msgid "" ">>> MessageBox = prototype((\"MessageBoxW\", windll.user32), paramflags)" msgstr "" -#: library/ctypes.rst:1917 +#: library/ctypes.rst:1923 msgid "The ``MessageBox`` foreign function can now be called in these ways::" msgstr "" -#: library/ctypes.rst:1919 +#: library/ctypes.rst:1925 msgid "" ">>> MessageBox()\n" ">>> MessageBox(text=\"Spam, spam, spam\")\n" ">>> MessageBox(flags=2, text=\"foo bar\")" msgstr "" -#: library/ctypes.rst:1923 +#: library/ctypes.rst:1929 msgid "" "A second example demonstrates output parameters. The win32 " "``GetWindowRect`` function retrieves the dimensions of a specified window by " @@ -2819,7 +2827,7 @@ msgid "" "the C declaration::" msgstr "" -#: library/ctypes.rst:1927 +#: library/ctypes.rst:1933 msgid "" "WINUSERAPI BOOL WINAPI\n" "GetWindowRect(\n" @@ -2827,7 +2835,7 @@ msgid "" " LPRECT lpRect);" msgstr "" -#: library/ctypes.rst:1934 +#: library/ctypes.rst:1940 msgid "" ">>> from ctypes import POINTER, WINFUNCTYPE, windll, WinError\n" ">>> from ctypes.wintypes import BOOL, HWND, RECT\n" @@ -2838,7 +2846,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1941 +#: library/ctypes.rst:1947 msgid "" "Functions with output parameters will automatically return the output " "parameter value if there is a single one, or a tuple containing the output " @@ -2846,7 +2854,7 @@ msgid "" "now returns a RECT instance, when called." msgstr "" -#: library/ctypes.rst:1946 +#: library/ctypes.rst:1952 msgid "" "Output parameters can be combined with the :attr:`~_CFuncPtr.errcheck` " "protocol to do further output processing and error checking. The win32 " @@ -2855,7 +2863,7 @@ msgid "" "exception when the api call failed::" msgstr "" -#: library/ctypes.rst:1951 +#: library/ctypes.rst:1957 msgid "" ">>> def errcheck(result, func, args):\n" "... if not result:\n" @@ -2866,7 +2874,7 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1959 +#: library/ctypes.rst:1965 msgid "" "If the :attr:`~_CFuncPtr.errcheck` function returns the argument tuple it " "receives unchanged, :mod:`ctypes` continues the normal processing it does on " @@ -2875,7 +2883,7 @@ msgid "" "and return them instead, the normal processing will no longer take place::" msgstr "" -#: library/ctypes.rst:1965 +#: library/ctypes.rst:1971 msgid "" ">>> def errcheck(result, func, args):\n" "... if not result:\n" @@ -2887,62 +2895,62 @@ msgid "" ">>>" msgstr "" -#: library/ctypes.rst:1978 +#: library/ctypes.rst:1984 msgid "Utility functions" msgstr "" -#: library/ctypes.rst:1982 +#: library/ctypes.rst:1988 msgid "" "Returns the address of the memory buffer as integer. *obj* must be an " "instance of a ctypes type." msgstr "" -#: library/ctypes.rst:1985 +#: library/ctypes.rst:1991 msgid "" "Raises an :ref:`auditing event ` ``ctypes.addressof`` with " "argument ``obj``." msgstr "" -#: library/ctypes.rst:1990 +#: library/ctypes.rst:1996 msgid "" "Returns the alignment requirements of a ctypes type. *obj_or_type* must be a " "ctypes type or instance." msgstr "" -#: library/ctypes.rst:1996 +#: library/ctypes.rst:2002 msgid "" "Returns a light-weight pointer to *obj*, which must be an instance of a " "ctypes type. *offset* defaults to zero, and must be an integer that will be " "added to the internal pointer value." msgstr "" -#: library/ctypes.rst:2000 +#: library/ctypes.rst:2006 msgid "``byref(obj, offset)`` corresponds to this C code::" msgstr "" -#: library/ctypes.rst:2002 +#: library/ctypes.rst:2008 msgid "(((char *)&obj) + offset)" msgstr "" -#: library/ctypes.rst:2004 +#: library/ctypes.rst:2010 msgid "" "The returned object can only be used as a foreign function call parameter. " "It behaves similar to ``pointer(obj)``, but the construction is a lot faster." msgstr "" -#: library/ctypes.rst:2010 +#: library/ctypes.rst:2016 msgid "" "Copies a COM pointer from *src* to *dst* and returns the Windows specific :c:" "type:`!HRESULT` value." msgstr "" -#: library/ctypes.rst:2013 +#: library/ctypes.rst:2019 msgid "" "If *src* is not ``NULL``, its ``AddRef`` method is called, incrementing the " "reference count." msgstr "" -#: library/ctypes.rst:2016 +#: library/ctypes.rst:2022 msgid "" "In contrast, the reference count of *dst* will not be decremented before " "assigning the new value. Unless *dst* is ``NULL``, the caller is responsible " @@ -2950,7 +2958,7 @@ msgid "" "necessary." msgstr "" -#: library/ctypes.rst:2028 +#: library/ctypes.rst:2034 msgid "" "This function is similar to the cast operator in C. It returns a new " "instance of *type* which points to the same memory block as *obj*. *type* " @@ -2958,75 +2966,101 @@ msgid "" "as a pointer." msgstr "" -#: library/ctypes.rst:2036 +#: library/ctypes.rst:2043 msgid "" "This function creates a mutable character buffer. The returned object is a " "ctypes array of :class:`c_char`." msgstr "" -#: library/ctypes.rst:2039 +#: library/ctypes.rst:2046 +msgid "" +"If *size* is given (and not ``None``), it must be an :class:`int`. It " +"specifies the size of the returned array." +msgstr "" + +#: library/ctypes.rst:2049 msgid "" -"*init_or_size* must be an integer which specifies the size of the array, or " -"a bytes object which will be used to initialize the array items." +"If the *init* argument is given, it must be :class:`bytes`. It is used to " +"initialize the array items. Bytes not initialized this way are set to zero " +"(NUL)." msgstr "" -#: library/ctypes.rst:2042 +#: library/ctypes.rst:2053 msgid "" -"If a bytes object is specified as first argument, the buffer is made one " -"item larger than its length so that the last element in the array is a NUL " -"termination character. An integer can be passed as second argument which " -"allows specifying the size of the array if the length of the bytes should " -"not be used." +"If *size* is not given (or if it is ``None``), the buffer is made one " +"element larger than *init*, effectively adding a NUL terminator." msgstr "" -#: library/ctypes.rst:2047 +#: library/ctypes.rst:2056 +msgid "" +"If both arguments are given, *size* must not be less than ``len(init)``." +msgstr "" + +#: library/ctypes.rst:2060 +msgid "" +"If *size* is equal to ``len(init)``, a NUL terminator is not added. Do not " +"treat such a buffer as a C string." +msgstr "" + +#: library/ctypes.rst:2063 +msgid "For example::" +msgstr "" + +#: library/ctypes.rst:2065 +msgid "" +">>> bytes(create_string_buffer(2))\n" +"b'\\x00\\x00'\n" +">>> bytes(create_string_buffer(b'ab'))\n" +"b'ab\\x00'\n" +">>> bytes(create_string_buffer(b'ab', 2))\n" +"b'ab'\n" +">>> bytes(create_string_buffer(b'ab', 4))\n" +"b'ab\\x00\\x00'\n" +">>> bytes(create_string_buffer(b'abcdef', 2))\n" +"Traceback (most recent call last):\n" +" ...\n" +"ValueError: byte string too long" +msgstr "" + +#: library/ctypes.rst:2078 msgid "" "Raises an :ref:`auditing event ` ``ctypes.create_string_buffer`` " "with arguments ``init``, ``size``." msgstr "" -#: library/ctypes.rst:2052 +#: library/ctypes.rst:2084 msgid "" "This function creates a mutable unicode character buffer. The returned " "object is a ctypes array of :class:`c_wchar`." msgstr "" -#: library/ctypes.rst:2055 -msgid "" -"*init_or_size* must be an integer which specifies the size of the array, or " -"a string which will be used to initialize the array items." -msgstr "" - -#: library/ctypes.rst:2058 +#: library/ctypes.rst:2087 msgid "" -"If a string is specified as first argument, the buffer is made one item " -"larger than the length of the string so that the last element in the array " -"is a NUL termination character. An integer can be passed as second argument " -"which allows specifying the size of the array if the length of the string " -"should not be used." +"The function takes the same arguments as :func:`~create_string_buffer` " +"except *init* must be a string and *size* counts :class:`c_wchar`." msgstr "" -#: library/ctypes.rst:2064 +#: library/ctypes.rst:2090 msgid "" "Raises an :ref:`auditing event ` ``ctypes.create_unicode_buffer`` " "with arguments ``init``, ``size``." msgstr "" -#: library/ctypes.rst:2069 +#: library/ctypes.rst:2095 msgid "" "This function is a hook which allows implementing in-process COM servers " "with ctypes. It is called from the DllCanUnloadNow function that the " "_ctypes extension dll exports." msgstr "" -#: library/ctypes.rst:2078 +#: library/ctypes.rst:2104 msgid "" "This function is a hook which allows implementing in-process COM servers " "with ctypes. It is called from the DllGetClassObject function that the " "``_ctypes`` extension dll exports." msgstr "" -#: library/ctypes.rst:2088 +#: library/ctypes.rst:2114 msgid "" "Try to find a library and return a pathname. *name* is the library name " "without any prefix like ``lib``, suffix like ``.so``, ``.dylib`` or version " @@ -3034,21 +3068,21 @@ msgid "" "If no library can be found, returns ``None``." msgstr "" -#: library/ctypes.rst:2099 +#: library/ctypes.rst:2125 msgid "" "Returns the filename of the VC runtime library used by Python, and by the " "extension modules. If the name of the library cannot be determined, " "``None`` is returned." msgstr "" -#: library/ctypes.rst:2103 +#: library/ctypes.rst:2129 msgid "" "If you need to free memory, for example, allocated by an extension module " "with a call to the ``free(void *)``, it is important that you use the " "function in the same library that allocated the memory." msgstr "" -#: library/ctypes.rst:2113 +#: library/ctypes.rst:2139 msgid "" "Try to provide a list of paths of the shared libraries loaded into the " "current process. These paths are not normalized or processed in any way. " @@ -3056,72 +3090,72 @@ msgid "" "The exact functionality is system dependent." msgstr "" -#: library/ctypes.rst:2118 +#: library/ctypes.rst:2144 msgid "" "On most platforms, the first element of the list represents the current " "executable file. It may be an empty string." msgstr "" -#: library/ctypes.rst:2126 +#: library/ctypes.rst:2152 msgid "" "Returns a textual description of the error code *code*. If no error code is " "specified, the last error code is used by calling the Windows API function :" "func:`GetLastError`." msgstr "" -#: library/ctypes.rst:2135 +#: library/ctypes.rst:2161 msgid "" "Returns the last error code set by Windows in the calling thread. This " "function calls the Windows ``GetLastError()`` function directly, it does not " "return the ctypes-private copy of the error code." msgstr "" -#: library/ctypes.rst:2144 +#: library/ctypes.rst:2170 msgid "" "Returns the current value of the ctypes-private copy of the system :data:" "`errno` variable in the calling thread." msgstr "" -#: library/ctypes.rst:2147 +#: library/ctypes.rst:2173 msgid "" "Raises an :ref:`auditing event ` ``ctypes.get_errno`` with no " "arguments." msgstr "" -#: library/ctypes.rst:2151 +#: library/ctypes.rst:2177 msgid "" "Returns the current value of the ctypes-private copy of the system :data:`!" "LastError` variable in the calling thread." msgstr "" -#: library/ctypes.rst:2156 +#: library/ctypes.rst:2182 msgid "" "Raises an :ref:`auditing event ` ``ctypes.get_last_error`` with no " "arguments." msgstr "" -#: library/ctypes.rst:2161 +#: library/ctypes.rst:2187 msgid "" "Same as the standard C memmove library function: copies *count* bytes from " "*src* to *dst*. *dst* and *src* must be integers or ctypes instances that " "can be converted to pointers." msgstr "" -#: library/ctypes.rst:2168 +#: library/ctypes.rst:2194 msgid "" "Same as the standard C memset library function: fills the memory block at " "address *dst* with *count* bytes of value *c*. *dst* must be an integer " "specifying an address, or a ctypes instance." msgstr "" -#: library/ctypes.rst:2175 +#: library/ctypes.rst:2201 msgid "" "Create or return a ctypes pointer type. Pointer types are cached and reused " "internally, so calling this function repeatedly is cheap. *type* must be a " "ctypes type." msgstr "" -#: library/ctypes.rst:2181 +#: library/ctypes.rst:2207 msgid "" "The resulting pointer type is cached in the ``__pointer_type__`` attribute " "of *type*. It is possible to set this attribute before the first call to " @@ -3130,19 +3164,19 @@ msgid "" "relying on implementation details that may change in future Python versions." msgstr "" -#: library/ctypes.rst:2192 +#: library/ctypes.rst:2218 msgid "" "Create a new pointer instance, pointing to *obj*. The returned object is of " "the type ``POINTER(type(obj))``." msgstr "" -#: library/ctypes.rst:2195 +#: library/ctypes.rst:2221 msgid "" "Note: If you just want to pass a pointer to an object to a foreign function " "call, you should use ``byref(obj)`` which is much faster." msgstr "" -#: library/ctypes.rst:2201 +#: library/ctypes.rst:2227 msgid "" "This function resizes the internal memory buffer of *obj*, which must be an " "instance of a ctypes type. It is not possible to make the buffer smaller " @@ -3150,50 +3184,50 @@ msgid "" "but it is possible to enlarge the buffer." msgstr "" -#: library/ctypes.rst:2209 +#: library/ctypes.rst:2235 msgid "" "Set the current value of the ctypes-private copy of the system :data:`errno` " "variable in the calling thread to *value* and return the previous value." msgstr "" -#: library/ctypes.rst:2212 +#: library/ctypes.rst:2238 msgid "" "Raises an :ref:`auditing event ` ``ctypes.set_errno`` with " "argument ``errno``." msgstr "" -#: library/ctypes.rst:2217 +#: library/ctypes.rst:2243 msgid "" "Sets the current value of the ctypes-private copy of the system :data:`!" "LastError` variable in the calling thread to *value* and return the previous " "value." msgstr "" -#: library/ctypes.rst:2223 +#: library/ctypes.rst:2249 msgid "" "Raises an :ref:`auditing event ` ``ctypes.set_last_error`` with " "argument ``error``." msgstr "" -#: library/ctypes.rst:2228 +#: library/ctypes.rst:2254 msgid "" "Returns the size in bytes of a ctypes type or instance memory buffer. Does " "the same as the C ``sizeof`` operator." msgstr "" -#: library/ctypes.rst:2234 +#: library/ctypes.rst:2260 msgid "" "Return the byte string at *void \\*ptr*. If *size* is specified, it is used " "as size, otherwise the string is assumed to be zero-terminated." msgstr "" -#: library/ctypes.rst:2238 +#: library/ctypes.rst:2264 msgid "" "Raises an :ref:`auditing event ` ``ctypes.string_at`` with " "arguments ``ptr``, ``size``." msgstr "" -#: library/ctypes.rst:2243 +#: library/ctypes.rst:2269 msgid "" "Creates an instance of :exc:`OSError`. If *code* is not specified, :func:" "`GetLastError` is called to determine the error code. If *descr* is not " @@ -3201,39 +3235,39 @@ msgid "" "error." msgstr "" -#: library/ctypes.rst:2250 +#: library/ctypes.rst:2276 msgid "" "An instance of :exc:`WindowsError` used to be created, which is now an alias " "of :exc:`OSError`." msgstr "" -#: library/ctypes.rst:2257 +#: library/ctypes.rst:2283 msgid "" "Return the wide-character string at *void \\*ptr*. If *size* is specified, " "it is used as the number of characters of the string, otherwise the string " "is assumed to be zero-terminated." msgstr "" -#: library/ctypes.rst:2262 +#: library/ctypes.rst:2288 msgid "" "Raises an :ref:`auditing event ` ``ctypes.wstring_at`` with " "arguments ``ptr``, ``size``." msgstr "" -#: library/ctypes.rst:2267 +#: library/ctypes.rst:2293 msgid "" "Return a :class:`memoryview` object of length *size* that references memory " "starting at *void \\*ptr*." msgstr "" -#: library/ctypes.rst:2270 +#: library/ctypes.rst:2296 msgid "" "If *readonly* is true, the returned :class:`!memoryview` object can not be " "used to modify the underlying memory. (Changes made by other means will " "still be reflected in the returned object.)" msgstr "" -#: library/ctypes.rst:2275 +#: library/ctypes.rst:2301 msgid "" "This function is similar to :func:`string_at` with the key difference of not " "making a copy of the specified memory. It is a semantically equivalent (but " @@ -3243,17 +3277,17 @@ msgid "" "`~ctypes.byref` object.)" msgstr "" -#: library/ctypes.rst:2282 +#: library/ctypes.rst:2308 msgid "" "Raises an :ref:`auditing event ` ``ctypes.memoryview_at`` with " "arguments ``address``, ``size``, ``readonly``." msgstr "" -#: library/ctypes.rst:2290 +#: library/ctypes.rst:2316 msgid "Data types" msgstr "" -#: library/ctypes.rst:2295 +#: library/ctypes.rst:2321 msgid "" "This non-public class is the common base class of all ctypes data types. " "Among other things, all ctypes type instances contain a memory block that " @@ -3263,13 +3297,13 @@ msgid "" "alive in case the memory block contains pointers." msgstr "" -#: library/ctypes.rst:2302 +#: library/ctypes.rst:2328 msgid "" "Common methods of ctypes data types, these are all class methods (to be " "exact, they are methods of the :term:`metaclass`):" msgstr "" -#: library/ctypes.rst:2307 +#: library/ctypes.rst:2333 msgid "" "This method returns a ctypes instance that shares the buffer of the *source* " "object. The *source* object must support the writeable buffer interface. " @@ -3278,13 +3312,13 @@ msgid "" "exc:`ValueError` is raised." msgstr "" -#: library/ctypes.rst:2323 +#: library/ctypes.rst:2349 msgid "" "Raises an :ref:`auditing event ` ``ctypes.cdata/buffer`` with " "arguments ``pointer``, ``size``, ``offset``." msgstr "" -#: library/ctypes.rst:2317 +#: library/ctypes.rst:2343 msgid "" "This method creates a ctypes instance, copying the buffer from the *source* " "object buffer which must be readable. The optional *offset* parameter " @@ -3292,19 +3326,19 @@ msgid "" "If the source buffer is not large enough a :exc:`ValueError` is raised." msgstr "" -#: library/ctypes.rst:2327 +#: library/ctypes.rst:2353 msgid "" "This method returns a ctypes type instance using the memory specified by " "*address* which must be an integer." msgstr "" -#: library/ctypes.rst:2332 +#: library/ctypes.rst:2358 msgid "" "This method, and others that indirectly call this method, raises an :ref:" "`auditing event ` ``ctypes.cdata`` with argument ``address``." msgstr "" -#: library/ctypes.rst:2338 +#: library/ctypes.rst:2364 msgid "" "This method adapts *obj* to a ctypes type. It is called with the actual " "object used in a foreign function call when the type is present in the " @@ -3312,36 +3346,36 @@ msgid "" "object that can be used as a function call parameter." msgstr "" -#: library/ctypes.rst:2343 +#: library/ctypes.rst:2369 msgid "" "All ctypes data types have a default implementation of this classmethod that " "normally returns *obj* if that is an instance of the type. Some types " "accept other objects as well." msgstr "" -#: library/ctypes.rst:2349 +#: library/ctypes.rst:2375 msgid "" "This method returns a ctypes type instance exported by a shared library. " "*name* is the name of the symbol that exports the data, *library* is the " "loaded shared library." msgstr "" -#: library/ctypes.rst:2353 +#: library/ctypes.rst:2379 msgid "Common class variables of ctypes data types:" msgstr "" -#: library/ctypes.rst:2357 +#: library/ctypes.rst:2383 msgid "" "The pointer type that was created by calling :func:`POINTER` for " "corresponding ctypes data type. If a pointer type was not yet created, the " "attribute is missing." msgstr "" -#: library/ctypes.rst:2363 +#: library/ctypes.rst:2389 msgid "Common instance variables of ctypes data types:" msgstr "" -#: library/ctypes.rst:2367 +#: library/ctypes.rst:2393 msgid "" "Sometimes ctypes data instances do not own the memory block they contain, " "instead they share part of the memory block of a base object. The :attr:" @@ -3349,13 +3383,13 @@ msgid "" "block." msgstr "" -#: library/ctypes.rst:2374 +#: library/ctypes.rst:2400 msgid "" "This read-only variable is true when the ctypes data instance has allocated " "the memory block itself, false otherwise." msgstr "" -#: library/ctypes.rst:2379 +#: library/ctypes.rst:2405 msgid "" "This member is either ``None`` or a dictionary containing Python objects " "that need to be kept alive so that the memory block contents is kept valid. " @@ -3363,7 +3397,7 @@ msgid "" "dictionary." msgstr "" -#: library/ctypes.rst:2392 +#: library/ctypes.rst:2418 msgid "" "This non-public class is the base class of all fundamental ctypes data " "types. It is mentioned here because it contains the common attributes of the " @@ -3372,11 +3406,11 @@ msgid "" "types that are not and do not contain pointers can now be pickled." msgstr "" -#: library/ctypes.rst:2398 +#: library/ctypes.rst:2424 msgid "Instances have a single attribute:" msgstr "" -#: library/ctypes.rst:2402 +#: library/ctypes.rst:2428 msgid "" "This attribute contains the actual value of the instance. For integer and " "pointer types, it is an integer, for character types, it is a single " @@ -3384,7 +3418,7 @@ msgid "" "bytes object or string." msgstr "" -#: library/ctypes.rst:2407 +#: library/ctypes.rst:2433 msgid "" "When the ``value`` attribute is retrieved from a ctypes instance, usually a " "new object is returned each time. :mod:`ctypes` does *not* implement " @@ -3392,7 +3426,7 @@ msgid "" "true for all other ctypes object instances." msgstr "" -#: library/ctypes.rst:2413 +#: library/ctypes.rst:2439 msgid "" "Fundamental data types, when returned as foreign function call results, or, " "for example, by retrieving structure field members or array items, are " @@ -3402,7 +3436,7 @@ msgid "" "instance." msgstr "" -#: library/ctypes.rst:2421 +#: library/ctypes.rst:2447 msgid "" "Subclasses of fundamental data types do *not* inherit this behavior. So, if " "a foreign functions :attr:`!restype` is a subclass of :class:`c_void_p`, you " @@ -3410,25 +3444,25 @@ msgid "" "you can get the value of the pointer by accessing the ``value`` attribute." msgstr "" -#: library/ctypes.rst:2426 +#: library/ctypes.rst:2452 msgid "These are the fundamental ctypes data types:" msgstr "" -#: library/ctypes.rst:2430 +#: library/ctypes.rst:2456 msgid "" "Represents the C :c:expr:`signed char` datatype, and interprets the value as " "small integer. The constructor accepts an optional integer initializer; no " "overflow checking is done." msgstr "" -#: library/ctypes.rst:2437 +#: library/ctypes.rst:2463 msgid "" "Represents the C :c:expr:`char` datatype, and interprets the value as a " "single character. The constructor accepts an optional string initializer, " "the length of the string must be exactly one character." msgstr "" -#: library/ctypes.rst:2444 +#: library/ctypes.rst:2470 msgid "" "Represents the C :c:expr:`char *` datatype when it points to a zero-" "terminated string. For a general character pointer that may also point to " @@ -3436,204 +3470,204 @@ msgid "" "integer address, or a bytes object." msgstr "" -#: library/ctypes.rst:2452 +#: library/ctypes.rst:2478 msgid "" "Represents the C :c:expr:`double` datatype. The constructor accepts an " "optional float initializer." msgstr "" -#: library/ctypes.rst:2458 +#: library/ctypes.rst:2484 msgid "" "Represents the C :c:expr:`long double` datatype. The constructor accepts an " "optional float initializer. On platforms where ``sizeof(long double) == " "sizeof(double)`` it is an alias to :class:`c_double`." msgstr "" -#: library/ctypes.rst:2464 +#: library/ctypes.rst:2490 msgid "" "Represents the C :c:expr:`float` datatype. The constructor accepts an " "optional float initializer." msgstr "" -#: library/ctypes.rst:2470 +#: library/ctypes.rst:2496 msgid "" "Represents the C :c:expr:`double complex` datatype, if available. The " "constructor accepts an optional :class:`complex` initializer." msgstr "" -#: library/ctypes.rst:2478 +#: library/ctypes.rst:2504 msgid "" "Represents the C :c:expr:`float complex` datatype, if available. The " "constructor accepts an optional :class:`complex` initializer." msgstr "" -#: library/ctypes.rst:2486 +#: library/ctypes.rst:2512 msgid "" "Represents the C :c:expr:`long double complex` datatype, if available. The " "constructor accepts an optional :class:`complex` initializer." msgstr "" -#: library/ctypes.rst:2494 +#: library/ctypes.rst:2520 msgid "" "Represents the C :c:expr:`signed int` datatype. The constructor accepts an " "optional integer initializer; no overflow checking is done. On platforms " "where ``sizeof(int) == sizeof(long)`` it is an alias to :class:`c_long`." msgstr "" -#: library/ctypes.rst:2501 +#: library/ctypes.rst:2527 msgid "" "Represents the C 8-bit :c:expr:`signed int` datatype. Usually an alias for :" "class:`c_byte`." msgstr "" -#: library/ctypes.rst:2507 +#: library/ctypes.rst:2533 msgid "" "Represents the C 16-bit :c:expr:`signed int` datatype. Usually an alias " "for :class:`c_short`." msgstr "" -#: library/ctypes.rst:2513 +#: library/ctypes.rst:2539 msgid "" "Represents the C 32-bit :c:expr:`signed int` datatype. Usually an alias " "for :class:`c_int`." msgstr "" -#: library/ctypes.rst:2519 +#: library/ctypes.rst:2545 msgid "" "Represents the C 64-bit :c:expr:`signed int` datatype. Usually an alias " "for :class:`c_longlong`." msgstr "" -#: library/ctypes.rst:2525 +#: library/ctypes.rst:2551 msgid "" "Represents the C :c:expr:`signed long` datatype. The constructor accepts an " "optional integer initializer; no overflow checking is done." msgstr "" -#: library/ctypes.rst:2531 +#: library/ctypes.rst:2557 msgid "" "Represents the C :c:expr:`signed long long` datatype. The constructor " "accepts an optional integer initializer; no overflow checking is done." msgstr "" -#: library/ctypes.rst:2537 +#: library/ctypes.rst:2563 msgid "" "Represents the C :c:expr:`signed short` datatype. The constructor accepts " "an optional integer initializer; no overflow checking is done." msgstr "" -#: library/ctypes.rst:2543 +#: library/ctypes.rst:2569 msgid "Represents the C :c:type:`size_t` datatype." msgstr "" -#: library/ctypes.rst:2548 +#: library/ctypes.rst:2574 msgid "Represents the C :c:type:`ssize_t` datatype." msgstr "" -#: library/ctypes.rst:2555 +#: library/ctypes.rst:2581 msgid "Represents the C :c:type:`time_t` datatype." msgstr "" -#: library/ctypes.rst:2562 +#: library/ctypes.rst:2588 msgid "" "Represents the C :c:expr:`unsigned char` datatype, it interprets the value " "as small integer. The constructor accepts an optional integer initializer; " "no overflow checking is done." msgstr "" -#: library/ctypes.rst:2569 +#: library/ctypes.rst:2595 msgid "" "Represents the C :c:expr:`unsigned int` datatype. The constructor accepts " "an optional integer initializer; no overflow checking is done. On platforms " "where ``sizeof(int) == sizeof(long)`` it is an alias for :class:`c_ulong`." msgstr "" -#: library/ctypes.rst:2576 +#: library/ctypes.rst:2602 msgid "" "Represents the C 8-bit :c:expr:`unsigned int` datatype. Usually an alias " "for :class:`c_ubyte`." msgstr "" -#: library/ctypes.rst:2582 +#: library/ctypes.rst:2608 msgid "" "Represents the C 16-bit :c:expr:`unsigned int` datatype. Usually an alias " "for :class:`c_ushort`." msgstr "" -#: library/ctypes.rst:2588 +#: library/ctypes.rst:2614 msgid "" "Represents the C 32-bit :c:expr:`unsigned int` datatype. Usually an alias " "for :class:`c_uint`." msgstr "" -#: library/ctypes.rst:2594 +#: library/ctypes.rst:2620 msgid "" "Represents the C 64-bit :c:expr:`unsigned int` datatype. Usually an alias " "for :class:`c_ulonglong`." msgstr "" -#: library/ctypes.rst:2600 +#: library/ctypes.rst:2626 msgid "" "Represents the C :c:expr:`unsigned long` datatype. The constructor accepts " "an optional integer initializer; no overflow checking is done." msgstr "" -#: library/ctypes.rst:2606 +#: library/ctypes.rst:2632 msgid "" "Represents the C :c:expr:`unsigned long long` datatype. The constructor " "accepts an optional integer initializer; no overflow checking is done." msgstr "" -#: library/ctypes.rst:2612 +#: library/ctypes.rst:2638 msgid "" "Represents the C :c:expr:`unsigned short` datatype. The constructor accepts " "an optional integer initializer; no overflow checking is done." msgstr "" -#: library/ctypes.rst:2618 +#: library/ctypes.rst:2644 msgid "" "Represents the C :c:expr:`void *` type. The value is represented as " "integer. The constructor accepts an optional integer initializer." msgstr "" -#: library/ctypes.rst:2624 +#: library/ctypes.rst:2650 msgid "" "Represents the C :c:type:`wchar_t` datatype, and interprets the value as a " "single character unicode string. The constructor accepts an optional string " "initializer, the length of the string must be exactly one character." msgstr "" -#: library/ctypes.rst:2631 +#: library/ctypes.rst:2657 msgid "" "Represents the C :c:expr:`wchar_t *` datatype, which must be a pointer to a " "zero-terminated wide character string. The constructor accepts an integer " "address, or a string." msgstr "" -#: library/ctypes.rst:2638 +#: library/ctypes.rst:2664 msgid "" "Represent the C :c:expr:`bool` datatype (more accurately, :c:expr:`_Bool` " "from C99). Its value can be ``True`` or ``False``, and the constructor " "accepts any object that has a truth value." msgstr "" -#: library/ctypes.rst:2645 +#: library/ctypes.rst:2671 msgid "" "Represents a :c:type:`!HRESULT` value, which contains success or error " "information for a function or method call." msgstr "" -#: library/ctypes.rst:2653 +#: library/ctypes.rst:2679 msgid "" "Represents the C :c:expr:`PyObject *` datatype. Calling this without an " "argument creates a ``NULL`` :c:expr:`PyObject *` pointer." msgstr "" -#: library/ctypes.rst:2656 +#: library/ctypes.rst:2682 msgid ":class:`!py_object` is now a :term:`generic type`." msgstr "" -#: library/ctypes.rst:2659 +#: library/ctypes.rst:2685 msgid "" "The :mod:`!ctypes.wintypes` module provides quite some other Windows " "specific data types, for example :c:type:`!HWND`, :c:type:`!WPARAM`, or :c:" @@ -3641,47 +3675,47 @@ msgid "" "are also defined." msgstr "" -#: library/ctypes.rst:2667 +#: library/ctypes.rst:2693 msgid "Structured data types" msgstr "" -#: library/ctypes.rst:2672 +#: library/ctypes.rst:2698 msgid "Abstract base class for unions in native byte order." msgstr "" -#: library/ctypes.rst:2674 +#: library/ctypes.rst:2700 msgid "" "Unions share common attributes and behavior with structures; see :class:" "`Structure` documentation for details." msgstr "" -#: library/ctypes.rst:2679 +#: library/ctypes.rst:2705 msgid "Abstract base class for unions in *big endian* byte order." msgstr "" -#: library/ctypes.rst:2685 +#: library/ctypes.rst:2711 msgid "Abstract base class for unions in *little endian* byte order." msgstr "" -#: library/ctypes.rst:2691 +#: library/ctypes.rst:2717 msgid "Abstract base class for structures in *big endian* byte order." msgstr "" -#: library/ctypes.rst:2696 +#: library/ctypes.rst:2722 msgid "Abstract base class for structures in *little endian* byte order." msgstr "" -#: library/ctypes.rst:2698 +#: library/ctypes.rst:2724 msgid "" "Structures and unions with non-native byte order cannot contain pointer type " "fields, or any other data types containing pointer type fields." msgstr "" -#: library/ctypes.rst:2704 +#: library/ctypes.rst:2730 msgid "Abstract base class for structures in *native* byte order." msgstr "" -#: library/ctypes.rst:2706 +#: library/ctypes.rst:2732 msgid "" "Concrete structure and union types must be created by subclassing one of " "these types, and at least define a :attr:`_fields_` class variable. :mod:" @@ -3689,34 +3723,34 @@ msgid "" "the fields by direct attribute accesses. These are the" msgstr "" -#: library/ctypes.rst:2714 +#: library/ctypes.rst:2740 msgid "" "A sequence defining the structure fields. The items must be 2-tuples or 3-" "tuples. The first item is the name of the field, the second item specifies " "the type of the field; it can be any ctypes data type." msgstr "" -#: library/ctypes.rst:2718 +#: library/ctypes.rst:2744 msgid "" "For integer type fields like :class:`c_int`, a third optional item can be " "given. It must be a small positive integer defining the bit width of the " "field." msgstr "" -#: library/ctypes.rst:2722 +#: library/ctypes.rst:2748 msgid "" "Field names must be unique within one structure or union. This is not " "checked, only one field can be accessed when names are repeated." msgstr "" -#: library/ctypes.rst:2725 +#: library/ctypes.rst:2751 msgid "" "It is possible to define the :attr:`_fields_` class variable *after* the " "class statement that defines the Structure subclass, this allows creating " "data types that directly or indirectly reference themselves::" msgstr "" -#: library/ctypes.rst:2729 +#: library/ctypes.rst:2755 msgid "" "class List(Structure):\n" " pass\n" @@ -3725,13 +3759,13 @@ msgid "" " ]" msgstr "" -#: library/ctypes.rst:2735 +#: library/ctypes.rst:2761 msgid "" "The :attr:`!_fields_` class variable can only be set once. Later assignments " "will raise an :exc:`AttributeError`." msgstr "" -#: library/ctypes.rst:2738 +#: library/ctypes.rst:2764 msgid "" "Additionally, the :attr:`!_fields_` class variable must be defined before " "the structure or union type is first used: an instance or subclass is " @@ -3741,13 +3775,13 @@ msgid "" "fields, as if :attr:`!_fields_` was empty." msgstr "" -#: library/ctypes.rst:2746 +#: library/ctypes.rst:2772 msgid "" "Sub-subclasses of structure types inherit the fields of the base class plus " "the :attr:`_fields_` defined in the sub-subclass, if any." msgstr "" -#: library/ctypes.rst:2752 +#: library/ctypes.rst:2778 msgid "" "An optional small integer that allows overriding the alignment of structure " "fields in the instance. :attr:`_pack_` must already be defined when :attr:" @@ -3755,11 +3789,11 @@ msgid "" "attribute to 0 is the same as not setting it at all." msgstr "" -#: library/ctypes.rst:2757 +#: library/ctypes.rst:2783 msgid "This is only implemented for the MSVC-compatible memory layout." msgstr "" -#: library/ctypes.rst:2761 +#: library/ctypes.rst:2787 msgid "" "For historical reasons, if :attr:`!_pack_` is non-zero, the MSVC-compatible " "layout will be used by default. On non-Windows platforms, this default is " @@ -3767,33 +3801,33 @@ msgid "" "intended, set :attr:`~Structure._layout_` to ``'ms'`` explicitly." msgstr "" -#: library/ctypes.rst:2770 +#: library/ctypes.rst:2796 msgid "" "An optional small integer that allows overriding the alignment of the " "structure when being packed or unpacked to/from memory. Setting this " "attribute to 0 is the same as not setting it at all." msgstr "" -#: library/ctypes.rst:2778 +#: library/ctypes.rst:2804 msgid "" "An optional string naming the struct/union layout. It can currently be set " "to:" msgstr "" -#: library/ctypes.rst:2781 +#: library/ctypes.rst:2807 msgid "" "``\"ms\"``: the layout used by the Microsoft compiler (MSVC). On GCC and " "Clang, this layout can be selected with ``__attribute__((ms_struct))``." msgstr "" -#: library/ctypes.rst:2784 +#: library/ctypes.rst:2810 msgid "" "``\"gcc-sysv\"``: the layout used by GCC with the System V or “SysV-like” " "data model, as used on Linux and macOS. With this layout, :attr:`~Structure." "_pack_` must be unset or zero." msgstr "" -#: library/ctypes.rst:2788 +#: library/ctypes.rst:2814 msgid "" "If not set explicitly, ``ctypes`` will use a default that matches the " "platform conventions. This default may change in future Python releases (for " @@ -3801,34 +3835,34 @@ msgid "" "between similar platforms is found). Currently the default will be:" msgstr "" -#: library/ctypes.rst:2794 +#: library/ctypes.rst:2820 msgid "On Windows: ``\"ms\"``" msgstr "" -#: library/ctypes.rst:2795 +#: library/ctypes.rst:2821 msgid "" "When :attr:`~Structure._pack_` is specified: ``\"ms\"``. (This is " "deprecated; see :attr:`~Structure._pack_` documentation.)" msgstr "" -#: library/ctypes.rst:2797 +#: library/ctypes.rst:2823 msgid "Otherwise: ``\"gcc-sysv\"``" msgstr "" -#: library/ctypes.rst:2799 +#: library/ctypes.rst:2825 msgid "" ":attr:`!_layout_` must already be defined when :attr:`~Structure._fields_` " "is assigned, otherwise it will have no effect." msgstr "" -#: library/ctypes.rst:2806 +#: library/ctypes.rst:2832 msgid "" "An optional sequence that lists the names of unnamed (anonymous) fields. :" "attr:`_anonymous_` must be already defined when :attr:`_fields_` is " "assigned, otherwise it will have no effect." msgstr "" -#: library/ctypes.rst:2810 +#: library/ctypes.rst:2836 msgid "" "The fields listed in this variable must be structure or union type fields. :" "mod:`ctypes` will create descriptors in the structure type that allows " @@ -3836,11 +3870,11 @@ msgid "" "structure or union field." msgstr "" -#: library/ctypes.rst:2815 +#: library/ctypes.rst:2841 msgid "Here is an example type (Windows)::" msgstr "" -#: library/ctypes.rst:2817 +#: library/ctypes.rst:2843 msgid "" "class _U(Union):\n" " _fields_ = [(\"lptdesc\", POINTER(TYPEDESC)),\n" @@ -3853,7 +3887,7 @@ msgid "" " (\"vt\", VARTYPE)]" msgstr "" -#: library/ctypes.rst:2828 +#: library/ctypes.rst:2854 msgid "" "The ``TYPEDESC`` structure describes a COM data type, the ``vt`` field " "specifies which one of the union fields is valid. Since the ``u`` field is " @@ -3863,7 +3897,7 @@ msgid "" "temporary union instance::" msgstr "" -#: library/ctypes.rst:2835 +#: library/ctypes.rst:2861 msgid "" "td = TYPEDESC()\n" "td.vt = VT_PTR\n" @@ -3871,7 +3905,7 @@ msgid "" "td.u.lptdesc = POINTER(some_type)" msgstr "" -#: library/ctypes.rst:2840 +#: library/ctypes.rst:2866 msgid "" "It is possible to define sub-subclasses of structures, they inherit the " "fields of the base class. If the subclass definition has a separate :attr:" @@ -3879,7 +3913,7 @@ msgid "" "of the base class." msgstr "" -#: library/ctypes.rst:2845 +#: library/ctypes.rst:2871 msgid "" "Structure and union constructors accept both positional and keyword " "arguments. Positional arguments are used to initialize member fields in the " @@ -3889,13 +3923,13 @@ msgid "" "names not present in :attr:`_fields_`." msgstr "" -#: library/ctypes.rst:2855 +#: library/ctypes.rst:2881 msgid "" "Descriptor for fields of a :class:`Structure` and :class:`Union`. For " "example::" msgstr "" -#: library/ctypes.rst:2858 +#: library/ctypes.rst:2884 msgid "" ">>> class Color(Structure):\n" "... _fields_ = (\n" @@ -3918,100 +3952,100 @@ msgid "" "1" msgstr "" -#: library/ctypes.rst:2878 +#: library/ctypes.rst:2904 msgid "All attributes are read-only." msgstr "" -#: library/ctypes.rst:2880 +#: library/ctypes.rst:2906 msgid "" ":class:`!CField` objects are created via :attr:`~Structure._fields_`; do not " "instantiate the class directly." msgstr "" -#: library/ctypes.rst:2885 +#: library/ctypes.rst:2911 msgid "" "Previously, descriptors only had ``offset`` and ``size`` attributes and a " "readable string representation; the :class:`!CField` class was not available " "directly." msgstr "" -#: library/ctypes.rst:2891 +#: library/ctypes.rst:2917 msgid "Name of the field, as a string." msgstr "" -#: library/ctypes.rst:2895 +#: library/ctypes.rst:2921 msgid "Type of the field, as a :ref:`ctypes class `." msgstr "" -#: library/ctypes.rst:2900 +#: library/ctypes.rst:2926 msgid "Offset of the field, in bytes." msgstr "" -#: library/ctypes.rst:2902 +#: library/ctypes.rst:2928 msgid "" "For bitfields, this is the offset of the underlying byte-aligned *storage " "unit*; see :attr:`~CField.bit_offset`." msgstr "" -#: library/ctypes.rst:2907 +#: library/ctypes.rst:2933 msgid "Size of the field, in bytes." msgstr "" -#: library/ctypes.rst:2909 +#: library/ctypes.rst:2935 msgid "" "For bitfields, this is the size of the underlying *storage unit*. Typically, " "it has the same size as the bitfield's type." msgstr "" -#: library/ctypes.rst:2914 +#: library/ctypes.rst:2940 msgid "For non-bitfields, equivalent to :attr:`~CField.byte_size`." msgstr "" -#: library/ctypes.rst:2916 +#: library/ctypes.rst:2942 msgid "" "For bitfields, this contains a backwards-compatible bit-packed value that " "combines :attr:`~CField.bit_size` and :attr:`~CField.bit_offset`. Prefer " "using the explicit attributes instead." msgstr "" -#: library/ctypes.rst:2923 +#: library/ctypes.rst:2949 msgid "True if this is a bitfield." msgstr "" -#: library/ctypes.rst:2928 +#: library/ctypes.rst:2954 msgid "" "The location of a bitfield within its *storage unit*, that is, within :attr:" "`~CField.byte_size` bytes of memory starting at :attr:`~CField.byte_offset`." msgstr "" -#: library/ctypes.rst:2932 +#: library/ctypes.rst:2958 msgid "" "To get the field's value, read the storage unit as an integer, :ref:`shift " "left ` by :attr:`!bit_offset` and take the :attr:`!bit_size` least " "significant bits." msgstr "" -#: library/ctypes.rst:2936 +#: library/ctypes.rst:2962 msgid "" "For non-bitfields, :attr:`!bit_offset` is zero and :attr:`!bit_size` is " "equal to ``byte_size * 8``." msgstr "" -#: library/ctypes.rst:2941 +#: library/ctypes.rst:2967 msgid "" "True if this field is anonymous, that is, it contains nested sub-fields that " "should be be merged into a containing structure or union." msgstr "" -#: library/ctypes.rst:2948 +#: library/ctypes.rst:2974 msgid "Arrays and pointers" msgstr "" -#: library/ctypes.rst:2952 +#: library/ctypes.rst:2978 msgid "Abstract base class for arrays." msgstr "" -#: library/ctypes.rst:2954 +#: library/ctypes.rst:2980 msgid "" "The recommended way to create concrete array types is by multiplying any :" "mod:`ctypes` data type with a non-negative integer. Alternatively, you can " @@ -4021,46 +4055,46 @@ msgid "" "an :class:`Array`." msgstr "" -#: library/ctypes.rst:2964 +#: library/ctypes.rst:2990 msgid "" "A positive integer specifying the number of elements in the array. Out-of-" "range subscripts result in an :exc:`IndexError`. Will be returned by :func:" "`len`." msgstr "" -#: library/ctypes.rst:2971 +#: library/ctypes.rst:2997 msgid "Specifies the type of each element in the array." msgstr "" -#: library/ctypes.rst:2974 +#: library/ctypes.rst:3000 msgid "" "Array subclass constructors accept positional arguments, used to initialize " "the elements in order." msgstr "" -#: library/ctypes.rst:2979 +#: library/ctypes.rst:3005 msgid "" "Create an array. Equivalent to ``type * length``, where *type* is a :mod:" "`ctypes` data type and *length* an integer." msgstr "" -#: library/ctypes.rst:2983 +#: library/ctypes.rst:3009 msgid "" "This function is :term:`soft deprecated` in favor of multiplication. There " "are no plans to remove it." msgstr "" -#: library/ctypes.rst:2989 +#: library/ctypes.rst:3015 msgid "Private, abstract base class for pointers." msgstr "" -#: library/ctypes.rst:2991 +#: library/ctypes.rst:3017 msgid "" "Concrete pointer types are created by calling :func:`POINTER` with the type " "that will be pointed to; this is done automatically by :func:`pointer`." msgstr "" -#: library/ctypes.rst:2995 +#: library/ctypes.rst:3021 msgid "" "If a pointer points to an array, its elements can be read and written using " "standard subscript and slice accesses. Pointer objects have no size, so :" @@ -4069,43 +4103,43 @@ msgid "" "probably crash with an access violation (if you're lucky)." msgstr "" -#: library/ctypes.rst:3005 +#: library/ctypes.rst:3031 msgid "Specifies the type pointed to." msgstr "" -#: library/ctypes.rst:3009 +#: library/ctypes.rst:3035 msgid "" "Returns the object to which to pointer points. Assigning to this attribute " "changes the pointer to point to the assigned object." msgstr "" -#: library/ctypes.rst:3016 +#: library/ctypes.rst:3042 msgid "Exceptions" msgstr "" -#: library/ctypes.rst:3020 +#: library/ctypes.rst:3046 msgid "" "This exception is raised when a foreign function call cannot convert one of " "the passed arguments." msgstr "" -#: library/ctypes.rst:3026 +#: library/ctypes.rst:3052 msgid "This exception is raised when a COM method call failed." msgstr "" -#: library/ctypes.rst:3030 +#: library/ctypes.rst:3056 msgid "The integer value representing the error code." msgstr "" -#: library/ctypes.rst:3034 +#: library/ctypes.rst:3060 msgid "The error message." msgstr "" -#: library/ctypes.rst:3038 +#: library/ctypes.rst:3064 msgid "The 5-tuple ``(descr, source, helpfile, helpcontext, progid)``." msgstr "" -#: library/ctypes.rst:3040 +#: library/ctypes.rst:3066 msgid "" "*descr* is the textual description. *source* is the language-dependent " "``ProgID`` for the class or application that raised the error. *helpfile* " diff --git a/library/curses.ascii.po b/library/curses.ascii.po index c97dfa3a..22d3124f 100644 --- a/library/curses.ascii.po +++ b/library/curses.ascii.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/curses.panel.po b/library/curses.panel.po index 14317cee..d83b0d0d 100644 --- a/library/curses.panel.po +++ b/library/curses.panel.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/curses.po b/library/curses.po index a3592b95..f8164a09 100644 --- a/library/curses.po +++ b/library/curses.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -290,7 +290,7 @@ msgid "" "const:`BUTTON_ALT`." msgstr "" -#: library/curses.rst:1789 +#: library/curses.rst:1797 msgid "" "The ``BUTTON5_*`` constants are now exposed if they are provided by the " "underlying curses library." @@ -1137,22 +1137,27 @@ msgstr "" #: library/curses.rst:990 msgid "" -"Read a bytes object from the user, with primitive line editing capacity." +"Read a bytes object from the user, with primitive line editing capacity. The " +"maximum value for *n* is 2047." msgstr "" -#: library/curses.rst:995 +#: library/curses.rst:1088 +msgid "The maximum value for *n* was increased from 1023 to 2047." +msgstr "" + +#: library/curses.rst:999 msgid "" "Return a tuple ``(y, x)`` of current cursor position relative to the " "window's upper-left corner." msgstr "" -#: library/curses.rst:1002 +#: library/curses.rst:1006 msgid "" "Display a horizontal line starting at ``(y, x)`` with length *n* consisting " "of the character *ch*." msgstr "" -#: library/curses.rst:1008 +#: library/curses.rst:1012 msgid "" "If *flag* is ``False``, curses no longer considers using the hardware insert/" "delete character feature of the terminal; if *flag* is ``True``, use of " @@ -1160,13 +1165,13 @@ msgid "" "initialized, use of character insert/delete is enabled by default." msgstr "" -#: library/curses.rst:1016 +#: library/curses.rst:1020 msgid "" "If *flag* is ``True``, :mod:`curses` will try and use hardware line editing " "facilities. Otherwise, line insertion/deletion are disabled." msgstr "" -#: library/curses.rst:1022 +#: library/curses.rst:1026 msgid "" "If *flag* is ``True``, any change in the window image automatically causes " "the window to be refreshed; you no longer have to call :meth:`refresh` " @@ -1174,19 +1179,19 @@ msgid "" "calls to wrefresh. This option is disabled by default." msgstr "" -#: library/curses.rst:1030 +#: library/curses.rst:1034 msgid "" "Return the character at the given position in the window. The bottom 8 bits " "are the character proper, and upper bits are the attributes." msgstr "" -#: library/curses.rst:1037 +#: library/curses.rst:1041 msgid "" "Paint character *ch* at ``(y, x)`` with attributes *attr*, moving the line " "from position *x* right by one character." msgstr "" -#: library/curses.rst:1043 +#: library/curses.rst:1047 msgid "" "Insert *nlines* lines into the specified window above the current line. The " "*nlines* bottom lines are lost. For negative *nlines*, delete *nlines* " @@ -1195,13 +1200,13 @@ msgid "" "remains the same." msgstr "" -#: library/curses.rst:1052 +#: library/curses.rst:1056 msgid "" "Insert a blank line under the cursor. All following lines are moved down by " "one line." msgstr "" -#: library/curses.rst:1059 +#: library/curses.rst:1063 msgid "" "Insert a character string (as many characters as will fit on the line) " "before the character under the cursor, up to *n* characters. If *n* is " @@ -1211,7 +1216,7 @@ msgid "" "if specified)." msgstr "" -#: library/curses.rst:1069 +#: library/curses.rst:1073 msgid "" "Insert a character string (as many characters as will fit on the line) " "before the character under the cursor. All characters to the right of the " @@ -1220,84 +1225,85 @@ msgid "" "specified)." msgstr "" -#: library/curses.rst:1078 +#: library/curses.rst:1082 msgid "" "Return a bytes object of characters, extracted from the window starting at " "the current cursor position, or at *y*, *x* if specified. Attributes are " "stripped from the characters. If *n* is specified, :meth:`instr` returns a " -"string at most *n* characters long (exclusive of the trailing NUL)." +"string at most *n* characters long (exclusive of the trailing NUL). The " +"maximum value for *n* is 2047." msgstr "" -#: library/curses.rst:1086 +#: library/curses.rst:1094 msgid "" "Return ``True`` if the specified line was modified since the last call to :" "meth:`refresh`; otherwise return ``False``. Raise a :exc:`curses.error` " "exception if *line* is not valid for the given window." msgstr "" -#: library/curses.rst:1093 +#: library/curses.rst:1101 msgid "" "Return ``True`` if the specified window was modified since the last call to :" "meth:`refresh`; otherwise return ``False``." msgstr "" -#: library/curses.rst:1099 +#: library/curses.rst:1107 msgid "" "If *flag* is ``True``, escape sequences generated by some keys (keypad, " "function keys) will be interpreted by :mod:`curses`. If *flag* is ``False``, " "escape sequences will be left as is in the input stream." msgstr "" -#: library/curses.rst:1106 +#: library/curses.rst:1114 msgid "" "If *flag* is ``True``, cursor is left where it is on update, instead of " "being at \"cursor position.\" This reduces cursor movement where possible. " "If possible the cursor will be made invisible." msgstr "" -#: library/curses.rst:1110 +#: library/curses.rst:1118 msgid "" "If *flag* is ``False``, cursor will always be at \"cursor position\" after " "an update." msgstr "" -#: library/curses.rst:1115 +#: library/curses.rst:1123 msgid "Move cursor to ``(new_y, new_x)``." msgstr "" -#: library/curses.rst:1120 +#: library/curses.rst:1128 msgid "" "Move the window inside its parent window. The screen-relative parameters of " "the window are not changed. This routine is used to display different parts " "of the parent window at the same physical position on the screen." msgstr "" -#: library/curses.rst:1127 +#: library/curses.rst:1135 msgid "Move the window so its upper-left corner is at ``(new_y, new_x)``." msgstr "" -#: library/curses.rst:1132 +#: library/curses.rst:1140 msgid "If *flag* is ``True``, :meth:`getch` will be non-blocking." msgstr "" -#: library/curses.rst:1137 +#: library/curses.rst:1145 msgid "If *flag* is ``True``, escape sequences will not be timed out." msgstr "" -#: library/curses.rst:1139 +#: library/curses.rst:1147 msgid "" "If *flag* is ``False``, after a few milliseconds, an escape sequence will " "not be interpreted, and will be left in the input stream as is." msgstr "" -#: library/curses.rst:1145 +#: library/curses.rst:1153 msgid "" "Mark for refresh but wait. This function updates the data structure " "representing the desired state of the window, but does not force an update " "of the physical screen. To accomplish that, call :func:`doupdate`." msgstr "" -#: library/curses.rst:1152 +#: library/curses.rst:1160 msgid "" "Overlay the window on top of *destwin*. The windows need not be the same " "size, only the overlapping region is copied. This copy is non-destructive, " @@ -1305,7 +1311,7 @@ msgid "" "contents of *destwin*." msgstr "" -#: library/curses.rst:1157 +#: library/curses.rst:1165 msgid "" "To get fine-grained control over the copied region, the second form of :meth:" "`overlay` can be used. *sminrow* and *smincol* are the upper-left " @@ -1313,7 +1319,7 @@ msgid "" "in the destination window." msgstr "" -#: library/curses.rst:1165 +#: library/curses.rst:1173 msgid "" "Overwrite the window on top of *destwin*. The windows need not be the same " "size, in which case only the overlapping region is copied. This copy is " @@ -1321,7 +1327,7 @@ msgid "" "the old contents of *destwin*." msgstr "" -#: library/curses.rst:1170 +#: library/curses.rst:1178 msgid "" "To get fine-grained control over the copied region, the second form of :meth:" "`overwrite` can be used. *sminrow* and *smincol* are the upper-left " @@ -1329,31 +1335,31 @@ msgid "" "the destination window." msgstr "" -#: library/curses.rst:1178 +#: library/curses.rst:1186 msgid "" "Write all data associated with the window into the provided file object. " "This information can be later retrieved using the :func:`getwin` function." msgstr "" -#: library/curses.rst:1184 +#: library/curses.rst:1192 msgid "" "Indicate that the *num* screen lines, starting at line *beg*, are corrupted " "and should be completely redrawn on the next :meth:`refresh` call." msgstr "" -#: library/curses.rst:1190 +#: library/curses.rst:1198 msgid "" "Touch the entire window, causing it to be completely redrawn on the next :" "meth:`refresh` call." msgstr "" -#: library/curses.rst:1196 +#: library/curses.rst:1204 msgid "" "Update the display immediately (sync actual screen with previous drawing/" "deleting methods)." msgstr "" -#: library/curses.rst:1199 +#: library/curses.rst:1207 msgid "" "The 6 optional arguments can only be specified when the window is a pad " "created with :func:`newpad`. The additional parameters are needed to " @@ -1368,7 +1374,7 @@ msgid "" "*smincol* are treated as if they were zero." msgstr "" -#: library/curses.rst:1213 +#: library/curses.rst:1221 msgid "" "Reallocate storage for a curses window to adjust its dimensions to the " "specified values. If either dimension is larger than the current values, " @@ -1376,11 +1382,11 @@ msgid "" "rendition (as set by :meth:`bkgdset`) merged into them." msgstr "" -#: library/curses.rst:1221 +#: library/curses.rst:1229 msgid "Scroll the screen or scrolling region upward by *lines* lines." msgstr "" -#: library/curses.rst:1226 +#: library/curses.rst:1234 msgid "" "Control what happens when the cursor of a window is moved off the edge of " "the window or scrolling region, either as a result of a newline action on " @@ -1390,54 +1396,54 @@ msgid "" "scrolling effect on the terminal, it is also necessary to call :meth:`idlok`." msgstr "" -#: library/curses.rst:1236 +#: library/curses.rst:1244 msgid "" "Set the scrolling region from line *top* to line *bottom*. All scrolling " "actions will take place in this region." msgstr "" -#: library/curses.rst:1242 +#: library/curses.rst:1250 msgid "" "Turn off the standout attribute. On some terminals this has the side effect " "of turning off all attributes." msgstr "" -#: library/curses.rst:1248 +#: library/curses.rst:1256 msgid "Turn on attribute *A_STANDOUT*." msgstr "" -#: library/curses.rst:1261 +#: library/curses.rst:1269 msgid "" "Return a sub-window, whose upper-left corner is at ``(begin_y, begin_x)``, " "and whose width/height is *ncols*/*nlines*." msgstr "" -#: library/curses.rst:1264 +#: library/curses.rst:1272 msgid "" "By default, the sub-window will extend from the specified position to the " "lower right corner of the window." msgstr "" -#: library/curses.rst:1270 +#: library/curses.rst:1278 msgid "" "Touch each location in the window that has been touched in any of its " "ancestor windows. This routine is called by :meth:`refresh`, so it should " "almost never be necessary to call it manually." msgstr "" -#: library/curses.rst:1277 +#: library/curses.rst:1285 msgid "" "If *flag* is ``True``, then :meth:`syncup` is called automatically whenever " "there is a change in the window." msgstr "" -#: library/curses.rst:1283 +#: library/curses.rst:1291 msgid "" "Touch all locations in ancestors of the window that have been changed in " "the window." msgstr "" -#: library/curses.rst:1289 +#: library/curses.rst:1297 msgid "" "Set blocking or non-blocking read behavior for the window. If *delay* is " "negative, blocking read is used (which will wait indefinitely for input). " @@ -1447,7 +1453,7 @@ msgid "" "still no input at the end of that time." msgstr "" -#: library/curses.rst:1299 +#: library/curses.rst:1307 msgid "" "Pretend *count* lines have been changed, starting with line *start*. If " "*changed* is supplied, it specifies whether the affected lines are marked as " @@ -1455,49 +1461,49 @@ msgid "" "``=False``)." msgstr "" -#: library/curses.rst:1306 +#: library/curses.rst:1314 msgid "" "Pretend the whole window has been changed, for purposes of drawing " "optimizations." msgstr "" -#: library/curses.rst:1312 +#: library/curses.rst:1320 msgid "" "Mark all lines in the window as unchanged since the last call to :meth:" "`refresh`." msgstr "" -#: library/curses.rst:1319 +#: library/curses.rst:1327 msgid "" "Display a vertical line starting at ``(y, x)`` with length *n* consisting of " "the character *ch* with attributes *attr*." msgstr "" -#: library/curses.rst:1324 +#: library/curses.rst:1332 msgid "Constants" msgstr "" -#: library/curses.rst:1326 +#: library/curses.rst:1334 msgid "The :mod:`curses` module defines the following data members:" msgstr "" -#: library/curses.rst:1331 +#: library/curses.rst:1339 msgid "" "Some curses routines that return an integer, such as :meth:`~window." "getch`, return :const:`ERR` upon failure." msgstr "" -#: library/curses.rst:1337 +#: library/curses.rst:1345 msgid "" "Some curses routines that return an integer, such as :func:`napms`, " "return :const:`OK` upon success." msgstr "" -#: library/curses.rst:1344 +#: library/curses.rst:1352 msgid "A bytes object representing the current version of the module." msgstr "" -#: library/curses.rst:1349 +#: library/curses.rst:1357 msgid "" "A named tuple containing the three components of the ncurses library " "version: *major*, *minor*, and *patch*. All values are integers. The " @@ -1505,535 +1511,535 @@ msgid "" "is equivalent to ``curses.ncurses_version.major`` and so on." msgstr "" -#: library/curses.rst:1354 +#: library/curses.rst:1362 msgid "Availability: if the ncurses library is used." msgstr "" -#: library/curses.rst:1360 +#: library/curses.rst:1368 msgid "" "The maximum number of colors the terminal can support. It is defined only " "after the call to :func:`start_color`." msgstr "" -#: library/curses.rst:1365 +#: library/curses.rst:1373 msgid "" "The maximum number of color pairs the terminal can support. It is defined " "only after the call to :func:`start_color`." msgstr "" -#: library/curses.rst:1370 +#: library/curses.rst:1378 msgid "" "The width of the screen, i.e., the number of columns. It is defined only " "after the call to :func:`initscr`. Updated by :func:`update_lines_cols`, :" "func:`resizeterm` and :func:`resize_term`." msgstr "" -#: library/curses.rst:1377 +#: library/curses.rst:1385 msgid "" "The height of the screen, i.e., the number of lines. It is defined only " "after the call to :func:`initscr`. Updated by :func:`update_lines_cols`, :" "func:`resizeterm` and :func:`resize_term`." msgstr "" -#: library/curses.rst:1383 +#: library/curses.rst:1391 msgid "" "Some constants are available to specify character cell attributes. The exact " "constants available are system dependent." msgstr "" -#: library/curses.rst:1387 +#: library/curses.rst:1395 msgid "Attribute" msgstr "" -#: library/curses.rst:1432 library/curses.rst:1770 +#: library/curses.rst:1440 library/curses.rst:1778 msgid "Meaning" msgstr "" -#: library/curses.rst:1389 +#: library/curses.rst:1397 msgid "Alternate character set mode" msgstr "" -#: library/curses.rst:1391 +#: library/curses.rst:1399 msgid "Blink mode" msgstr "" -#: library/curses.rst:1393 +#: library/curses.rst:1401 msgid "Bold mode" msgstr "" -#: library/curses.rst:1395 +#: library/curses.rst:1403 msgid "Dim mode" msgstr "" -#: library/curses.rst:1397 +#: library/curses.rst:1405 msgid "Invisible or blank mode" msgstr "" -#: library/curses.rst:1399 +#: library/curses.rst:1407 msgid "Italic mode" msgstr "" -#: library/curses.rst:1401 +#: library/curses.rst:1409 msgid "Normal attribute" msgstr "" -#: library/curses.rst:1403 +#: library/curses.rst:1411 msgid "Protected mode" msgstr "" -#: library/curses.rst:1405 +#: library/curses.rst:1413 msgid "Reverse background and foreground colors" msgstr "" -#: library/curses.rst:1408 +#: library/curses.rst:1416 msgid "Standout mode" msgstr "" -#: library/curses.rst:1410 +#: library/curses.rst:1418 msgid "Underline mode" msgstr "" -#: library/curses.rst:1412 +#: library/curses.rst:1420 msgid "Horizontal highlight" msgstr "" -#: library/curses.rst:1414 +#: library/curses.rst:1422 msgid "Left highlight" msgstr "" -#: library/curses.rst:1416 +#: library/curses.rst:1424 msgid "Low highlight" msgstr "" -#: library/curses.rst:1418 +#: library/curses.rst:1426 msgid "Right highlight" msgstr "" -#: library/curses.rst:1420 +#: library/curses.rst:1428 msgid "Top highlight" msgstr "" -#: library/curses.rst:1422 +#: library/curses.rst:1430 msgid "Vertical highlight" msgstr "" -#: library/curses.rst:1425 +#: library/curses.rst:1433 msgid "``A_ITALIC`` was added." msgstr "" -#: library/curses.rst:1428 +#: library/curses.rst:1436 msgid "" "Several constants are available to extract corresponding attributes returned " "by some methods." msgstr "" -#: library/curses.rst:1432 +#: library/curses.rst:1440 msgid "Bit-mask" msgstr "" -#: library/curses.rst:1434 +#: library/curses.rst:1442 msgid "Bit-mask to extract attributes" msgstr "" -#: library/curses.rst:1437 +#: library/curses.rst:1445 msgid "Bit-mask to extract a character" msgstr "" -#: library/curses.rst:1440 +#: library/curses.rst:1448 msgid "Bit-mask to extract color-pair field information" msgstr "" -#: library/curses.rst:1444 +#: library/curses.rst:1452 msgid "" "Keys are referred to by integer constants with names starting with " "``KEY_``. The exact keycaps available are system dependent." msgstr "" -#: library/curses.rst:1450 +#: library/curses.rst:1458 msgid "Key constant" msgstr "" -#: library/curses.rst:1450 +#: library/curses.rst:1458 msgid "Key" msgstr "" -#: library/curses.rst:1452 +#: library/curses.rst:1460 msgid "Minimum key value" msgstr "" -#: library/curses.rst:1454 +#: library/curses.rst:1462 msgid "Break key (unreliable)" msgstr "" -#: library/curses.rst:1456 +#: library/curses.rst:1464 msgid "Down-arrow" msgstr "" -#: library/curses.rst:1458 +#: library/curses.rst:1466 msgid "Up-arrow" msgstr "" -#: library/curses.rst:1460 +#: library/curses.rst:1468 msgid "Left-arrow" msgstr "" -#: library/curses.rst:1462 +#: library/curses.rst:1470 msgid "Right-arrow" msgstr "" -#: library/curses.rst:1464 +#: library/curses.rst:1472 msgid "Home key (upward+left arrow)" msgstr "" -#: library/curses.rst:1466 +#: library/curses.rst:1474 msgid "Backspace (unreliable)" msgstr "" -#: library/curses.rst:1468 +#: library/curses.rst:1476 msgid "Function keys. Up to 64 function keys are supported." msgstr "" -#: library/curses.rst:1471 +#: library/curses.rst:1479 msgid "Value of function key *n*" msgstr "" -#: library/curses.rst:1473 +#: library/curses.rst:1481 msgid "Delete line" msgstr "" -#: library/curses.rst:1475 +#: library/curses.rst:1483 msgid "Insert line" msgstr "" -#: library/curses.rst:1477 +#: library/curses.rst:1485 msgid "Delete character" msgstr "" -#: library/curses.rst:1479 +#: library/curses.rst:1487 msgid "Insert char or enter insert mode" msgstr "" -#: library/curses.rst:1481 +#: library/curses.rst:1489 msgid "Exit insert char mode" msgstr "" -#: library/curses.rst:1483 +#: library/curses.rst:1491 msgid "Clear screen" msgstr "" -#: library/curses.rst:1485 +#: library/curses.rst:1493 msgid "Clear to end of screen" msgstr "" -#: library/curses.rst:1487 +#: library/curses.rst:1495 msgid "Clear to end of line" msgstr "" -#: library/curses.rst:1489 +#: library/curses.rst:1497 msgid "Scroll 1 line forward" msgstr "" -#: library/curses.rst:1491 +#: library/curses.rst:1499 msgid "Scroll 1 line backward (reverse)" msgstr "" -#: library/curses.rst:1493 +#: library/curses.rst:1501 msgid "Next page" msgstr "" -#: library/curses.rst:1495 +#: library/curses.rst:1503 msgid "Previous page" msgstr "" -#: library/curses.rst:1497 +#: library/curses.rst:1505 msgid "Set tab" msgstr "" -#: library/curses.rst:1499 +#: library/curses.rst:1507 msgid "Clear tab" msgstr "" -#: library/curses.rst:1501 +#: library/curses.rst:1509 msgid "Clear all tabs" msgstr "" -#: library/curses.rst:1503 +#: library/curses.rst:1511 msgid "Enter or send (unreliable)" msgstr "" -#: library/curses.rst:1505 +#: library/curses.rst:1513 msgid "Soft (partial) reset (unreliable)" msgstr "" -#: library/curses.rst:1507 +#: library/curses.rst:1515 msgid "Reset or hard reset (unreliable)" msgstr "" -#: library/curses.rst:1509 +#: library/curses.rst:1517 msgid "Print" msgstr "" -#: library/curses.rst:1511 +#: library/curses.rst:1519 msgid "Home down or bottom (lower left)" msgstr "" -#: library/curses.rst:1513 +#: library/curses.rst:1521 msgid "Upper left of keypad" msgstr "" -#: library/curses.rst:1515 +#: library/curses.rst:1523 msgid "Upper right of keypad" msgstr "" -#: library/curses.rst:1517 +#: library/curses.rst:1525 msgid "Center of keypad" msgstr "" -#: library/curses.rst:1519 +#: library/curses.rst:1527 msgid "Lower left of keypad" msgstr "" -#: library/curses.rst:1521 +#: library/curses.rst:1529 msgid "Lower right of keypad" msgstr "" -#: library/curses.rst:1523 +#: library/curses.rst:1531 msgid "Back tab" msgstr "" -#: library/curses.rst:1525 +#: library/curses.rst:1533 msgid "Beg (beginning)" msgstr "" -#: library/curses.rst:1527 +#: library/curses.rst:1535 msgid "Cancel" msgstr "" -#: library/curses.rst:1529 +#: library/curses.rst:1537 msgid "Close" msgstr "" -#: library/curses.rst:1531 +#: library/curses.rst:1539 msgid "Cmd (command)" msgstr "" -#: library/curses.rst:1533 +#: library/curses.rst:1541 msgid "Copy" msgstr "" -#: library/curses.rst:1535 +#: library/curses.rst:1543 msgid "Create" msgstr "" -#: library/curses.rst:1537 +#: library/curses.rst:1545 msgid "End" msgstr "" -#: library/curses.rst:1539 +#: library/curses.rst:1547 msgid "Exit" msgstr "" -#: library/curses.rst:1541 +#: library/curses.rst:1549 msgid "Find" msgstr "" -#: library/curses.rst:1543 +#: library/curses.rst:1551 msgid "Help" msgstr "" -#: library/curses.rst:1545 +#: library/curses.rst:1553 msgid "Mark" msgstr "" -#: library/curses.rst:1547 +#: library/curses.rst:1555 msgid "Message" msgstr "" -#: library/curses.rst:1549 +#: library/curses.rst:1557 msgid "Move" msgstr "" -#: library/curses.rst:1551 +#: library/curses.rst:1559 msgid "Next" msgstr "" -#: library/curses.rst:1553 +#: library/curses.rst:1561 msgid "Open" msgstr "" -#: library/curses.rst:1555 +#: library/curses.rst:1563 msgid "Options" msgstr "" -#: library/curses.rst:1557 +#: library/curses.rst:1565 msgid "Prev (previous)" msgstr "" -#: library/curses.rst:1559 +#: library/curses.rst:1567 msgid "Redo" msgstr "" -#: library/curses.rst:1561 +#: library/curses.rst:1569 msgid "Ref (reference)" msgstr "" -#: library/curses.rst:1563 +#: library/curses.rst:1571 msgid "Refresh" msgstr "" -#: library/curses.rst:1565 +#: library/curses.rst:1573 msgid "Replace" msgstr "" -#: library/curses.rst:1567 +#: library/curses.rst:1575 msgid "Restart" msgstr "" -#: library/curses.rst:1569 +#: library/curses.rst:1577 msgid "Resume" msgstr "" -#: library/curses.rst:1571 +#: library/curses.rst:1579 msgid "Save" msgstr "" -#: library/curses.rst:1573 +#: library/curses.rst:1581 msgid "Shifted Beg (beginning)" msgstr "" -#: library/curses.rst:1575 +#: library/curses.rst:1583 msgid "Shifted Cancel" msgstr "" -#: library/curses.rst:1577 +#: library/curses.rst:1585 msgid "Shifted Command" msgstr "" -#: library/curses.rst:1579 +#: library/curses.rst:1587 msgid "Shifted Copy" msgstr "" -#: library/curses.rst:1581 +#: library/curses.rst:1589 msgid "Shifted Create" msgstr "" -#: library/curses.rst:1583 +#: library/curses.rst:1591 msgid "Shifted Delete char" msgstr "" -#: library/curses.rst:1585 +#: library/curses.rst:1593 msgid "Shifted Delete line" msgstr "" -#: library/curses.rst:1587 +#: library/curses.rst:1595 msgid "Select" msgstr "" -#: library/curses.rst:1589 +#: library/curses.rst:1597 msgid "Shifted End" msgstr "" -#: library/curses.rst:1591 +#: library/curses.rst:1599 msgid "Shifted Clear line" msgstr "" -#: library/curses.rst:1593 +#: library/curses.rst:1601 msgid "Shifted Exit" msgstr "" -#: library/curses.rst:1595 +#: library/curses.rst:1603 msgid "Shifted Find" msgstr "" -#: library/curses.rst:1597 +#: library/curses.rst:1605 msgid "Shifted Help" msgstr "" -#: library/curses.rst:1599 +#: library/curses.rst:1607 msgid "Shifted Home" msgstr "" -#: library/curses.rst:1601 +#: library/curses.rst:1609 msgid "Shifted Input" msgstr "" -#: library/curses.rst:1603 +#: library/curses.rst:1611 msgid "Shifted Left arrow" msgstr "" -#: library/curses.rst:1605 +#: library/curses.rst:1613 msgid "Shifted Message" msgstr "" -#: library/curses.rst:1607 +#: library/curses.rst:1615 msgid "Shifted Move" msgstr "" -#: library/curses.rst:1609 +#: library/curses.rst:1617 msgid "Shifted Next" msgstr "" -#: library/curses.rst:1611 +#: library/curses.rst:1619 msgid "Shifted Options" msgstr "" -#: library/curses.rst:1613 +#: library/curses.rst:1621 msgid "Shifted Prev" msgstr "" -#: library/curses.rst:1615 +#: library/curses.rst:1623 msgid "Shifted Print" msgstr "" -#: library/curses.rst:1617 +#: library/curses.rst:1625 msgid "Shifted Redo" msgstr "" -#: library/curses.rst:1619 +#: library/curses.rst:1627 msgid "Shifted Replace" msgstr "" -#: library/curses.rst:1621 +#: library/curses.rst:1629 msgid "Shifted Right arrow" msgstr "" -#: library/curses.rst:1623 +#: library/curses.rst:1631 msgid "Shifted Resume" msgstr "" -#: library/curses.rst:1625 +#: library/curses.rst:1633 msgid "Shifted Save" msgstr "" -#: library/curses.rst:1627 +#: library/curses.rst:1635 msgid "Shifted Suspend" msgstr "" -#: library/curses.rst:1629 +#: library/curses.rst:1637 msgid "Shifted Undo" msgstr "" -#: library/curses.rst:1631 +#: library/curses.rst:1639 msgid "Suspend" msgstr "" -#: library/curses.rst:1633 +#: library/curses.rst:1641 msgid "Undo" msgstr "" -#: library/curses.rst:1635 +#: library/curses.rst:1643 msgid "Mouse event has occurred" msgstr "" -#: library/curses.rst:1637 +#: library/curses.rst:1645 msgid "Terminal resize event" msgstr "" -#: library/curses.rst:1639 +#: library/curses.rst:1647 msgid "Maximum key value" msgstr "" -#: library/curses.rst:1642 +#: library/curses.rst:1650 msgid "" "On VT100s and their software emulations, such as X terminal emulators, there " "are normally at least four function keys (:const:`KEY_F1 `, :const:" @@ -2045,63 +2051,63 @@ msgid "" "keypad mappings are standard:" msgstr "" -#: library/curses.rst:1651 +#: library/curses.rst:1659 msgid "Keycap" msgstr "" -#: library/curses.rst:1796 library/curses.rst:1920 +#: library/curses.rst:1804 library/curses.rst:1928 msgid "Constant" msgstr "" -#: library/curses.rst:1653 +#: library/curses.rst:1661 msgid ":kbd:`Insert`" msgstr "" -#: library/curses.rst:1653 +#: library/curses.rst:1661 msgid "KEY_IC" msgstr "" -#: library/curses.rst:1655 +#: library/curses.rst:1663 msgid ":kbd:`Delete`" msgstr "" -#: library/curses.rst:1655 +#: library/curses.rst:1663 msgid "KEY_DC" msgstr "" -#: library/curses.rst:1657 +#: library/curses.rst:1665 msgid ":kbd:`Home`" msgstr "" -#: library/curses.rst:1657 +#: library/curses.rst:1665 msgid "KEY_HOME" msgstr "" -#: library/curses.rst:1659 +#: library/curses.rst:1667 msgid ":kbd:`End`" msgstr "" -#: library/curses.rst:1659 +#: library/curses.rst:1667 msgid "KEY_END" msgstr "" -#: library/curses.rst:1661 +#: library/curses.rst:1669 msgid ":kbd:`Page Up`" msgstr "" -#: library/curses.rst:1661 +#: library/curses.rst:1669 msgid "KEY_PPAGE" msgstr "" -#: library/curses.rst:1663 +#: library/curses.rst:1671 msgid ":kbd:`Page Down`" msgstr "" -#: library/curses.rst:1663 +#: library/curses.rst:1671 msgid "KEY_NPAGE" msgstr "" -#: library/curses.rst:1668 +#: library/curses.rst:1676 msgid "" "The following table lists characters from the alternate character set. These " "are inherited from the VT100 terminal, and will generally be available on " @@ -2109,268 +2115,268 @@ msgid "" "available, curses falls back on a crude printable ASCII approximation." msgstr "" -#: library/curses.rst:1675 +#: library/curses.rst:1683 msgid "These are available only after :func:`initscr` has been called." msgstr "" -#: library/curses.rst:1678 +#: library/curses.rst:1686 msgid "ACS code" msgstr "" -#: library/curses.rst:1680 +#: library/curses.rst:1688 msgid "alternate name for upper right corner" msgstr "" -#: library/curses.rst:1682 +#: library/curses.rst:1690 msgid "solid square block" msgstr "" -#: library/curses.rst:1684 +#: library/curses.rst:1692 msgid "board of squares" msgstr "" -#: library/curses.rst:1686 +#: library/curses.rst:1694 msgid "alternate name for horizontal line" msgstr "" -#: library/curses.rst:1688 +#: library/curses.rst:1696 msgid "alternate name for upper left corner" msgstr "" -#: library/curses.rst:1690 +#: library/curses.rst:1698 msgid "alternate name for top tee" msgstr "" -#: library/curses.rst:1692 +#: library/curses.rst:1700 msgid "bottom tee" msgstr "" -#: library/curses.rst:1694 +#: library/curses.rst:1702 msgid "bullet" msgstr "" -#: library/curses.rst:1696 +#: library/curses.rst:1704 msgid "checker board (stipple)" msgstr "" -#: library/curses.rst:1698 +#: library/curses.rst:1706 msgid "arrow pointing down" msgstr "" -#: library/curses.rst:1700 +#: library/curses.rst:1708 msgid "degree symbol" msgstr "" -#: library/curses.rst:1702 +#: library/curses.rst:1710 msgid "diamond" msgstr "" -#: library/curses.rst:1704 +#: library/curses.rst:1712 msgid "greater-than-or-equal-to" msgstr "" -#: library/curses.rst:1706 +#: library/curses.rst:1714 msgid "horizontal line" msgstr "" -#: library/curses.rst:1708 +#: library/curses.rst:1716 msgid "lantern symbol" msgstr "" -#: library/curses.rst:1710 +#: library/curses.rst:1718 msgid "left arrow" msgstr "" -#: library/curses.rst:1712 +#: library/curses.rst:1720 msgid "less-than-or-equal-to" msgstr "" -#: library/curses.rst:1714 +#: library/curses.rst:1722 msgid "lower left-hand corner" msgstr "" -#: library/curses.rst:1716 +#: library/curses.rst:1724 msgid "lower right-hand corner" msgstr "" -#: library/curses.rst:1718 +#: library/curses.rst:1726 msgid "left tee" msgstr "" -#: library/curses.rst:1720 +#: library/curses.rst:1728 msgid "not-equal sign" msgstr "" -#: library/curses.rst:1722 +#: library/curses.rst:1730 msgid "letter pi" msgstr "" -#: library/curses.rst:1724 +#: library/curses.rst:1732 msgid "plus-or-minus sign" msgstr "" -#: library/curses.rst:1726 +#: library/curses.rst:1734 msgid "big plus sign" msgstr "" -#: library/curses.rst:1728 +#: library/curses.rst:1736 msgid "right arrow" msgstr "" -#: library/curses.rst:1730 +#: library/curses.rst:1738 msgid "right tee" msgstr "" -#: library/curses.rst:1732 +#: library/curses.rst:1740 msgid "scan line 1" msgstr "" -#: library/curses.rst:1734 +#: library/curses.rst:1742 msgid "scan line 3" msgstr "" -#: library/curses.rst:1736 +#: library/curses.rst:1744 msgid "scan line 7" msgstr "" -#: library/curses.rst:1738 +#: library/curses.rst:1746 msgid "scan line 9" msgstr "" -#: library/curses.rst:1740 +#: library/curses.rst:1748 msgid "alternate name for lower right corner" msgstr "" -#: library/curses.rst:1742 +#: library/curses.rst:1750 msgid "alternate name for vertical line" msgstr "" -#: library/curses.rst:1744 +#: library/curses.rst:1752 msgid "alternate name for right tee" msgstr "" -#: library/curses.rst:1746 +#: library/curses.rst:1754 msgid "alternate name for lower left corner" msgstr "" -#: library/curses.rst:1748 +#: library/curses.rst:1756 msgid "alternate name for bottom tee" msgstr "" -#: library/curses.rst:1750 +#: library/curses.rst:1758 msgid "alternate name for left tee" msgstr "" -#: library/curses.rst:1752 +#: library/curses.rst:1760 msgid "alternate name for crossover or big plus" msgstr "" -#: library/curses.rst:1754 +#: library/curses.rst:1762 msgid "pound sterling" msgstr "" -#: library/curses.rst:1756 +#: library/curses.rst:1764 msgid "top tee" msgstr "" -#: library/curses.rst:1758 +#: library/curses.rst:1766 msgid "up arrow" msgstr "" -#: library/curses.rst:1760 +#: library/curses.rst:1768 msgid "upper left corner" msgstr "" -#: library/curses.rst:1762 +#: library/curses.rst:1770 msgid "upper right corner" msgstr "" -#: library/curses.rst:1764 +#: library/curses.rst:1772 msgid "vertical line" msgstr "" -#: library/curses.rst:1767 +#: library/curses.rst:1775 msgid "" "The following table lists mouse button constants used by :meth:`getmouse`:" msgstr "" -#: library/curses.rst:1770 +#: library/curses.rst:1778 msgid "Mouse button constant" msgstr "" -#: library/curses.rst:1772 +#: library/curses.rst:1780 msgid "Mouse button *n* pressed" msgstr "" -#: library/curses.rst:1774 +#: library/curses.rst:1782 msgid "Mouse button *n* released" msgstr "" -#: library/curses.rst:1776 +#: library/curses.rst:1784 msgid "Mouse button *n* clicked" msgstr "" -#: library/curses.rst:1778 +#: library/curses.rst:1786 msgid "Mouse button *n* double clicked" msgstr "" -#: library/curses.rst:1780 +#: library/curses.rst:1788 msgid "Mouse button *n* triple clicked" msgstr "" -#: library/curses.rst:1782 +#: library/curses.rst:1790 msgid "Shift was down during button state change" msgstr "" -#: library/curses.rst:1786 +#: library/curses.rst:1794 msgid "Control was down during button state change" msgstr "" -#: library/curses.rst:1793 +#: library/curses.rst:1801 msgid "The following table lists the predefined colors:" msgstr "" -#: library/curses.rst:1796 +#: library/curses.rst:1804 msgid "Color" msgstr "" -#: library/curses.rst:1798 +#: library/curses.rst:1806 msgid "Black" msgstr "" -#: library/curses.rst:1800 +#: library/curses.rst:1808 msgid "Blue" msgstr "" -#: library/curses.rst:1802 +#: library/curses.rst:1810 msgid "Cyan (light greenish blue)" msgstr "" -#: library/curses.rst:1804 +#: library/curses.rst:1812 msgid "Green" msgstr "" -#: library/curses.rst:1806 +#: library/curses.rst:1814 msgid "Magenta (purplish red)" msgstr "" -#: library/curses.rst:1808 +#: library/curses.rst:1816 msgid "Red" msgstr "" -#: library/curses.rst:1810 +#: library/curses.rst:1818 msgid "White" msgstr "" -#: library/curses.rst:1812 +#: library/curses.rst:1820 msgid "Yellow" msgstr "" -#: library/curses.rst:1817 +#: library/curses.rst:1825 msgid ":mod:`curses.textpad` --- Text input widget for curses programs" msgstr "" -#: library/curses.rst:1825 +#: library/curses.rst:1833 msgid "" "The :mod:`curses.textpad` module provides a :class:`Textbox` class that " "handles elementary text editing in a curses window, supporting a set of " @@ -2380,11 +2386,11 @@ msgid "" "purposes." msgstr "" -#: library/curses.rst:1831 +#: library/curses.rst:1839 msgid "The module :mod:`curses.textpad` defines the following function:" msgstr "" -#: library/curses.rst:1836 +#: library/curses.rst:1844 msgid "" "Draw a rectangle. The first argument must be a window object; the remaining " "arguments are coordinates relative to that window. The second and third " @@ -2396,15 +2402,15 @@ msgid "" "will be drawn with ASCII dashes, vertical bars, and plus signs." msgstr "" -#: library/curses.rst:1849 +#: library/curses.rst:1857 msgid "Textbox objects" msgstr "" -#: library/curses.rst:1851 +#: library/curses.rst:1859 msgid "You can instantiate a :class:`Textbox` object as follows:" msgstr "" -#: library/curses.rst:1856 +#: library/curses.rst:1864 msgid "" "Return a textbox widget object. The *win* argument should be a curses :ref:" "`window ` object in which the textbox is to be " @@ -2413,11 +2419,11 @@ msgid "" "instance's :attr:`stripspaces` flag is initially on." msgstr "" -#: library/curses.rst:1862 +#: library/curses.rst:1870 msgid ":class:`Textbox` objects have the following methods:" msgstr "" -#: library/curses.rst:1867 +#: library/curses.rst:1875 msgid "" "This is the entry point you will normally use. It accepts editing " "keystrokes until one of the termination keystrokes is entered. If " @@ -2428,167 +2434,167 @@ msgid "" "`stripspaces` attribute." msgstr "" -#: library/curses.rst:1878 +#: library/curses.rst:1886 msgid "" "Process a single command keystroke. Here are the supported special " "keystrokes:" msgstr "" -#: library/curses.rst:1920 +#: library/curses.rst:1928 msgid "Keystroke" msgstr "" -#: library/curses.rst:1882 +#: library/curses.rst:1890 msgid "Action" msgstr "" -#: library/curses.rst:1884 +#: library/curses.rst:1892 msgid ":kbd:`Control-A`" msgstr "" -#: library/curses.rst:1884 +#: library/curses.rst:1892 msgid "Go to left edge of window." msgstr "" -#: library/curses.rst:1922 +#: library/curses.rst:1930 msgid ":kbd:`Control-B`" msgstr "" -#: library/curses.rst:1886 +#: library/curses.rst:1894 msgid "Cursor left, wrapping to previous line if appropriate." msgstr "" -#: library/curses.rst:1889 +#: library/curses.rst:1897 msgid ":kbd:`Control-D`" msgstr "" -#: library/curses.rst:1889 +#: library/curses.rst:1897 msgid "Delete character under cursor." msgstr "" -#: library/curses.rst:1891 +#: library/curses.rst:1899 msgid ":kbd:`Control-E`" msgstr "" -#: library/curses.rst:1891 +#: library/curses.rst:1899 msgid "Go to right edge (stripspaces off) or end of line (stripspaces on)." msgstr "" -#: library/curses.rst:1924 +#: library/curses.rst:1932 msgid ":kbd:`Control-F`" msgstr "" -#: library/curses.rst:1894 +#: library/curses.rst:1902 msgid "Cursor right, wrapping to next line when appropriate." msgstr "" -#: library/curses.rst:1897 +#: library/curses.rst:1905 msgid ":kbd:`Control-G`" msgstr "" -#: library/curses.rst:1897 +#: library/curses.rst:1905 msgid "Terminate, returning the window contents." msgstr "" -#: library/curses.rst:1899 +#: library/curses.rst:1907 msgid ":kbd:`Control-H`" msgstr "" -#: library/curses.rst:1899 +#: library/curses.rst:1907 msgid "Delete character backward." msgstr "" -#: library/curses.rst:1901 +#: library/curses.rst:1909 msgid ":kbd:`Control-J`" msgstr "" -#: library/curses.rst:1901 +#: library/curses.rst:1909 msgid "Terminate if the window is 1 line, otherwise insert newline." msgstr "" -#: library/curses.rst:1904 +#: library/curses.rst:1912 msgid ":kbd:`Control-K`" msgstr "" -#: library/curses.rst:1904 +#: library/curses.rst:1912 msgid "If line is blank, delete it, otherwise clear to end of line." msgstr "" -#: library/curses.rst:1907 +#: library/curses.rst:1915 msgid ":kbd:`Control-L`" msgstr "" -#: library/curses.rst:1907 +#: library/curses.rst:1915 msgid "Refresh screen." msgstr "" -#: library/curses.rst:1928 +#: library/curses.rst:1936 msgid ":kbd:`Control-N`" msgstr "" -#: library/curses.rst:1909 +#: library/curses.rst:1917 msgid "Cursor down; move down one line." msgstr "" -#: library/curses.rst:1911 +#: library/curses.rst:1919 msgid ":kbd:`Control-O`" msgstr "" -#: library/curses.rst:1911 +#: library/curses.rst:1919 msgid "Insert a blank line at cursor location." msgstr "" -#: library/curses.rst:1926 +#: library/curses.rst:1934 msgid ":kbd:`Control-P`" msgstr "" -#: library/curses.rst:1913 +#: library/curses.rst:1921 msgid "Cursor up; move up one line." msgstr "" -#: library/curses.rst:1916 +#: library/curses.rst:1924 msgid "" "Move operations do nothing if the cursor is at an edge where the movement is " "not possible. The following synonyms are supported where possible:" msgstr "" -#: library/curses.rst:1922 +#: library/curses.rst:1930 msgid ":const:`~curses.KEY_LEFT`" msgstr "" -#: library/curses.rst:1924 +#: library/curses.rst:1932 msgid ":const:`~curses.KEY_RIGHT`" msgstr "" -#: library/curses.rst:1926 +#: library/curses.rst:1934 msgid ":const:`~curses.KEY_UP`" msgstr "" -#: library/curses.rst:1928 +#: library/curses.rst:1936 msgid ":const:`~curses.KEY_DOWN`" msgstr "" -#: library/curses.rst:1930 +#: library/curses.rst:1938 msgid ":const:`~curses.KEY_BACKSPACE`" msgstr "" -#: library/curses.rst:1930 +#: library/curses.rst:1938 msgid ":kbd:`Control-h`" msgstr "" -#: library/curses.rst:1933 +#: library/curses.rst:1941 msgid "" "All other keystrokes are treated as a command to insert the given character " "and move right (with line wrapping)." msgstr "" -#: library/curses.rst:1939 +#: library/curses.rst:1947 msgid "" "Return the window contents as a string; whether blanks in the window are " "included is affected by the :attr:`stripspaces` member." msgstr "" -#: library/curses.rst:1945 +#: library/curses.rst:1953 msgid "" "This attribute is a flag which controls the interpretation of blanks in the " "window. When it is on, trailing blanks on each line are ignored; any cursor " diff --git a/library/custominterp.po b/library/custominterp.po index 88a288ab..4766f321 100644 --- a/library/custominterp.po +++ b/library/custominterp.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/dataclasses.po b/library/dataclasses.po index 3ecb22de..7caf98a8 100644 --- a/library/dataclasses.po +++ b/library/dataclasses.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -190,11 +190,13 @@ msgstr "" #: library/dataclasses.rst:124 msgid "" -"*unsafe_hash*: If ``False`` (the default), a :meth:`~object.__hash__` method " -"is generated according to how *eq* and *frozen* are set." +"*unsafe_hash*: If true, force ``dataclasses`` to create a :meth:`~object." +"__hash__` method, even though it may not be safe to do so. Otherwise, " +"generate a :meth:`~object.__hash__` method according to how *eq* and " +"*frozen* are set. The default value is ``False``." msgstr "" -#: library/dataclasses.rst:127 +#: library/dataclasses.rst:130 msgid "" ":meth:`!__hash__` is used by built-in :meth:`hash`, and when objects are " "added to hashed collections such as dictionaries and sets. Having a :meth:`!" @@ -204,7 +206,7 @@ msgid "" "flags in the ``@dataclass`` decorator." msgstr "" -#: library/dataclasses.rst:134 +#: library/dataclasses.rst:137 msgid "" "By default, ``@dataclass`` will not implicitly add a :meth:`~object." "__hash__` method unless it is safe to do so. Neither will it add or change " @@ -213,7 +215,7 @@ msgid "" "in the :meth:`!__hash__` documentation." msgstr "" -#: library/dataclasses.rst:140 +#: library/dataclasses.rst:143 msgid "" "If :meth:`!__hash__` is not explicitly defined, or if it is set to ``None``, " "then ``@dataclass`` *may* add an implicit :meth:`!__hash__` method. Although " @@ -223,7 +225,7 @@ msgid "" "and should be considered carefully." msgstr "" -#: library/dataclasses.rst:147 +#: library/dataclasses.rst:150 msgid "" "Here are the rules governing implicit creation of a :meth:`!__hash__` " "method. Note that you cannot both have an explicit :meth:`!__hash__` method " @@ -231,7 +233,7 @@ msgid "" "`TypeError`." msgstr "" -#: library/dataclasses.rst:152 +#: library/dataclasses.rst:155 msgid "" "If *eq* and *frozen* are both true, by default ``@dataclass`` will generate " "a :meth:`!__hash__` method for you. If *eq* is true and *frozen* is false, :" @@ -242,7 +244,7 @@ msgid "" "id-based hashing)." msgstr "" -#: library/dataclasses.rst:160 +#: library/dataclasses.rst:163 msgid "" "*frozen*: If true (the default is ``False``), assigning to fields will " "generate an exception. This emulates read-only frozen instances. If :meth:" @@ -250,7 +252,7 @@ msgid "" "class, then :exc:`TypeError` is raised. See the discussion below." msgstr "" -#: library/dataclasses.rst:165 +#: library/dataclasses.rst:168 msgid "" "*match_args*: If true (the default is ``True``), the :attr:`~object." "__match_args__` tuple will be created from the list of non keyword-only " @@ -260,7 +262,7 @@ msgid "" "__match_args__` will not be generated." msgstr "" -#: library/dataclasses.rst:174 +#: library/dataclasses.rst:177 msgid "" "*kw_only*: If true (the default value is ``False``), then all fields will be " "marked as keyword-only. If a field is marked as keyword-only, then the only " @@ -270,11 +272,11 @@ msgid "" "the :const:`KW_ONLY` section." msgstr "" -#: library/dataclasses.rst:182 +#: library/dataclasses.rst:185 msgid "Keyword-only fields are not included in :attr:`!__match_args__`." msgstr "" -#: library/dataclasses.rst:186 +#: library/dataclasses.rst:189 msgid "" "*slots*: If true (the default is ``False``), :attr:`~object.__slots__` " "attribute will be generated and new class will be returned instead of the " @@ -282,7 +284,7 @@ msgid "" "exc:`TypeError` is raised." msgstr "" -#: library/dataclasses.rst:192 +#: library/dataclasses.rst:195 msgid "" "Passing parameters to a base class :meth:`~object.__init_subclass__` when " "using ``slots=True`` will result in a :exc:`TypeError`. Either use " @@ -290,7 +292,7 @@ msgid "" "workaround. See :gh:`91126` for full details." msgstr "" -#: library/dataclasses.rst:200 +#: library/dataclasses.rst:203 msgid "" "If a field name is already included in the :attr:`!__slots__` of a base " "class, it will not be included in the generated :attr:`!__slots__` to " @@ -300,7 +302,7 @@ msgid "" "`!__slots__` may be any iterable, but *not* an iterator." msgstr "" -#: library/dataclasses.rst:210 +#: library/dataclasses.rst:213 msgid "" "*weakref_slot*: If true (the default is ``False``), add a slot named " "\"__weakref__\", which is required to make an instance :func:`weakref-able " @@ -308,13 +310,13 @@ msgid "" "specifying ``slots=True``." msgstr "" -#: library/dataclasses.rst:218 +#: library/dataclasses.rst:221 msgid "" "``field``\\s may optionally specify a default value, using normal Python " "syntax::" msgstr "" -#: library/dataclasses.rst:221 +#: library/dataclasses.rst:224 msgid "" "@dataclass\n" "class C:\n" @@ -322,24 +324,24 @@ msgid "" " b: int = 0 # assign a default value for 'b'" msgstr "" -#: library/dataclasses.rst:226 +#: library/dataclasses.rst:229 msgid "" "In this example, both :attr:`!a` and :attr:`!b` will be included in the " "added :meth:`~object.__init__` method, which will be defined as::" msgstr "" -#: library/dataclasses.rst:229 +#: library/dataclasses.rst:232 msgid "def __init__(self, a: int, b: int = 0):" msgstr "" -#: library/dataclasses.rst:231 +#: library/dataclasses.rst:234 msgid "" ":exc:`TypeError` will be raised if a field without a default value follows a " "field with a default value. This is true whether this occurs in a single " "class, or as a result of class inheritance." msgstr "" -#: library/dataclasses.rst:237 +#: library/dataclasses.rst:240 msgid "" "For common and simple use cases, no other functionality is required. There " "are, however, some dataclass features that require additional per-field " @@ -348,7 +350,7 @@ msgid "" "function. For example::" msgstr "" -#: library/dataclasses.rst:243 +#: library/dataclasses.rst:246 msgid "" "@dataclass\n" "class C:\n" @@ -358,7 +360,7 @@ msgid "" "c.mylist += [1, 2, 3]" msgstr "" -#: library/dataclasses.rst:250 +#: library/dataclasses.rst:253 msgid "" "As shown above, the :const:`MISSING` value is a sentinel object used to " "detect if some parameters are provided by the user. This sentinel is used " @@ -366,18 +368,18 @@ msgid "" "meaning. No code should directly use the :const:`MISSING` value." msgstr "" -#: library/dataclasses.rst:255 +#: library/dataclasses.rst:258 msgid "The parameters to :func:`!field` are:" msgstr "" -#: library/dataclasses.rst:257 +#: library/dataclasses.rst:260 msgid "" "*default*: If provided, this will be the default value for this field. This " "is needed because the :func:`!field` call itself replaces the normal " "position of the default value." msgstr "" -#: library/dataclasses.rst:261 +#: library/dataclasses.rst:264 msgid "" "*default_factory*: If provided, it must be a zero-argument callable that " "will be called when a default value is needed for this field. Among other " @@ -386,19 +388,19 @@ msgid "" "*default_factory*." msgstr "" -#: library/dataclasses.rst:267 +#: library/dataclasses.rst:270 msgid "" "*init*: If true (the default), this field is included as a parameter to the " "generated :meth:`~object.__init__` method." msgstr "" -#: library/dataclasses.rst:270 +#: library/dataclasses.rst:273 msgid "" "*repr*: If true (the default), this field is included in the string returned " "by the generated :meth:`~object.__repr__` method." msgstr "" -#: library/dataclasses.rst:273 +#: library/dataclasses.rst:276 msgid "" "*hash*: This can be a bool or ``None``. If true, this field is included in " "the generated :meth:`~object.__hash__` method. If false, this field is " @@ -409,7 +411,7 @@ msgid "" "discouraged." msgstr "" -#: library/dataclasses.rst:281 +#: library/dataclasses.rst:284 msgid "" "One possible reason to set ``hash=False`` but ``compare=True`` would be if a " "field is expensive to compute a hash value for, that field is needed for " @@ -418,14 +420,14 @@ msgid "" "used for comparisons." msgstr "" -#: library/dataclasses.rst:287 +#: library/dataclasses.rst:290 msgid "" "*compare*: If true (the default), this field is included in the generated " "equality and comparison methods (:meth:`~object.__eq__`, :meth:`~object." "__gt__`, et al.)." msgstr "" -#: library/dataclasses.rst:291 +#: library/dataclasses.rst:294 msgid "" "*metadata*: This can be a mapping or ``None``. ``None`` is treated as an " "empty dict. This value is wrapped in :func:`~types.MappingProxyType` to " @@ -435,21 +437,21 @@ msgid "" "namespace in the metadata." msgstr "" -#: library/dataclasses.rst:299 +#: library/dataclasses.rst:302 msgid "" "*kw_only*: If true, this field will be marked as keyword-only. This is used " "when the generated :meth:`~object.__init__` method's parameters are computed." msgstr "" -#: library/dataclasses.rst:303 +#: library/dataclasses.rst:306 msgid "Keyword-only fields are also not included in :attr:`!__match_args__`." msgstr "" -#: library/dataclasses.rst:307 -msgid "``doc``: optional docstring for this field." +#: library/dataclasses.rst:310 +msgid "*doc*: optional docstring for this field." msgstr "" -#: library/dataclasses.rst:311 +#: library/dataclasses.rst:314 msgid "" "If the default value of a field is specified by a call to :func:`!field`, " "then the class attribute for this field will be replaced by the specified " @@ -460,7 +462,7 @@ msgid "" "specified. For example, after::" msgstr "" -#: library/dataclasses.rst:320 +#: library/dataclasses.rst:323 msgid "" "@dataclass\n" "class C:\n" @@ -470,14 +472,14 @@ msgid "" " t: int = 20" msgstr "" -#: library/dataclasses.rst:327 +#: library/dataclasses.rst:330 msgid "" "The class attribute :attr:`!C.z` will be ``10``, the class attribute :attr:`!" "C.t` will be ``20``, and the class attributes :attr:`!C.x` and :attr:`!C.y` " "will not be set." msgstr "" -#: library/dataclasses.rst:333 +#: library/dataclasses.rst:336 msgid "" ":class:`!Field` objects describe each defined field. These objects are " "created internally, and are returned by the :func:`fields` module-level " @@ -485,28 +487,28 @@ msgid "" "directly. Its documented attributes are:" msgstr "" -#: library/dataclasses.rst:338 +#: library/dataclasses.rst:341 msgid ":attr:`!name`: The name of the field." msgstr "" -#: library/dataclasses.rst:339 +#: library/dataclasses.rst:342 msgid ":attr:`!type`: The type of the field." msgstr "" -#: library/dataclasses.rst:340 +#: library/dataclasses.rst:343 msgid "" ":attr:`!default`, :attr:`!default_factory`, :attr:`!init`, :attr:`!repr`, :" "attr:`!hash`, :attr:`!compare`, :attr:`!metadata`, and :attr:`!kw_only` have " "the identical meaning and values as they do in the :func:`field` function." msgstr "" -#: library/dataclasses.rst:344 +#: library/dataclasses.rst:347 msgid "" "Other attributes may exist, but they are private and must not be inspected " "or relied on." msgstr "" -#: library/dataclasses.rst:349 +#: library/dataclasses.rst:352 msgid "" "``InitVar[T]`` type annotations describe variables that are :ref:`init-only " "`. Fields annotated with :class:`!InitVar` " @@ -515,7 +517,7 @@ msgid "" "meth:`~object.__init__` and an optional :meth:`__post_init__`." msgstr "" -#: library/dataclasses.rst:358 +#: library/dataclasses.rst:361 msgid "" "Returns a tuple of :class:`Field` objects that define the fields for this " "dataclass. Accepts either a dataclass, or an instance of a dataclass. " @@ -523,7 +525,7 @@ msgid "" "not return pseudo-fields which are ``ClassVar`` or ``InitVar``." msgstr "" -#: library/dataclasses.rst:365 +#: library/dataclasses.rst:368 msgid "" "Converts the dataclass *obj* to a dict (by using the factory function " "*dict_factory*). Each dataclass is converted to a dict of its fields, as " @@ -531,11 +533,11 @@ msgid "" "into. Other objects are copied with :func:`copy.deepcopy`." msgstr "" -#: library/dataclasses.rst:371 +#: library/dataclasses.rst:374 msgid "Example of using :func:`!asdict` on nested dataclasses::" msgstr "" -#: library/dataclasses.rst:373 +#: library/dataclasses.rst:376 msgid "" "@dataclass\n" "class Point:\n" @@ -553,20 +555,20 @@ msgid "" "assert asdict(c) == {'mylist': [{'x': 0, 'y': 0}, {'x': 10, 'y': 4}]}" msgstr "" -#: library/dataclasses.rst:408 +#: library/dataclasses.rst:411 msgid "To create a shallow copy, the following workaround may be used::" msgstr "" -#: library/dataclasses.rst:390 +#: library/dataclasses.rst:393 msgid "{field.name: getattr(obj, field.name) for field in fields(obj)}" msgstr "" -#: library/dataclasses.rst:392 +#: library/dataclasses.rst:395 msgid "" ":func:`!asdict` raises :exc:`TypeError` if *obj* is not a dataclass instance." msgstr "" -#: library/dataclasses.rst:397 +#: library/dataclasses.rst:400 msgid "" "Converts the dataclass *obj* to a tuple (by using the factory function " "*tuple_factory*). Each dataclass is converted to a tuple of its field " @@ -574,27 +576,27 @@ msgid "" "objects are copied with :func:`copy.deepcopy`." msgstr "" -#: library/dataclasses.rst:403 +#: library/dataclasses.rst:406 msgid "Continuing from the previous example::" msgstr "" -#: library/dataclasses.rst:405 +#: library/dataclasses.rst:408 msgid "" "assert astuple(p) == (10, 20)\n" "assert astuple(c) == ([(0, 0), (10, 4)],)" msgstr "" -#: library/dataclasses.rst:410 +#: library/dataclasses.rst:413 msgid "tuple(getattr(obj, field.name) for field in dataclasses.fields(obj))" msgstr "" -#: library/dataclasses.rst:412 +#: library/dataclasses.rst:415 msgid "" ":func:`!astuple` raises :exc:`TypeError` if *obj* is not a dataclass " "instance." msgstr "" -#: library/dataclasses.rst:417 +#: library/dataclasses.rst:420 msgid "" "Creates a new dataclass with name *cls_name*, fields as defined in *fields*, " "base classes as given in *bases*, and initialized with a namespace as given " @@ -606,13 +608,13 @@ msgid "" "`@dataclass `." msgstr "" -#: library/dataclasses.rst:427 +#: library/dataclasses.rst:430 msgid "" "If *module* is defined, the :attr:`!__module__` attribute of the dataclass " "is set to that value. By default, it is set to the module name of the caller." msgstr "" -#: library/dataclasses.rst:431 +#: library/dataclasses.rst:434 msgid "" "The *decorator* parameter is a callable that will be used to create the " "dataclass. It should take the class object as a first argument and the same " @@ -620,7 +622,7 @@ msgid "" "`@dataclass ` function is used." msgstr "" -#: library/dataclasses.rst:436 +#: library/dataclasses.rst:439 msgid "" "This function is not strictly required, because any Python mechanism for " "creating a new class with :attr:`!__annotations__` can then apply the :func:" @@ -628,7 +630,7 @@ msgid "" "This function is provided as a convenience. For example::" msgstr "" -#: library/dataclasses.rst:442 +#: library/dataclasses.rst:445 msgid "" "C = make_dataclass('C',\n" " [('x', int),\n" @@ -637,11 +639,11 @@ msgid "" " namespace={'add_one': lambda self: self.x + 1})" msgstr "" -#: library/dataclasses.rst:448 +#: library/dataclasses.rst:451 msgid "Is equivalent to::" msgstr "" -#: library/dataclasses.rst:450 +#: library/dataclasses.rst:453 msgid "" "@dataclass\n" "class C:\n" @@ -653,11 +655,11 @@ msgid "" " return self.x + 1" msgstr "" -#: library/dataclasses.rst:459 +#: library/dataclasses.rst:462 msgid "Added the *decorator* parameter." msgstr "" -#: library/dataclasses.rst:464 +#: library/dataclasses.rst:467 msgid "" "Creates a new object of the same type as *obj*, replacing fields with values " "from *changes*. If *obj* is not a Data Class, raises :exc:`TypeError`. If " @@ -665,27 +667,27 @@ msgid "" "`TypeError`." msgstr "" -#: library/dataclasses.rst:469 +#: library/dataclasses.rst:472 msgid "" "The newly returned object is created by calling the :meth:`~object.__init__` " "method of the dataclass. This ensures that :meth:`__post_init__`, if " "present, is also called." msgstr "" -#: library/dataclasses.rst:473 +#: library/dataclasses.rst:476 msgid "" "Init-only variables without default values, if any exist, must be specified " "on the call to :func:`!replace` so that they can be passed to :meth:`!" "__init__` and :meth:`__post_init__`." msgstr "" -#: library/dataclasses.rst:477 +#: library/dataclasses.rst:480 msgid "" "It is an error for *changes* to contain any fields that are defined as " "having ``init=False``. A :exc:`ValueError` will be raised in this case." msgstr "" -#: library/dataclasses.rst:481 +#: library/dataclasses.rst:484 msgid "" "Be forewarned about how ``init=False`` fields work during a call to :func:`!" "replace`. They are not copied from the source object, but rather are " @@ -696,36 +698,36 @@ msgid "" "instance copying." msgstr "" -#: library/dataclasses.rst:490 +#: library/dataclasses.rst:493 msgid "" "Dataclass instances are also supported by generic function :func:`copy." "replace`." msgstr "" -#: library/dataclasses.rst:494 +#: library/dataclasses.rst:497 msgid "" "Return ``True`` if its parameter is a dataclass (including subclasses of a " "dataclass) or an instance of one, otherwise return ``False``." msgstr "" -#: library/dataclasses.rst:497 +#: library/dataclasses.rst:500 msgid "" "If you need to know if a class is an instance of a dataclass (and not a " "dataclass itself), then add a further check for ``not isinstance(obj, " "type)``::" msgstr "" -#: library/dataclasses.rst:501 +#: library/dataclasses.rst:504 msgid "" "def is_dataclass_instance(obj):\n" " return is_dataclass(obj) and not isinstance(obj, type)" msgstr "" -#: library/dataclasses.rst:506 +#: library/dataclasses.rst:509 msgid "A sentinel value signifying a missing default or default_factory." msgstr "" -#: library/dataclasses.rst:510 +#: library/dataclasses.rst:513 msgid "" "A sentinel value used as a type annotation. Any fields after a pseudo-field " "with the type of :const:`!KW_ONLY` are marked as keyword-only fields. Note " @@ -736,13 +738,13 @@ msgid "" "the class is instantiated." msgstr "" -#: library/dataclasses.rst:519 +#: library/dataclasses.rst:522 msgid "" "In this example, the fields ``y`` and ``z`` will be marked as keyword-only " "fields::" msgstr "" -#: library/dataclasses.rst:521 +#: library/dataclasses.rst:524 msgid "" "@dataclass\n" "class Point:\n" @@ -754,24 +756,24 @@ msgid "" "p = Point(0, y=1.5, z=2.0)" msgstr "" -#: library/dataclasses.rst:530 +#: library/dataclasses.rst:533 msgid "" "In a single dataclass, it is an error to specify more than one field whose " "type is :const:`!KW_ONLY`." msgstr "" -#: library/dataclasses.rst:537 +#: library/dataclasses.rst:540 msgid "" "Raised when an implicitly defined :meth:`~object.__setattr__` or :meth:" "`~object.__delattr__` is called on a dataclass which was defined with " "``frozen=True``. It is a subclass of :exc:`AttributeError`." msgstr "" -#: library/dataclasses.rst:544 +#: library/dataclasses.rst:547 msgid "Post-init processing" msgstr "" -#: library/dataclasses.rst:548 +#: library/dataclasses.rst:551 msgid "" "When defined on the class, it will be called by the generated :meth:`~object." "__init__`, normally as :meth:`!self.__post_init__`. However, if any " @@ -781,13 +783,13 @@ msgid "" "automatically be called." msgstr "" -#: library/dataclasses.rst:555 +#: library/dataclasses.rst:558 msgid "" "Among other uses, this allows for initializing field values that depend on " "one or more other fields. For example::" msgstr "" -#: library/dataclasses.rst:558 +#: library/dataclasses.rst:561 msgid "" "@dataclass\n" "class C:\n" @@ -799,7 +801,7 @@ msgid "" " self.c = self.a + self.b" msgstr "" -#: library/dataclasses.rst:567 +#: library/dataclasses.rst:570 msgid "" "The :meth:`~object.__init__` method generated by :func:`@dataclass " "` does not call base class :meth:`!__init__` methods. If the base " @@ -807,7 +809,7 @@ msgid "" "call this method in a :meth:`__post_init__` method::" msgstr "" -#: library/dataclasses.rst:572 +#: library/dataclasses.rst:575 msgid "" "class Rectangle:\n" " def __init__(self, height, width):\n" @@ -822,25 +824,25 @@ msgid "" " super().__init__(self.side, self.side)" msgstr "" -#: library/dataclasses.rst:584 +#: library/dataclasses.rst:587 msgid "" "Note, however, that in general the dataclass-generated :meth:`!__init__` " "methods don't need to be called, since the derived dataclass will take care " "of initializing all fields of any base class that is a dataclass itself." msgstr "" -#: library/dataclasses.rst:588 +#: library/dataclasses.rst:591 msgid "" "See the section below on init-only variables for ways to pass parameters to :" "meth:`!__post_init__`. Also see the warning about how :func:`replace` " "handles ``init=False`` fields." msgstr "" -#: library/dataclasses.rst:595 +#: library/dataclasses.rst:598 msgid "Class variables" msgstr "" -#: library/dataclasses.rst:597 +#: library/dataclasses.rst:600 msgid "" "One of the few places where :func:`@dataclass ` actually inspects " "the type of a field is to determine if a field is a class variable as " @@ -851,11 +853,11 @@ msgid "" "`fields` function." msgstr "" -#: library/dataclasses.rst:608 +#: library/dataclasses.rst:611 msgid "Init-only variables" msgstr "" -#: library/dataclasses.rst:610 +#: library/dataclasses.rst:613 msgid "" "Another place where :func:`@dataclass ` inspects a type " "annotation is to determine if a field is an init-only variable. It does " @@ -868,13 +870,13 @@ msgid "" "dataclasses." msgstr "" -#: library/dataclasses.rst:620 +#: library/dataclasses.rst:623 msgid "" "For example, suppose a field will be initialized from a database, if a value " "is not provided when creating the class::" msgstr "" -#: library/dataclasses.rst:623 +#: library/dataclasses.rst:626 msgid "" "@dataclass\n" "class C:\n" @@ -889,17 +891,17 @@ msgid "" "c = C(10, database=my_database)" msgstr "" -#: library/dataclasses.rst:635 +#: library/dataclasses.rst:638 msgid "" "In this case, :func:`fields` will return :class:`Field` objects for :attr:`!" "i` and :attr:`!j`, but not for :attr:`!database`." msgstr "" -#: library/dataclasses.rst:641 +#: library/dataclasses.rst:644 msgid "Frozen instances" msgstr "" -#: library/dataclasses.rst:643 +#: library/dataclasses.rst:646 msgid "" "It is not possible to create truly immutable Python objects. However, by " "passing ``frozen=True`` to the :func:`@dataclass ` decorator you " @@ -908,18 +910,18 @@ msgid "" "methods will raise a :exc:`FrozenInstanceError` when invoked." msgstr "" -#: library/dataclasses.rst:649 +#: library/dataclasses.rst:652 msgid "" "There is a tiny performance penalty when using ``frozen=True``: :meth:" "`~object.__init__` cannot use simple assignment to initialize fields, and " "must use :meth:`!object.__setattr__`." msgstr "" -#: library/dataclasses.rst:658 +#: library/dataclasses.rst:661 msgid "Inheritance" msgstr "" -#: library/dataclasses.rst:660 +#: library/dataclasses.rst:663 msgid "" "When the dataclass is being created by the :func:`@dataclass ` " "decorator, it looks through all of the class's base classes in reverse MRO " @@ -931,7 +933,7 @@ msgid "" "order, derived classes override base classes. An example::" msgstr "" -#: library/dataclasses.rst:670 +#: library/dataclasses.rst:673 msgid "" "@dataclass\n" "class Base:\n" @@ -944,28 +946,28 @@ msgid "" " x: int = 15" msgstr "" -#: library/dataclasses.rst:680 +#: library/dataclasses.rst:683 msgid "" "The final list of fields is, in order, :attr:`!x`, :attr:`!y`, :attr:`!z`. " "The final type of :attr:`!x` is :class:`int`, as specified in class :class:`!" "C`." msgstr "" -#: library/dataclasses.rst:683 +#: library/dataclasses.rst:686 msgid "" "The generated :meth:`~object.__init__` method for :class:`!C` will look " "like::" msgstr "" -#: library/dataclasses.rst:685 +#: library/dataclasses.rst:688 msgid "def __init__(self, x: int = 15, y: int = 0, z: int = 10):" msgstr "" -#: library/dataclasses.rst:688 +#: library/dataclasses.rst:691 msgid "Re-ordering of keyword-only parameters in :meth:`!__init__`" msgstr "" -#: library/dataclasses.rst:690 +#: library/dataclasses.rst:693 msgid "" "After the parameters needed for :meth:`~object.__init__` are computed, any " "keyword-only parameters are moved to come after all regular (non-keyword-" @@ -973,14 +975,14 @@ msgid "" "implemented in Python: they must come after non-keyword-only parameters." msgstr "" -#: library/dataclasses.rst:696 +#: library/dataclasses.rst:699 msgid "" "In this example, :attr:`!Base.y`, :attr:`!Base.w`, and :attr:`!D.t` are " "keyword-only fields, and :attr:`!Base.x` and :attr:`!D.z` are regular " "fields::" msgstr "" -#: library/dataclasses.rst:699 +#: library/dataclasses.rst:702 msgid "" "@dataclass\n" "class Base:\n" @@ -995,45 +997,45 @@ msgid "" " t: int = field(kw_only=True, default=0)" msgstr "" -#: library/dataclasses.rst:711 +#: library/dataclasses.rst:714 msgid "The generated :meth:`!__init__` method for :class:`!D` will look like::" msgstr "" -#: library/dataclasses.rst:713 +#: library/dataclasses.rst:716 msgid "" "def __init__(self, x: Any = 15.0, z: int = 10, *, y: int = 0, w: int = 1, t: " "int = 0):" msgstr "" -#: library/dataclasses.rst:715 +#: library/dataclasses.rst:718 msgid "" "Note that the parameters have been re-ordered from how they appear in the " "list of fields: parameters derived from regular fields are followed by " "parameters derived from keyword-only fields." msgstr "" -#: library/dataclasses.rst:719 +#: library/dataclasses.rst:722 msgid "" "The relative ordering of keyword-only parameters is maintained in the re-" "ordered :meth:`!__init__` parameter list." msgstr "" -#: library/dataclasses.rst:724 +#: library/dataclasses.rst:727 msgid "Default factory functions" msgstr "" -#: library/dataclasses.rst:726 +#: library/dataclasses.rst:729 msgid "" "If a :func:`field` specifies a *default_factory*, it is called with zero " "arguments when a default value for the field is needed. For example, to " "create a new instance of a list, use::" msgstr "" -#: library/dataclasses.rst:730 +#: library/dataclasses.rst:733 msgid "mylist: list = field(default_factory=list)" msgstr "" -#: library/dataclasses.rst:732 +#: library/dataclasses.rst:735 msgid "" "If a field is excluded from :meth:`~object.__init__` (using ``init=False``) " "and the field also specifies *default_factory*, then the default factory " @@ -1042,17 +1044,17 @@ msgid "" "initial value." msgstr "" -#: library/dataclasses.rst:739 +#: library/dataclasses.rst:742 msgid "Mutable default values" msgstr "" -#: library/dataclasses.rst:741 +#: library/dataclasses.rst:744 msgid "" "Python stores default member variable values in class attributes. Consider " "this example, not using dataclasses::" msgstr "" -#: library/dataclasses.rst:744 +#: library/dataclasses.rst:747 msgid "" "class C:\n" " x = []\n" @@ -1067,17 +1069,17 @@ msgid "" "assert o1.x is o2.x" msgstr "" -#: library/dataclasses.rst:756 +#: library/dataclasses.rst:759 msgid "" "Note that the two instances of class :class:`!C` share the same class " "variable :attr:`!x`, as expected." msgstr "" -#: library/dataclasses.rst:759 +#: library/dataclasses.rst:762 msgid "Using dataclasses, *if* this code was valid::" msgstr "" -#: library/dataclasses.rst:761 +#: library/dataclasses.rst:764 msgid "" "@dataclass\n" "class D:\n" @@ -1086,11 +1088,11 @@ msgid "" " self.x.append(element)" msgstr "" -#: library/dataclasses.rst:767 +#: library/dataclasses.rst:770 msgid "it would generate code similar to::" msgstr "" -#: library/dataclasses.rst:769 +#: library/dataclasses.rst:772 msgid "" "class D:\n" " x = []\n" @@ -1102,7 +1104,7 @@ msgid "" "assert D().x is D().x" msgstr "" -#: library/dataclasses.rst:778 +#: library/dataclasses.rst:781 msgid "" "This has the same issue as the original example using class :class:`!C`. " "That is, two instances of class :class:`!D` that do not specify a value for :" @@ -1115,13 +1117,13 @@ msgid "" "partial solution, but it does protect against many common errors." msgstr "" -#: library/dataclasses.rst:789 +#: library/dataclasses.rst:792 msgid "" "Using default factory functions is a way to create new instances of mutable " "types as default values for fields::" msgstr "" -#: library/dataclasses.rst:792 +#: library/dataclasses.rst:795 msgid "" "@dataclass\n" "class D:\n" @@ -1130,38 +1132,38 @@ msgid "" "assert D().x is not D().x" msgstr "" -#: library/dataclasses.rst:798 +#: library/dataclasses.rst:801 msgid "" "Instead of looking for and disallowing objects of type :class:`list`, :class:" "`dict`, or :class:`set`, unhashable objects are now not allowed as default " "values. Unhashability is used to approximate mutability." msgstr "" -#: library/dataclasses.rst:805 +#: library/dataclasses.rst:808 msgid "Descriptor-typed fields" msgstr "" -#: library/dataclasses.rst:807 +#: library/dataclasses.rst:810 msgid "" "Fields that are assigned :ref:`descriptor objects ` as their " "default value have the following special behaviors:" msgstr "" -#: library/dataclasses.rst:810 +#: library/dataclasses.rst:813 msgid "" "The value for the field passed to the dataclass's :meth:`~object.__init__` " "method is passed to the descriptor's :meth:`~object.__set__` method rather " "than overwriting the descriptor object." msgstr "" -#: library/dataclasses.rst:814 +#: library/dataclasses.rst:817 msgid "" "Similarly, when getting or setting the field, the descriptor's :meth:" "`~object.__get__` or :meth:`!__set__` method is called rather than returning " "or overwriting the descriptor object." msgstr "" -#: library/dataclasses.rst:818 +#: library/dataclasses.rst:821 msgid "" "To determine whether a field contains a default value, :func:`@dataclass " "` will call the descriptor's :meth:`!__get__` method using its " @@ -1171,7 +1173,7 @@ msgid "" "in this situation, no default value will be provided for the field." msgstr "" -#: library/dataclasses.rst:828 +#: library/dataclasses.rst:831 msgid "" "class IntConversionDescriptor:\n" " def __init__(self, *, default):\n" @@ -1200,7 +1202,7 @@ msgid "" "print(i.quantity_on_hand) # 2" msgstr "" -#: library/dataclasses.rst:853 +#: library/dataclasses.rst:856 msgid "" "Note that if a field is annotated with a descriptor type, but is not " "assigned a descriptor object as its default value, the field will act like a " diff --git a/library/datatypes.po b/library/datatypes.po index c0a57f54..6cdfccb5 100644 --- a/library/datatypes.po +++ b/library/datatypes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/datetime.po b/library/datetime.po index 45f985b2..543e0c7a 100644 --- a/library/datetime.po +++ b/library/datetime.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -407,53 +407,73 @@ msgid "" "(-1, 86399, 999999)" msgstr "" -#: library/datetime.rst:599 library/datetime.rst:1797 library/datetime.rst:2418 +#: library/datetime.rst:264 +msgid "" +"Since the string representation of :class:`!timedelta` objects can be " +"confusing, use the following recipe to produce a more readable format:" +msgstr "" + +#: library/datetime.rst:267 +msgid "" +">>> def pretty_timedelta(td):\n" +"... if td.days >= 0:\n" +"... return str(td)\n" +"... return f'-({-td!s})'\n" +"...\n" +">>> d = timedelta(hours=-1)\n" +">>> str(d) # not human-friendly\n" +"'-1 day, 23:00:00'\n" +">>> pretty_timedelta(d)\n" +"'-(1:00:00)'" +msgstr "" + +#: library/datetime.rst:615 library/datetime.rst:1813 library/datetime.rst:2434 msgid "Class attributes:" msgstr "" -#: library/datetime.rst:269 +#: library/datetime.rst:285 msgid "The most negative :class:`timedelta` object, ``timedelta(-999999999)``." msgstr "" -#: library/datetime.rst:274 +#: library/datetime.rst:290 msgid "" "The most positive :class:`timedelta` object, ``timedelta(days=999999999, " "hours=23, minutes=59, seconds=59, microseconds=999999)``." msgstr "" -#: library/datetime.rst:280 +#: library/datetime.rst:296 msgid "" "The smallest possible difference between non-equal :class:`timedelta` " "objects, ``timedelta(microseconds=1)``." msgstr "" -#: library/datetime.rst:283 +#: library/datetime.rst:299 msgid "" "Note that, because of normalization, ``timedelta.max`` is greater than ``-" "timedelta.min``. ``-timedelta.max`` is not representable as a :class:" "`timedelta` object." msgstr "" -#: library/datetime.rst:617 library/datetime.rst:1817 +#: library/datetime.rst:633 library/datetime.rst:1833 msgid "Instance attributes (read-only):" msgstr "" -#: library/datetime.rst:291 +#: library/datetime.rst:307 msgid "Between -999,999,999 and 999,999,999 inclusive." msgstr "" -#: library/datetime.rst:296 +#: library/datetime.rst:312 msgid "Between 0 and 86,399 inclusive." msgstr "" -#: library/datetime.rst:300 +#: library/datetime.rst:316 msgid "" "It is a somewhat common bug for code to unintentionally use this attribute " "when it is actually intended to get a :meth:`~timedelta.total_seconds` value " "instead:" msgstr "" -#: library/datetime.rst:304 +#: library/datetime.rst:320 msgid "" ">>> from datetime import timedelta\n" ">>> duration = timedelta(seconds=11235813)\n" @@ -463,190 +483,190 @@ msgid "" "11235813.0" msgstr "" -#: library/datetime.rst:315 +#: library/datetime.rst:331 msgid "Between 0 and 999,999 inclusive." msgstr "" -#: library/datetime.rst:634 library/datetime.rst:1232 +#: library/datetime.rst:650 library/datetime.rst:1248 msgid "Supported operations:" msgstr "" -#: library/datetime.rst:637 library/datetime.rst:1235 +#: library/datetime.rst:653 library/datetime.rst:1251 msgid "Operation" msgstr "" -#: library/datetime.rst:637 library/datetime.rst:1235 +#: library/datetime.rst:653 library/datetime.rst:1251 msgid "Result" msgstr "" -#: library/datetime.rst:325 +#: library/datetime.rst:341 msgid "``t1 = t2 + t3``" msgstr "" -#: library/datetime.rst:325 +#: library/datetime.rst:341 msgid "" "Sum of ``t2`` and ``t3``. Afterwards ``t1 - t2 == t3`` and ``t1 - t3 == t2`` " "are true. (1)" msgstr "" -#: library/datetime.rst:329 +#: library/datetime.rst:345 msgid "``t1 = t2 - t3``" msgstr "" -#: library/datetime.rst:329 +#: library/datetime.rst:345 msgid "" "Difference of ``t2`` and ``t3``. Afterwards ``t1 == t2 - t3`` and ``t2 == " "t1 + t3`` are true. (1)(6)" msgstr "" -#: library/datetime.rst:333 +#: library/datetime.rst:349 msgid "``t1 = t2 * i or t1 = i * t2``" msgstr "" -#: library/datetime.rst:333 +#: library/datetime.rst:349 msgid "" "Delta multiplied by an integer. Afterwards ``t1 // i == t2`` is true, " "provided ``i != 0``." msgstr "" -#: library/datetime.rst:337 +#: library/datetime.rst:353 msgid "In general, ``t1 * i == t1 * (i-1) + t1`` is true. (1)" msgstr "" -#: library/datetime.rst:340 +#: library/datetime.rst:356 msgid "``t1 = t2 * f or t1 = f * t2``" msgstr "" -#: library/datetime.rst:340 +#: library/datetime.rst:356 msgid "" "Delta multiplied by a float. The result is rounded to the nearest multiple " "of timedelta.resolution using round-half-to-even." msgstr "" -#: library/datetime.rst:344 +#: library/datetime.rst:360 msgid "``f = t2 / t3``" msgstr "" -#: library/datetime.rst:344 +#: library/datetime.rst:360 msgid "" "Division (3) of overall duration ``t2`` by interval unit ``t3``. Returns a :" "class:`float` object." msgstr "" -#: library/datetime.rst:348 +#: library/datetime.rst:364 msgid "``t1 = t2 / f or t1 = t2 / i``" msgstr "" -#: library/datetime.rst:348 +#: library/datetime.rst:364 msgid "" "Delta divided by a float or an int. The result is rounded to the nearest " "multiple of timedelta.resolution using round-half-to-even." msgstr "" -#: library/datetime.rst:352 +#: library/datetime.rst:368 msgid "``t1 = t2 // i`` or ``t1 = t2 // t3``" msgstr "" -#: library/datetime.rst:352 +#: library/datetime.rst:368 msgid "" "The floor is computed and the remainder (if any) is thrown away. In the " "second case, an integer is returned. (3)" msgstr "" -#: library/datetime.rst:356 +#: library/datetime.rst:372 msgid "``t1 = t2 % t3``" msgstr "" -#: library/datetime.rst:356 +#: library/datetime.rst:372 msgid "The remainder is computed as a :class:`timedelta` object. (3)" msgstr "" -#: library/datetime.rst:359 +#: library/datetime.rst:375 msgid "``q, r = divmod(t1, t2)``" msgstr "" -#: library/datetime.rst:359 +#: library/datetime.rst:375 msgid "" "Computes the quotient and the remainder: ``q = t1 // t2`` (3) and ``r = t1 % " "t2``. ``q`` is an integer and ``r`` is a :class:`timedelta` object." msgstr "" -#: library/datetime.rst:364 +#: library/datetime.rst:380 msgid "``+t1``" msgstr "" -#: library/datetime.rst:364 +#: library/datetime.rst:380 msgid "Returns a :class:`timedelta` object with the same value. (2)" msgstr "" -#: library/datetime.rst:367 +#: library/datetime.rst:383 msgid "``-t1``" msgstr "" -#: library/datetime.rst:367 +#: library/datetime.rst:383 msgid "" "Equivalent to ``timedelta(-t1.days, -t1.seconds, -t1.microseconds)``, and to " "``t1 * -1``. (1)(4)" msgstr "" -#: library/datetime.rst:371 +#: library/datetime.rst:387 msgid "``abs(t)``" msgstr "" -#: library/datetime.rst:371 +#: library/datetime.rst:387 msgid "" "Equivalent to ``+t`` when ``t.days >= 0``, and to ``-t`` when ``t.days < " "0``. (2)" msgstr "" -#: library/datetime.rst:374 +#: library/datetime.rst:390 msgid "``str(t)``" msgstr "" -#: library/datetime.rst:374 +#: library/datetime.rst:390 msgid "" "Returns a string in the form ``[D day[s], ][H]H:MM:SS[.UUUUUU]``, where D is " "negative for negative ``t``. (5)" msgstr "" -#: library/datetime.rst:378 +#: library/datetime.rst:394 msgid "``repr(t)``" msgstr "" -#: library/datetime.rst:378 +#: library/datetime.rst:394 msgid "" "Returns a string representation of the :class:`timedelta` object as a " "constructor call with canonical attribute values." msgstr "" -#: library/datetime.rst:656 library/datetime.rst:2647 +#: library/datetime.rst:672 library/datetime.rst:2663 msgid "Notes:" msgstr "" -#: library/datetime.rst:387 +#: library/datetime.rst:403 msgid "This is exact but may overflow." msgstr "" -#: library/datetime.rst:390 +#: library/datetime.rst:406 msgid "This is exact and cannot overflow." msgstr "" -#: library/datetime.rst:393 +#: library/datetime.rst:409 msgid "Division by zero raises :exc:`ZeroDivisionError`." msgstr "" -#: library/datetime.rst:396 +#: library/datetime.rst:412 msgid "``-timedelta.max`` is not representable as a :class:`timedelta` object." msgstr "" -#: library/datetime.rst:399 +#: library/datetime.rst:415 msgid "" "String representations of :class:`timedelta` objects are normalized " "similarly to their internal representation. This leads to somewhat unusual " "results for negative timedeltas. For example::" msgstr "" -#: library/datetime.rst:403 +#: library/datetime.rst:419 msgid "" ">>> timedelta(hours=-5)\n" "datetime.timedelta(days=-1, seconds=68400)\n" @@ -654,21 +674,21 @@ msgid "" "-1 day, 19:00:00" msgstr "" -#: library/datetime.rst:409 +#: library/datetime.rst:425 msgid "" "The expression ``t2 - t3`` will always be equal to the expression ``t2 + (-" "t3)`` except when t3 is equal to ``timedelta.max``; in that case the former " "will produce a result while the latter will overflow." msgstr "" -#: library/datetime.rst:413 +#: library/datetime.rst:429 msgid "" "In addition to the operations listed above, :class:`timedelta` objects " "support certain additions and subtractions with :class:`date` and :class:`." "datetime` objects (see below)." msgstr "" -#: library/datetime.rst:417 +#: library/datetime.rst:433 msgid "" "Floor division and true division of a :class:`timedelta` object by another :" "class:`timedelta` object are now supported, as are remainder operations and " @@ -676,42 +696,42 @@ msgid "" "`timedelta` object by a :class:`float` object are now supported." msgstr "" -#: library/datetime.rst:423 +#: library/datetime.rst:439 msgid ":class:`timedelta` objects support equality and order comparisons." msgstr "" -#: library/datetime.rst:425 +#: library/datetime.rst:441 msgid "" "In Boolean contexts, a :class:`timedelta` object is considered to be true if " "and only if it isn't equal to ``timedelta(0)``." msgstr "" -#: library/datetime.rst:698 library/datetime.rst:1940 +#: library/datetime.rst:714 library/datetime.rst:1956 msgid "Instance methods:" msgstr "" -#: library/datetime.rst:432 +#: library/datetime.rst:448 msgid "" "Return the total number of seconds contained in the duration. Equivalent to " "``td / timedelta(seconds=1)``. For interval units other than seconds, use " "the division form directly (e.g. ``td / timedelta(microseconds=1)``)." msgstr "" -#: library/datetime.rst:436 +#: library/datetime.rst:452 msgid "" "Note that for very large time intervals (greater than 270 years on most " "platforms) this method will lose microsecond accuracy." msgstr "" -#: library/datetime.rst:442 +#: library/datetime.rst:458 msgid "Examples of usage: :class:`timedelta`" msgstr "" -#: library/datetime.rst:444 +#: library/datetime.rst:460 msgid "An additional example of normalization::" msgstr "" -#: library/datetime.rst:446 +#: library/datetime.rst:462 msgid "" ">>> # Components of another_year add up to exactly 365 days\n" ">>> from datetime import timedelta\n" @@ -724,11 +744,11 @@ msgid "" "31536000.0" msgstr "" -#: library/datetime.rst:456 +#: library/datetime.rst:472 msgid "Examples of :class:`timedelta` arithmetic::" msgstr "" -#: library/datetime.rst:458 +#: library/datetime.rst:474 msgid "" ">>> from datetime import timedelta\n" ">>> year = timedelta(days=365)\n" @@ -745,65 +765,65 @@ msgid "" "(datetime.timedelta(days=1095), 3)" msgstr "" -#: library/datetime.rst:475 +#: library/datetime.rst:491 msgid ":class:`date` Objects" msgstr "" -#: library/datetime.rst:477 +#: library/datetime.rst:493 msgid "" "A :class:`date` object represents a date (year, month and day) in an " "idealized calendar, the current Gregorian calendar indefinitely extended in " "both directions." msgstr "" -#: library/datetime.rst:481 +#: library/datetime.rst:497 msgid "" "January 1 of year 1 is called day number 1, January 2 of year 1 is called " "day number 2, and so on. [#]_" msgstr "" -#: library/datetime.rst:486 +#: library/datetime.rst:502 msgid "" "All arguments are required. Arguments must be integers, in the following " "ranges:" msgstr "" -#: library/datetime.rst:489 +#: library/datetime.rst:505 msgid "``MINYEAR <= year <= MAXYEAR``" msgstr "" -#: library/datetime.rst:490 +#: library/datetime.rst:506 msgid "``1 <= month <= 12``" msgstr "" -#: library/datetime.rst:491 +#: library/datetime.rst:507 msgid "``1 <= day <= number of days in the given month and year``" msgstr "" -#: library/datetime.rst:916 +#: library/datetime.rst:932 msgid "" "If an argument outside those ranges is given, :exc:`ValueError` is raised." msgstr "" -#: library/datetime.rst:921 +#: library/datetime.rst:937 msgid "Other constructors, all class methods:" msgstr "" -#: library/datetime.rst:500 +#: library/datetime.rst:516 msgid "Return the current local date." msgstr "" -#: library/datetime.rst:502 +#: library/datetime.rst:518 msgid "This is equivalent to ``date.fromtimestamp(time.time())``." msgstr "" -#: library/datetime.rst:506 +#: library/datetime.rst:522 msgid "" "Return the local date corresponding to the POSIX timestamp, such as is " "returned by :func:`time.time`." msgstr "" -#: library/datetime.rst:509 +#: library/datetime.rst:525 msgid "" "This may raise :exc:`OverflowError`, if the timestamp is out of the range of " "values supported by the platform C :c:func:`localtime` function, and :exc:" @@ -813,7 +833,7 @@ msgid "" "ignored by :meth:`fromtimestamp`." msgstr "" -#: library/datetime.rst:516 +#: library/datetime.rst:532 msgid "" "Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp is " "out of the range of values supported by the platform C :c:func:`localtime` " @@ -821,44 +841,44 @@ msgid "" "`localtime` failure." msgstr "" -#: library/datetime.rst:525 +#: library/datetime.rst:541 msgid "" "Return the date corresponding to the proleptic Gregorian ordinal, where " "January 1 of year 1 has ordinal 1." msgstr "" -#: library/datetime.rst:528 +#: library/datetime.rst:544 msgid "" ":exc:`ValueError` is raised unless ``1 <= ordinal <= date.max.toordinal()``. " "For any date ``d``, ``date.fromordinal(d.toordinal()) == d``." msgstr "" -#: library/datetime.rst:535 +#: library/datetime.rst:551 msgid "" "Return a :class:`date` corresponding to a *date_string* given in any valid " "ISO 8601 format, with the following exceptions:" msgstr "" -#: library/datetime.rst:1081 +#: library/datetime.rst:1097 msgid "" "Reduced precision dates are not currently supported (``YYYY-MM``, ``YYYY``)." msgstr "" -#: library/datetime.rst:1083 +#: library/datetime.rst:1099 msgid "" "Extended date representations are not currently supported (``±YYYYYY-MM-" "DD``)." msgstr "" -#: library/datetime.rst:1085 +#: library/datetime.rst:1101 msgid "Ordinal dates are not currently supported (``YYYY-OOO``)." msgstr "" -#: library/datetime.rst:1087 library/datetime.rst:1553 +#: library/datetime.rst:1103 library/datetime.rst:1569 msgid "Examples::" msgstr "" -#: library/datetime.rst:546 +#: library/datetime.rst:562 msgid "" ">>> from datetime import date\n" ">>> date.fromisoformat('2019-12-04')\n" @@ -869,35 +889,35 @@ msgid "" "datetime.date(2021, 1, 4)" msgstr "" -#: library/datetime.rst:555 +#: library/datetime.rst:571 msgid "Previously, this method only supported the format ``YYYY-MM-DD``." msgstr "" -#: library/datetime.rst:560 +#: library/datetime.rst:576 msgid "" "Return a :class:`date` corresponding to the ISO calendar date specified by " "year, week and day. This is the inverse of the function :meth:`date." "isocalendar`." msgstr "" -#: library/datetime.rst:567 +#: library/datetime.rst:583 msgid "" "Return a :class:`.date` corresponding to *date_string*, parsed according to " "*format*. This is equivalent to::" msgstr "" -#: library/datetime.rst:570 +#: library/datetime.rst:586 msgid "date(*(time.strptime(date_string, format)[0:3]))" msgstr "" -#: library/datetime.rst:572 +#: library/datetime.rst:588 msgid "" ":exc:`ValueError` is raised if the date_string and format can't be parsed " "by :func:`time.strptime` or if it returns a value which isn't a time tuple. " "See also :ref:`strftime-strptime-behavior` and :meth:`date.fromisoformat`." msgstr "" -#: library/datetime.rst:579 +#: library/datetime.rst:595 msgid "" "If *format* specifies a day of month without a year a :exc:" "`DeprecationWarning` is emitted. This is to avoid a quadrennial leap year " @@ -908,7 +928,7 @@ msgid "" "year, explicitly add a year that is a leap year before parsing:" msgstr "" -#: library/datetime.rst:588 +#: library/datetime.rst:604 msgid "" ">>> from datetime import date\n" ">>> date_string = \"02/29\"\n" @@ -918,53 +938,53 @@ msgid "" "'February 29'" msgstr "" -#: library/datetime.rst:603 +#: library/datetime.rst:619 msgid "The earliest representable date, ``date(MINYEAR, 1, 1)``." msgstr "" -#: library/datetime.rst:608 +#: library/datetime.rst:624 msgid "The latest representable date, ``date(MAXYEAR, 12, 31)``." msgstr "" -#: library/datetime.rst:613 +#: library/datetime.rst:629 msgid "" "The smallest possible difference between non-equal date objects, " "``timedelta(days=1)``." msgstr "" -#: library/datetime.rst:1183 +#: library/datetime.rst:1199 msgid "Between :const:`MINYEAR` and :const:`MAXYEAR` inclusive." msgstr "" -#: library/datetime.rst:1188 +#: library/datetime.rst:1204 msgid "Between 1 and 12 inclusive." msgstr "" -#: library/datetime.rst:1193 +#: library/datetime.rst:1209 msgid "Between 1 and the number of days in the given month of the given year." msgstr "" -#: library/datetime.rst:639 +#: library/datetime.rst:655 msgid "``date2 = date1 + timedelta``" msgstr "" -#: library/datetime.rst:639 +#: library/datetime.rst:655 msgid "``date2`` will be ``timedelta.days`` days after ``date1``. (1)" msgstr "" -#: library/datetime.rst:642 +#: library/datetime.rst:658 msgid "``date2 = date1 - timedelta``" msgstr "" -#: library/datetime.rst:642 +#: library/datetime.rst:658 msgid "Computes ``date2`` such that ``date2 + timedelta == date1``. (2)" msgstr "" -#: library/datetime.rst:645 +#: library/datetime.rst:661 msgid "``timedelta = date1 - date2``" msgstr "" -#: library/datetime.rst:1241 +#: library/datetime.rst:1257 msgid "\\(3)" msgstr "" @@ -976,7 +996,7 @@ msgstr "" msgid "``date1 != date2``" msgstr "" -#: library/datetime.rst:1243 +#: library/datetime.rst:1259 msgid "Equality comparison. (4)" msgstr "" @@ -996,11 +1016,11 @@ msgstr "" msgid "``date1 >= date2``" msgstr "" -#: library/datetime.rst:1246 +#: library/datetime.rst:1262 msgid "Order comparison. (5)" msgstr "" -#: library/datetime.rst:659 +#: library/datetime.rst:675 msgid "" "*date2* is moved forward in time if ``timedelta.days > 0``, or backward if " "``timedelta.days < 0``. Afterward ``date2 - date1 == timedelta.days``. " @@ -1009,41 +1029,41 @@ msgid "" "`MINYEAR` or larger than :const:`MAXYEAR`." msgstr "" -#: library/datetime.rst:666 +#: library/datetime.rst:682 msgid "``timedelta.seconds`` and ``timedelta.microseconds`` are ignored." msgstr "" -#: library/datetime.rst:669 +#: library/datetime.rst:685 msgid "" "This is exact, and cannot overflow. ``timedelta.seconds`` and ``timedelta." "microseconds`` are 0, and ``date2 + timedelta == date1`` after." msgstr "" -#: library/datetime.rst:673 +#: library/datetime.rst:689 msgid ":class:`date` objects are equal if they represent the same date." msgstr "" -#: library/datetime.rst:675 +#: library/datetime.rst:691 msgid "" ":class:`!date` objects that are not also :class:`.datetime` instances are " "never equal to :class:`!datetime` objects, even if they represent the same " "date." msgstr "" -#: library/datetime.rst:680 +#: library/datetime.rst:696 msgid "" "*date1* is considered less than *date2* when *date1* precedes *date2* in " "time. In other words, ``date1 < date2`` if and only if ``date1.toordinal() < " "date2.toordinal()``." msgstr "" -#: library/datetime.rst:684 +#: library/datetime.rst:700 msgid "" "Order comparison between a :class:`!date` object that is not also a :class:`." "datetime` instance and a :class:`!datetime` object raises :exc:`TypeError`." msgstr "" -#: library/datetime.rst:1314 +#: library/datetime.rst:1330 msgid "" "Comparison between :class:`.datetime` object and an instance of the :class:" "`date` subclass that is not a :class:`!datetime` subclass no longer converts " @@ -1052,22 +1072,22 @@ msgid "" "in subclasses." msgstr "" -#: library/datetime.rst:696 +#: library/datetime.rst:712 msgid "" "In Boolean contexts, all :class:`date` objects are considered to be true." msgstr "" -#: library/datetime.rst:702 +#: library/datetime.rst:718 msgid "" "Return a new :class:`date` object with the same values, but with specified " "parameters updated." msgstr "" -#: library/datetime.rst:1986 +#: library/datetime.rst:2002 msgid "Example::" msgstr "" -#: library/datetime.rst:707 +#: library/datetime.rst:723 msgid "" ">>> from datetime import date\n" ">>> d = date(2002, 12, 31)\n" @@ -1075,70 +1095,70 @@ msgid "" "datetime.date(2002, 12, 26)" msgstr "" -#: library/datetime.rst:712 +#: library/datetime.rst:728 msgid "" "The generic function :func:`copy.replace` also supports :class:`date` " "objects." msgstr "" -#: library/datetime.rst:1438 +#: library/datetime.rst:1454 msgid "" "Return a :class:`time.struct_time` such as returned by :func:`time." "localtime`." msgstr "" -#: library/datetime.rst:720 +#: library/datetime.rst:736 msgid "The hours, minutes and seconds are 0, and the DST flag is -1." msgstr "" -#: library/datetime.rst:1440 +#: library/datetime.rst:1456 msgid "``d.timetuple()`` is equivalent to::" msgstr "" -#: library/datetime.rst:724 +#: library/datetime.rst:740 msgid "" "time.struct_time((d.year, d.month, d.day, 0, 0, 0, d.weekday(), yday, -1))" msgstr "" -#: library/datetime.rst:726 +#: library/datetime.rst:742 msgid "" "where ``yday = d.toordinal() - date(d.year, 1, 1).toordinal() + 1`` is the " "day number within the current year starting with 1 for January 1st." msgstr "" -#: library/datetime.rst:732 +#: library/datetime.rst:748 msgid "" "Return the proleptic Gregorian ordinal of the date, where January 1 of year " "1 has ordinal 1. For any :class:`date` object ``d``, ``date.fromordinal(d." "toordinal()) == d``." msgstr "" -#: library/datetime.rst:739 +#: library/datetime.rst:755 msgid "" "Return the day of the week as an integer, where Monday is 0 and Sunday is 6. " "For example, ``date(2002, 12, 4).weekday() == 2``, a Wednesday. See also :" "meth:`isoweekday`." msgstr "" -#: library/datetime.rst:746 +#: library/datetime.rst:762 msgid "" "Return the day of the week as an integer, where Monday is 1 and Sunday is 7. " "For example, ``date(2002, 12, 4).isoweekday() == 3``, a Wednesday. See also :" "meth:`weekday`, :meth:`isocalendar`." msgstr "" -#: library/datetime.rst:753 +#: library/datetime.rst:769 msgid "" "Return a :term:`named tuple` object with three components: ``year``, " "``week`` and ``weekday``." msgstr "" -#: library/datetime.rst:756 +#: library/datetime.rst:772 msgid "" "The ISO calendar is a widely used variant of the Gregorian calendar. [#]_" msgstr "" -#: library/datetime.rst:758 +#: library/datetime.rst:774 msgid "" "The ISO year consists of 52 or 53 full weeks, and where a week starts on a " "Monday and ends on a Sunday. The first week of an ISO year is the first " @@ -1147,13 +1167,13 @@ msgid "" "Gregorian year." msgstr "" -#: library/datetime.rst:763 +#: library/datetime.rst:779 msgid "" "For example, 2004 begins on a Thursday, so the first week of ISO year 2004 " "begins on Monday, 29 Dec 2003 and ends on Sunday, 4 Jan 2004::" msgstr "" -#: library/datetime.rst:766 +#: library/datetime.rst:782 msgid "" ">>> from datetime import date\n" ">>> date(2003, 12, 29).isocalendar()\n" @@ -1162,53 +1182,53 @@ msgid "" "datetime.IsoCalendarDate(year=2004, week=1, weekday=7)" msgstr "" -#: library/datetime.rst:772 +#: library/datetime.rst:788 msgid "Result changed from a tuple to a :term:`named tuple`." msgstr "" -#: library/datetime.rst:777 +#: library/datetime.rst:793 msgid "" "Return a string representing the date in ISO 8601 format, ``YYYY-MM-DD``::" msgstr "" -#: library/datetime.rst:779 +#: library/datetime.rst:795 msgid "" ">>> from datetime import date\n" ">>> date(2002, 12, 4).isoformat()\n" "'2002-12-04'" msgstr "" -#: library/datetime.rst:785 +#: library/datetime.rst:801 msgid "For a date ``d``, ``str(d)`` is equivalent to ``d.isoformat()``." msgstr "" -#: library/datetime.rst:790 +#: library/datetime.rst:806 msgid "Return a string representing the date::" msgstr "" -#: library/datetime.rst:792 +#: library/datetime.rst:808 msgid "" ">>> from datetime import date\n" ">>> date(2002, 12, 4).ctime()\n" "'Wed Dec 4 00:00:00 2002'" msgstr "" -#: library/datetime.rst:1624 +#: library/datetime.rst:1640 msgid "``d.ctime()`` is equivalent to::" msgstr "" -#: library/datetime.rst:1626 +#: library/datetime.rst:1642 msgid "time.ctime(time.mktime(d.timetuple()))" msgstr "" -#: library/datetime.rst:800 +#: library/datetime.rst:816 msgid "" "on platforms where the native C :c:func:`ctime` function (which :func:`time." "ctime` invokes, but which :meth:`date.ctime` does not invoke) conforms to " "the C standard." msgstr "" -#: library/datetime.rst:807 +#: library/datetime.rst:823 msgid "" "Return a string representing the date, controlled by an explicit format " "string. Format codes referring to hours, minutes or seconds will see 0 " @@ -1216,7 +1236,7 @@ msgid "" "isoformat`." msgstr "" -#: library/datetime.rst:814 +#: library/datetime.rst:830 msgid "" "Same as :meth:`.date.strftime`. This makes it possible to specify a format " "string for a :class:`.date` object in :ref:`formatted string literals >> import time\n" ">>> from datetime import date\n" @@ -1252,11 +1272,11 @@ msgid "" "202" msgstr "" -#: library/datetime.rst:841 +#: library/datetime.rst:857 msgid "More examples of working with :class:`date`:" msgstr "" -#: library/datetime.rst:843 +#: library/datetime.rst:859 msgid "" ">>> from datetime import date\n" ">>> d = date.fromordinal(730920) # 730920th day after 1. 1. 0001\n" @@ -1300,17 +1320,17 @@ msgid "" "datetime.date(2005, 3, 11)" msgstr "" -#: library/datetime.rst:890 +#: library/datetime.rst:906 msgid ":class:`.datetime` Objects" msgstr "" -#: library/datetime.rst:892 +#: library/datetime.rst:908 msgid "" "A :class:`.datetime` object is a single object containing all the " "information from a :class:`date` object and a :class:`.time` object." msgstr "" -#: library/datetime.rst:895 +#: library/datetime.rst:911 msgid "" "Like a :class:`date` object, :class:`.datetime` assumes the current " "Gregorian calendar extended in both directions; like a :class:`.time` " @@ -1318,80 +1338,80 @@ msgid "" "every day." msgstr "" -#: library/datetime.rst:899 +#: library/datetime.rst:915 msgid "Constructor:" msgstr "" -#: library/datetime.rst:903 +#: library/datetime.rst:919 msgid "" "The *year*, *month* and *day* arguments are required. *tzinfo* may be " "``None``, or an instance of a :class:`tzinfo` subclass. The remaining " "arguments must be integers in the following ranges:" msgstr "" -#: library/datetime.rst:907 +#: library/datetime.rst:923 msgid "``MINYEAR <= year <= MAXYEAR``," msgstr "" -#: library/datetime.rst:908 +#: library/datetime.rst:924 msgid "``1 <= month <= 12``," msgstr "" -#: library/datetime.rst:909 +#: library/datetime.rst:925 msgid "``1 <= day <= number of days in the given month and year``," msgstr "" -#: library/datetime.rst:1788 +#: library/datetime.rst:1804 msgid "``0 <= hour < 24``," msgstr "" -#: library/datetime.rst:1789 +#: library/datetime.rst:1805 msgid "``0 <= minute < 60``," msgstr "" -#: library/datetime.rst:1790 +#: library/datetime.rst:1806 msgid "``0 <= second < 60``," msgstr "" -#: library/datetime.rst:1791 +#: library/datetime.rst:1807 msgid "``0 <= microsecond < 1000000``," msgstr "" -#: library/datetime.rst:1792 +#: library/datetime.rst:1808 msgid "``fold in [0, 1]``." msgstr "" -#: library/datetime.rst:1359 library/datetime.rst:1953 +#: library/datetime.rst:1375 library/datetime.rst:1969 msgid "Added the *fold* parameter." msgstr "" -#: library/datetime.rst:925 +#: library/datetime.rst:941 msgid "Return the current local date and time, with :attr:`.tzinfo` ``None``." msgstr "" -#: library/datetime.rst:927 +#: library/datetime.rst:943 msgid "Equivalent to::" msgstr "" -#: library/datetime.rst:929 +#: library/datetime.rst:945 msgid "datetime.fromtimestamp(time.time())" msgstr "" -#: library/datetime.rst:931 +#: library/datetime.rst:947 msgid "See also :meth:`now`, :meth:`fromtimestamp`." msgstr "" -#: library/datetime.rst:933 +#: library/datetime.rst:949 msgid "" "This method is functionally equivalent to :meth:`now`, but without a ``tz`` " "parameter." msgstr "" -#: library/datetime.rst:938 +#: library/datetime.rst:954 msgid "Return the current local date and time." msgstr "" -#: library/datetime.rst:940 +#: library/datetime.rst:956 msgid "" "If optional argument *tz* is ``None`` or not specified, this is like :meth:" "`today`, but, if possible, supplies more precision than can be gotten from " @@ -1399,34 +1419,34 @@ msgid "" "possible on platforms supplying the C :c:func:`gettimeofday` function)." msgstr "" -#: library/datetime.rst:946 +#: library/datetime.rst:962 msgid "" "If *tz* is not ``None``, it must be an instance of a :class:`tzinfo` " "subclass, and the current date and time are converted to *tz*’s time zone." msgstr "" -#: library/datetime.rst:949 +#: library/datetime.rst:965 msgid "This function is preferred over :meth:`today` and :meth:`utcnow`." msgstr "" -#: library/datetime.rst:953 +#: library/datetime.rst:969 msgid "" "Subsequent calls to :meth:`!datetime.now` may return the same instant " "depending on the precision of the underlying clock." msgstr "" -#: library/datetime.rst:958 +#: library/datetime.rst:974 msgid "Return the current UTC date and time, with :attr:`.tzinfo` ``None``." msgstr "" -#: library/datetime.rst:960 +#: library/datetime.rst:976 msgid "" "This is like :meth:`now`, but returns the current UTC date and time, as a " "naive :class:`.datetime` object. An aware current UTC datetime can be " "obtained by calling ``datetime.now(timezone.utc)``. See also :meth:`now`." msgstr "" -#: library/datetime.rst:966 +#: library/datetime.rst:982 msgid "" "Because naive ``datetime`` objects are treated by many ``datetime`` methods " "as local times, it is preferred to use aware datetimes to represent times in " @@ -1434,11 +1454,11 @@ msgid "" "current time in UTC is by calling ``datetime.now(timezone.utc)``." msgstr "" -#: library/datetime.rst:973 +#: library/datetime.rst:989 msgid "Use :meth:`datetime.now` with :const:`UTC` instead." msgstr "" -#: library/datetime.rst:978 +#: library/datetime.rst:994 msgid "" "Return the local date and time corresponding to the POSIX timestamp, such as " "is returned by :func:`time.time`. If optional argument *tz* is ``None`` or " @@ -1446,13 +1466,13 @@ msgid "" "time, and the returned :class:`.datetime` object is naive." msgstr "" -#: library/datetime.rst:983 +#: library/datetime.rst:999 msgid "" "If *tz* is not ``None``, it must be an instance of a :class:`tzinfo` " "subclass, and the timestamp is converted to *tz*’s time zone." msgstr "" -#: library/datetime.rst:986 +#: library/datetime.rst:1002 msgid "" ":meth:`fromtimestamp` may raise :exc:`OverflowError`, if the timestamp is " "out of the range of values supported by the platform C :c:func:`localtime` " @@ -1465,7 +1485,7 @@ msgid "" "preferred over :meth:`utcfromtimestamp`." msgstr "" -#: library/datetime.rst:997 +#: library/datetime.rst:1013 msgid "" "Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp is " "out of the range of values supported by the platform C :c:func:`localtime` " @@ -1473,17 +1493,17 @@ msgid "" "`ValueError` on :c:func:`localtime` or :c:func:`gmtime` failure." msgstr "" -#: library/datetime.rst:1004 +#: library/datetime.rst:1020 msgid ":meth:`fromtimestamp` may return instances with :attr:`.fold` set to 1." msgstr "" -#: library/datetime.rst:1009 +#: library/datetime.rst:1025 msgid "" "Return the UTC :class:`.datetime` corresponding to the POSIX timestamp, " "with :attr:`.tzinfo` ``None``. (The resulting object is naive.)" msgstr "" -#: library/datetime.rst:1012 +#: library/datetime.rst:1028 msgid "" "This may raise :exc:`OverflowError`, if the timestamp is out of the range of " "values supported by the platform C :c:func:`gmtime` function, and :exc:" @@ -1491,32 +1511,32 @@ msgid "" "to years in 1970 through 2038." msgstr "" -#: library/datetime.rst:1017 +#: library/datetime.rst:1033 msgid "To get an aware :class:`.datetime` object, call :meth:`fromtimestamp`::" msgstr "" -#: library/datetime.rst:1019 +#: library/datetime.rst:1035 msgid "datetime.fromtimestamp(timestamp, timezone.utc)" msgstr "" -#: library/datetime.rst:1021 +#: library/datetime.rst:1037 msgid "" "On the POSIX compliant platforms, it is equivalent to the following " "expression::" msgstr "" -#: library/datetime.rst:1024 +#: library/datetime.rst:1040 msgid "" "datetime(1970, 1, 1, tzinfo=timezone.utc) + timedelta(seconds=timestamp)" msgstr "" -#: library/datetime.rst:1026 +#: library/datetime.rst:1042 msgid "" "except the latter formula always supports the full years range: between :" "const:`MINYEAR` and :const:`MAXYEAR` inclusive." msgstr "" -#: library/datetime.rst:1031 +#: library/datetime.rst:1047 msgid "" "Because naive ``datetime`` objects are treated by many ``datetime`` methods " "as local times, it is preferred to use aware datetimes to represent times in " @@ -1525,7 +1545,7 @@ msgid "" "tz=timezone.utc)``." msgstr "" -#: library/datetime.rst:1037 +#: library/datetime.rst:1053 msgid "" "Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp is " "out of the range of values supported by the platform C :c:func:`gmtime` " @@ -1533,11 +1553,11 @@ msgid "" "`gmtime` failure." msgstr "" -#: library/datetime.rst:1045 +#: library/datetime.rst:1061 msgid "Use :meth:`datetime.fromtimestamp` with :const:`UTC` instead." msgstr "" -#: library/datetime.rst:1050 +#: library/datetime.rst:1066 msgid "" "Return the :class:`.datetime` corresponding to the proleptic Gregorian " "ordinal, where January 1 of year 1 has ordinal 1. :exc:`ValueError` is " @@ -1546,7 +1566,7 @@ msgid "" "is ``None``." msgstr "" -#: library/datetime.rst:1058 +#: library/datetime.rst:1074 msgid "" "Return a new :class:`.datetime` object whose date components are equal to " "the given :class:`date` object's, and whose time components are equal to the " @@ -1557,35 +1577,35 @@ msgid "" "attr:`.tzinfo` attributes are ignored." msgstr "" -#: library/datetime.rst:1066 +#: library/datetime.rst:1082 msgid "" "For any :class:`.datetime` object ``d``, ``d == datetime.combine(d.date(), d." "time(), d.tzinfo)``." msgstr "" -#: library/datetime.rst:1069 +#: library/datetime.rst:1085 msgid "Added the *tzinfo* argument." msgstr "" -#: library/datetime.rst:1075 +#: library/datetime.rst:1091 msgid "" "Return a :class:`.datetime` corresponding to a *date_string* in any valid " "ISO 8601 format, with the following exceptions:" msgstr "" -#: library/datetime.rst:1888 +#: library/datetime.rst:1904 msgid "Time zone offsets may have fractional seconds." msgstr "" -#: library/datetime.rst:1079 +#: library/datetime.rst:1095 msgid "The ``T`` separator may be replaced by any single unicode character." msgstr "" -#: library/datetime.rst:1893 +#: library/datetime.rst:1909 msgid "Fractional hours and minutes are not supported." msgstr "" -#: library/datetime.rst:1089 +#: library/datetime.rst:1105 msgid "" ">>> from datetime import datetime\n" ">>> datetime.fromisoformat('2011-11-04')\n" @@ -1610,13 +1630,13 @@ msgid "" " tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))" msgstr "" -#: library/datetime.rst:1111 +#: library/datetime.rst:1127 msgid "" "Previously, this method only supported formats that could be emitted by :" "meth:`date.isoformat` or :meth:`datetime.isoformat`." msgstr "" -#: library/datetime.rst:1118 +#: library/datetime.rst:1134 msgid "" "Return a :class:`.datetime` corresponding to the ISO calendar date specified " "by year, week and day. The non-date components of the datetime are populated " @@ -1624,23 +1644,23 @@ msgid "" "`datetime.isocalendar`." msgstr "" -#: library/datetime.rst:1127 +#: library/datetime.rst:1143 msgid "" "Return a :class:`.datetime` corresponding to *date_string*, parsed according " "to *format*." msgstr "" -#: library/datetime.rst:1130 +#: library/datetime.rst:1146 msgid "" "If *format* does not contain microseconds or time zone information, this is " "equivalent to::" msgstr "" -#: library/datetime.rst:2627 +#: library/datetime.rst:2643 msgid "datetime(*(time.strptime(date_string, format)[0:6]))" msgstr "" -#: library/datetime.rst:1134 +#: library/datetime.rst:1150 msgid "" ":exc:`ValueError` is raised if the date_string and format can't be parsed " "by :func:`time.strptime` or if it returns a value which isn't a time tuple. " @@ -1648,7 +1668,7 @@ msgid "" "fromisoformat`." msgstr "" -#: library/datetime.rst:1141 +#: library/datetime.rst:1157 msgid "" "If *format* specifies a day of month without a year a :exc:" "`DeprecationWarning` is now emitted. This is to avoid a quadrennial leap " @@ -1659,7 +1679,7 @@ msgid "" "not have a year, explicitly add a year that is a leap year before parsing:" msgstr "" -#: library/datetime.rst:1150 +#: library/datetime.rst:1166 msgid "" ">>> from datetime import datetime\n" ">>> date_string = \"02/29\"\n" @@ -1669,43 +1689,43 @@ msgid "" "'February 29'" msgstr "" -#: library/datetime.rst:1163 +#: library/datetime.rst:1179 msgid "" "The earliest representable :class:`.datetime`, ``datetime(MINYEAR, 1, 1, " "tzinfo=None)``." msgstr "" -#: library/datetime.rst:1169 +#: library/datetime.rst:1185 msgid "" "The latest representable :class:`.datetime`, ``datetime(MAXYEAR, 12, 31, 23, " "59, 59, 999999, tzinfo=None)``." msgstr "" -#: library/datetime.rst:1175 +#: library/datetime.rst:1191 msgid "" "The smallest possible difference between non-equal :class:`.datetime` " "objects, ``timedelta(microseconds=1)``." msgstr "" -#: library/datetime.rst:1821 +#: library/datetime.rst:1837 msgid "In ``range(24)``." msgstr "" -#: library/datetime.rst:1208 library/datetime.rst:1831 +#: library/datetime.rst:1224 library/datetime.rst:1847 msgid "In ``range(60)``." msgstr "" -#: library/datetime.rst:1836 +#: library/datetime.rst:1852 msgid "In ``range(1000000)``." msgstr "" -#: library/datetime.rst:1218 +#: library/datetime.rst:1234 msgid "" "The object passed as the *tzinfo* argument to the :class:`.datetime` " "constructor, or ``None`` if none was passed." msgstr "" -#: library/datetime.rst:1847 +#: library/datetime.rst:1863 msgid "" "In ``[0, 1]``. Used to disambiguate wall times during a repeated interval. " "(A repeated interval occurs when clocks are rolled back at the end of " @@ -1715,24 +1735,24 @@ msgid "" "time representation." msgstr "" -#: library/datetime.rst:1237 +#: library/datetime.rst:1253 msgid "``datetime2 = datetime1 + timedelta``" msgstr "" -#: library/datetime.rst:2474 library/datetime.rst:2491 -#: library/datetime.rst:2556 library/datetime.rst:2565 +#: library/datetime.rst:2490 library/datetime.rst:2507 +#: library/datetime.rst:2572 library/datetime.rst:2581 msgid "\\(1)" msgstr "" -#: library/datetime.rst:1239 +#: library/datetime.rst:1255 msgid "``datetime2 = datetime1 - timedelta``" msgstr "" -#: library/datetime.rst:2507 +#: library/datetime.rst:2523 msgid "\\(2)" msgstr "" -#: library/datetime.rst:1241 +#: library/datetime.rst:1257 msgid "``timedelta = datetime1 - datetime2``" msgstr "" @@ -1760,7 +1780,7 @@ msgstr "" msgid "``datetime1 >= datetime2``" msgstr "" -#: library/datetime.rst:1253 +#: library/datetime.rst:1269 msgid "" "``datetime2`` is a duration of ``timedelta`` removed from ``datetime1``, " "moving forward in time if ``timedelta.days > 0``, or backward if ``timedelta." @@ -1771,7 +1791,7 @@ msgid "" "adjustments are done even if the input is an aware object." msgstr "" -#: library/datetime.rst:1262 +#: library/datetime.rst:1278 msgid "" "Computes the ``datetime2`` such that ``datetime2 + timedelta == datetime1``. " "As for addition, the result has the same :attr:`~.datetime.tzinfo` attribute " @@ -1779,14 +1799,14 @@ msgid "" "input is aware." msgstr "" -#: library/datetime.rst:1267 +#: library/datetime.rst:1283 msgid "" "Subtraction of a :class:`.datetime` from a :class:`.datetime` is defined " "only if both operands are naive, or if both are aware. If one is aware and " "the other is naive, :exc:`TypeError` is raised." msgstr "" -#: library/datetime.rst:1271 +#: library/datetime.rst:1287 msgid "" "If both are naive, or both are aware and have the same :attr:`~.datetime." "tzinfo` attribute, the :attr:`~.datetime.tzinfo` attributes are ignored, and " @@ -1794,7 +1814,7 @@ msgid "" "datetime1``. No time zone adjustments are done in this case." msgstr "" -#: library/datetime.rst:1276 +#: library/datetime.rst:1292 msgid "" "If both are aware and have different :attr:`~.datetime.tzinfo` attributes, " "``a-b`` acts as if ``a`` and ``b`` were first converted to naive UTC " @@ -1803,17 +1823,17 @@ msgid "" "overflows." msgstr "" -#: library/datetime.rst:1282 +#: library/datetime.rst:1298 msgid "" ":class:`.datetime` objects are equal if they represent the same date and " "time, taking into account the time zone." msgstr "" -#: library/datetime.rst:1285 +#: library/datetime.rst:1301 msgid "Naive and aware :class:`!datetime` objects are never equal." msgstr "" -#: library/datetime.rst:1287 +#: library/datetime.rst:1303 msgid "" "If both comparands are aware, and have the same :attr:`!tzinfo` attribute, " "the :attr:`!tzinfo` and :attr:`~.datetime.fold` attributes are ignored and " @@ -1824,19 +1844,19 @@ msgid "" "interval are never equal to :class:`!datetime` instances in other time zone." msgstr "" -#: library/datetime.rst:1297 +#: library/datetime.rst:1313 msgid "" "*datetime1* is considered less than *datetime2* when *datetime1* precedes " "*datetime2* in time, taking into account the time zone." msgstr "" -#: library/datetime.rst:1300 +#: library/datetime.rst:1316 msgid "" "Order comparison between naive and aware :class:`.datetime` objects raises :" "exc:`TypeError`." msgstr "" -#: library/datetime.rst:1303 +#: library/datetime.rst:1319 msgid "" "If both comparands are aware, and have the same :attr:`!tzinfo` attribute, " "the :attr:`!tzinfo` and :attr:`~.datetime.fold` attributes are ignored and " @@ -1846,33 +1866,33 @@ msgid "" "implementation never overflows." msgstr "" -#: library/datetime.rst:1310 +#: library/datetime.rst:1326 msgid "" "Equality comparisons between aware and naive :class:`.datetime` instances " "don't raise :exc:`TypeError`." msgstr "" -#: library/datetime.rst:1326 +#: library/datetime.rst:1342 msgid "Return :class:`date` object with same year, month and day." msgstr "" -#: library/datetime.rst:1331 +#: library/datetime.rst:1347 msgid "" "Return :class:`.time` object with same hour, minute, second, microsecond and " "fold. :attr:`.tzinfo` is ``None``. See also method :meth:`timetz`." msgstr "" -#: library/datetime.rst:1343 +#: library/datetime.rst:1359 msgid "The fold value is copied to the returned :class:`.time` object." msgstr "" -#: library/datetime.rst:1340 +#: library/datetime.rst:1356 msgid "" "Return :class:`.time` object with same hour, minute, second, microsecond, " "fold, and tzinfo attributes. See also method :meth:`time`." msgstr "" -#: library/datetime.rst:1351 +#: library/datetime.rst:1367 msgid "" "Return a new :class:`datetime` object with the same attributes, but with " "specified parameters updated. Note that ``tzinfo=None`` can be specified to " @@ -1880,27 +1900,27 @@ msgid "" "and time data." msgstr "" -#: library/datetime.rst:1356 +#: library/datetime.rst:1372 msgid "" ":class:`.datetime` objects are also supported by generic function :func:" "`copy.replace`." msgstr "" -#: library/datetime.rst:1365 +#: library/datetime.rst:1381 msgid "" "Return a :class:`.datetime` object with new :attr:`.tzinfo` attribute *tz*, " "adjusting the date and time data so the result is the same UTC time as " "*self*, but in *tz*'s local time." msgstr "" -#: library/datetime.rst:1369 +#: library/datetime.rst:1385 msgid "" "If provided, *tz* must be an instance of a :class:`tzinfo` subclass, and " "its :meth:`utcoffset` and :meth:`dst` methods must not return ``None``. If " "*self* is naive, it is presumed to represent time in the system time zone." msgstr "" -#: library/datetime.rst:1373 +#: library/datetime.rst:1389 msgid "" "If called without arguments (or with ``tz=None``) the system local time zone " "is assumed for the target time zone. The ``.tzinfo`` attribute of the " @@ -1908,7 +1928,7 @@ msgid "" "with the zone name and offset obtained from the OS." msgstr "" -#: library/datetime.rst:1378 +#: library/datetime.rst:1394 msgid "" "If ``self.tzinfo`` is *tz*, ``self.astimezone(tz)`` is equal to *self*: no " "adjustment of date or time data is performed. Else the result is local time " @@ -1917,7 +1937,7 @@ msgid "" "date and time data as ``dt - dt.utcoffset()``." msgstr "" -#: library/datetime.rst:1384 +#: library/datetime.rst:1400 msgid "" "If you merely want to attach a :class:`timezone` object *tz* to a datetime " "*dt* without adjustment of date and time data, use ``dt." @@ -1926,14 +1946,14 @@ msgid "" "use ``dt.replace(tzinfo=None)``." msgstr "" -#: library/datetime.rst:1389 +#: library/datetime.rst:1405 msgid "" "Note that the default :meth:`tzinfo.fromutc` method can be overridden in a :" "class:`tzinfo` subclass to affect the result returned by :meth:`astimezone`. " "Ignoring error cases, :meth:`astimezone` acts like::" msgstr "" -#: library/datetime.rst:1393 +#: library/datetime.rst:1409 msgid "" "def astimezone(self, tz):\n" " if self.tzinfo is tz:\n" @@ -1944,54 +1964,54 @@ msgid "" " return tz.fromutc(utc)" msgstr "" -#: library/datetime.rst:1401 +#: library/datetime.rst:1417 msgid "*tz* now can be omitted." msgstr "" -#: library/datetime.rst:1404 +#: library/datetime.rst:1420 msgid "" "The :meth:`astimezone` method can now be called on naive instances that are " "presumed to represent system local time." msgstr "" -#: library/datetime.rst:1411 +#: library/datetime.rst:1427 msgid "" "If :attr:`.tzinfo` is ``None``, returns ``None``, else returns ``self.tzinfo." "utcoffset(self)``, and raises an exception if the latter doesn't return " "``None`` or a :class:`timedelta` object with magnitude less than one day." msgstr "" -#: library/datetime.rst:2026 library/datetime.rst:2378 -#: library/datetime.rst:2700 +#: library/datetime.rst:2042 library/datetime.rst:2394 +#: library/datetime.rst:2716 msgid "The UTC offset is not restricted to a whole number of minutes." msgstr "" -#: library/datetime.rst:1421 +#: library/datetime.rst:1437 msgid "" "If :attr:`.tzinfo` is ``None``, returns ``None``, else returns ``self.tzinfo." "dst(self)``, and raises an exception if the latter doesn't return ``None`` " "or a :class:`timedelta` object with magnitude less than one day." msgstr "" -#: library/datetime.rst:2036 library/datetime.rst:2187 +#: library/datetime.rst:2052 library/datetime.rst:2203 msgid "The DST offset is not restricted to a whole number of minutes." msgstr "" -#: library/datetime.rst:1431 +#: library/datetime.rst:1447 msgid "" "If :attr:`.tzinfo` is ``None``, returns ``None``, else returns ``self.tzinfo." "tzname(self)``, raises an exception if the latter doesn't return ``None`` or " "a string object," msgstr "" -#: library/datetime.rst:1442 +#: library/datetime.rst:1458 msgid "" "time.struct_time((d.year, d.month, d.day,\n" " d.hour, d.minute, d.second,\n" " d.weekday(), yday, dst))" msgstr "" -#: library/datetime.rst:1446 +#: library/datetime.rst:1462 msgid "" "where ``yday = d.toordinal() - date(d.year, 1, 1).toordinal() + 1`` is the " "day number within the current year starting with 1 for January 1st. The :" @@ -2002,7 +2022,7 @@ msgid "" "to 0." msgstr "" -#: library/datetime.rst:1457 +#: library/datetime.rst:1473 msgid "" "If :class:`.datetime` instance ``d`` is naive, this is the same as ``d." "timetuple()`` except that :attr:`~.time.struct_time.tm_isdst` is forced to 0 " @@ -2010,7 +2030,7 @@ msgid "" "time." msgstr "" -#: library/datetime.rst:1461 +#: library/datetime.rst:1477 msgid "" "If ``d`` is aware, ``d`` is normalized to UTC time, by subtracting ``d." "utcoffset()``, and a :class:`time.struct_time` for the normalized time is " @@ -2019,7 +2039,7 @@ msgid "" "and UTC adjustment spills over a year boundary." msgstr "" -#: library/datetime.rst:1470 +#: library/datetime.rst:1486 msgid "" "Because naive ``datetime`` objects are treated by many ``datetime`` methods " "as local times, it is preferred to use aware datetimes to represent times in " @@ -2029,20 +2049,20 @@ msgid "" "meth:`.datetime.timetuple`." msgstr "" -#: library/datetime.rst:1479 +#: library/datetime.rst:1495 msgid "" "Return the proleptic Gregorian ordinal of the date. The same as ``self." "date().toordinal()``." msgstr "" -#: library/datetime.rst:1484 +#: library/datetime.rst:1500 msgid "" "Return POSIX timestamp corresponding to the :class:`.datetime` instance. The " "return value is a :class:`float` similar to that returned by :func:`time." "time`." msgstr "" -#: library/datetime.rst:1488 +#: library/datetime.rst:1504 msgid "" "Naive :class:`.datetime` instances are assumed to represent local time and " "this method relies on the platform C :c:func:`mktime` function to perform " @@ -2052,22 +2072,22 @@ msgid "" "future." msgstr "" -#: library/datetime.rst:1495 +#: library/datetime.rst:1511 msgid "" "For aware :class:`.datetime` instances, the return value is computed as::" msgstr "" -#: library/datetime.rst:1498 +#: library/datetime.rst:1514 msgid "(dt - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds()" msgstr "" -#: library/datetime.rst:1502 +#: library/datetime.rst:1518 msgid "" "The :meth:`timestamp` method uses the :attr:`.fold` attribute to " "disambiguate the times during a repeated interval." msgstr "" -#: library/datetime.rst:1508 +#: library/datetime.rst:1524 msgid "" "There is no method to obtain the POSIX timestamp directly from a naive :" "class:`.datetime` instance representing UTC time. If your application uses " @@ -2075,67 +2095,67 @@ msgid "" "the POSIX timestamp by supplying ``tzinfo=timezone.utc``::" msgstr "" -#: library/datetime.rst:1514 +#: library/datetime.rst:1530 msgid "timestamp = dt.replace(tzinfo=timezone.utc).timestamp()" msgstr "" -#: library/datetime.rst:1516 +#: library/datetime.rst:1532 msgid "or by calculating the timestamp directly::" msgstr "" -#: library/datetime.rst:1518 +#: library/datetime.rst:1534 msgid "timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)" msgstr "" -#: library/datetime.rst:1522 +#: library/datetime.rst:1538 msgid "" "Return the day of the week as an integer, where Monday is 0 and Sunday is 6. " "The same as ``self.date().weekday()``. See also :meth:`isoweekday`." msgstr "" -#: library/datetime.rst:1528 +#: library/datetime.rst:1544 msgid "" "Return the day of the week as an integer, where Monday is 1 and Sunday is 7. " "The same as ``self.date().isoweekday()``. See also :meth:`weekday`, :meth:" "`isocalendar`." msgstr "" -#: library/datetime.rst:1535 +#: library/datetime.rst:1551 msgid "" "Return a :term:`named tuple` with three components: ``year``, ``week`` and " "``weekday``. The same as ``self.date().isocalendar()``." msgstr "" -#: library/datetime.rst:1541 +#: library/datetime.rst:1557 msgid "Return a string representing the date and time in ISO 8601 format:" msgstr "" -#: library/datetime.rst:1543 +#: library/datetime.rst:1559 msgid "``YYYY-MM-DDTHH:MM:SS.ffffff``, if :attr:`microsecond` is not 0" msgstr "" -#: library/datetime.rst:1544 +#: library/datetime.rst:1560 msgid "``YYYY-MM-DDTHH:MM:SS``, if :attr:`microsecond` is 0" msgstr "" -#: library/datetime.rst:1546 +#: library/datetime.rst:1562 msgid "" "If :meth:`utcoffset` does not return ``None``, a string is appended, giving " "the UTC offset:" msgstr "" -#: library/datetime.rst:1549 +#: library/datetime.rst:1565 msgid "" "``YYYY-MM-DDTHH:MM:SS.ffffff+HH:MM[:SS[.ffffff]]``, if :attr:`microsecond` " "is not 0" msgstr "" -#: library/datetime.rst:1551 +#: library/datetime.rst:1567 msgid "" "``YYYY-MM-DDTHH:MM:SS+HH:MM[:SS[.ffffff]]``, if :attr:`microsecond` is 0" msgstr "" -#: library/datetime.rst:1555 +#: library/datetime.rst:1571 msgid "" ">>> from datetime import datetime, timezone\n" ">>> datetime(2019, 5, 18, 15, 17, 8, 132263).isoformat()\n" @@ -2144,13 +2164,13 @@ msgid "" "'2019-05-18T15:17:00+00:00'" msgstr "" -#: library/datetime.rst:1561 +#: library/datetime.rst:1577 msgid "" "The optional argument *sep* (default ``'T'``) is a one-character separator, " "placed between the date and time portions of the result. For example::" msgstr "" -#: library/datetime.rst:1564 +#: library/datetime.rst:1580 msgid "" ">>> from datetime import tzinfo, timedelta, datetime\n" ">>> class TZ(tzinfo):\n" @@ -2164,53 +2184,53 @@ msgid "" "'2009-11-27T00:00:00.000100-06:39'" msgstr "" -#: library/datetime.rst:1966 +#: library/datetime.rst:1982 msgid "" "The optional argument *timespec* specifies the number of additional " "components of the time to include (the default is ``'auto'``). It can be one " "of the following:" msgstr "" -#: library/datetime.rst:1970 +#: library/datetime.rst:1986 msgid "" "``'auto'``: Same as ``'seconds'`` if :attr:`microsecond` is 0, same as " "``'microseconds'`` otherwise." msgstr "" -#: library/datetime.rst:1972 +#: library/datetime.rst:1988 msgid "``'hours'``: Include the :attr:`hour` in the two-digit ``HH`` format." msgstr "" -#: library/datetime.rst:1973 +#: library/datetime.rst:1989 msgid "" "``'minutes'``: Include :attr:`hour` and :attr:`minute` in ``HH:MM`` format." msgstr "" -#: library/datetime.rst:1974 +#: library/datetime.rst:1990 msgid "" "``'seconds'``: Include :attr:`hour`, :attr:`minute`, and :attr:`second` in " "``HH:MM:SS`` format." msgstr "" -#: library/datetime.rst:1976 +#: library/datetime.rst:1992 msgid "" "``'milliseconds'``: Include full time, but truncate fractional second part " "to milliseconds. ``HH:MM:SS.sss`` format." msgstr "" -#: library/datetime.rst:1978 +#: library/datetime.rst:1994 msgid "``'microseconds'``: Include full time in ``HH:MM:SS.ffffff`` format." msgstr "" -#: library/datetime.rst:1982 +#: library/datetime.rst:1998 msgid "Excluded time components are truncated, not rounded." msgstr "" -#: library/datetime.rst:1593 +#: library/datetime.rst:1609 msgid ":exc:`ValueError` will be raised on an invalid *timespec* argument::" msgstr "" -#: library/datetime.rst:1596 +#: library/datetime.rst:1612 msgid "" ">>> from datetime import datetime\n" ">>> datetime.now().isoformat(timespec='minutes')\n" @@ -2220,48 +2240,48 @@ msgid "" "'2015-01-01T12:30:59.000000'" msgstr "" -#: library/datetime.rst:1997 +#: library/datetime.rst:2013 msgid "Added the *timespec* parameter." msgstr "" -#: library/datetime.rst:1609 +#: library/datetime.rst:1625 msgid "" "For a :class:`.datetime` instance ``d``, ``str(d)`` is equivalent to ``d." "isoformat(' ')``." msgstr "" -#: library/datetime.rst:1615 +#: library/datetime.rst:1631 msgid "Return a string representing the date and time::" msgstr "" -#: library/datetime.rst:1617 +#: library/datetime.rst:1633 msgid "" ">>> from datetime import datetime\n" ">>> datetime(2002, 12, 4, 20, 30, 40).ctime()\n" "'Wed Dec 4 20:30:40 2002'" msgstr "" -#: library/datetime.rst:1621 +#: library/datetime.rst:1637 msgid "" "The output string will *not* include time zone information, regardless of " "whether the input is aware or naive." msgstr "" -#: library/datetime.rst:1628 +#: library/datetime.rst:1644 msgid "" "on platforms where the native C :c:func:`ctime` function (which :func:`time." "ctime` invokes, but which :meth:`datetime.ctime` does not invoke) conforms " "to the C standard." msgstr "" -#: library/datetime.rst:1635 +#: library/datetime.rst:1651 msgid "" "Return a string representing the date and time, controlled by an explicit " "format string. See also :ref:`strftime-strptime-behavior` and :meth:" "`datetime.isoformat`." msgstr "" -#: library/datetime.rst:1642 +#: library/datetime.rst:1658 msgid "" "Same as :meth:`.datetime.strftime`. This makes it possible to specify a " "format string for a :class:`.datetime` object in :ref:`formatted string " @@ -2269,15 +2289,15 @@ msgid "" "`strftime-strptime-behavior` and :meth:`datetime.isoformat`." msgstr "" -#: library/datetime.rst:1649 +#: library/datetime.rst:1665 msgid "Examples of Usage: :class:`.datetime`" msgstr "" -#: library/datetime.rst:1651 +#: library/datetime.rst:1667 msgid "Examples of working with :class:`.datetime` objects:" msgstr "" -#: library/datetime.rst:1653 +#: library/datetime.rst:1669 msgid "" ">>> from datetime import datetime, date, time, timezone\n" "\n" @@ -2331,14 +2351,14 @@ msgid "" "'The day is 21, the month is November, the time is 04:30PM.'" msgstr "" -#: library/datetime.rst:1704 +#: library/datetime.rst:1720 msgid "" "The example below defines a :class:`tzinfo` subclass capturing time zone " "information for Kabul, Afghanistan, which used +4 UTC until 1945 and then " "+4:30 UTC thereafter::" msgstr "" -#: library/datetime.rst:1708 +#: library/datetime.rst:1724 msgid "" "from datetime import timedelta, datetime, tzinfo, timezone\n" "\n" @@ -2385,11 +2405,11 @@ msgid "" " return \"+04\"" msgstr "" -#: library/datetime.rst:1751 +#: library/datetime.rst:1767 msgid "Usage of ``KabulTz`` from above::" msgstr "" -#: library/datetime.rst:1753 +#: library/datetime.rst:1769 msgid "" ">>> tz1 = KabulTz()\n" "\n" @@ -2413,63 +2433,63 @@ msgid "" "True" msgstr "" -#: library/datetime.rst:1777 +#: library/datetime.rst:1793 msgid ":class:`.time` Objects" msgstr "" -#: library/datetime.rst:1779 +#: library/datetime.rst:1795 msgid "" "A :class:`.time` object represents a (local) time of day, independent of any " "particular day, and subject to adjustment via a :class:`tzinfo` object." msgstr "" -#: library/datetime.rst:1784 +#: library/datetime.rst:1800 msgid "" "All arguments are optional. *tzinfo* may be ``None``, or an instance of a :" "class:`tzinfo` subclass. The remaining arguments must be integers in the " "following ranges:" msgstr "" -#: library/datetime.rst:1794 +#: library/datetime.rst:1810 msgid "" "If an argument outside those ranges is given, :exc:`ValueError` is raised. " "All default to 0 except *tzinfo*, which defaults to ``None``." msgstr "" -#: library/datetime.rst:1802 +#: library/datetime.rst:1818 msgid "The earliest representable :class:`.time`, ``time(0, 0, 0, 0)``." msgstr "" -#: library/datetime.rst:1807 +#: library/datetime.rst:1823 msgid "The latest representable :class:`.time`, ``time(23, 59, 59, 999999)``." msgstr "" -#: library/datetime.rst:1812 +#: library/datetime.rst:1828 msgid "" "The smallest possible difference between non-equal :class:`.time` objects, " "``timedelta(microseconds=1)``, although note that arithmetic on :class:`." "time` objects is not supported." msgstr "" -#: library/datetime.rst:1841 +#: library/datetime.rst:1857 msgid "" "The object passed as the tzinfo argument to the :class:`.time` constructor, " "or ``None`` if none was passed." msgstr "" -#: library/datetime.rst:1855 +#: library/datetime.rst:1871 msgid "" ":class:`.time` objects support equality and order comparisons, where ``a`` " "is considered less than ``b`` when ``a`` precedes ``b`` in time." msgstr "" -#: library/datetime.rst:1858 +#: library/datetime.rst:1874 msgid "" "Naive and aware :class:`!time` objects are never equal. Order comparison " "between naive and aware :class:`!time` objects raises :exc:`TypeError`." msgstr "" -#: library/datetime.rst:1862 +#: library/datetime.rst:1878 msgid "" "If both comparands are aware, and have the same :attr:`~.time.tzinfo` " "attribute, the :attr:`!tzinfo` and :attr:`!fold` attributes are ignored and " @@ -2478,18 +2498,18 @@ msgid "" "subtracting their UTC offsets (obtained from ``self.utcoffset()``)." msgstr "" -#: library/datetime.rst:1868 +#: library/datetime.rst:1884 msgid "" "Equality comparisons between aware and naive :class:`.time` instances don't " "raise :exc:`TypeError`." msgstr "" -#: library/datetime.rst:1872 +#: library/datetime.rst:1888 msgid "" "In Boolean contexts, a :class:`.time` object is always considered to be true." msgstr "" -#: library/datetime.rst:1874 +#: library/datetime.rst:1890 msgid "" "Before Python 3.5, a :class:`.time` object was considered to be false if it " "represented midnight in UTC. This behavior was considered obscure and error-" @@ -2497,33 +2517,33 @@ msgid "" "details." msgstr "" -#: library/datetime.rst:1881 +#: library/datetime.rst:1897 msgid "Other constructors:" msgstr "" -#: library/datetime.rst:1885 +#: library/datetime.rst:1901 msgid "" "Return a :class:`.time` corresponding to a *time_string* in any valid ISO " "8601 format, with the following exceptions:" msgstr "" -#: library/datetime.rst:1889 +#: library/datetime.rst:1905 msgid "" "The leading ``T``, normally required in cases where there may be ambiguity " "between a date and a time, is not required." msgstr "" -#: library/datetime.rst:1891 +#: library/datetime.rst:1907 msgid "" "Fractional seconds may have any number of digits (anything beyond 6 will be " "truncated)." msgstr "" -#: library/datetime.rst:1895 +#: library/datetime.rst:1911 msgid "Examples:" msgstr "" -#: library/datetime.rst:1897 +#: library/datetime.rst:1913 msgid "" ">>> from datetime import time\n" ">>> time.fromisoformat('04:23:01')\n" @@ -2545,29 +2565,29 @@ msgid "" "datetime.time(4, 23, 1, tzinfo=datetime.timezone.utc)" msgstr "" -#: library/datetime.rst:1919 +#: library/datetime.rst:1935 msgid "" "Previously, this method only supported formats that could be emitted by :" "meth:`time.isoformat`." msgstr "" -#: library/datetime.rst:1925 +#: library/datetime.rst:1941 msgid "" "Return a :class:`.time` corresponding to *date_string*, parsed according to " "*format*." msgstr "" -#: library/datetime.rst:1928 +#: library/datetime.rst:1944 msgid "" "If *format* does not contain microseconds or timezone information, this is " "equivalent to::" msgstr "" -#: library/datetime.rst:1930 +#: library/datetime.rst:1946 msgid "time(*(time.strptime(date_string, format)[3:6]))" msgstr "" -#: library/datetime.rst:1932 +#: library/datetime.rst:1948 msgid "" ":exc:`ValueError` is raised if the *date_string* and *format* cannot be " "parsed by :func:`time.strptime` or if it returns a value which is not a time " @@ -2575,7 +2595,7 @@ msgid "" "fromisoformat`." msgstr "" -#: library/datetime.rst:1945 +#: library/datetime.rst:1961 msgid "" "Return a new :class:`.time` with the same values, but with specified " "parameters updated. Note that ``tzinfo=None`` can be specified to create a " @@ -2583,41 +2603,41 @@ msgid "" "time data." msgstr "" -#: library/datetime.rst:1950 +#: library/datetime.rst:1966 msgid "" ":class:`.time` objects are also supported by generic function :func:`copy." "replace`." msgstr "" -#: library/datetime.rst:1959 +#: library/datetime.rst:1975 msgid "Return a string representing the time in ISO 8601 format, one of:" msgstr "" -#: library/datetime.rst:1961 +#: library/datetime.rst:1977 msgid "``HH:MM:SS.ffffff``, if :attr:`microsecond` is not 0" msgstr "" -#: library/datetime.rst:1962 +#: library/datetime.rst:1978 msgid "``HH:MM:SS``, if :attr:`microsecond` is 0" msgstr "" -#: library/datetime.rst:1963 +#: library/datetime.rst:1979 msgid "" "``HH:MM:SS.ffffff+HH:MM[:SS[.ffffff]]``, if :meth:`utcoffset` does not " "return ``None``" msgstr "" -#: library/datetime.rst:1964 +#: library/datetime.rst:1980 msgid "" "``HH:MM:SS+HH:MM[:SS[.ffffff]]``, if :attr:`microsecond` is 0 and :meth:" "`utcoffset` does not return ``None``" msgstr "" -#: library/datetime.rst:1984 +#: library/datetime.rst:2000 msgid ":exc:`ValueError` will be raised on an invalid *timespec* argument." msgstr "" -#: library/datetime.rst:1988 +#: library/datetime.rst:2004 msgid "" ">>> from datetime import time\n" ">>> time(hour=12, minute=34, second=56, microsecond=123456)." @@ -2630,18 +2650,18 @@ msgid "" "'12:34:56'" msgstr "" -#: library/datetime.rst:2003 +#: library/datetime.rst:2019 msgid "For a time ``t``, ``str(t)`` is equivalent to ``t.isoformat()``." msgstr "" -#: library/datetime.rst:2008 +#: library/datetime.rst:2024 msgid "" "Return a string representing the time, controlled by an explicit format " "string. See also :ref:`strftime-strptime-behavior` and :meth:`time." "isoformat`." msgstr "" -#: library/datetime.rst:2014 +#: library/datetime.rst:2030 msgid "" "Same as :meth:`.time.strftime`. This makes it possible to specify a format " "string for a :class:`.time` object in :ref:`formatted string literals >> from datetime import time, tzinfo, timedelta\n" ">>> class TZ1(tzinfo):\n" @@ -2706,18 +2726,18 @@ msgid "" "'The time is 12:10.'" msgstr "" -#: library/datetime.rst:2079 +#: library/datetime.rst:2095 msgid ":class:`tzinfo` Objects" msgstr "" -#: library/datetime.rst:2083 +#: library/datetime.rst:2099 msgid "" "This is an abstract base class, meaning that this class should not be " "instantiated directly. Define a subclass of :class:`tzinfo` to capture " "information about a particular time zone." msgstr "" -#: library/datetime.rst:2087 +#: library/datetime.rst:2103 msgid "" "An instance of (a concrete subclass of) :class:`tzinfo` can be passed to the " "constructors for :class:`.datetime` and :class:`.time` objects. The latter " @@ -2727,7 +2747,7 @@ msgid "" "object passed to them." msgstr "" -#: library/datetime.rst:2093 +#: library/datetime.rst:2109 msgid "" "You need to derive a concrete subclass, and (at least) supply " "implementations of the standard :class:`tzinfo` methods needed by the :class:" @@ -2737,7 +2757,7 @@ msgid "" "American EST and EDT." msgstr "" -#: library/datetime.rst:2100 +#: library/datetime.rst:2116 msgid "" "Special requirement for pickling: A :class:`tzinfo` subclass must have an :" "meth:`~object.__init__` method that can be called with no arguments, " @@ -2745,20 +2765,20 @@ msgid "" "technical requirement that may be relaxed in the future." msgstr "" -#: library/datetime.rst:2106 +#: library/datetime.rst:2122 msgid "" "A concrete subclass of :class:`tzinfo` may need to implement the following " "methods. Exactly which methods are needed depends on the uses made of aware :" "mod:`!datetime` objects. If in doubt, simply implement all of them." msgstr "" -#: library/datetime.rst:2113 +#: library/datetime.rst:2129 msgid "" "Return offset of local time from UTC, as a :class:`timedelta` object that is " "positive east of UTC. If local time is west of UTC, this should be negative." msgstr "" -#: library/datetime.rst:2116 +#: library/datetime.rst:2132 msgid "" "This represents the *total* offset from UTC; for example, if a :class:" "`tzinfo` object represents both time zone and DST adjustments, :meth:" @@ -2769,31 +2789,31 @@ msgid "" "meth:`utcoffset` will probably look like one of these two::" msgstr "" -#: library/datetime.rst:2124 +#: library/datetime.rst:2140 msgid "" "return CONSTANT # fixed-offset class\n" "return CONSTANT + self.dst(dt) # daylight-aware class" msgstr "" -#: library/datetime.rst:2127 +#: library/datetime.rst:2143 msgid "" "If :meth:`utcoffset` does not return ``None``, :meth:`dst` should not return " "``None`` either." msgstr "" -#: library/datetime.rst:2130 +#: library/datetime.rst:2146 msgid "" "The default implementation of :meth:`utcoffset` raises :exc:" "`NotImplementedError`." msgstr "" -#: library/datetime.rst:2139 +#: library/datetime.rst:2155 msgid "" "Return the daylight saving time (DST) adjustment, as a :class:`timedelta` " "object or ``None`` if DST information isn't known." msgstr "" -#: library/datetime.rst:2143 +#: library/datetime.rst:2159 msgid "" "Return ``timedelta(0)`` if DST is not in effect. If DST is in effect, return " "the offset as a :class:`timedelta` object (see :meth:`utcoffset` for " @@ -2806,17 +2826,17 @@ msgid "" "to account for DST changes when crossing time zones." msgstr "" -#: library/datetime.rst:2153 +#: library/datetime.rst:2169 msgid "" "An instance *tz* of a :class:`tzinfo` subclass that models both standard and " "daylight times must be consistent in this sense:" msgstr "" -#: library/datetime.rst:2156 +#: library/datetime.rst:2172 msgid "``tz.utcoffset(dt) - tz.dst(dt)``" msgstr "" -#: library/datetime.rst:2158 +#: library/datetime.rst:2174 msgid "" "must return the same result for every :class:`.datetime` *dt* with ``dt." "tzinfo == tz``. For sane :class:`tzinfo` subclasses, this expression yields " @@ -2829,24 +2849,24 @@ msgid "" "astimezone` regardless." msgstr "" -#: library/datetime.rst:2167 +#: library/datetime.rst:2183 msgid "" "Most implementations of :meth:`dst` will probably look like one of these " "two::" msgstr "" -#: library/datetime.rst:2169 +#: library/datetime.rst:2185 msgid "" "def dst(self, dt):\n" " # a fixed-offset class: doesn't account for DST\n" " return timedelta(0)" msgstr "" -#: library/datetime.rst:2173 +#: library/datetime.rst:2189 msgid "or::" msgstr "" -#: library/datetime.rst:2175 +#: library/datetime.rst:2191 msgid "" "def dst(self, dt):\n" " # Code to set dston and dstoff to the time zone's DST\n" @@ -2859,12 +2879,12 @@ msgid "" " return timedelta(0)" msgstr "" -#: library/datetime.rst:2185 +#: library/datetime.rst:2201 msgid "" "The default implementation of :meth:`dst` raises :exc:`NotImplementedError`." msgstr "" -#: library/datetime.rst:2193 +#: library/datetime.rst:2209 msgid "" "Return the time zone name corresponding to the :class:`.datetime` object " "*dt*, as a string. Nothing about string names is defined by the :mod:`!" @@ -2878,13 +2898,13 @@ msgid "" "accounting for daylight time." msgstr "" -#: library/datetime.rst:2203 +#: library/datetime.rst:2219 msgid "" "The default implementation of :meth:`tzname` raises :exc:" "`NotImplementedError`." msgstr "" -#: library/datetime.rst:2206 +#: library/datetime.rst:2222 msgid "" "These methods are called by a :class:`.datetime` or :class:`.time` object, " "in response to their methods of the same names. A :class:`.datetime` object " @@ -2894,7 +2914,7 @@ msgid "" "datetime`." msgstr "" -#: library/datetime.rst:2212 +#: library/datetime.rst:2228 msgid "" "When ``None`` is passed, it's up to the class designer to decide the best " "response. For example, returning ``None`` is appropriate if the class wishes " @@ -2903,7 +2923,7 @@ msgid "" "offset, as there is no other convention for discovering the standard offset." msgstr "" -#: library/datetime.rst:2218 +#: library/datetime.rst:2234 msgid "" "When a :class:`.datetime` object is passed in response to a :class:`." "datetime` method, ``dt.tzinfo`` is the same object as *self*. :class:" @@ -2913,13 +2933,13 @@ msgid "" "zones." msgstr "" -#: library/datetime.rst:2224 +#: library/datetime.rst:2240 msgid "" "There is one more :class:`tzinfo` method that a subclass may wish to " "override:" msgstr "" -#: library/datetime.rst:2229 +#: library/datetime.rst:2245 msgid "" "This is called from the default :meth:`datetime.astimezone` implementation. " "When called from that, ``dt.tzinfo`` is *self*, and *dt*'s date and time " @@ -2928,7 +2948,7 @@ msgid "" "datetime in *self*'s local time." msgstr "" -#: library/datetime.rst:2235 +#: library/datetime.rst:2251 msgid "" "Most :class:`tzinfo` subclasses should be able to inherit the default :meth:" "`fromutc` implementation without problems. It's strong enough to handle " @@ -2943,13 +2963,13 @@ msgid "" "offset changes." msgstr "" -#: library/datetime.rst:2246 +#: library/datetime.rst:2262 msgid "" "Skipping code for error cases, the default :meth:`fromutc` implementation " "acts like::" msgstr "" -#: library/datetime.rst:2249 +#: library/datetime.rst:2265 msgid "" "def fromutc(self, dt):\n" " # raise ValueError error if dt.tzinfo is not self\n" @@ -2967,13 +2987,13 @@ msgid "" " return dt" msgstr "" -#: library/datetime.rst:2264 +#: library/datetime.rst:2280 msgid "" "In the following :download:`tzinfo_examples.py <../includes/tzinfo_examples." "py>` file there are some examples of :class:`tzinfo` classes:" msgstr "" -#: library/datetime.rst:2268 +#: library/datetime.rst:2284 msgid "" "from datetime import tzinfo, timedelta, datetime\n" "\n" @@ -3153,7 +3173,7 @@ msgid "" "Pacific = USTimeZone(-8, \"Pacific\", \"PST\", \"PDT\")\n" msgstr "" -#: library/datetime.rst:2270 +#: library/datetime.rst:2286 msgid "" "Note that there are unavoidable subtleties twice per year in a :class:" "`tzinfo` subclass accounting for both standard and daylight time, at the DST " @@ -3162,7 +3182,7 @@ msgid "" "ends the minute after 1:59 (EDT) on the first Sunday in November::" msgstr "" -#: library/datetime.rst:2276 +#: library/datetime.rst:2292 msgid "" " UTC 3:MM 4:MM 5:MM 6:MM 7:MM 8:MM\n" " EST 22:MM 23:MM 0:MM 1:MM 2:MM 3:MM\n" @@ -3173,7 +3193,7 @@ msgid "" " end 23:MM 0:MM 1:MM 1:MM 2:MM 3:MM" msgstr "" -#: library/datetime.rst:2284 +#: library/datetime.rst:2300 msgid "" "When DST starts (the \"start\" line), the local wall clock leaps from 1:59 " "to 3:00. A wall time of the form 2:MM doesn't really make sense on that day, " @@ -3182,7 +3202,7 @@ msgid "" "get::" msgstr "" -#: library/datetime.rst:2289 +#: library/datetime.rst:2305 msgid "" ">>> from datetime import datetime, timezone\n" ">>> from tzinfo_examples import HOUR, Eastern\n" @@ -3198,7 +3218,7 @@ msgid "" "08:00:00 UTC = 04:00:00 EDT" msgstr "" -#: library/datetime.rst:2303 +#: library/datetime.rst:2319 msgid "" "When DST ends (the \"end\" line), there's a potentially worse problem: " "there's an hour that can't be spelled unambiguously in local wall time: the " @@ -3213,7 +3233,7 @@ msgid "" "Fall back transition of 2016, we get::" msgstr "" -#: library/datetime.rst:2314 +#: library/datetime.rst:2330 msgid "" ">>> u0 = datetime(2016, 11, 6, 4, tzinfo=timezone.utc)\n" ">>> for i in range(4):\n" @@ -3227,13 +3247,13 @@ msgid "" "07:00:00 UTC = 02:00:00 EST 0" msgstr "" -#: library/datetime.rst:2325 +#: library/datetime.rst:2341 msgid "" "Note that the :class:`.datetime` instances that differ only by the value of " "the :attr:`~.datetime.fold` attribute are considered equal in comparisons." msgstr "" -#: library/datetime.rst:2328 +#: library/datetime.rst:2344 msgid "" "Applications that can't bear wall-time ambiguities should explicitly check " "the value of the :attr:`~.datetime.fold` attribute or avoid using hybrid :" @@ -3243,28 +3263,28 @@ msgid "" "offset -4 hours))." msgstr "" -#: library/datetime.rst:2336 +#: library/datetime.rst:2352 msgid ":mod:`zoneinfo`" msgstr "" -#: library/datetime.rst:2337 +#: library/datetime.rst:2353 msgid "" "The :mod:`!datetime` module has a basic :class:`timezone` class (for " "handling arbitrary fixed offsets from UTC) and its :attr:`timezone.utc` " "attribute (a UTC :class:`!timezone` instance)." msgstr "" -#: library/datetime.rst:2341 +#: library/datetime.rst:2357 msgid "" "``zoneinfo`` brings the *IANA time zone database* (also known as the Olson " "database) to Python, and its usage is recommended." msgstr "" -#: library/datetime.rst:2344 +#: library/datetime.rst:2360 msgid "`IANA time zone database `_" msgstr "" -#: library/datetime.rst:2345 +#: library/datetime.rst:2361 msgid "" "The Time Zone Database (often called tz, tzdata or zoneinfo) contains code " "and data that represent the history of local time for many representative " @@ -3273,24 +3293,24 @@ msgid "" "saving rules." msgstr "" -#: library/datetime.rst:2355 +#: library/datetime.rst:2371 msgid ":class:`timezone` Objects" msgstr "" -#: library/datetime.rst:2357 +#: library/datetime.rst:2373 msgid "" "The :class:`timezone` class is a subclass of :class:`tzinfo`, each instance " "of which represents a time zone defined by a fixed offset from UTC." msgstr "" -#: library/datetime.rst:2361 +#: library/datetime.rst:2377 msgid "" "Objects of this class cannot be used to represent time zone information in " "the locations where different offsets are used in different days of the year " "or where historical changes have been made to civil time." msgstr "" -#: library/datetime.rst:2368 +#: library/datetime.rst:2384 msgid "" "The *offset* argument must be specified as a :class:`timedelta` object " "representing the difference between the local time and UTC. It must be " @@ -3298,25 +3318,25 @@ msgid "" "otherwise :exc:`ValueError` is raised." msgstr "" -#: library/datetime.rst:2373 +#: library/datetime.rst:2389 msgid "" "The *name* argument is optional. If specified it must be a string that will " "be used as the value returned by the :meth:`datetime.tzname` method." msgstr "" -#: library/datetime.rst:2395 +#: library/datetime.rst:2411 msgid "" "Return the fixed value specified when the :class:`timezone` instance is " "constructed." msgstr "" -#: library/datetime.rst:2387 +#: library/datetime.rst:2403 msgid "" "The *dt* argument is ignored. The return value is a :class:`timedelta` " "instance equal to the difference between the local time and UTC." msgstr "" -#: library/datetime.rst:2398 +#: library/datetime.rst:2414 msgid "" "If *name* is not provided in the constructor, the name returned by " "``tzname(dt)`` is generated from the value of the ``offset`` as follows. If " @@ -3325,106 +3345,106 @@ msgid "" "are two digits of ``offset.hours`` and ``offset.minutes`` respectively." msgstr "" -#: library/datetime.rst:2404 +#: library/datetime.rst:2420 msgid "" "Name generated from ``offset=timedelta(0)`` is now plain ``'UTC'``, not " "``'UTC+00:00'``." msgstr "" -#: library/datetime.rst:2411 +#: library/datetime.rst:2427 msgid "Always returns ``None``." msgstr "" -#: library/datetime.rst:2415 +#: library/datetime.rst:2431 msgid "" "Return ``dt + offset``. The *dt* argument must be an aware :class:`." "datetime` instance, with ``tzinfo`` set to ``self``." msgstr "" -#: library/datetime.rst:2422 +#: library/datetime.rst:2438 msgid "The UTC time zone, ``timezone(timedelta(0))``." msgstr "" -#: library/datetime.rst:2431 +#: library/datetime.rst:2447 msgid ":meth:`~.datetime.strftime` and :meth:`~.datetime.strptime` Behavior" msgstr "" -#: library/datetime.rst:2433 +#: library/datetime.rst:2449 msgid "" ":class:`date`, :class:`.datetime`, and :class:`.time` objects all support a " "``strftime(format)`` method, to create a string representing the time under " "the control of an explicit format string." msgstr "" -#: library/datetime.rst:2437 +#: library/datetime.rst:2453 msgid "" "Conversely, the :meth:`date.strptime`, :meth:`datetime.strptime` and :meth:" "`time.strptime` class methods create an object from a string representing " "the time and a corresponding format string." msgstr "" -#: library/datetime.rst:2441 +#: library/datetime.rst:2457 msgid "" "The table below provides a high-level comparison of :meth:`~.datetime." "strftime` versus :meth:`~.datetime.strptime`:" msgstr "" -#: library/datetime.rst:2445 +#: library/datetime.rst:2461 msgid "``strftime``" msgstr "" -#: library/datetime.rst:2445 +#: library/datetime.rst:2461 msgid "``strptime``" msgstr "" -#: library/datetime.rst:2447 +#: library/datetime.rst:2463 msgid "Usage" msgstr "" -#: library/datetime.rst:2447 +#: library/datetime.rst:2463 msgid "Convert object to a string according to a given format" msgstr "" -#: library/datetime.rst:2447 +#: library/datetime.rst:2463 msgid "Parse a string into an object given a corresponding format" msgstr "" -#: library/datetime.rst:2449 +#: library/datetime.rst:2465 msgid "Type of method" msgstr "" -#: library/datetime.rst:2449 +#: library/datetime.rst:2465 msgid "Instance method" msgstr "" -#: library/datetime.rst:2449 +#: library/datetime.rst:2465 msgid "Class method" msgstr "" -#: library/datetime.rst:2451 +#: library/datetime.rst:2467 msgid "Signature" msgstr "" -#: library/datetime.rst:2451 +#: library/datetime.rst:2467 msgid "``strftime(format)``" msgstr "" -#: library/datetime.rst:2451 +#: library/datetime.rst:2467 msgid "``strptime(date_string, format)``" msgstr "" -#: library/datetime.rst:2458 +#: library/datetime.rst:2474 msgid "" ":meth:`~.datetime.strftime` and :meth:`~.datetime.strptime` Format Codes" msgstr "" -#: library/datetime.rst:2460 +#: library/datetime.rst:2476 msgid "" "These methods accept format codes that can be used to parse and format " "dates::" msgstr "" -#: library/datetime.rst:2462 +#: library/datetime.rst:2478 msgid "" ">>> datetime.strptime('31/01/22 23:59:59.999999',\n" "... '%d/%m/%y %H:%M:%S.%f')\n" @@ -3433,33 +3453,33 @@ msgid "" "'Mon 31 Jan 2022, 11:59PM'" msgstr "" -#: library/datetime.rst:2468 +#: library/datetime.rst:2484 msgid "" "The following is a list of all the format codes that the 1989 C standard " "requires, and these work on all platforms with a standard C implementation." msgstr "" -#: library/datetime.rst:2575 +#: library/datetime.rst:2591 msgid "Directive" msgstr "" -#: library/datetime.rst:2575 +#: library/datetime.rst:2591 msgid "Meaning" msgstr "" -#: library/datetime.rst:2575 +#: library/datetime.rst:2591 msgid "Example" msgstr "" -#: library/datetime.rst:2575 +#: library/datetime.rst:2591 msgid "Notes" msgstr "" -#: library/datetime.rst:2474 +#: library/datetime.rst:2490 msgid "``%a``" msgstr "" -#: library/datetime.rst:2474 +#: library/datetime.rst:2490 msgid "Weekday as locale's abbreviated name." msgstr "" @@ -3471,11 +3491,11 @@ msgstr "" msgid "So, Mo, ..., Sa (de_DE)" msgstr "" -#: library/datetime.rst:2479 +#: library/datetime.rst:2495 msgid "``%A``" msgstr "" -#: library/datetime.rst:2479 +#: library/datetime.rst:2495 msgid "Weekday as locale's full name." msgstr "" @@ -3487,40 +3507,40 @@ msgstr "" msgid "Sonntag, Montag, ..., Samstag (de_DE)" msgstr "" -#: library/datetime.rst:2484 +#: library/datetime.rst:2500 msgid "``%w``" msgstr "" -#: library/datetime.rst:2484 +#: library/datetime.rst:2500 msgid "Weekday as a decimal number, where 0 is Sunday and 6 is Saturday." msgstr "" -#: library/datetime.rst:2484 +#: library/datetime.rst:2500 msgid "0, 1, ..., 6" msgstr "" -#: library/datetime.rst:2488 +#: library/datetime.rst:2504 msgid "``%d``" msgstr "" -#: library/datetime.rst:2488 +#: library/datetime.rst:2504 msgid "Day of the month as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2488 +#: library/datetime.rst:2504 msgid "01, 02, ..., 31" msgstr "" -#: library/datetime.rst:2501 library/datetime.rst:2510 -#: library/datetime.rst:2519 library/datetime.rst:2537 +#: library/datetime.rst:2517 library/datetime.rst:2526 +#: library/datetime.rst:2535 library/datetime.rst:2553 msgid "\\(9)" msgstr "" -#: library/datetime.rst:2491 +#: library/datetime.rst:2507 msgid "``%b``" msgstr "" -#: library/datetime.rst:2491 +#: library/datetime.rst:2507 msgid "Month as locale's abbreviated name." msgstr "" @@ -3532,11 +3552,11 @@ msgstr "" msgid "Jan, Feb, ..., Dez (de_DE)" msgstr "" -#: library/datetime.rst:2496 +#: library/datetime.rst:2512 msgid "``%B``" msgstr "" -#: library/datetime.rst:2496 +#: library/datetime.rst:2512 msgid "Month as locale's full name." msgstr "" @@ -3548,67 +3568,67 @@ msgstr "" msgid "Januar, Februar, ..., Dezember (de_DE)" msgstr "" -#: library/datetime.rst:2501 +#: library/datetime.rst:2517 msgid "``%m``" msgstr "" -#: library/datetime.rst:2501 +#: library/datetime.rst:2517 msgid "Month as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2513 +#: library/datetime.rst:2529 msgid "01, 02, ..., 12" msgstr "" -#: library/datetime.rst:2504 +#: library/datetime.rst:2520 msgid "``%y``" msgstr "" -#: library/datetime.rst:2504 +#: library/datetime.rst:2520 msgid "Year without century as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2504 +#: library/datetime.rst:2520 msgid "00, 01, ..., 99" msgstr "" -#: library/datetime.rst:2507 +#: library/datetime.rst:2523 msgid "``%Y``" msgstr "" -#: library/datetime.rst:2507 +#: library/datetime.rst:2523 msgid "Year with century as a decimal number." msgstr "" -#: library/datetime.rst:2577 +#: library/datetime.rst:2593 msgid "0001, 0002, ..., 2013, 2014, ..., 9998, 9999" msgstr "" -#: library/datetime.rst:2510 +#: library/datetime.rst:2526 msgid "``%H``" msgstr "" -#: library/datetime.rst:2510 +#: library/datetime.rst:2526 msgid "Hour (24-hour clock) as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2510 +#: library/datetime.rst:2526 msgid "00, 01, ..., 23" msgstr "" -#: library/datetime.rst:2513 +#: library/datetime.rst:2529 msgid "``%I``" msgstr "" -#: library/datetime.rst:2513 +#: library/datetime.rst:2529 msgid "Hour (12-hour clock) as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2516 +#: library/datetime.rst:2532 msgid "``%p``" msgstr "" -#: library/datetime.rst:2516 +#: library/datetime.rst:2532 msgid "Locale's equivalent of either AM or PM." msgstr "" @@ -3620,127 +3640,127 @@ msgstr "" msgid "am, pm (de_DE)" msgstr "" -#: library/datetime.rst:2516 +#: library/datetime.rst:2532 msgid "\\(1), \\(3)" msgstr "" -#: library/datetime.rst:2519 +#: library/datetime.rst:2535 msgid "``%M``" msgstr "" -#: library/datetime.rst:2519 +#: library/datetime.rst:2535 msgid "Minute as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2522 +#: library/datetime.rst:2538 msgid "00, 01, ..., 59" msgstr "" -#: library/datetime.rst:2522 +#: library/datetime.rst:2538 msgid "``%S``" msgstr "" -#: library/datetime.rst:2522 +#: library/datetime.rst:2538 msgid "Second as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2522 +#: library/datetime.rst:2538 msgid "\\(4), \\(9)" msgstr "" -#: library/datetime.rst:2525 +#: library/datetime.rst:2541 msgid "``%f``" msgstr "" -#: library/datetime.rst:2525 +#: library/datetime.rst:2541 msgid "Microsecond as a decimal number, zero-padded to 6 digits." msgstr "" -#: library/datetime.rst:2525 +#: library/datetime.rst:2541 msgid "000000, 000001, ..., 999999" msgstr "" -#: library/datetime.rst:2525 +#: library/datetime.rst:2541 msgid "\\(5)" msgstr "" -#: library/datetime.rst:2688 +#: library/datetime.rst:2704 msgid "``%z``" msgstr "" -#: library/datetime.rst:2529 +#: library/datetime.rst:2545 msgid "" "UTC offset in the form ``±HHMM[SS[.ffffff]]`` (empty string if the object is " "naive)." msgstr "" -#: library/datetime.rst:2529 +#: library/datetime.rst:2545 msgid "(empty), +0000, -0400, +1030, +063415, -030712.345216" msgstr "" -#: library/datetime.rst:2534 library/datetime.rst:2591 +#: library/datetime.rst:2550 library/datetime.rst:2607 msgid "\\(6)" msgstr "" -#: library/datetime.rst:2714 +#: library/datetime.rst:2730 msgid "``%Z``" msgstr "" -#: library/datetime.rst:2534 +#: library/datetime.rst:2550 msgid "Time zone name (empty string if the object is naive)." msgstr "" -#: library/datetime.rst:2534 +#: library/datetime.rst:2550 msgid "(empty), UTC, GMT" msgstr "" -#: library/datetime.rst:2537 +#: library/datetime.rst:2553 msgid "``%j``" msgstr "" -#: library/datetime.rst:2537 +#: library/datetime.rst:2553 msgid "Day of the year as a zero-padded decimal number." msgstr "" -#: library/datetime.rst:2537 +#: library/datetime.rst:2553 msgid "001, 002, ..., 366" msgstr "" -#: library/datetime.rst:2540 +#: library/datetime.rst:2556 msgid "``%U``" msgstr "" -#: library/datetime.rst:2540 +#: library/datetime.rst:2556 msgid "" "Week number of the year (Sunday as the first day of the week) as a zero-" "padded decimal number. All days in a new year preceding the first Sunday are " "considered to be in week 0." msgstr "" -#: library/datetime.rst:2548 +#: library/datetime.rst:2564 msgid "00, 01, ..., 53" msgstr "" -#: library/datetime.rst:2548 +#: library/datetime.rst:2564 msgid "\\(7), \\(9)" msgstr "" -#: library/datetime.rst:2548 +#: library/datetime.rst:2564 msgid "``%W``" msgstr "" -#: library/datetime.rst:2548 +#: library/datetime.rst:2564 msgid "" "Week number of the year (Monday as the first day of the week) as a zero-" "padded decimal number. All days in a new year preceding the first Monday are " "considered to be in week 0." msgstr "" -#: library/datetime.rst:2556 +#: library/datetime.rst:2572 msgid "``%c``" msgstr "" -#: library/datetime.rst:2556 +#: library/datetime.rst:2572 msgid "Locale's appropriate date and time representation." msgstr "" @@ -3752,11 +3772,11 @@ msgstr "" msgid "Di 16 Aug 21:30:00 1988 (de_DE)" msgstr "" -#: library/datetime.rst:2561 +#: library/datetime.rst:2577 msgid "``%x``" msgstr "" -#: library/datetime.rst:2561 +#: library/datetime.rst:2577 msgid "Locale's appropriate date representation." msgstr "" @@ -3772,11 +3792,11 @@ msgstr "" msgid "16.08.1988 (de_DE)" msgstr "" -#: library/datetime.rst:2565 +#: library/datetime.rst:2581 msgid "``%X``" msgstr "" -#: library/datetime.rst:2565 +#: library/datetime.rst:2581 msgid "Locale's appropriate time representation." msgstr "" @@ -3788,83 +3808,83 @@ msgstr "" msgid "21:30:00 (de_DE)" msgstr "" -#: library/datetime.rst:2568 +#: library/datetime.rst:2584 msgid "``%%``" msgstr "" -#: library/datetime.rst:2568 +#: library/datetime.rst:2584 msgid "A literal ``'%'`` character." msgstr "" -#: library/datetime.rst:2568 +#: library/datetime.rst:2584 msgid "%" msgstr "" -#: library/datetime.rst:2571 +#: library/datetime.rst:2587 msgid "" "Several additional directives not required by the C89 standard are included " "for convenience. These parameters all correspond to ISO 8601 date values." msgstr "" -#: library/datetime.rst:2577 +#: library/datetime.rst:2593 msgid "``%G``" msgstr "" -#: library/datetime.rst:2577 +#: library/datetime.rst:2593 msgid "" "ISO 8601 year with century representing the year that contains the greater " "part of the ISO week (``%V``)." msgstr "" -#: library/datetime.rst:2577 +#: library/datetime.rst:2593 msgid "\\(8)" msgstr "" -#: library/datetime.rst:2582 +#: library/datetime.rst:2598 msgid "``%u``" msgstr "" -#: library/datetime.rst:2582 +#: library/datetime.rst:2598 msgid "ISO 8601 weekday as a decimal number where 1 is Monday." msgstr "" -#: library/datetime.rst:2582 +#: library/datetime.rst:2598 msgid "1, 2, ..., 7" msgstr "" -#: library/datetime.rst:2585 +#: library/datetime.rst:2601 msgid "``%V``" msgstr "" -#: library/datetime.rst:2585 +#: library/datetime.rst:2601 msgid "" "ISO 8601 week as a decimal number with Monday as the first day of the week. " "Week 01 is the week containing Jan 4." msgstr "" -#: library/datetime.rst:2585 +#: library/datetime.rst:2601 msgid "01, 02, ..., 53" msgstr "" -#: library/datetime.rst:2585 +#: library/datetime.rst:2601 msgid "\\(8), \\(9)" msgstr "" -#: library/datetime.rst:2710 +#: library/datetime.rst:2726 msgid "``%:z``" msgstr "" -#: library/datetime.rst:2591 +#: library/datetime.rst:2607 msgid "" "UTC offset in the form ``±HH:MM[:SS[.ffffff]]`` (empty string if the object " "is naive)." msgstr "" -#: library/datetime.rst:2591 +#: library/datetime.rst:2607 msgid "(empty), +00:00, -04:00, +10:30, +06:34:15, -03:07:12.345216" msgstr "" -#: library/datetime.rst:2597 +#: library/datetime.rst:2613 msgid "" "These may not be available on all platforms when used with the :meth:`~." "datetime.strftime` method. The ISO 8601 year and ISO 8601 week directives " @@ -3873,7 +3893,7 @@ msgid "" "directives will raise a :exc:`ValueError`." msgstr "" -#: library/datetime.rst:2602 +#: library/datetime.rst:2618 msgid "" "The full set of format codes supported varies across platforms, because " "Python calls the platform C library's :c:func:`strftime` function, and " @@ -3883,58 +3903,58 @@ msgid "" "unsupported format specifiers." msgstr "" -#: library/datetime.rst:2608 +#: library/datetime.rst:2624 msgid "``%G``, ``%u`` and ``%V`` were added." msgstr "" -#: library/datetime.rst:2611 +#: library/datetime.rst:2627 msgid "``%:z`` was added." msgstr "" -#: library/datetime.rst:2615 +#: library/datetime.rst:2631 msgid "Technical Detail" msgstr "" -#: library/datetime.rst:2617 +#: library/datetime.rst:2633 msgid "" "Broadly speaking, ``d.strftime(fmt)`` acts like the :mod:`time` module's " "``time.strftime(fmt, d.timetuple())`` although not all objects support a :" "meth:`~date.timetuple` method." msgstr "" -#: library/datetime.rst:2621 +#: library/datetime.rst:2637 msgid "" "For the :meth:`.datetime.strptime` class method, the default value is " "``1900-01-01T00:00:00.000``: any components not specified in the format " "string will be pulled from the default value. [#]_" msgstr "" -#: library/datetime.rst:2625 +#: library/datetime.rst:2641 msgid "Using ``datetime.strptime(date_string, format)`` is equivalent to::" msgstr "" -#: library/datetime.rst:2629 +#: library/datetime.rst:2645 msgid "" "except when the format includes sub-second components or time zone offset " "information, which are supported in ``datetime.strptime`` but are discarded " "by ``time.strptime``." msgstr "" -#: library/datetime.rst:2633 +#: library/datetime.rst:2649 msgid "" "For :class:`.time` objects, the format codes for year, month, and day should " "not be used, as :class:`!time` objects have no such values. If they're used " "anyway, 1900 is substituted for the year, and 1 for the month and day." msgstr "" -#: library/datetime.rst:2637 +#: library/datetime.rst:2653 msgid "" "For :class:`date` objects, the format codes for hours, minutes, seconds, and " "microseconds should not be used, as :class:`date` objects have no such " "values. If they're used anyway, 0 is substituted for them." msgstr "" -#: library/datetime.rst:2641 +#: library/datetime.rst:2657 msgid "" "For the same reason, handling of format strings containing Unicode code " "points that can't be represented in the charset of the current locale is " @@ -3943,7 +3963,7 @@ msgid "" "`UnicodeError` or return an empty string instead." msgstr "" -#: library/datetime.rst:2650 +#: library/datetime.rst:2666 msgid "" "Because the format depends on the current locale, care should be taken when " "making assumptions about the output value. Field orderings will vary (for " @@ -3951,38 +3971,38 @@ msgid "" "contain non-ASCII characters." msgstr "" -#: library/datetime.rst:2656 +#: library/datetime.rst:2672 msgid "" "The :meth:`~.datetime.strptime` method can parse years in the full [1, 9999] " "range, but years < 1000 must be zero-filled to 4-digit width." msgstr "" -#: library/datetime.rst:2659 +#: library/datetime.rst:2675 msgid "" "In previous versions, :meth:`~.datetime.strftime` method was restricted to " "years >= 1900." msgstr "" -#: library/datetime.rst:2663 +#: library/datetime.rst:2679 msgid "" "In version 3.2, :meth:`~.datetime.strftime` method was restricted to years " ">= 1000." msgstr "" -#: library/datetime.rst:2668 +#: library/datetime.rst:2684 msgid "" "When used with the :meth:`~.datetime.strptime` method, the ``%p`` directive " "only affects the output hour field if the ``%I`` directive is used to parse " "the hour." msgstr "" -#: library/datetime.rst:2672 +#: library/datetime.rst:2688 msgid "" "Unlike the :mod:`time` module, the :mod:`!datetime` module does not support " "leap seconds." msgstr "" -#: library/datetime.rst:2676 +#: library/datetime.rst:2692 msgid "" "When used with the :meth:`~.datetime.strptime` method, the ``%f`` directive " "accepts from one to six digits and zero pads on the right. ``%f`` is an " @@ -3990,17 +4010,17 @@ msgid "" "separately in datetime objects, and therefore always available)." msgstr "" -#: library/datetime.rst:2683 +#: library/datetime.rst:2699 msgid "" "For a naive object, the ``%z``, ``%:z`` and ``%Z`` format codes are replaced " "by empty strings." msgstr "" -#: library/datetime.rst:2686 +#: library/datetime.rst:2702 msgid "For an aware object:" msgstr "" -#: library/datetime.rst:2689 +#: library/datetime.rst:2705 msgid "" ":meth:`~.datetime.utcoffset` is transformed into a string of the form " "``±HHMM[SS[.ffffff]]``, where ``HH`` is a 2-digit string giving the number " @@ -4014,7 +4034,7 @@ msgid "" "replaced with the string ``'-0330'``." msgstr "" -#: library/datetime.rst:2703 +#: library/datetime.rst:2719 msgid "" "When the ``%z`` directive is provided to the :meth:`~.datetime.strptime` " "method, the UTC offsets can have a colon as a separator between hours, " @@ -4023,53 +4043,53 @@ msgid "" "``'+00:00'``." msgstr "" -#: library/datetime.rst:2711 +#: library/datetime.rst:2727 msgid "" "Behaves exactly as ``%z``, but has a colon separator added between hours, " "minutes and seconds." msgstr "" -#: library/datetime.rst:2715 +#: library/datetime.rst:2731 msgid "" "In :meth:`~.datetime.strftime`, ``%Z`` is replaced by an empty string if :" "meth:`~.datetime.tzname` returns ``None``; otherwise ``%Z`` is replaced by " "the returned value, which must be a string." msgstr "" -#: library/datetime.rst:2719 +#: library/datetime.rst:2735 msgid ":meth:`~.datetime.strptime` only accepts certain values for ``%Z``:" msgstr "" -#: library/datetime.rst:2721 +#: library/datetime.rst:2737 msgid "any value in ``time.tzname`` for your machine's locale" msgstr "" -#: library/datetime.rst:2722 +#: library/datetime.rst:2738 msgid "the hard-coded values ``UTC`` and ``GMT``" msgstr "" -#: library/datetime.rst:2724 +#: library/datetime.rst:2740 msgid "" "So someone living in Japan may have ``JST``, ``UTC``, and ``GMT`` as valid " "values, but probably not ``EST``. It will raise ``ValueError`` for invalid " "values." msgstr "" -#: library/datetime.rst:2728 +#: library/datetime.rst:2744 msgid "" "When the ``%z`` directive is provided to the :meth:`~.datetime.strptime` " "method, an aware :class:`.datetime` object will be produced. The ``tzinfo`` " "of the result will be set to a :class:`timezone` instance." msgstr "" -#: library/datetime.rst:2734 +#: library/datetime.rst:2750 msgid "" "When used with the :meth:`~.datetime.strptime` method, ``%U`` and ``%W`` are " "only used in calculations when the day of the week and the calendar year " "(``%Y``) are specified." msgstr "" -#: library/datetime.rst:2739 +#: library/datetime.rst:2755 msgid "" "Similar to ``%U`` and ``%W``, ``%V`` is only used in calculations when the " "day of the week and the ISO year (``%G``) are specified in a :meth:`~." @@ -4077,7 +4097,7 @@ msgid "" "interchangeable." msgstr "" -#: library/datetime.rst:2745 +#: library/datetime.rst:2761 msgid "" "When used with the :meth:`~.datetime.strptime` method, the leading zero is " "optional for formats ``%d``, ``%m``, ``%H``, ``%I``, ``%M``, ``%S``, " @@ -4085,7 +4105,7 @@ msgid "" "zero." msgstr "" -#: library/datetime.rst:2750 +#: library/datetime.rst:2766 msgid "" "When parsing a month and day using :meth:`~.datetime.strptime`, always " "include a year in the format. If the value you need to parse lacks a year, " @@ -4094,7 +4114,7 @@ msgid "" "parser is not a leap year. Users run into this bug every four years..." msgstr "" -#: library/datetime.rst:2756 +#: library/datetime.rst:2772 msgid "" ">>> month_day = \"02/29\"\n" ">>> datetime.strptime(f\"{month_day};1984\", \"%m/%d;%Y\") # No leap year " @@ -4102,7 +4122,7 @@ msgid "" "datetime.datetime(1984, 2, 29, 0, 0)" msgstr "" -#: library/datetime.rst:2762 +#: library/datetime.rst:2778 msgid "" ":meth:`~.datetime.strptime` calls using a format string containing a day of " "month without a year now emit a :exc:`DeprecationWarning`. In 3.15 or later " @@ -4110,15 +4130,15 @@ msgid "" "See :gh:`70647`." msgstr "" -#: library/datetime.rst:2769 +#: library/datetime.rst:2785 msgid "Footnotes" msgstr "" -#: library/datetime.rst:2770 +#: library/datetime.rst:2786 msgid "If, that is, we ignore the effects of Relativity" msgstr "" -#: library/datetime.rst:2772 +#: library/datetime.rst:2788 msgid "" "This matches the definition of the \"proleptic Gregorian\" calendar in " "Dershowitz and Reingold's book *Calendrical Calculations*, where it's the " @@ -4127,23 +4147,23 @@ msgid "" "systems." msgstr "" -#: library/datetime.rst:2778 +#: library/datetime.rst:2794 msgid "" "See R. H. van Gent's `guide to the mathematics of the ISO 8601 calendar " "`_ for a good explanation." msgstr "" -#: library/datetime.rst:2782 +#: library/datetime.rst:2798 msgid "" "Passing ``datetime.strptime('Feb 29', '%b %d')`` will fail since 1900 is not " "a leap year." msgstr "" -#: library/datetime.rst:2425 +#: library/datetime.rst:2441 msgid "% (percent)" msgstr "" -#: library/datetime.rst:2425 +#: library/datetime.rst:2441 msgid "datetime format" msgstr "" diff --git a/library/dbm.po b/library/dbm.po index d9196500..cf43d730 100644 --- a/library/dbm.po +++ b/library/dbm.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/debug.po b/library/debug.po index 24ed77df..a2675794 100644 --- a/library/debug.po +++ b/library/debug.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-26 14:11+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/library/decimal.po b/library/decimal.po index 846af46f..88aa6021 100644 --- a/library/decimal.po +++ b/library/decimal.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -145,7 +145,7 @@ msgid "" msgstr "" #: library/decimal.rst:125 -msgid "Quick-start Tutorial" +msgid "Quick-start tutorial" msgstr "" #: library/decimal.rst:127 @@ -1080,12 +1080,12 @@ msgstr "" msgid "Return the square root of the argument to full precision." msgstr "" -#: library/decimal.rst:1537 +#: library/decimal.rst:1549 msgid "" "Convert to a string, using engineering notation if an exponent is needed." msgstr "" -#: library/decimal.rst:1539 +#: library/decimal.rst:1551 msgid "" "Engineering notation has an exponent which is a multiple of 3. This can " "leave up to 3 digits to the left of the decimal place and may require the " @@ -1359,65 +1359,62 @@ msgid "" "field is not specified or is :const:`None`, all flags are cleared." msgstr "" -#: library/decimal.rst:1099 +#: library/decimal.rst:1101 msgid "" -"*prec* is an integer in the range [``1``, :const:`MAX_PREC`] that sets the " -"precision for arithmetic operations in the context." +"An integer in the range [``1``, :const:`MAX_PREC`] that sets the precision " +"for arithmetic operations in the context." msgstr "" -#: library/decimal.rst:1102 -msgid "" -"The *rounding* option is one of the constants listed in the section " -"`Rounding Modes`_." +#: library/decimal.rst:1106 +msgid "One of the constants listed in the section `Rounding Modes`_." msgstr "" -#: library/decimal.rst:1105 +#: library/decimal.rst:1111 msgid "" -"The *traps* and *flags* fields list any signals to be set. Generally, new " -"contexts should only set traps and leave the flags clear." +"Lists of any signals to be set. Generally, new contexts should only set " +"traps and leave the flags clear." msgstr "" -#: library/decimal.rst:1108 +#: library/decimal.rst:1117 msgid "" -"The *Emin* and *Emax* fields are integers specifying the outer limits " -"allowable for exponents. *Emin* must be in the range [:const:`MIN_EMIN`, " -"``0``], *Emax* in the range [``0``, :const:`MAX_EMAX`]." +"Integers specifying the outer limits allowable for exponents. *Emin* must be " +"in the range [:const:`MIN_EMIN`, ``0``], *Emax* in the range [``0``, :const:" +"`MAX_EMAX`]." msgstr "" -#: library/decimal.rst:1112 +#: library/decimal.rst:1123 msgid "" -"The *capitals* field is either ``0`` or ``1`` (the default). If set to " -"``1``, exponents are printed with a capital ``E``; otherwise, a lowercase " -"``e`` is used: ``Decimal('6.02e+23')``." +"Either ``0`` or ``1`` (the default). If set to ``1``, exponents are printed " +"with a capital ``E``; otherwise, a lowercase ``e`` is used: " +"``Decimal('6.02e+23')``." msgstr "" -#: library/decimal.rst:1116 +#: library/decimal.rst:1129 msgid "" -"The *clamp* field is either ``0`` (the default) or ``1``. If set to ``1``, " -"the exponent ``e`` of a :class:`Decimal` instance representable in this " -"context is strictly limited to the range ``Emin - prec + 1 <= e <= Emax - " -"prec + 1``. If *clamp* is ``0`` then a weaker condition holds: the adjusted " -"exponent of the :class:`Decimal` instance is at most :attr:`~Context.Emax`. " -"When *clamp* is ``1``, a large normal number will, where possible, have its " -"exponent reduced and a corresponding number of zeros added to its " -"coefficient, in order to fit the exponent constraints; this preserves the " -"value of the number but loses information about significant trailing zeros. " -"For example::" +"Either ``0`` (the default) or ``1``. If set to ``1``, the exponent ``e`` of " +"a :class:`Decimal` instance representable in this context is strictly " +"limited to the range ``Emin - prec + 1 <= e <= Emax - prec + 1``. If *clamp* " +"is ``0`` then a weaker condition holds: the adjusted exponent of the :class:" +"`Decimal` instance is at most :attr:`~Context.Emax`. When *clamp* is ``1``, " +"a large normal number will, where possible, have its exponent reduced and a " +"corresponding number of zeros added to its coefficient, in order to fit the " +"exponent constraints; this preserves the value of the number but loses " +"information about significant trailing zeros. For example::" msgstr "" -#: library/decimal.rst:1128 +#: library/decimal.rst:1140 msgid "" ">>> Context(prec=6, Emax=999, clamp=1).create_decimal('1.23e999')\n" "Decimal('1.23000E+999')" msgstr "" -#: library/decimal.rst:1131 +#: library/decimal.rst:1143 msgid "" "A *clamp* value of ``1`` allows compatibility with the fixed-width decimal " "interchange formats specified in IEEE 754." msgstr "" -#: library/decimal.rst:1134 +#: library/decimal.rst:1146 msgid "" "The :class:`Context` class defines several general purpose methods as well " "as a large number of methods for doing arithmetic directly in a given " @@ -1430,30 +1427,30 @@ msgid "" "instance of :class:`int`) anywhere that a Decimal instance is accepted." msgstr "" -#: library/decimal.rst:1147 +#: library/decimal.rst:1159 msgid "Resets all of the flags to ``0``." msgstr "" -#: library/decimal.rst:1151 +#: library/decimal.rst:1163 msgid "Resets all of the traps to ``0``." msgstr "" -#: library/decimal.rst:1157 +#: library/decimal.rst:1169 msgid "Return a duplicate of the context." msgstr "" -#: library/decimal.rst:1161 +#: library/decimal.rst:1173 msgid "Return a copy of the Decimal instance num." msgstr "" -#: library/decimal.rst:1165 +#: library/decimal.rst:1177 msgid "" "Creates a new Decimal instance from *num* but using *self* as context. " "Unlike the :class:`Decimal` constructor, the context precision, rounding " "method, flags, and traps are applied to the conversion." msgstr "" -#: library/decimal.rst:1169 +#: library/decimal.rst:1181 msgid "" "This is useful because constants are often given to a greater precision than " "is needed by the application. Another benefit is that rounding immediately " @@ -1462,7 +1459,7 @@ msgid "" "sum can change the result:" msgstr "" -#: library/decimal.rst:1175 +#: library/decimal.rst:1187 msgid "" ">>> getcontext().prec = 3\n" ">>> Decimal('3.4445') + Decimal('1.0023')\n" @@ -1471,14 +1468,14 @@ msgid "" "Decimal('4.44')" msgstr "" -#: library/decimal.rst:1183 +#: library/decimal.rst:1195 msgid "" "This method implements the to-number operation of the IBM specification. If " "the argument is a string, no leading or trailing whitespace or underscores " "are permitted." msgstr "" -#: library/decimal.rst:1189 +#: library/decimal.rst:1201 msgid "" "Creates a new Decimal instance from a float *f* but rounding using *self* as " "the context. Unlike the :meth:`Decimal.from_float` class method, the " @@ -1486,7 +1483,7 @@ msgid "" "conversion." msgstr "" -#: library/decimal.rst:1194 +#: library/decimal.rst:1206 msgid "" ">>> context = Context(prec=5, rounding=ROUND_DOWN)\n" ">>> context.create_decimal_from_float(math.pi)\n" @@ -1498,18 +1495,18 @@ msgid "" "decimal.Inexact: None" msgstr "" -#: library/decimal.rst:1209 +#: library/decimal.rst:1221 msgid "" "Returns a value equal to ``Emin - prec + 1`` which is the minimum exponent " "value for subnormal results. When underflow occurs, the exponent is set to :" "const:`Etiny`." msgstr "" -#: library/decimal.rst:1215 +#: library/decimal.rst:1227 msgid "Returns a value equal to ``Emax - prec + 1``." msgstr "" -#: library/decimal.rst:1217 +#: library/decimal.rst:1229 msgid "" "The usual approach to working with decimals is to create :class:`Decimal` " "instances and then apply arithmetic operations which take place within the " @@ -1519,189 +1516,189 @@ msgid "" "recounted here." msgstr "" -#: library/decimal.rst:1227 +#: library/decimal.rst:1239 msgid "Returns the absolute value of *x*." msgstr "" -#: library/decimal.rst:1232 +#: library/decimal.rst:1244 msgid "Return the sum of *x* and *y*." msgstr "" -#: library/decimal.rst:1237 +#: library/decimal.rst:1249 msgid "Returns the same Decimal object *x*." msgstr "" -#: library/decimal.rst:1242 +#: library/decimal.rst:1254 msgid "Compares *x* and *y* numerically." msgstr "" -#: library/decimal.rst:1247 +#: library/decimal.rst:1259 msgid "Compares the values of the two operands numerically." msgstr "" -#: library/decimal.rst:1252 +#: library/decimal.rst:1264 msgid "Compares two operands using their abstract representation." msgstr "" -#: library/decimal.rst:1257 +#: library/decimal.rst:1269 msgid "" "Compares two operands using their abstract representation, ignoring sign." msgstr "" -#: library/decimal.rst:1262 +#: library/decimal.rst:1274 msgid "Returns a copy of *x* with the sign set to 0." msgstr "" -#: library/decimal.rst:1267 +#: library/decimal.rst:1279 msgid "Returns a copy of *x* with the sign inverted." msgstr "" -#: library/decimal.rst:1272 +#: library/decimal.rst:1284 msgid "Copies the sign from *y* to *x*." msgstr "" -#: library/decimal.rst:1277 +#: library/decimal.rst:1289 msgid "Return *x* divided by *y*." msgstr "" -#: library/decimal.rst:1282 +#: library/decimal.rst:1294 msgid "Return *x* divided by *y*, truncated to an integer." msgstr "" -#: library/decimal.rst:1287 +#: library/decimal.rst:1299 msgid "Divides two numbers and returns the integer part of the result." msgstr "" -#: library/decimal.rst:1292 +#: library/decimal.rst:1304 msgid "Returns ``e ** x``." msgstr "" -#: library/decimal.rst:1297 +#: library/decimal.rst:1309 msgid "Returns *x* multiplied by *y*, plus *z*." msgstr "" -#: library/decimal.rst:1302 +#: library/decimal.rst:1314 msgid "Returns ``True`` if *x* is canonical; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1307 +#: library/decimal.rst:1319 msgid "Returns ``True`` if *x* is finite; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1312 +#: library/decimal.rst:1324 msgid "Returns ``True`` if *x* is infinite; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1317 +#: library/decimal.rst:1329 msgid "Returns ``True`` if *x* is a qNaN or sNaN; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1322 +#: library/decimal.rst:1334 msgid "" "Returns ``True`` if *x* is a normal number; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1327 +#: library/decimal.rst:1339 msgid "Returns ``True`` if *x* is a quiet NaN; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1332 +#: library/decimal.rst:1344 msgid "Returns ``True`` if *x* is negative; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1337 +#: library/decimal.rst:1349 msgid "" "Returns ``True`` if *x* is a signaling NaN; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1342 +#: library/decimal.rst:1354 msgid "Returns ``True`` if *x* is subnormal; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1347 +#: library/decimal.rst:1359 msgid "Returns ``True`` if *x* is a zero; otherwise returns ``False``." msgstr "" -#: library/decimal.rst:1352 +#: library/decimal.rst:1364 msgid "Returns the natural (base e) logarithm of *x*." msgstr "" -#: library/decimal.rst:1357 +#: library/decimal.rst:1369 msgid "Returns the base 10 logarithm of *x*." msgstr "" -#: library/decimal.rst:1362 +#: library/decimal.rst:1374 msgid "Returns the exponent of the magnitude of the operand's MSD." msgstr "" -#: library/decimal.rst:1367 +#: library/decimal.rst:1379 msgid "Applies the logical operation *and* between each operand's digits." msgstr "" -#: library/decimal.rst:1372 +#: library/decimal.rst:1384 msgid "Invert all the digits in *x*." msgstr "" -#: library/decimal.rst:1377 +#: library/decimal.rst:1389 msgid "Applies the logical operation *or* between each operand's digits." msgstr "" -#: library/decimal.rst:1382 +#: library/decimal.rst:1394 msgid "Applies the logical operation *xor* between each operand's digits." msgstr "" -#: library/decimal.rst:1387 +#: library/decimal.rst:1399 msgid "Compares two values numerically and returns the maximum." msgstr "" -#: library/decimal.rst:1402 +#: library/decimal.rst:1414 msgid "Compares the values numerically with their sign ignored." msgstr "" -#: library/decimal.rst:1397 +#: library/decimal.rst:1409 msgid "Compares two values numerically and returns the minimum." msgstr "" -#: library/decimal.rst:1407 +#: library/decimal.rst:1419 msgid "Minus corresponds to the unary prefix minus operator in Python." msgstr "" -#: library/decimal.rst:1412 +#: library/decimal.rst:1424 msgid "Return the product of *x* and *y*." msgstr "" -#: library/decimal.rst:1417 +#: library/decimal.rst:1429 msgid "Returns the largest representable number smaller than *x*." msgstr "" -#: library/decimal.rst:1422 +#: library/decimal.rst:1434 msgid "Returns the smallest representable number larger than *x*." msgstr "" -#: library/decimal.rst:1427 +#: library/decimal.rst:1439 msgid "Returns the number closest to *x*, in direction towards *y*." msgstr "" -#: library/decimal.rst:1432 +#: library/decimal.rst:1444 msgid "Reduces *x* to its simplest form." msgstr "" -#: library/decimal.rst:1437 +#: library/decimal.rst:1449 msgid "Returns an indication of the class of *x*." msgstr "" -#: library/decimal.rst:1442 +#: library/decimal.rst:1454 msgid "" "Plus corresponds to the unary prefix plus operator in Python. This " "operation applies the context precision and rounding, so it is *not* an " "identity operation." msgstr "" -#: library/decimal.rst:1449 +#: library/decimal.rst:1461 msgid "Return ``x`` to the power of ``y``, reduced modulo ``modulo`` if given." msgstr "" -#: library/decimal.rst:1451 +#: library/decimal.rst:1463 msgid "" "With two arguments, compute ``x**y``. If ``x`` is negative then ``y`` must " "be integral. The result will be inexact unless ``y`` is integral and the " @@ -1710,42 +1707,42 @@ msgid "" "in the Python version." msgstr "" -#: library/decimal.rst:1457 +#: library/decimal.rst:1469 msgid "" "``Decimal(0) ** Decimal(0)`` results in ``InvalidOperation``, and if " "``InvalidOperation`` is not trapped, then results in ``Decimal('NaN')``." msgstr "" -#: library/decimal.rst:1460 +#: library/decimal.rst:1472 msgid "" "The C module computes :meth:`power` in terms of the correctly rounded :meth:" "`exp` and :meth:`ln` functions. The result is well-defined but only \"almost " "always correctly rounded\"." msgstr "" -#: library/decimal.rst:1465 +#: library/decimal.rst:1477 msgid "" "With three arguments, compute ``(x**y) % modulo``. For the three argument " "form, the following restrictions on the arguments hold:" msgstr "" -#: library/decimal.rst:1468 +#: library/decimal.rst:1480 msgid "all three arguments must be integral" msgstr "" -#: library/decimal.rst:1469 +#: library/decimal.rst:1481 msgid "``y`` must be nonnegative" msgstr "" -#: library/decimal.rst:1470 +#: library/decimal.rst:1482 msgid "at least one of ``x`` or ``y`` must be nonzero" msgstr "" -#: library/decimal.rst:1471 +#: library/decimal.rst:1483 msgid "``modulo`` must be nonzero and have at most 'precision' digits" msgstr "" -#: library/decimal.rst:1473 +#: library/decimal.rst:1485 msgid "" "The value resulting from ``Context.power(x, y, modulo)`` is equal to the " "value that would be obtained by computing ``(x**y) % modulo`` with unbounded " @@ -1754,118 +1751,118 @@ msgid "" "result is always exact." msgstr "" -#: library/decimal.rst:1483 +#: library/decimal.rst:1495 msgid "Returns a value equal to *x* (rounded), having the exponent of *y*." msgstr "" -#: library/decimal.rst:1488 +#: library/decimal.rst:1500 msgid "Just returns 10, as this is Decimal, :)" msgstr "" -#: library/decimal.rst:1493 +#: library/decimal.rst:1505 msgid "Returns the remainder from integer division." msgstr "" -#: library/decimal.rst:1495 +#: library/decimal.rst:1507 msgid "" "The sign of the result, if non-zero, is the same as that of the original " "dividend." msgstr "" -#: library/decimal.rst:1501 +#: library/decimal.rst:1513 msgid "" "Returns ``x - y * n``, where *n* is the integer nearest the exact value of " "``x / y`` (if the result is 0 then its sign will be the sign of *x*)." msgstr "" -#: library/decimal.rst:1507 +#: library/decimal.rst:1519 msgid "Returns a rotated copy of *x*, *y* times." msgstr "" -#: library/decimal.rst:1512 +#: library/decimal.rst:1524 msgid "Returns ``True`` if the two operands have the same exponent." msgstr "" -#: library/decimal.rst:1517 +#: library/decimal.rst:1529 msgid "Returns the first operand after adding the second value its exp." msgstr "" -#: library/decimal.rst:1522 +#: library/decimal.rst:1534 msgid "Returns a shifted copy of *x*, *y* times." msgstr "" -#: library/decimal.rst:1527 +#: library/decimal.rst:1539 msgid "Square root of a non-negative number to context precision." msgstr "" -#: library/decimal.rst:1532 +#: library/decimal.rst:1544 msgid "Return the difference between *x* and *y*." msgstr "" -#: library/decimal.rst:1546 +#: library/decimal.rst:1558 msgid "Rounds to an integer." msgstr "" -#: library/decimal.rst:1551 +#: library/decimal.rst:1563 msgid "Converts a number to a string using scientific notation." msgstr "" -#: library/decimal.rst:1558 +#: library/decimal.rst:1570 msgid "Constants" msgstr "" -#: library/decimal.rst:1560 +#: library/decimal.rst:1572 msgid "" "The constants in this section are only relevant for the C module. They are " "also included in the pure Python version for compatibility." msgstr "" -#: library/decimal.rst:1564 +#: library/decimal.rst:1576 msgid "32-bit" msgstr "" -#: library/decimal.rst:1564 +#: library/decimal.rst:1576 msgid "64-bit" msgstr "" -#: library/decimal.rst:1568 +#: library/decimal.rst:1580 msgid "``425000000``" msgstr "" -#: library/decimal.rst:1568 +#: library/decimal.rst:1580 msgid "``999999999999999999``" msgstr "" -#: library/decimal.rst:1570 +#: library/decimal.rst:1582 msgid "``-425000000``" msgstr "" -#: library/decimal.rst:1570 +#: library/decimal.rst:1582 msgid "``-999999999999999999``" msgstr "" -#: library/decimal.rst:1572 +#: library/decimal.rst:1584 msgid "``-849999999``" msgstr "" -#: library/decimal.rst:1572 +#: library/decimal.rst:1584 msgid "``-1999999999999999997``" msgstr "" -#: library/decimal.rst:1574 +#: library/decimal.rst:1586 msgid "``256``" msgstr "" -#: library/decimal.rst:1574 +#: library/decimal.rst:1586 msgid "``512``" msgstr "" -#: library/decimal.rst:1579 +#: library/decimal.rst:1591 msgid "" "The value is ``True``. Deprecated, because Python now always has threads." msgstr "" -#: library/decimal.rst:1585 +#: library/decimal.rst:1597 msgid "" "The default value is ``True``. If Python is :option:`configured using the --" "without-decimal-contextvar option <--without-decimal-contextvar>`, the C " @@ -1874,55 +1871,55 @@ msgid "" "scenarios." msgstr "" -#: library/decimal.rst:1594 +#: library/decimal.rst:1606 msgid "Rounding modes" msgstr "" -#: library/decimal.rst:1598 +#: library/decimal.rst:1610 msgid "Round towards ``Infinity``." msgstr "" -#: library/decimal.rst:1602 +#: library/decimal.rst:1614 msgid "Round towards zero." msgstr "" -#: library/decimal.rst:1606 +#: library/decimal.rst:1618 msgid "Round towards ``-Infinity``." msgstr "" -#: library/decimal.rst:1610 +#: library/decimal.rst:1622 msgid "Round to nearest with ties going towards zero." msgstr "" -#: library/decimal.rst:1614 +#: library/decimal.rst:1626 msgid "Round to nearest with ties going to nearest even integer." msgstr "" -#: library/decimal.rst:1618 +#: library/decimal.rst:1630 msgid "Round to nearest with ties going away from zero." msgstr "" -#: library/decimal.rst:1622 +#: library/decimal.rst:1634 msgid "Round away from zero." msgstr "" -#: library/decimal.rst:1626 +#: library/decimal.rst:1638 msgid "" "Round away from zero if last digit after rounding towards zero would have " "been 0 or 5; otherwise round towards zero." msgstr "" -#: library/decimal.rst:1633 +#: library/decimal.rst:1645 msgid "Signals" msgstr "" -#: library/decimal.rst:1635 +#: library/decimal.rst:1647 msgid "" "Signals represent conditions that arise during computation. Each corresponds " "to one context flag and one context trap enabler." msgstr "" -#: library/decimal.rst:1638 +#: library/decimal.rst:1650 msgid "" "The context flag is set whenever the condition is encountered. After the " "computation, flags may be checked for informational purposes (for instance, " @@ -1930,7 +1927,7 @@ msgid "" "sure to clear all flags before starting the next computation." msgstr "" -#: library/decimal.rst:1643 +#: library/decimal.rst:1655 msgid "" "If the context's trap enabler is set for the signal, then the condition " "causes a Python exception to be raised. For example, if the :class:" @@ -1938,54 +1935,54 @@ msgid "" "raised upon encountering the condition." msgstr "" -#: library/decimal.rst:1651 +#: library/decimal.rst:1663 msgid "Altered an exponent to fit representation constraints." msgstr "" -#: library/decimal.rst:1653 +#: library/decimal.rst:1665 msgid "" "Typically, clamping occurs when an exponent falls outside the context's :" "attr:`~Context.Emin` and :attr:`~Context.Emax` limits. If possible, the " "exponent is reduced to fit by adding zeros to the coefficient." msgstr "" -#: library/decimal.rst:1660 +#: library/decimal.rst:1672 msgid "Base class for other signals and a subclass of :exc:`ArithmeticError`." msgstr "" -#: library/decimal.rst:1665 +#: library/decimal.rst:1677 msgid "Signals the division of a non-infinite number by zero." msgstr "" -#: library/decimal.rst:1667 +#: library/decimal.rst:1679 msgid "" "Can occur with division, modulo division, or when raising a number to a " "negative power. If this signal is not trapped, returns ``Infinity`` or ``-" "Infinity`` with the sign determined by the inputs to the calculation." msgstr "" -#: library/decimal.rst:1674 +#: library/decimal.rst:1686 msgid "Indicates that rounding occurred and the result is not exact." msgstr "" -#: library/decimal.rst:1676 +#: library/decimal.rst:1688 msgid "" "Signals when non-zero digits were discarded during rounding. The rounded " "result is returned. The signal flag or trap is used to detect when results " "are inexact." msgstr "" -#: library/decimal.rst:1683 +#: library/decimal.rst:1695 msgid "An invalid operation was performed." msgstr "" -#: library/decimal.rst:1685 +#: library/decimal.rst:1697 msgid "" "Indicates that an operation was requested that does not make sense. If not " "trapped, returns ``NaN``. Possible causes include::" msgstr "" -#: library/decimal.rst:1688 +#: library/decimal.rst:1700 msgid "" "Infinity - Infinity\n" "0 * Infinity\n" @@ -1998,11 +1995,11 @@ msgid "" "x ** Infinity" msgstr "" -#: library/decimal.rst:1701 +#: library/decimal.rst:1713 msgid "Numerical overflow." msgstr "" -#: library/decimal.rst:1703 +#: library/decimal.rst:1715 msgid "" "Indicates the exponent is larger than :attr:`Context.Emax` after rounding " "has occurred. If not trapped, the result depends on the rounding mode, " @@ -2011,42 +2008,42 @@ msgid "" "`Rounded` are also signaled." msgstr "" -#: library/decimal.rst:1712 +#: library/decimal.rst:1724 msgid "Rounding occurred though possibly no information was lost." msgstr "" -#: library/decimal.rst:1714 +#: library/decimal.rst:1726 msgid "" "Signaled whenever rounding discards digits; even if those digits are zero " "(such as rounding ``5.00`` to ``5.0``). If not trapped, returns the result " "unchanged. This signal is used to detect loss of significant digits." msgstr "" -#: library/decimal.rst:1722 +#: library/decimal.rst:1734 msgid "Exponent was lower than :attr:`~Context.Emin` prior to rounding." msgstr "" -#: library/decimal.rst:1724 +#: library/decimal.rst:1736 msgid "" "Occurs when an operation result is subnormal (the exponent is too small). If " "not trapped, returns the result unchanged." msgstr "" -#: library/decimal.rst:1730 +#: library/decimal.rst:1742 msgid "Numerical underflow with result rounded to zero." msgstr "" -#: library/decimal.rst:1732 +#: library/decimal.rst:1744 msgid "" "Occurs when a subnormal result is pushed to zero by rounding. :class:" "`Inexact` and :class:`Subnormal` are also signaled." msgstr "" -#: library/decimal.rst:1738 +#: library/decimal.rst:1750 msgid "Enable stricter semantics for mixing floats and Decimals." msgstr "" -#: library/decimal.rst:1740 +#: library/decimal.rst:1752 msgid "" "If the signal is not trapped (default), mixing floats and Decimals is " "permitted in the :class:`~decimal.Decimal` constructor, :meth:`~decimal." @@ -2057,18 +2054,18 @@ msgid "" "Context.create_decimal_from_float` do not set the flag." msgstr "" -#: library/decimal.rst:1748 +#: library/decimal.rst:1760 msgid "" "Otherwise (the signal is trapped), only equality comparisons and explicit " "conversions are silent. All other mixed operations raise :exc:" "`FloatOperation`." msgstr "" -#: library/decimal.rst:1752 +#: library/decimal.rst:1764 msgid "The following table summarizes the hierarchy of signals::" msgstr "" -#: library/decimal.rst:1754 +#: library/decimal.rst:1766 msgid "" "exceptions.ArithmeticError(exceptions.Exception)\n" " DecimalException\n" @@ -2083,15 +2080,15 @@ msgid "" " FloatOperation(DecimalException, exceptions.TypeError)" msgstr "" -#: library/decimal.rst:1773 -msgid "Floating-Point Notes" +#: library/decimal.rst:1785 +msgid "Floating-point notes" msgstr "" -#: library/decimal.rst:1777 +#: library/decimal.rst:1789 msgid "Mitigating round-off error with increased precision" msgstr "" -#: library/decimal.rst:1779 +#: library/decimal.rst:1791 msgid "" "The use of decimal floating point eliminates decimal representation error " "(making it possible to represent ``0.1`` exactly); however, some operations " @@ -2099,7 +2096,7 @@ msgid "" "precision." msgstr "" -#: library/decimal.rst:1783 +#: library/decimal.rst:1795 msgid "" "The effects of round-off error can be amplified by the addition or " "subtraction of nearly offsetting quantities resulting in loss of " @@ -2108,7 +2105,7 @@ msgid "" "of the associative and distributive properties of addition:" msgstr "" -#: library/decimal.rst:1789 +#: library/decimal.rst:1801 msgid "" "# Examples from Seminumerical Algorithms, Section 4.2.2.\n" ">>> from decimal import Decimal, getcontext\n" @@ -2127,13 +2124,13 @@ msgid "" "Decimal('0.0060000')" msgstr "" -#: library/decimal.rst:1807 +#: library/decimal.rst:1819 msgid "" "The :mod:`decimal` module makes it possible to restore the identities by " "expanding the precision sufficiently to avoid loss of significance:" msgstr "" -#: library/decimal.rst:1810 +#: library/decimal.rst:1822 msgid "" ">>> getcontext().prec = 20\n" ">>> u, v, w = Decimal(11111113), Decimal(-11111111), Decimal('7.51111111')\n" @@ -2149,18 +2146,18 @@ msgid "" "Decimal('0.0060000')" msgstr "" -#: library/decimal.rst:1827 +#: library/decimal.rst:1839 msgid "Special values" msgstr "" -#: library/decimal.rst:1829 +#: library/decimal.rst:1841 msgid "" "The number system for the :mod:`decimal` module provides special values " "including ``NaN``, ``sNaN``, ``-Infinity``, ``Infinity``, and two zeros, " "``+0`` and ``-0``." msgstr "" -#: library/decimal.rst:1833 +#: library/decimal.rst:1845 msgid "" "Infinities can be constructed directly with: ``Decimal('Infinity')``. Also, " "they can arise from dividing by zero when the :exc:`DivisionByZero` signal " @@ -2169,14 +2166,14 @@ msgid "" "representable number." msgstr "" -#: library/decimal.rst:1838 +#: library/decimal.rst:1850 msgid "" "The infinities are signed (affine) and can be used in arithmetic operations " "where they get treated as very large, indeterminate numbers. For instance, " "adding a constant to infinity gives another infinite result." msgstr "" -#: library/decimal.rst:1842 +#: library/decimal.rst:1854 msgid "" "Some operations are indeterminate and return ``NaN``, or if the :exc:" "`InvalidOperation` signal is trapped, raise an exception. For example, " @@ -2187,14 +2184,14 @@ msgid "" "the calculation to proceed while flagging specific results as invalid." msgstr "" -#: library/decimal.rst:1850 +#: library/decimal.rst:1862 msgid "" "A variant is ``sNaN`` which signals rather than remaining quiet after every " "operation. This is a useful return value when an invalid result needs to " "interrupt a calculation for special handling." msgstr "" -#: library/decimal.rst:1854 +#: library/decimal.rst:1866 msgid "" "The behavior of Python's comparison operators can be a little surprising " "where a ``NaN`` is involved. A test for equality where one of the operands " @@ -2211,7 +2208,7 @@ msgid "" "compare_signal` methods instead." msgstr "" -#: library/decimal.rst:1867 +#: library/decimal.rst:1879 msgid "" "The signed zeros can result from calculations that underflow. They keep the " "sign that would have resulted if the calculation had been carried out to " @@ -2219,7 +2216,7 @@ msgid "" "negative zeros are treated as equal and their sign is informational." msgstr "" -#: library/decimal.rst:1872 +#: library/decimal.rst:1884 msgid "" "In addition to the two signed zeros which are distinct yet equal, there are " "various representations of zero with differing precisions yet equivalent in " @@ -2228,11 +2225,11 @@ msgid "" "that the following calculation returns a value equal to zero:" msgstr "" -#: library/decimal.rst:1887 +#: library/decimal.rst:1899 msgid "Working with threads" msgstr "" -#: library/decimal.rst:1889 +#: library/decimal.rst:1901 msgid "" "The :func:`getcontext` function accesses a different :class:`Context` object " "for each thread. Having separate thread contexts means that threads may " @@ -2240,13 +2237,13 @@ msgid "" "other threads." msgstr "" -#: library/decimal.rst:1893 +#: library/decimal.rst:1905 msgid "" "Likewise, the :func:`setcontext` function automatically assigns its target " "to the current thread." msgstr "" -#: library/decimal.rst:1896 +#: library/decimal.rst:1908 msgid "" "If :func:`setcontext` has not been called before :func:`getcontext`, then :" "func:`getcontext` will automatically create a new context for use in the " @@ -2254,7 +2251,7 @@ msgid "" "`decimal.DefaultContext` object." msgstr "" -#: library/decimal.rst:1901 +#: library/decimal.rst:1913 msgid "" "The :data:`sys.flags.thread_inherit_context` flag affects the context for " "new threads. If the flag is false, new threads will start with an empty " @@ -2264,7 +2261,7 @@ msgid "" "meth:`threading.Thread.start`." msgstr "" -#: library/decimal.rst:1908 +#: library/decimal.rst:1920 msgid "" "To control the defaults so that each thread will use the same values " "throughout the application, directly modify the *DefaultContext* object. " @@ -2272,7 +2269,7 @@ msgid "" "a race condition between threads calling :func:`getcontext`. For example::" msgstr "" -#: library/decimal.rst:1913 +#: library/decimal.rst:1925 msgid "" "# Set applicationwide defaults for all threads about to be launched\n" "DefaultContext.prec = 12\n" @@ -2288,17 +2285,17 @@ msgid "" " . . ." msgstr "" -#: library/decimal.rst:1932 +#: library/decimal.rst:1944 msgid "Recipes" msgstr "" -#: library/decimal.rst:1934 +#: library/decimal.rst:1946 msgid "" "Here are a few recipes that serve as utility functions and that demonstrate " "ways to work with the :class:`Decimal` class::" msgstr "" -#: library/decimal.rst:1937 +#: library/decimal.rst:1949 msgid "" "def moneyfmt(value, places=2, curr='', sep=',', dp='.',\n" " pos='', neg='-', trailneg=''):\n" @@ -2447,41 +2444,41 @@ msgid "" " return +s" msgstr "" -#: library/decimal.rst:2089 +#: library/decimal.rst:2101 msgid "Decimal FAQ" msgstr "" -#: library/decimal.rst:2091 +#: library/decimal.rst:2103 msgid "" "Q. It is cumbersome to type ``decimal.Decimal('1234.5')``. Is there a way " "to minimize typing when using the interactive interpreter?" msgstr "" -#: library/decimal.rst:2094 +#: library/decimal.rst:2106 msgid "A. Some users abbreviate the constructor to just a single letter:" msgstr "" -#: library/decimal.rst:2100 +#: library/decimal.rst:2112 msgid "" "Q. In a fixed-point application with two decimal places, some inputs have " "many places and need to be rounded. Others are not supposed to have excess " "digits and need to be validated. What methods should be used?" msgstr "" -#: library/decimal.rst:2104 +#: library/decimal.rst:2116 msgid "" "A. The :meth:`~Decimal.quantize` method rounds to a fixed number of decimal " "places. If the :const:`Inexact` trap is set, it is also useful for " "validation:" msgstr "" -#: library/decimal.rst:2122 +#: library/decimal.rst:2134 msgid "" "Q. Once I have valid two place inputs, how do I maintain that invariant " "throughout an application?" msgstr "" -#: library/decimal.rst:2125 +#: library/decimal.rst:2137 msgid "" "A. Some operations like addition, subtraction, and multiplication by an " "integer will automatically preserve fixed point. Others operations, like " @@ -2489,13 +2486,13 @@ msgid "" "places and need to be followed-up with a :meth:`~Decimal.quantize` step:" msgstr "" -#: library/decimal.rst:2143 +#: library/decimal.rst:2155 msgid "" "In developing fixed-point applications, it is convenient to define functions " "to handle the :meth:`~Decimal.quantize` step:" msgstr "" -#: library/decimal.rst:2157 +#: library/decimal.rst:2169 msgid "" "Q. There are many ways to express the same value. The numbers ``200``, " "``200.000``, ``2E2``, and ``.02E+4`` all have the same value at various " @@ -2503,17 +2500,17 @@ msgid "" "canonical value?" msgstr "" -#: library/decimal.rst:2162 +#: library/decimal.rst:2174 msgid "" "A. The :meth:`~Decimal.normalize` method maps all equivalent values to a " "single representative:" msgstr "" -#: library/decimal.rst:2169 +#: library/decimal.rst:2181 msgid "Q. When does rounding occur in a computation?" msgstr "" -#: library/decimal.rst:2171 +#: library/decimal.rst:2183 msgid "" "A. It occurs *after* the computation. The philosophy of the decimal " "specification is that numbers are considered exact and are created " @@ -2523,7 +2520,7 @@ msgid "" "computation::" msgstr "" -#: library/decimal.rst:2178 +#: library/decimal.rst:2190 msgid "" ">>> getcontext().prec = 5\n" ">>> pi = Decimal('3.1415926535') # More than 5 digits\n" @@ -2537,13 +2534,13 @@ msgid "" "Decimal('3.1416')" msgstr "" -#: library/decimal.rst:2189 +#: library/decimal.rst:2201 msgid "" "Q. Some decimal values always print with exponential notation. Is there a " "way to get a non-exponential representation?" msgstr "" -#: library/decimal.rst:2192 +#: library/decimal.rst:2204 msgid "" "A. For some values, exponential notation is the only way to express the " "number of significant places in the coefficient. For example, expressing " @@ -2551,37 +2548,37 @@ msgid "" "original's two-place significance." msgstr "" -#: library/decimal.rst:2197 +#: library/decimal.rst:2209 msgid "" "If an application does not care about tracking significance, it is easy to " "remove the exponent and trailing zeroes, losing significance, but keeping " "the value unchanged:" msgstr "" -#: library/decimal.rst:2207 +#: library/decimal.rst:2219 msgid "Q. Is there a way to convert a regular float to a :class:`Decimal`?" msgstr "" -#: library/decimal.rst:2209 +#: library/decimal.rst:2221 msgid "" "A. Yes, any binary floating-point number can be exactly expressed as a " "Decimal though an exact conversion may take more precision than intuition " "would suggest:" msgstr "" -#: library/decimal.rst:2213 +#: library/decimal.rst:2225 msgid "" ">>> Decimal(math.pi)\n" "Decimal('3.141592653589793115997963468544185161590576171875')" msgstr "" -#: library/decimal.rst:2218 +#: library/decimal.rst:2230 msgid "" "Q. Within a complex calculation, how can I make sure that I haven't gotten a " "spurious result because of insufficient precision or rounding anomalies." msgstr "" -#: library/decimal.rst:2221 +#: library/decimal.rst:2233 msgid "" "A. The decimal module makes it easy to test results. A best practice is to " "re-run calculations using greater precision and with various rounding modes. " @@ -2589,14 +2586,14 @@ msgid "" "issues, ill-conditioned inputs, or a numerically unstable algorithm." msgstr "" -#: library/decimal.rst:2226 +#: library/decimal.rst:2238 msgid "" "Q. I noticed that context precision is applied to the results of operations " "but not to the inputs. Is there anything to watch out for when mixing " "values of different precisions?" msgstr "" -#: library/decimal.rst:2230 +#: library/decimal.rst:2242 msgid "" "A. Yes. The principle is that all values are considered to be exact and so " "is the arithmetic on those values. Only the results are rounded. The " @@ -2605,7 +2602,7 @@ msgid "" "haven't been rounded:" msgstr "" -#: library/decimal.rst:2235 +#: library/decimal.rst:2247 msgid "" ">>> getcontext().prec = 3\n" ">>> Decimal('3.104') + Decimal('2.104')\n" @@ -2614,30 +2611,30 @@ msgid "" "Decimal('5.20')" msgstr "" -#: library/decimal.rst:2243 +#: library/decimal.rst:2255 msgid "" "The solution is either to increase precision or to force rounding of inputs " "using the unary plus operation:" msgstr "" -#: library/decimal.rst:2246 +#: library/decimal.rst:2258 msgid "" ">>> getcontext().prec = 3\n" ">>> +Decimal('1.23456789') # unary plus triggers rounding\n" "Decimal('1.23')" msgstr "" -#: library/decimal.rst:2252 +#: library/decimal.rst:2264 msgid "" "Alternatively, inputs can be rounded upon creation using the :meth:`Context." "create_decimal` method:" msgstr "" -#: library/decimal.rst:2258 +#: library/decimal.rst:2270 msgid "Q. Is the CPython implementation fast for large numbers?" msgstr "" -#: library/decimal.rst:2260 +#: library/decimal.rst:2272 msgid "" "A. Yes. In the CPython and PyPy3 implementations, the C/CFFI versions of " "the decimal module integrate the high speed `libmpdec >> setcontext(Context(prec=MAX_PREC, Emax=MAX_EMAX, Emin=MIN_EMIN))\n" ">>> x = Decimal(2) ** 256\n" @@ -2672,13 +2669,13 @@ msgid "" "Decimal('904625697166532776746648320380374280103671755200316906558262375061821325312')" msgstr "" -#: library/decimal.rst:2283 +#: library/decimal.rst:2295 msgid "" "For inexact results, :const:`MAX_PREC` is far too large on 64-bit platforms " "and the available memory will be insufficient::" msgstr "" -#: library/decimal.rst:2286 +#: library/decimal.rst:2298 msgid "" ">>> Decimal(1) / 3\n" "Traceback (most recent call last):\n" @@ -2686,7 +2683,7 @@ msgid "" "MemoryError" msgstr "" -#: library/decimal.rst:2291 +#: library/decimal.rst:2303 msgid "" "On systems with overallocation (e.g. Linux), a more sophisticated approach " "is to adjust :attr:`~Context.prec` to the amount of available RAM. Suppose " @@ -2694,7 +2691,7 @@ msgid "" "of 500MB each::" msgstr "" -#: library/decimal.rst:2295 +#: library/decimal.rst:2307 msgid "" ">>> import sys\n" ">>>\n" @@ -2718,14 +2715,14 @@ msgid "" " decimal.Inexact: []" msgstr "" -#: library/decimal.rst:2315 +#: library/decimal.rst:2327 msgid "" "In general (and especially on systems without overallocation), it is " "recommended to estimate even tighter bounds and set the :attr:`Inexact` trap " "if all calculations are expected to be exact." msgstr "" -#: library/decimal.rst:2324 +#: library/decimal.rst:2336 msgid "" "This approach now works for all exact results except for non-integer powers." msgstr "" diff --git a/library/development.po b/library/development.po index d3b85d0e..1c6c6c45 100644 --- a/library/development.po +++ b/library/development.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-22 13:10+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/library/devmode.po b/library/devmode.po index 8296bd56..01146a27 100644 --- a/library/devmode.po +++ b/library/devmode.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/dialog.po b/library/dialog.po index 758f6174..cc187780 100644 --- a/library/dialog.po +++ b/library/dialog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/difflib.po b/library/difflib.po index b5d98f10..6e049389 100644 --- a/library/difflib.po +++ b/library/difflib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/dis.po b/library/dis.po index 52c001da..05a4a706 100644 --- a/library/dis.po +++ b/library/dis.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -735,7 +735,7 @@ msgstr "" msgid "Implements ``STACK[-1] = not STACK[-1]``." msgstr "" -#: library/dis.rst:1333 library/dis.rst:1349 +#: library/dis.rst:1325 library/dis.rst:1341 msgid "This instruction now requires an exact :class:`bool` operand." msgstr "" @@ -795,7 +795,7 @@ msgid "" msgstr "" #: library/dis.rst:730 library/dis.rst:750 library/dis.rst:838 -#: library/dis.rst:1054 library/dis.rst:1176 library/dis.rst:1200 +#: library/dis.rst:1054 library/dis.rst:1168 library/dis.rst:1192 msgid "Implements::" msgstr "" @@ -1074,7 +1074,7 @@ msgid "" "class:`tuple` containing the corresponding values. Otherwise, push ``None``." msgstr "" -#: library/dis.rst:1714 +#: library/dis.rst:1706 msgid "" "Previously, this instruction also pushed a boolean value indicating success " "(``True``) or failure (``False``)." @@ -1177,24 +1177,18 @@ msgstr "" #: library/dis.rst:1099 msgid "" -"Pushes ``co_consts[consti]`` onto the stack. Can be used when the constant " -"value is known to be immortal." -msgstr "" - -#: library/dis.rst:1107 -msgid "" "Pushes the value associated with ``co_names[namei]`` onto the stack. The " "name is looked up within the locals, then the globals, then the builtins." msgstr "" -#: library/dis.rst:1113 +#: library/dis.rst:1105 msgid "" "Pushes a reference to the locals dictionary onto the stack. This is used to " "prepare namespace dictionaries for :opcode:`LOAD_FROM_DICT_OR_DEREF` and :" "opcode:`LOAD_FROM_DICT_OR_GLOBALS`." msgstr "" -#: library/dis.rst:1122 +#: library/dis.rst:1114 msgid "" "Pops a mapping off the stack and looks up the value for ``co_names[namei]``. " "If the name is not found there, looks it up in the globals and then the " @@ -1203,13 +1197,13 @@ msgid "" "bodies." msgstr "" -#: library/dis.rst:1133 +#: library/dis.rst:1125 msgid "" "Creates a tuple consuming *count* items from the stack, and pushes the " "resulting tuple onto the stack::" msgstr "" -#: library/dis.rst:1136 +#: library/dis.rst:1128 msgid "" "if count == 0:\n" " value = ()\n" @@ -1220,74 +1214,74 @@ msgid "" "STACK.append(value)" msgstr "" -#: library/dis.rst:1147 +#: library/dis.rst:1139 msgid "Works as :opcode:`BUILD_TUPLE`, but creates a list." msgstr "" -#: library/dis.rst:1152 +#: library/dis.rst:1144 msgid "Works as :opcode:`BUILD_TUPLE`, but creates a set." msgstr "" -#: library/dis.rst:1157 +#: library/dis.rst:1149 msgid "" "Pushes a new dictionary object onto the stack. Pops ``2 * count`` items so " "that the dictionary holds *count* entries: ``{..., STACK[-4]: STACK[-3], " "STACK[-2]: STACK[-1]}``." msgstr "" -#: library/dis.rst:1161 +#: library/dis.rst:1153 msgid "" "The dictionary is created from stack items instead of creating an empty " "dictionary pre-sized to hold *count* items." msgstr "" -#: library/dis.rst:1168 +#: library/dis.rst:1160 msgid "" "Concatenates *count* strings from the stack and pushes the resulting string " "onto the stack." msgstr "" -#: library/dis.rst:1178 +#: library/dis.rst:1170 msgid "" "seq = STACK.pop()\n" "list.extend(STACK[-i], seq)" msgstr "" -#: library/dis.rst:1181 +#: library/dis.rst:1173 msgid "Used to build lists." msgstr "" -#: library/dis.rst:1190 +#: library/dis.rst:1182 msgid "" "seq = STACK.pop()\n" "set.update(STACK[-i], seq)" msgstr "" -#: library/dis.rst:1193 +#: library/dis.rst:1185 msgid "Used to build sets." msgstr "" -#: library/dis.rst:1202 +#: library/dis.rst:1194 msgid "" "map = STACK.pop()\n" "dict.update(STACK[-i], map)" msgstr "" -#: library/dis.rst:1205 +#: library/dis.rst:1197 msgid "Used to build dicts." msgstr "" -#: library/dis.rst:1212 +#: library/dis.rst:1204 msgid "Like :opcode:`DICT_UPDATE` but raises an exception for duplicate keys." msgstr "" -#: library/dis.rst:1219 +#: library/dis.rst:1211 msgid "" "If the low bit of ``namei`` is not set, this replaces ``STACK[-1]`` with " "``getattr(STACK[-1], co_names[namei>>1])``." msgstr "" -#: library/dis.rst:1222 +#: library/dis.rst:1214 msgid "" "If the low bit of ``namei`` is set, this will attempt to load a method named " "``co_names[namei>>1]`` from the ``STACK[-1]`` object. ``STACK[-1]`` is " @@ -1299,76 +1293,76 @@ msgid "" "pushed." msgstr "" -#: library/dis.rst:1231 +#: library/dis.rst:1223 msgid "" "If the low bit of ``namei`` is set, then a ``NULL`` or ``self`` is pushed to " "the stack before the attribute or unbound method respectively." msgstr "" -#: library/dis.rst:1238 +#: library/dis.rst:1230 msgid "" "This opcode implements :func:`super`, both in its zero-argument and two-" "argument forms (e.g. ``super().method()``, ``super().attr`` and ``super(cls, " "self).method()``, ``super(cls, self).attr``)." msgstr "" -#: library/dis.rst:1242 +#: library/dis.rst:1234 msgid "It pops three values from the stack (from top of stack down):" msgstr "" -#: library/dis.rst:1244 +#: library/dis.rst:1236 msgid "``self``: the first argument to the current method" msgstr "" -#: library/dis.rst:1245 +#: library/dis.rst:1237 msgid "``cls``: the class within which the current method was defined" msgstr "" -#: library/dis.rst:1246 +#: library/dis.rst:1238 msgid "the global ``super``" msgstr "" -#: library/dis.rst:1248 +#: library/dis.rst:1240 msgid "" "With respect to its argument, it works similarly to :opcode:`LOAD_ATTR`, " "except that ``namei`` is shifted left by 2 bits instead of 1." msgstr "" -#: library/dis.rst:1251 +#: library/dis.rst:1243 msgid "" "The low bit of ``namei`` signals to attempt a method load, as with :opcode:" "`LOAD_ATTR`, which results in pushing ``NULL`` and the loaded method. When " "it is unset a single value is pushed to the stack." msgstr "" -#: library/dis.rst:1255 +#: library/dis.rst:1247 msgid "" "The second-low bit of ``namei``, if set, means that this was a two-argument " "call to :func:`super` (unset means zero-argument)." msgstr "" -#: library/dis.rst:1263 +#: library/dis.rst:1255 msgid "" "Performs a Boolean operation. The operation name can be found in " "``cmp_op[opname >> 5]``. If the fifth-lowest bit of ``opname`` is set " "(``opname & 16``), the result should be coerced to ``bool``." msgstr "" -#: library/dis.rst:1267 +#: library/dis.rst:1259 msgid "" "The fifth-lowest bit of the oparg now indicates a forced conversion to :" "class:`bool`." msgstr "" -#: library/dis.rst:1274 +#: library/dis.rst:1266 msgid "Performs ``is`` comparison, or ``is not`` if ``invert`` is 1." msgstr "" -#: library/dis.rst:1281 +#: library/dis.rst:1273 msgid "Performs ``in`` comparison, or ``not in`` if ``invert`` is 1." msgstr "" -#: library/dis.rst:1288 +#: library/dis.rst:1280 msgid "" "Imports the module ``co_names[namei]``. ``STACK[-1]`` and ``STACK[-2]`` are " "popped and provide the *fromlist* and *level* arguments of :func:" @@ -1377,61 +1371,61 @@ msgid "" "opcode:`STORE_FAST` instruction modifies the namespace." msgstr "" -#: library/dis.rst:1296 +#: library/dis.rst:1288 msgid "" "Loads the attribute ``co_names[namei]`` from the module found in " "``STACK[-1]``. The resulting object is pushed onto the stack, to be " "subsequently stored by a :opcode:`STORE_FAST` instruction." msgstr "" -#: library/dis.rst:1303 +#: library/dis.rst:1295 msgid "Increments bytecode counter by *delta*." msgstr "" -#: library/dis.rst:1308 +#: library/dis.rst:1300 msgid "Decrements bytecode counter by *delta*. Checks for interrupts." msgstr "" -#: library/dis.rst:1315 +#: library/dis.rst:1307 msgid "Decrements bytecode counter by *delta*. Does not check for interrupts." msgstr "" -#: library/dis.rst:1322 +#: library/dis.rst:1314 msgid "" "If ``STACK[-1]`` is true, increments the bytecode counter by *delta*. " "``STACK[-1]`` is popped." msgstr "" -#: library/dis.rst:1341 +#: library/dis.rst:1333 msgid "" "The oparg is now a relative delta rather than an absolute target. This " "opcode is a pseudo-instruction, replaced in final bytecode by the directed " "versions (forward/backward)." msgstr "" -#: library/dis.rst:1346 library/dis.rst:1370 +#: library/dis.rst:1338 library/dis.rst:1362 msgid "This is no longer a pseudo-instruction." msgstr "" -#: library/dis.rst:1338 +#: library/dis.rst:1330 msgid "" "If ``STACK[-1]`` is false, increments the bytecode counter by *delta*. " "``STACK[-1]`` is popped." msgstr "" -#: library/dis.rst:1354 +#: library/dis.rst:1346 msgid "" "If ``STACK[-1]`` is not ``None``, increments the bytecode counter by " "*delta*. ``STACK[-1]`` is popped." msgstr "" -#: library/dis.rst:1365 +#: library/dis.rst:1357 msgid "" "If ``STACK[-1]`` is ``None``, increments the bytecode counter by *delta*. " "``STACK[-1]`` is popped." msgstr "" -#: library/dis.rst:1375 +#: library/dis.rst:1367 msgid "" "``STACK[-1]`` is an :term:`iterator`. Call its :meth:`~iterator.__next__` " "method. If this yields a new value, push it on the stack (leaving the " @@ -1439,102 +1433,102 @@ msgid "" "code counter is incremented by *delta*." msgstr "" -#: library/dis.rst:1380 +#: library/dis.rst:1372 msgid "Up until 3.11 the iterator was popped when it was exhausted." msgstr "" -#: library/dis.rst:1385 +#: library/dis.rst:1377 msgid "Loads the global named ``co_names[namei>>1]`` onto the stack." msgstr "" -#: library/dis.rst:1387 +#: library/dis.rst:1379 msgid "" "If the low bit of ``namei`` is set, then a ``NULL`` is pushed to the stack " "before the global variable." msgstr "" -#: library/dis.rst:1393 +#: library/dis.rst:1385 msgid "" "Pushes a reference to the local ``co_varnames[var_num]`` onto the stack." msgstr "" -#: library/dis.rst:1395 +#: library/dis.rst:1387 msgid "" "This opcode is now only used in situations where the local variable is " "guaranteed to be initialized. It cannot raise :exc:`UnboundLocalError`." msgstr "" -#: library/dis.rst:1401 +#: library/dis.rst:1393 msgid "" "Pushes a borrowed reference to the local ``co_varnames[var_num]`` onto the " "stack." msgstr "" -#: library/dis.rst:1408 +#: library/dis.rst:1400 msgid "" "Pushes references to ``co_varnames[var_nums >> 4]`` and " "``co_varnames[var_nums & 15]`` onto the stack." msgstr "" -#: library/dis.rst:1416 +#: library/dis.rst:1408 msgid "" "Pushes borrowed references to ``co_varnames[var_nums >> 4]`` and " "``co_varnames[var_nums & 15]`` onto the stack." msgstr "" -#: library/dis.rst:1423 +#: library/dis.rst:1415 msgid "" "Pushes a reference to the local ``co_varnames[var_num]`` onto the stack, " "raising an :exc:`UnboundLocalError` if the local variable has not been " "initialized." msgstr "" -#: library/dis.rst:1431 +#: library/dis.rst:1423 msgid "" "Pushes a reference to the local ``co_varnames[var_num]`` onto the stack (or " "pushes ``NULL`` onto the stack if the local variable has not been " "initialized) and sets ``co_varnames[var_num]`` to ``NULL``." msgstr "" -#: library/dis.rst:1439 +#: library/dis.rst:1431 msgid "Stores ``STACK.pop()`` into the local ``co_varnames[var_num]``." msgstr "" -#: library/dis.rst:1443 +#: library/dis.rst:1435 msgid "" "Stores ``STACK[-1]`` into ``co_varnames[var_nums >> 4]`` and ``STACK[-2]`` " "into ``co_varnames[var_nums & 15]``." msgstr "" -#: library/dis.rst:1450 +#: library/dis.rst:1442 msgid "" "Stores ``STACK.pop()`` into the local ``co_varnames[var_nums >> 4]`` and " "pushes a reference to the local ``co_varnames[var_nums & 15]`` onto the " "stack." msgstr "" -#: library/dis.rst:1458 +#: library/dis.rst:1450 msgid "Deletes local ``co_varnames[var_num]``." msgstr "" -#: library/dis.rst:1463 +#: library/dis.rst:1455 msgid "" "Creates a new cell in slot ``i``. If that slot is nonempty then that value " "is stored into the new cell." msgstr "" -#: library/dis.rst:1471 +#: library/dis.rst:1463 msgid "" "Loads the cell contained in slot ``i`` of the \"fast locals\" storage. " "Pushes a reference to the object the cell contains on the stack." msgstr "" -#: library/dis.rst:1496 library/dis.rst:1507 +#: library/dis.rst:1488 library/dis.rst:1499 msgid "" "``i`` is no longer offset by the length of :attr:`~codeobject.co_varnames`." msgstr "" -#: library/dis.rst:1480 +#: library/dis.rst:1472 msgid "" "Pops a mapping off the stack and looks up the name associated with slot " "``i`` of the \"fast locals\" storage in this mapping. If the name is not " @@ -1545,112 +1539,112 @@ msgid "" "class bodies." msgstr "" -#: library/dis.rst:1493 +#: library/dis.rst:1485 msgid "" "Stores ``STACK.pop()`` into the cell contained in slot ``i`` of the \"fast " "locals\" storage." msgstr "" -#: library/dis.rst:1502 +#: library/dis.rst:1494 msgid "" "Empties the cell contained in slot ``i`` of the \"fast locals\" storage. " "Used by the :keyword:`del` statement." msgstr "" -#: library/dis.rst:1513 +#: library/dis.rst:1505 msgid "" "Copies the ``n`` :term:`free (closure) variables ` from " "the closure into the frame. Removes the need for special code on the " "caller's side when calling closures." msgstr "" -#: library/dis.rst:1522 +#: library/dis.rst:1514 msgid "" "Raises an exception using one of the 3 forms of the ``raise`` statement, " "depending on the value of *argc*:" msgstr "" -#: library/dis.rst:1525 +#: library/dis.rst:1517 msgid "0: ``raise`` (re-raise previous exception)" msgstr "" -#: library/dis.rst:1526 +#: library/dis.rst:1518 msgid "" "1: ``raise STACK[-1]`` (raise exception instance or type at ``STACK[-1]``)" msgstr "" -#: library/dis.rst:1527 +#: library/dis.rst:1519 msgid "" "2: ``raise STACK[-2] from STACK[-1]`` (raise exception instance or type at " "``STACK[-2]`` with ``__cause__`` set to ``STACK[-1]``)" msgstr "" -#: library/dis.rst:1533 +#: library/dis.rst:1525 msgid "" "Calls a callable object with the number of arguments specified by ``argc``. " "On the stack are (in ascending order):" msgstr "" -#: library/dis.rst:1560 +#: library/dis.rst:1552 msgid "The callable" msgstr "" -#: library/dis.rst:1561 +#: library/dis.rst:1553 msgid "``self`` or ``NULL``" msgstr "" -#: library/dis.rst:1562 +#: library/dis.rst:1554 msgid "The remaining positional arguments" msgstr "" -#: library/dis.rst:1540 +#: library/dis.rst:1532 msgid "``argc`` is the total of the positional arguments, excluding ``self``." msgstr "" -#: library/dis.rst:1542 +#: library/dis.rst:1534 msgid "" "``CALL`` pops all arguments and the callable object off the stack, calls the " "callable object with those arguments, and pushes the return value returned " "by the callable object." msgstr "" -#: library/dis.rst:1548 +#: library/dis.rst:1540 msgid "The callable now always appears at the same position on the stack." msgstr "" -#: library/dis.rst:1551 +#: library/dis.rst:1543 msgid "Calls with keyword arguments are now handled by :opcode:`CALL_KW`." msgstr "" -#: library/dis.rst:1557 +#: library/dis.rst:1549 msgid "" "Calls a callable object with the number of arguments specified by ``argc``, " "including one or more named arguments. On the stack are (in ascending order):" msgstr "" -#: library/dis.rst:1563 +#: library/dis.rst:1555 msgid "The named arguments" msgstr "" -#: library/dis.rst:1564 +#: library/dis.rst:1556 msgid "A :class:`tuple` of keyword argument names" msgstr "" -#: library/dis.rst:1566 +#: library/dis.rst:1558 msgid "" "``argc`` is the total of the positional and named arguments, excluding " "``self``. The length of the tuple of keyword argument names is the number of " "named arguments." msgstr "" -#: library/dis.rst:1569 +#: library/dis.rst:1561 msgid "" "``CALL_KW`` pops all arguments, the keyword names, and the callable object " "off the stack, calls the callable object with those arguments, and pushes " "the return value returned by the callable object." msgstr "" -#: library/dis.rst:1578 +#: library/dis.rst:1570 msgid "" "Calls a callable object with variable set of positional and keyword " "arguments. If the lowest bit of *flags* is set, the top of the stack " @@ -1662,33 +1656,33 @@ msgid "" "arguments, and pushes the return value returned by the callable object." msgstr "" -#: library/dis.rst:1593 +#: library/dis.rst:1585 msgid "" "Pushes a ``NULL`` to the stack. Used in the call sequence to match the " "``NULL`` pushed by :opcode:`LOAD_METHOD` for non-method calls." msgstr "" -#: library/dis.rst:1602 +#: library/dis.rst:1594 msgid "" "Pushes a new function object on the stack built from the code object at " "``STACK[-1]``." msgstr "" -#: library/dis.rst:1604 +#: library/dis.rst:1596 msgid "Flag value ``0x04`` is a tuple of strings instead of dictionary" msgstr "" -#: library/dis.rst:1607 +#: library/dis.rst:1599 msgid "Qualified name at ``STACK[-1]`` was removed." msgstr "" -#: library/dis.rst:1610 +#: library/dis.rst:1602 msgid "" "Extra function attributes on the stack, signaled by oparg flags, were " "removed. They now use :opcode:`SET_FUNCTION_ATTRIBUTE`." msgstr "" -#: library/dis.rst:1617 +#: library/dis.rst:1609 msgid "" "Sets an attribute on a function object. Expects the function at " "``STACK[-1]`` and the attribute value to set at ``STACK[-2]``; consumes both " @@ -1696,42 +1690,42 @@ msgid "" "attribute to set:" msgstr "" -#: library/dis.rst:1621 +#: library/dis.rst:1613 msgid "" "``0x01`` a tuple of default values for positional-only and positional-or-" "keyword parameters in positional order" msgstr "" -#: library/dis.rst:1623 +#: library/dis.rst:1615 msgid "``0x02`` a dictionary of keyword-only parameters' default values" msgstr "" -#: library/dis.rst:1624 +#: library/dis.rst:1616 msgid "``0x04`` a tuple of strings containing parameters' annotations" msgstr "" -#: library/dis.rst:1625 +#: library/dis.rst:1617 msgid "``0x08`` a tuple containing cells for free variables, making a closure" msgstr "" -#: library/dis.rst:1634 +#: library/dis.rst:1626 msgid "" "Pushes a slice object on the stack. *argc* must be 2 or 3. If it is 2, " "implements::" msgstr "" -#: library/dis.rst:1636 +#: library/dis.rst:1628 msgid "" "end = STACK.pop()\n" "start = STACK.pop()\n" "STACK.append(slice(start, end))" msgstr "" -#: library/dis.rst:1640 +#: library/dis.rst:1632 msgid "if it is 3, implements::" msgstr "" -#: library/dis.rst:1642 +#: library/dis.rst:1634 msgid "" "step = STACK.pop()\n" "end = STACK.pop()\n" @@ -1739,11 +1733,11 @@ msgid "" "STACK.append(slice(start, end, step))" msgstr "" -#: library/dis.rst:1647 +#: library/dis.rst:1639 msgid "See the :func:`slice` built-in function for more information." msgstr "" -#: library/dis.rst:1652 +#: library/dis.rst:1644 msgid "" "Prefixes any opcode which has an argument too big to fit into the default " "one byte. *ext* holds an additional byte which act as higher bits in the " @@ -1751,49 +1745,49 @@ msgid "" "allowed, forming an argument from two-byte to four-byte." msgstr "" -#: library/dis.rst:1660 +#: library/dis.rst:1652 msgid "Convert value to a string, depending on ``oparg``::" msgstr "" -#: library/dis.rst:1662 +#: library/dis.rst:1654 msgid "" "value = STACK.pop()\n" "result = func(value)\n" "STACK.append(result)" msgstr "" -#: library/dis.rst:1666 +#: library/dis.rst:1658 msgid "``oparg == 1``: call :func:`str` on *value*" msgstr "" -#: library/dis.rst:1667 +#: library/dis.rst:1659 msgid "``oparg == 2``: call :func:`repr` on *value*" msgstr "" -#: library/dis.rst:1668 +#: library/dis.rst:1660 msgid "``oparg == 3``: call :func:`ascii` on *value*" msgstr "" -#: library/dis.rst:1683 library/dis.rst:1696 +#: library/dis.rst:1675 library/dis.rst:1688 msgid "Used for implementing formatted string literals (f-strings)." msgstr "" -#: library/dis.rst:1677 +#: library/dis.rst:1669 msgid "Formats the value on top of stack::" msgstr "" -#: library/dis.rst:1679 +#: library/dis.rst:1671 msgid "" "value = STACK.pop()\n" "result = value.__format__(\"\")\n" "STACK.append(result)" msgstr "" -#: library/dis.rst:1689 +#: library/dis.rst:1681 msgid "Formats the given value with the given format spec::" msgstr "" -#: library/dis.rst:1691 +#: library/dis.rst:1683 msgid "" "spec = STACK.pop()\n" "value = STACK.pop()\n" @@ -1801,14 +1795,14 @@ msgid "" "STACK.append(result)" msgstr "" -#: library/dis.rst:1703 +#: library/dis.rst:1695 msgid "" "``STACK[-1]`` is a tuple of keyword attribute names, ``STACK[-2]`` is the " "class being matched against, and ``STACK[-3]`` is the match subject. " "*count* is the number of positional sub-patterns." msgstr "" -#: library/dis.rst:1707 +#: library/dis.rst:1699 msgid "" "Pop ``STACK[-1]``, ``STACK[-2]``, and ``STACK[-3]``. If ``STACK[-3]`` is an " "instance of ``STACK[-2]`` and has the positional and keyword attributes " @@ -1816,219 +1810,219 @@ msgid "" "Otherwise, push ``None``." msgstr "" -#: library/dis.rst:1721 +#: library/dis.rst:1713 msgid "A no-op. Performs internal tracing, debugging and optimization checks." msgstr "" -#: library/dis.rst:1723 +#: library/dis.rst:1715 msgid "" "The ``context`` operand consists of two parts. The lowest two bits indicate " "where the ``RESUME`` occurs:" msgstr "" -#: library/dis.rst:1726 +#: library/dis.rst:1718 msgid "" "``0`` The start of a function, which is neither a generator, coroutine nor " "an async generator" msgstr "" -#: library/dis.rst:1728 +#: library/dis.rst:1720 msgid "``1`` After a ``yield`` expression" msgstr "" -#: library/dis.rst:1729 +#: library/dis.rst:1721 msgid "``2`` After a ``yield from`` expression" msgstr "" -#: library/dis.rst:1730 +#: library/dis.rst:1722 msgid "``3`` After an ``await`` expression" msgstr "" -#: library/dis.rst:1732 +#: library/dis.rst:1724 msgid "" "The next bit is ``1`` if the RESUME is at except-depth ``1``, and ``0`` " "otherwise." msgstr "" -#: library/dis.rst:1737 +#: library/dis.rst:1729 msgid "The oparg value changed to include information about except-depth" msgstr "" -#: library/dis.rst:1743 +#: library/dis.rst:1735 msgid "" "Create a generator, coroutine, or async generator from the current frame. " "Used as first opcode of in code object for the above mentioned callables. " "Clear the current frame and return the newly created generator." msgstr "" -#: library/dis.rst:1752 +#: library/dis.rst:1744 msgid "" "Equivalent to ``STACK[-1] = STACK[-2].send(STACK[-1])``. Used in ``yield " "from`` and ``await`` statements." msgstr "" -#: library/dis.rst:1755 +#: library/dis.rst:1747 msgid "" "If the call raises :exc:`StopIteration`, pop the top value from the stack, " "push the exception's ``value`` attribute, and increment the bytecode counter " "by *delta*." msgstr "" -#: library/dis.rst:1764 +#: library/dis.rst:1756 msgid "" "This is not really an opcode. It identifies the dividing line between " "opcodes in the range [0,255] which don't use their argument and those that " "do (``< HAVE_ARGUMENT`` and ``>= HAVE_ARGUMENT``, respectively)." msgstr "" -#: library/dis.rst:1768 +#: library/dis.rst:1760 msgid "" "If your application uses pseudo instructions or specialized instructions, " "use the :data:`hasarg` collection instead." msgstr "" -#: library/dis.rst:1771 +#: library/dis.rst:1763 msgid "" "Now every instruction has an argument, but opcodes ``< HAVE_ARGUMENT`` " "ignore it. Before, only opcodes ``>= HAVE_ARGUMENT`` had an argument." msgstr "" -#: library/dis.rst:1775 +#: library/dis.rst:1767 msgid "" "Pseudo instructions were added to the :mod:`dis` module, and for them it is " "not true that comparison with ``HAVE_ARGUMENT`` indicates whether they use " "their arg." msgstr "" -#: library/dis.rst:1780 +#: library/dis.rst:1772 msgid "Use :data:`hasarg` instead." msgstr "" -#: library/dis.rst:1785 +#: library/dis.rst:1777 msgid "" "Calls an intrinsic function with one argument. Passes ``STACK[-1]`` as the " "argument and sets ``STACK[-1]`` to the result. Used to implement " "functionality that is not performance critical." msgstr "" -#: library/dis.rst:1843 +#: library/dis.rst:1835 msgid "The operand determines which intrinsic function is called:" msgstr "" -#: library/dis.rst:1846 +#: library/dis.rst:1838 msgid "Operand" msgstr "" -#: library/dis.rst:1846 +#: library/dis.rst:1838 msgid "Description" msgstr "" -#: library/dis.rst:1794 +#: library/dis.rst:1786 msgid "``INTRINSIC_1_INVALID``" msgstr "" -#: library/dis.rst:1848 +#: library/dis.rst:1840 msgid "Not valid" msgstr "" -#: library/dis.rst:1796 +#: library/dis.rst:1788 msgid "``INTRINSIC_PRINT``" msgstr "" -#: library/dis.rst:1796 +#: library/dis.rst:1788 msgid "Prints the argument to standard out. Used in the REPL." msgstr "" -#: library/dis.rst:1799 +#: library/dis.rst:1791 msgid "``INTRINSIC_IMPORT_STAR``" msgstr "" -#: library/dis.rst:1799 +#: library/dis.rst:1791 msgid "Performs ``import *`` for the named module." msgstr "" -#: library/dis.rst:1802 +#: library/dis.rst:1794 msgid "``INTRINSIC_STOPITERATION_ERROR``" msgstr "" -#: library/dis.rst:1802 +#: library/dis.rst:1794 msgid "Extracts the return value from a ``StopIteration`` exception." msgstr "" -#: library/dis.rst:1805 +#: library/dis.rst:1797 msgid "``INTRINSIC_ASYNC_GEN_WRAP``" msgstr "" -#: library/dis.rst:1805 +#: library/dis.rst:1797 msgid "Wraps an async generator value" msgstr "" -#: library/dis.rst:1807 +#: library/dis.rst:1799 msgid "``INTRINSIC_UNARY_POSITIVE``" msgstr "" -#: library/dis.rst:1807 +#: library/dis.rst:1799 msgid "Performs the unary ``+`` operation" msgstr "" -#: library/dis.rst:1810 +#: library/dis.rst:1802 msgid "``INTRINSIC_LIST_TO_TUPLE``" msgstr "" -#: library/dis.rst:1810 +#: library/dis.rst:1802 msgid "Converts a list to a tuple" msgstr "" -#: library/dis.rst:1812 +#: library/dis.rst:1804 msgid "``INTRINSIC_TYPEVAR``" msgstr "" -#: library/dis.rst:1812 +#: library/dis.rst:1804 msgid "Creates a :class:`typing.TypeVar`" msgstr "" -#: library/dis.rst:1814 +#: library/dis.rst:1806 msgid "``INTRINSIC_PARAMSPEC``" msgstr "" -#: library/dis.rst:1814 +#: library/dis.rst:1806 msgid "Creates a :class:`typing.ParamSpec`" msgstr "" -#: library/dis.rst:1817 +#: library/dis.rst:1809 msgid "``INTRINSIC_TYPEVARTUPLE``" msgstr "" -#: library/dis.rst:1817 +#: library/dis.rst:1809 msgid "Creates a :class:`typing.TypeVarTuple`" msgstr "" -#: library/dis.rst:1820 +#: library/dis.rst:1812 msgid "``INTRINSIC_SUBSCRIPT_GENERIC``" msgstr "" -#: library/dis.rst:1820 +#: library/dis.rst:1812 msgid "Returns :class:`typing.Generic` subscripted with the argument" msgstr "" -#: library/dis.rst:1823 +#: library/dis.rst:1815 msgid "``INTRINSIC_TYPEALIAS``" msgstr "" -#: library/dis.rst:1823 +#: library/dis.rst:1815 msgid "" "Creates a :class:`typing.TypeAliasType`; used in the :keyword:`type` " "statement. The argument is a tuple of the type alias's name, type " "parameters, and value." msgstr "" -#: library/dis.rst:1835 +#: library/dis.rst:1827 msgid "" "Calls an intrinsic function with two arguments. Used to implement " "functionality that is not performance critical::" msgstr "" -#: library/dis.rst:1838 +#: library/dis.rst:1830 msgid "" "arg2 = STACK.pop()\n" "arg1 = STACK.pop()\n" @@ -2036,43 +2030,43 @@ msgid "" "STACK.append(result)" msgstr "" -#: library/dis.rst:1848 +#: library/dis.rst:1840 msgid "``INTRINSIC_2_INVALID``" msgstr "" -#: library/dis.rst:1850 +#: library/dis.rst:1842 msgid "``INTRINSIC_PREP_RERAISE_STAR``" msgstr "" -#: library/dis.rst:1850 +#: library/dis.rst:1842 msgid "Calculates the :exc:`ExceptionGroup` to raise from a ``try-except*``." msgstr "" -#: library/dis.rst:1854 +#: library/dis.rst:1846 msgid "``INTRINSIC_TYPEVAR_WITH_BOUND``" msgstr "" -#: library/dis.rst:1854 +#: library/dis.rst:1846 msgid "Creates a :class:`typing.TypeVar` with a bound." msgstr "" -#: library/dis.rst:1857 +#: library/dis.rst:1849 msgid "``INTRINSIC_TYPEVAR_WITH_CONSTRAINTS``" msgstr "" -#: library/dis.rst:1857 +#: library/dis.rst:1849 msgid "Creates a :class:`typing.TypeVar` with constraints." msgstr "" -#: library/dis.rst:1861 +#: library/dis.rst:1853 msgid "``INTRINSIC_SET_FUNCTION_TYPE_PARAMS``" msgstr "" -#: library/dis.rst:1861 +#: library/dis.rst:1853 msgid "Sets the ``__type_params__`` attribute of a function." msgstr "" -#: library/dis.rst:1870 +#: library/dis.rst:1862 msgid "" "Performs special method lookup on ``STACK[-1]``. If ``type(STACK[-1])." "__xxx__`` is a method, leave ``type(STACK[-1]).__xxx__; STACK[-1]`` on the " @@ -2080,25 +2074,25 @@ msgid "" "__xxx__; NULL`` on the stack." msgstr "" -#: library/dis.rst:1879 +#: library/dis.rst:1871 msgid "**Pseudo-instructions**" msgstr "" -#: library/dis.rst:1881 +#: library/dis.rst:1873 msgid "" "These opcodes do not appear in Python bytecode. They are used by the " "compiler but are replaced by real opcodes or removed before bytecode is " "generated." msgstr "" -#: library/dis.rst:1886 +#: library/dis.rst:1878 msgid "" "Set up an exception handler for the following code block. If an exception " "occurs, the value stack level is restored to its current state and control " "is transferred to the exception handler at ``target``." msgstr "" -#: library/dis.rst:1893 +#: library/dis.rst:1885 msgid "" "Like ``SETUP_FINALLY``, but in case of an exception also pushes the last " "instruction (``lasti``) to the stack so that ``RERAISE`` can restore it. If " @@ -2107,97 +2101,97 @@ msgid "" "exception handler at ``target``." msgstr "" -#: library/dis.rst:1902 +#: library/dis.rst:1894 msgid "" "Like ``SETUP_CLEANUP``, but in case of an exception one more item is popped " "from the stack before control is transferred to the exception handler at " "``target``." msgstr "" -#: library/dis.rst:1906 +#: library/dis.rst:1898 msgid "" "This variant is used in :keyword:`with` and :keyword:`async with` " "constructs, which push the return value of the context manager's :meth:" "`~object.__enter__` or :meth:`~object.__aenter__` to the stack." msgstr "" -#: library/dis.rst:1913 +#: library/dis.rst:1905 msgid "" "Marks the end of the code block associated with the last ``SETUP_FINALLY``, " "``SETUP_CLEANUP`` or ``SETUP_WITH``." msgstr "" -#: library/dis.rst:1919 +#: library/dis.rst:1911 msgid "" "Undirected relative jump instructions which are replaced by their directed " "(forward/backward) counterparts by the assembler." msgstr "" -#: library/dis.rst:1925 +#: library/dis.rst:1917 msgid "" "Conditional jumps which do not impact the stack. Replaced by the sequence " "``COPY 1``, ``TO_BOOL``, ``POP_JUMP_IF_TRUE/FALSE``." msgstr "" -#: library/dis.rst:1930 +#: library/dis.rst:1922 msgid "" "Pushes a reference to the cell contained in slot ``i`` of the \"fast " "locals\" storage." msgstr "" -#: library/dis.rst:1933 +#: library/dis.rst:1925 msgid "" "Note that ``LOAD_CLOSURE`` is replaced with ``LOAD_FAST`` in the assembler." msgstr "" -#: library/dis.rst:1935 +#: library/dis.rst:1927 msgid "This opcode is now a pseudo-instruction." msgstr "" -#: library/dis.rst:1941 +#: library/dis.rst:1933 msgid "" "Optimized unbound method lookup. Emitted as a ``LOAD_ATTR`` opcode with a " "flag set in the arg." msgstr "" -#: library/dis.rst:1948 +#: library/dis.rst:1940 msgid "Opcode collections" msgstr "" -#: library/dis.rst:1950 +#: library/dis.rst:1942 msgid "" "These collections are provided for automatic introspection of bytecode " "instructions:" msgstr "" -#: library/dis.rst:1953 +#: library/dis.rst:1945 msgid "" "The collections now contain pseudo instructions and instrumented " "instructions as well. These are opcodes with values ``>= MIN_PSEUDO_OPCODE`` " "and ``>= MIN_INSTRUMENTED_OPCODE``." msgstr "" -#: library/dis.rst:1960 +#: library/dis.rst:1952 msgid "Sequence of operation names, indexable using the bytecode." msgstr "" -#: library/dis.rst:1965 +#: library/dis.rst:1957 msgid "Dictionary mapping operation names to bytecodes." msgstr "" -#: library/dis.rst:1970 +#: library/dis.rst:1962 msgid "Sequence of all compare operation names." msgstr "" -#: library/dis.rst:1975 +#: library/dis.rst:1967 msgid "Sequence of bytecodes that use their argument." msgstr "" -#: library/dis.rst:1982 +#: library/dis.rst:1974 msgid "Sequence of bytecodes that access a constant." msgstr "" -#: library/dis.rst:1987 +#: library/dis.rst:1979 msgid "" "Sequence of bytecodes that access a :term:`free (closure) variable `. 'free' in this context refers to names in the current scope that " @@ -2206,46 +2200,46 @@ msgid "" "scopes." msgstr "" -#: library/dis.rst:1995 +#: library/dis.rst:1987 msgid "Sequence of bytecodes that access an attribute by name." msgstr "" -#: library/dis.rst:2000 +#: library/dis.rst:1992 msgid "Sequence of bytecodes that have a jump target. All jumps are relative." msgstr "" -#: library/dis.rst:2007 +#: library/dis.rst:1999 msgid "Sequence of bytecodes that access a local variable." msgstr "" -#: library/dis.rst:2012 +#: library/dis.rst:2004 msgid "Sequence of bytecodes of Boolean operations." msgstr "" -#: library/dis.rst:2016 +#: library/dis.rst:2008 msgid "Sequence of bytecodes that set an exception handler." msgstr "" -#: library/dis.rst:2023 +#: library/dis.rst:2015 msgid "Sequence of bytecodes that have a relative jump target." msgstr "" -#: library/dis.rst:2025 +#: library/dis.rst:2017 msgid "All jumps are now relative. Use :data:`hasjump`." msgstr "" -#: library/dis.rst:2031 +#: library/dis.rst:2023 msgid "Sequence of bytecodes that have an absolute jump target." msgstr "" -#: library/dis.rst:2033 +#: library/dis.rst:2025 msgid "All jumps are now relative. This list is empty." msgstr "" -#: library/dis.rst:1632 +#: library/dis.rst:1624 msgid "built-in function" msgstr "" -#: library/dis.rst:1632 +#: library/dis.rst:1624 msgid "slice" msgstr "" diff --git a/library/distribution.po b/library/distribution.po index 112c3a6a..dd3f5b16 100644 --- a/library/distribution.po +++ b/library/distribution.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/distutils.po b/library/distutils.po index a9e503b2..60179d93 100644 --- a/library/distutils.po +++ b/library/distutils.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/doctest.po b/library/doctest.po index acef7aec..0a15ec00 100644 --- a/library/doctest.po +++ b/library/doctest.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -241,8 +241,8 @@ msgstr "" #: library/doctest.rst:175 msgid "" "You can force verbose mode by passing ``verbose=True`` to :func:`testmod`, " -"or prohibit it by passing ``verbose=False``. In either of those cases, " -"``sys.argv`` is not examined by :func:`testmod` (so passing ``-v`` or not " +"or prohibit it by passing ``verbose=False``. In either of those cases, :" +"data:`sys.argv` is not examined by :func:`testmod` (so passing ``-v`` or not " "has no effect)." msgstr "" @@ -323,7 +323,7 @@ msgid "" "As with :func:`testmod`, :func:`testfile` won't display anything unless an " "example fails. If an example does fail, then the failing example(s) and the " "cause(s) of the failure(s) are printed to stdout, using the same format as :" -"func:`testmod`." +"func:`!testmod`." msgstr "" #: library/doctest.rst:236 @@ -426,7 +426,7 @@ msgid "" "searched. Objects imported into the module are not searched." msgstr "" -#: library/doctest.rst:314 +#: library/doctest.rst:317 msgid "" "In addition, there are cases when you want tests to be part of a module but " "not part of the help text, which requires that the tests not be included in " @@ -439,11 +439,11 @@ msgid "" "__test__.K``." msgstr "" -#: library/doctest.rst:323 +#: library/doctest.rst:326 msgid "For example, place this block of code at the top of :file:`example.py`:" msgstr "" -#: library/doctest.rst:325 +#: library/doctest.rst:328 msgid "" "__test__ = {\n" " 'numbers': \"\"\"\n" @@ -456,7 +456,7 @@ msgid "" "}" msgstr "" -#: library/doctest.rst:337 +#: library/doctest.rst:340 msgid "" "The value of ``example.__test__[\"numbers\"]`` will be treated as a " "docstring and all the tests inside it will be run. It is important to note " @@ -465,24 +465,24 @@ msgid "" "scanned for tests." msgstr "" -#: library/doctest.rst:343 +#: library/doctest.rst:346 msgid "" "Any classes found are recursively searched similarly, to test docstrings in " "their contained methods and nested classes." msgstr "" -#: library/doctest.rst:350 +#: library/doctest.rst:353 msgid "How are Docstring Examples Recognized?" msgstr "" -#: library/doctest.rst:352 +#: library/doctest.rst:355 msgid "" "In most cases a copy-and-paste of an interactive console session works fine, " "but doctest isn't trying to do an exact emulation of any specific Python " "shell." msgstr "" -#: library/doctest.rst:357 +#: library/doctest.rst:360 msgid "" ">>> # comments are ignored\n" ">>> x = 12\n" @@ -501,18 +501,18 @@ msgid "" ">>>" msgstr "" -#: library/doctest.rst:377 +#: library/doctest.rst:380 msgid "" "Any expected output must immediately follow the final ``'>>> '`` or ``'... " "'`` line containing the code, and the expected output (if any) extends to " "the next ``'>>> '`` or all-whitespace line." msgstr "" -#: library/doctest.rst:381 +#: library/doctest.rst:384 msgid "The fine print:" msgstr "" -#: library/doctest.rst:383 +#: library/doctest.rst:386 msgid "" "Expected output cannot contain an all-whitespace line, since such a line is " "taken to signal the end of expected output. If expected output does contain " @@ -520,7 +520,7 @@ msgid "" "line is expected." msgstr "" -#: library/doctest.rst:388 +#: library/doctest.rst:391 msgid "" "All hard tab characters are expanded to spaces, using 8-column tab stops. " "Tabs in output generated by the tested code are not modified. Because any " @@ -535,20 +535,20 @@ msgid "" "`DocTestParser` class." msgstr "" -#: library/doctest.rst:400 +#: library/doctest.rst:403 msgid "" "Output to stdout is captured, but not output to stderr (exception tracebacks " "are captured via a different means)." msgstr "" -#: library/doctest.rst:403 +#: library/doctest.rst:406 msgid "" "If you continue a line via backslashing in an interactive session, or for " "any other reason use a backslash, you should use a raw docstring, which will " "preserve your backslashes exactly as you type them::" msgstr "" -#: library/doctest.rst:407 +#: library/doctest.rst:410 msgid "" ">>> def f(x):\n" "... r'''Backslashes in a raw docstring: m\\n'''\n" @@ -557,7 +557,7 @@ msgid "" "Backslashes in a raw docstring: m\\n" msgstr "" -#: library/doctest.rst:413 +#: library/doctest.rst:416 msgid "" "Otherwise, the backslash will be interpreted as part of the string. For " "example, the ``\\n`` above would be interpreted as a newline character. " @@ -565,7 +565,7 @@ msgid "" "use a raw string)::" msgstr "" -#: library/doctest.rst:417 +#: library/doctest.rst:420 msgid "" ">>> def f(x):\n" "... '''Backslashes in a raw docstring: m\\\\n'''\n" @@ -574,11 +574,11 @@ msgid "" "Backslashes in a raw docstring: m\\n" msgstr "" -#: library/doctest.rst:423 +#: library/doctest.rst:426 msgid "The starting column doesn't matter::" msgstr "" -#: library/doctest.rst:425 +#: library/doctest.rst:428 msgid "" ">>> assert \"Easy!\"\n" " >>> import math\n" @@ -586,17 +586,17 @@ msgid "" " 1" msgstr "" -#: library/doctest.rst:430 +#: library/doctest.rst:433 msgid "" "and as many leading whitespace characters are stripped from the expected " "output as appeared in the initial ``'>>> '`` line that started the example." msgstr "" -#: library/doctest.rst:437 +#: library/doctest.rst:440 msgid "What's the Execution Context?" msgstr "" -#: library/doctest.rst:439 +#: library/doctest.rst:442 msgid "" "By default, each time :mod:`doctest` finds a docstring to test, it uses a " "*shallow copy* of :mod:`!M`'s globals, so that running tests doesn't change " @@ -607,17 +607,17 @@ msgid "" "defined in other docstrings." msgstr "" -#: library/doctest.rst:447 +#: library/doctest.rst:450 msgid "" "You can force use of your own dict as the execution context by passing " "``globs=your_dict`` to :func:`testmod` or :func:`testfile` instead." msgstr "" -#: library/doctest.rst:454 +#: library/doctest.rst:457 msgid "What About Exceptions?" msgstr "" -#: library/doctest.rst:456 +#: library/doctest.rst:459 msgid "" "No problem, provided that the traceback is the only output produced by the " "example: just paste in the traceback. [#]_ Since tracebacks contain details " @@ -626,11 +626,11 @@ msgid "" "it accepts." msgstr "" -#: library/doctest.rst:462 +#: library/doctest.rst:465 msgid "Simple example::" msgstr "" -#: library/doctest.rst:464 +#: library/doctest.rst:467 msgid "" ">>> [1, 2, 3].remove(42)\n" "Traceback (most recent call last):\n" @@ -638,33 +638,33 @@ msgid "" "ValueError: list.remove(x): x not in list" msgstr "" -#: library/doctest.rst:469 +#: library/doctest.rst:472 msgid "" "That doctest succeeds if :exc:`ValueError` is raised, with the ``list." "remove(x): x not in list`` detail as shown." msgstr "" -#: library/doctest.rst:472 +#: library/doctest.rst:475 msgid "" "The expected output for an exception must start with a traceback header, " "which may be either of the following two lines, indented the same as the " "first line of the example::" msgstr "" -#: library/doctest.rst:476 +#: library/doctest.rst:479 msgid "" "Traceback (most recent call last):\n" "Traceback (innermost last):" msgstr "" -#: library/doctest.rst:479 +#: library/doctest.rst:482 msgid "" "The traceback header is followed by an optional traceback stack, whose " "contents are ignored by doctest. The traceback stack is typically omitted, " "or copied verbatim from an interactive session." msgstr "" -#: library/doctest.rst:483 +#: library/doctest.rst:486 msgid "" "The traceback stack is followed by the most interesting part: the line(s) " "containing the exception type and detail. This is usually the last line of " @@ -672,7 +672,7 @@ msgid "" "multi-line detail::" msgstr "" -#: library/doctest.rst:488 +#: library/doctest.rst:491 msgid "" ">>> raise ValueError('multi\\n line\\ndetail')\n" "Traceback (most recent call last):\n" @@ -682,20 +682,20 @@ msgid "" "detail" msgstr "" -#: library/doctest.rst:495 +#: library/doctest.rst:498 msgid "" "The last three lines (starting with :exc:`ValueError`) are compared against " "the exception's type and detail, and the rest are ignored." msgstr "" -#: library/doctest.rst:498 +#: library/doctest.rst:501 msgid "" "Best practice is to omit the traceback stack, unless it adds significant " "documentation value to the example. So the last example is probably better " "as::" msgstr "" -#: library/doctest.rst:501 +#: library/doctest.rst:504 msgid "" ">>> raise ValueError('multi\\n line\\ndetail')\n" "Traceback (most recent call last):\n" @@ -705,7 +705,7 @@ msgid "" "detail" msgstr "" -#: library/doctest.rst:508 +#: library/doctest.rst:511 msgid "" "Note that tracebacks are treated very specially. In particular, in the " "rewritten example, the use of ``...`` is independent of doctest's :const:" @@ -714,11 +714,11 @@ msgid "" "transcript of a Monty Python skit." msgstr "" -#: library/doctest.rst:514 +#: library/doctest.rst:517 msgid "Some details you should read once, but won't need to remember:" msgstr "" -#: library/doctest.rst:516 +#: library/doctest.rst:519 msgid "" "Doctest can't guess whether your expected output came from an exception " "traceback or from ordinary printing. So, e.g., an example that expects " @@ -728,7 +728,7 @@ msgid "" "create real problems." msgstr "" -#: library/doctest.rst:523 +#: library/doctest.rst:526 msgid "" "Each line of the traceback stack (if present) must be indented further than " "the first line of the example, *or* start with a non-alphanumeric character. " @@ -737,29 +737,29 @@ msgid "" "course this does the right thing for genuine tracebacks." msgstr "" -#: library/doctest.rst:529 +#: library/doctest.rst:532 msgid "" "When the :const:`IGNORE_EXCEPTION_DETAIL` doctest option is specified, " "everything following the leftmost colon and any module information in the " "exception name is ignored." msgstr "" -#: library/doctest.rst:533 +#: library/doctest.rst:536 msgid "" "The interactive shell omits the traceback header line for some :exc:" "`SyntaxError`\\ s. But doctest uses the traceback header line to " "distinguish exceptions from non-exceptions. So in the rare case where you " -"need to test a :exc:`SyntaxError` that omits the traceback header, you will " +"need to test a :exc:`!SyntaxError` that omits the traceback header, you will " "need to manually add the traceback header line to your test example." msgstr "" -#: library/doctest.rst:541 +#: library/doctest.rst:544 msgid "" "For some exceptions, Python displays the position of the error using ``^`` " "markers and tildes::" msgstr "" -#: library/doctest.rst:544 +#: library/doctest.rst:547 msgid "" ">>> 1 + None\n" " File \"\", line 1\n" @@ -768,7 +768,7 @@ msgid "" "TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'" msgstr "" -#: library/doctest.rst:550 +#: library/doctest.rst:553 msgid "" "Since the lines showing the position of the error come before the exception " "type and detail, they are not checked by doctest. For example, the " @@ -776,7 +776,7 @@ msgid "" "location::" msgstr "" -#: library/doctest.rst:554 +#: library/doctest.rst:557 msgid "" ">>> 1 + None\n" " File \"\", line 1\n" @@ -785,11 +785,11 @@ msgid "" "TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'" msgstr "" -#: library/doctest.rst:565 +#: library/doctest.rst:568 msgid "Option Flags" msgstr "" -#: library/doctest.rst:567 +#: library/doctest.rst:570 msgid "" "A number of option flags control various aspects of doctest's behavior. " "Symbolic names for the flags are supplied as module constants, which can be :" @@ -799,13 +799,13 @@ msgid "" "option." msgstr "" -#: library/doctest.rst:573 +#: library/doctest.rst:576 msgid "" "The first group of options define test semantics, controlling aspects of how " "doctest decides whether actual output matches an example's expected output:" msgstr "" -#: library/doctest.rst:579 +#: library/doctest.rst:582 msgid "" "By default, if an expected output block contains just ``1``, an actual " "output block containing just ``1`` or just ``True`` is considered to be a " @@ -817,7 +817,7 @@ msgid "" "not for several years." msgstr "" -#: library/doctest.rst:591 +#: library/doctest.rst:594 msgid "" "By default, if an expected output block contains a line containing only the " "string ````, then that line will match a blank line in the actual " @@ -826,7 +826,7 @@ msgid "" "`DONT_ACCEPT_BLANKLINE` is specified, this substitution is not allowed." msgstr "" -#: library/doctest.rst:600 +#: library/doctest.rst:603 msgid "" "When specified, all sequences of whitespace (blanks and newlines) are " "treated as equal. Any sequence of whitespace within the expected output " @@ -836,7 +836,7 @@ msgid "" "across multiple lines in your source." msgstr "" -#: library/doctest.rst:611 +#: library/doctest.rst:614 msgid "" "When specified, an ellipsis marker (``...``) in the expected output can " "match any substring in the actual output. This includes substrings that " @@ -845,14 +845,14 @@ msgid "" "matched too much!\" surprises that ``.*`` is prone to in regular expressions." msgstr "" -#: library/doctest.rst:620 +#: library/doctest.rst:623 msgid "" "When specified, doctests expecting exceptions pass so long as an exception " "of the expected type is raised, even if the details (message and fully " "qualified exception name) don't match." msgstr "" -#: library/doctest.rst:624 +#: library/doctest.rst:627 msgid "" "For example, an example expecting ``ValueError: 42`` will pass if the actual " "exception raised is ``ValueError: 3*14``, but will fail if, say, a :exc:" @@ -862,7 +862,7 @@ msgid "" "these variations will work with the flag specified:" msgstr "" -#: library/doctest.rst:632 +#: library/doctest.rst:635 msgid "" ">>> raise Exception('message')\n" "Traceback (most recent call last):\n" @@ -877,20 +877,20 @@ msgid "" "__main__.Exception: message" msgstr "" -#: library/doctest.rst:646 +#: library/doctest.rst:649 msgid "" "Note that :const:`ELLIPSIS` can also be used to ignore the details of the " "exception message, but such a test may still fail based on whether the " "module name is present or matches exactly." msgstr "" -#: library/doctest.rst:650 +#: library/doctest.rst:653 msgid "" ":const:`IGNORE_EXCEPTION_DETAIL` now also ignores any information relating " "to the module containing the exception under test." msgstr "" -#: library/doctest.rst:657 +#: library/doctest.rst:660 msgid "" "When specified, do not run the example at all. This can be useful in " "contexts where doctest examples serve as both documentation and test cases, " @@ -899,32 +899,32 @@ msgid "" "might depend on resources which would be unavailable to the test driver." msgstr "" -#: library/doctest.rst:663 +#: library/doctest.rst:666 msgid "" "The SKIP flag can also be used for temporarily \"commenting out\" examples." msgstr "" -#: library/doctest.rst:668 +#: library/doctest.rst:671 msgid "A bitmask or'ing together all the comparison flags above." msgstr "" -#: library/doctest.rst:670 +#: library/doctest.rst:673 msgid "The second group of options controls how test failures are reported:" msgstr "" -#: library/doctest.rst:675 +#: library/doctest.rst:678 msgid "" "When specified, failures that involve multi-line expected and actual outputs " "are displayed using a unified diff." msgstr "" -#: library/doctest.rst:681 +#: library/doctest.rst:684 msgid "" "When specified, failures that involve multi-line expected and actual outputs " "will be displayed using a context diff." msgstr "" -#: library/doctest.rst:687 +#: library/doctest.rst:690 msgid "" "When specified, differences are computed by ``difflib.Differ``, using the " "same algorithm as the popular :file:`ndiff.py` utility. This is the only " @@ -934,7 +934,7 @@ msgid "" "mismatching column positions." msgstr "" -#: library/doctest.rst:696 +#: library/doctest.rst:699 msgid "" "When specified, display the first failing example in each doctest, but " "suppress output for all remaining examples. This will prevent doctest from " @@ -945,7 +945,7 @@ msgid "" "of failures reported; only the output is suppressed." msgstr "" -#: library/doctest.rst:707 +#: library/doctest.rst:710 msgid "" "When specified, exit after the first failing example and don't attempt to " "run the remaining examples. Thus, the number of failures reported will be at " @@ -953,17 +953,17 @@ msgid "" "first failure won't even produce debugging output." msgstr "" -#: library/doctest.rst:715 +#: library/doctest.rst:718 msgid "A bitmask or'ing together all the reporting flags above." msgstr "" -#: library/doctest.rst:718 +#: library/doctest.rst:721 msgid "" "There is also a way to register new option flag names, though this isn't " "useful unless you intend to extend :mod:`doctest` internals via subclassing:" msgstr "" -#: library/doctest.rst:724 +#: library/doctest.rst:727 msgid "" "Create a new option flag with a given name, and return the new flag's " "integer value. :func:`register_optionflag` can be used when subclassing :" @@ -972,46 +972,46 @@ msgid "" "be called using the following idiom::" msgstr "" -#: library/doctest.rst:730 +#: library/doctest.rst:733 msgid "MY_FLAG = register_optionflag('MY_FLAG')" msgstr "" -#: library/doctest.rst:740 +#: library/doctest.rst:743 msgid "Directives" msgstr "" -#: library/doctest.rst:742 +#: library/doctest.rst:745 msgid "" "Doctest directives may be used to modify the :ref:`option flags ` for an individual example. Doctest directives are special Python " "comments following an example's source code:" msgstr "" -#: library/doctest.rst:753 +#: library/doctest.rst:756 msgid "" "Whitespace is not allowed between the ``+`` or ``-`` and the directive " "option name. The directive option name can be any of the option flag names " "explained above." msgstr "" -#: library/doctest.rst:757 +#: library/doctest.rst:760 msgid "" "An example's doctest directives modify doctest's behavior for that single " "example. Use ``+`` to enable the named behavior, or ``-`` to disable it." msgstr "" -#: library/doctest.rst:760 +#: library/doctest.rst:763 msgid "For example, this test passes:" msgstr "" -#: library/doctest.rst:762 +#: library/doctest.rst:765 msgid "" ">>> print(list(range(20))) # doctest: +NORMALIZE_WHITESPACE\n" "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n" "10, 11, 12, 13, 14, 15, 16, 17, 18, 19]" msgstr "" -#: library/doctest.rst:769 +#: library/doctest.rst:772 msgid "" "Without the directive it would fail, both because the actual output doesn't " "have two blanks before the single-digit list elements, and because the " @@ -1019,52 +1019,52 @@ msgid "" "a directive to do so:" msgstr "" -#: library/doctest.rst:774 +#: library/doctest.rst:777 msgid "" ">>> print(list(range(20))) # doctest: +ELLIPSIS\n" "[0, 1, ..., 18, 19]" msgstr "" -#: library/doctest.rst:780 +#: library/doctest.rst:783 msgid "" "Multiple directives can be used on a single physical line, separated by " "commas:" msgstr "" -#: library/doctest.rst:783 +#: library/doctest.rst:786 msgid "" ">>> print(list(range(20))) # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE\n" "[0, 1, ..., 18, 19]" msgstr "" -#: library/doctest.rst:789 +#: library/doctest.rst:792 msgid "" "If multiple directive comments are used for a single example, then they are " "combined:" msgstr "" -#: library/doctest.rst:792 +#: library/doctest.rst:795 msgid "" ">>> print(list(range(20))) # doctest: +ELLIPSIS\n" "... # doctest: +NORMALIZE_WHITESPACE\n" "[0, 1, ..., 18, 19]" msgstr "" -#: library/doctest.rst:799 +#: library/doctest.rst:802 msgid "" "As the previous example shows, you can add ``...`` lines to your example " "containing only directives. This can be useful when an example is too long " "for a directive to comfortably fit on the same line:" msgstr "" -#: library/doctest.rst:803 +#: library/doctest.rst:806 msgid "" ">>> print(list(range(5)) + list(range(10, 20)) + list(range(30, 40)))\n" "... # doctest: +ELLIPSIS\n" "[0, ..., 4, 10, ..., 19, 30, ..., 39]" msgstr "" -#: library/doctest.rst:810 +#: library/doctest.rst:813 msgid "" "Note that since all options are disabled by default, and directives apply " "only to the example they appear in, enabling options (via ``+`` in a " @@ -1074,11 +1074,11 @@ msgid "" "be useful." msgstr "" -#: library/doctest.rst:820 +#: library/doctest.rst:823 msgid "Warnings" msgstr "" -#: library/doctest.rst:822 +#: library/doctest.rst:825 msgid "" ":mod:`doctest` is serious about requiring exact matches in expected output. " "If even a single character doesn't match, the test fails. This will " @@ -1088,42 +1088,42 @@ msgid "" "test like ::" msgstr "" -#: library/doctest.rst:828 +#: library/doctest.rst:831 msgid "" ">>> foo()\n" "{\"spam\", \"eggs\"}" msgstr "" -#: library/doctest.rst:831 +#: library/doctest.rst:834 msgid "is vulnerable! One workaround is to do ::" msgstr "" -#: library/doctest.rst:833 +#: library/doctest.rst:836 msgid "" ">>> foo() == {\"spam\", \"eggs\"}\n" "True" msgstr "" -#: library/doctest.rst:836 +#: library/doctest.rst:839 msgid "instead. Another is to do ::" msgstr "" -#: library/doctest.rst:838 +#: library/doctest.rst:841 msgid "" ">>> d = sorted(foo())\n" ">>> d\n" "['eggs', 'spam']" msgstr "" -#: library/doctest.rst:842 +#: library/doctest.rst:845 msgid "There are others, but you get the idea." msgstr "" -#: library/doctest.rst:844 +#: library/doctest.rst:847 msgid "Another bad idea is to print things that embed an object address, like" msgstr "" -#: library/doctest.rst:846 +#: library/doctest.rst:849 msgid "" ">>> id(1.0) # certain to fail some of the time\n" "7948648\n" @@ -1132,57 +1132,57 @@ msgid "" "" msgstr "" -#: library/doctest.rst:854 +#: library/doctest.rst:857 msgid "" "The :const:`ELLIPSIS` directive gives a nice approach for the last example:" msgstr "" -#: library/doctest.rst:856 +#: library/doctest.rst:859 msgid "" ">>> C() # doctest: +ELLIPSIS\n" "" msgstr "" -#: library/doctest.rst:862 +#: library/doctest.rst:865 msgid "" "Floating-point numbers are also subject to small output variations across " -"platforms, because Python defers to the platform C library for float " -"formatting, and C libraries vary widely in quality here. ::" +"platforms, because Python defers to the platform C library for some floating-" +"point calculations, and C libraries vary widely in quality here. ::" msgstr "" -#: library/doctest.rst:866 +#: library/doctest.rst:869 msgid "" -">>> 1./7 # risky\n" -"0.14285714285714285\n" -">>> print(1./7) # safer\n" -"0.142857142857\n" -">>> print(round(1./7, 6)) # much safer\n" -"0.142857" +">>> 1000**0.1 # risky\n" +"1.9952623149688797\n" +">>> round(1000**0.1, 9) # safer\n" +"1.995262315\n" +">>> print(f'{1000**0.1:.4f}') # much safer\n" +"1.9953" msgstr "" -#: library/doctest.rst:873 +#: library/doctest.rst:876 msgid "" "Numbers of the form ``I/2.**J`` are safe across all platforms, and I often " "contrive doctest examples to produce numbers of that form::" msgstr "" -#: library/doctest.rst:876 +#: library/doctest.rst:879 msgid "" ">>> 3./4 # utterly safe\n" "0.75" msgstr "" -#: library/doctest.rst:879 +#: library/doctest.rst:882 msgid "" "Simple fractions are also easier for people to understand, and that makes " "for better documentation." msgstr "" -#: library/doctest.rst:886 +#: library/doctest.rst:889 msgid "Basic API" msgstr "" -#: library/doctest.rst:888 +#: library/doctest.rst:891 msgid "" "The functions :func:`testmod` and :func:`testfile` provide a simple " "interface to doctest that should be sufficient for most basic uses. For a " @@ -1190,25 +1190,25 @@ msgid "" "simple-testmod` and :ref:`doctest-simple-testfile`." msgstr "" -#: library/doctest.rst:896 +#: library/doctest.rst:899 msgid "" "All arguments except *filename* are optional, and should be specified in " "keyword form." msgstr "" -#: library/doctest.rst:899 +#: library/doctest.rst:902 msgid "" "Test examples in the file named *filename*. Return ``(failure_count, " "test_count)``." msgstr "" -#: library/doctest.rst:902 +#: library/doctest.rst:905 msgid "" "Optional argument *module_relative* specifies how the filename should be " "interpreted:" msgstr "" -#: library/doctest.rst:905 +#: library/doctest.rst:908 msgid "" "If *module_relative* is ``True`` (the default), then *filename* specifies an " "OS-independent module-relative path. By default, this path is relative to " @@ -1218,20 +1218,20 @@ msgid "" "absolute path (i.e., it may not begin with ``/``)." msgstr "" -#: library/doctest.rst:912 +#: library/doctest.rst:915 msgid "" "If *module_relative* is ``False``, then *filename* specifies an OS-specific " "path. The path may be absolute or relative; relative paths are resolved " "with respect to the current working directory." msgstr "" -#: library/doctest.rst:916 +#: library/doctest.rst:919 msgid "" "Optional argument *name* gives the name of the test; by default, or if " "``None``, ``os.path.basename(filename)`` is used." msgstr "" -#: library/doctest.rst:919 +#: library/doctest.rst:922 msgid "" "Optional argument *package* is a Python package or the name of a Python " "package whose directory should be used as the base directory for a module-" @@ -1240,7 +1240,7 @@ msgid "" "is an error to specify *package* if *module_relative* is ``False``." msgstr "" -#: library/doctest.rst:925 +#: library/doctest.rst:928 msgid "" "Optional argument *globs* gives a dict to be used as the globals when " "executing examples. A new shallow copy of this dict is created for the " @@ -1248,7 +1248,7 @@ msgid "" "``None``, a new empty dict is used." msgstr "" -#: library/doctest.rst:930 +#: library/doctest.rst:933 msgid "" "Optional argument *extraglobs* gives a dict merged into the globals used to " "execute examples. This works like :meth:`dict.update`: if *globs* and " @@ -1261,27 +1261,27 @@ msgid "" "tested." msgstr "" -#: library/doctest.rst:939 +#: library/doctest.rst:942 msgid "" "Optional argument *verbose* prints lots of stuff if true, and prints only " "failures if false; by default, or if ``None``, it's true if and only if ``'-" -"v'`` is in ``sys.argv``." +"v'`` is in :data:`sys.argv`." msgstr "" -#: library/doctest.rst:943 +#: library/doctest.rst:946 msgid "" "Optional argument *report* prints a summary at the end when true, else " "prints nothing at the end. In verbose mode, the summary is detailed, else " "the summary is very brief (in fact, empty if all tests passed)." msgstr "" -#: library/doctest.rst:947 +#: library/doctest.rst:950 msgid "" -"Optional argument *optionflags* (default value 0) takes the :ref:`bitwise OR " -"` of option flags. See section :ref:`doctest-options`." +"Optional argument *optionflags* (default value ``0``) takes the :ref:" +"`bitwise OR ` of option flags. See section :ref:`doctest-options`." msgstr "" -#: library/doctest.rst:951 +#: library/doctest.rst:954 msgid "" "Optional argument *raise_on_error* defaults to false. If true, an exception " "is raised upon the first failure or unexpected exception in an example. " @@ -1289,33 +1289,33 @@ msgid "" "continue running examples." msgstr "" -#: library/doctest.rst:1098 +#: library/doctest.rst:1102 msgid "" "Optional argument *parser* specifies a :class:`DocTestParser` (or subclass) " "that should be used to extract tests from the files. It defaults to a " "normal parser (i.e., ``DocTestParser()``)." msgstr "" -#: library/doctest.rst:1102 +#: library/doctest.rst:1106 msgid "" "Optional argument *encoding* specifies an encoding that should be used to " "convert the file to unicode." msgstr "" -#: library/doctest.rst:966 +#: library/doctest.rst:969 msgid "" "All arguments are optional, and all except for *m* should be specified in " "keyword form." msgstr "" -#: library/doctest.rst:969 +#: library/doctest.rst:972 msgid "" "Test examples in docstrings in functions and classes reachable from module " "*m* (or module :mod:`__main__` if *m* is not supplied or is ``None``), " "starting with ``m.__doc__``." msgstr "" -#: library/doctest.rst:973 +#: library/doctest.rst:976 msgid "" "Also test examples reachable from dict ``m.__test__``, if it exists. ``m." "__test__`` maps names (strings) to functions, classes and strings; function " @@ -1323,22 +1323,22 @@ msgid "" "directly, as if they were docstrings." msgstr "" -#: library/doctest.rst:978 +#: library/doctest.rst:981 msgid "" "Only docstrings attached to objects belonging to module *m* are searched." msgstr "" -#: library/doctest.rst:980 +#: library/doctest.rst:983 msgid "Return ``(failure_count, test_count)``." msgstr "" -#: library/doctest.rst:982 +#: library/doctest.rst:985 msgid "" "Optional argument *name* gives the name of the module; by default, or if " "``None``, ``m.__name__`` is used." msgstr "" -#: library/doctest.rst:985 +#: library/doctest.rst:988 msgid "" "Optional argument *exclude_empty* defaults to false. If true, objects for " "which no doctests are found are excluded from consideration. The default is " @@ -1349,39 +1349,39 @@ msgid "" "defaults to true." msgstr "" -#: library/doctest.rst:993 +#: library/doctest.rst:996 msgid "" "Optional arguments *extraglobs*, *verbose*, *report*, *optionflags*, " "*raise_on_error*, and *globs* are the same as for function :func:`testfile` " "above, except that *globs* defaults to ``m.__dict__``." msgstr "" -#: library/doctest.rst:1000 +#: library/doctest.rst:1003 msgid "" "Test examples associated with object *f*; for example, *f* may be a string, " "a module, a function, or a class object." msgstr "" -#: library/doctest.rst:1003 +#: library/doctest.rst:1006 msgid "" "A shallow copy of dictionary argument *globs* is used for the execution " "context." msgstr "" -#: library/doctest.rst:1005 +#: library/doctest.rst:1008 msgid "" "Optional argument *name* is used in failure messages, and defaults to " "``\"NoName\"``." msgstr "" -#: library/doctest.rst:1008 +#: library/doctest.rst:1011 msgid "" "If optional argument *verbose* is true, output is generated even if there " "are no failures. By default, output is generated only in case of an example " "failure." msgstr "" -#: library/doctest.rst:1011 +#: library/doctest.rst:1014 msgid "" "Optional argument *compileflags* gives the set of flags that should be used " "by the Python compiler when running the examples. By default, or if " @@ -1389,16 +1389,16 @@ msgid "" "found in *globs*." msgstr "" -#: library/doctest.rst:1015 +#: library/doctest.rst:1018 msgid "" "Optional argument *optionflags* works as for function :func:`testfile` above." msgstr "" -#: library/doctest.rst:1021 +#: library/doctest.rst:1024 msgid "Unittest API" msgstr "" -#: library/doctest.rst:1023 +#: library/doctest.rst:1026 msgid "" "As your collection of doctest'ed modules grows, you'll want a way to run all " "their doctests systematically. :mod:`doctest` provides two functions that " @@ -1408,7 +1408,7 @@ msgid "" "your test module::" msgstr "" -#: library/doctest.rst:1029 +#: library/doctest.rst:1032 msgid "" "import unittest\n" "import doctest\n" @@ -1419,44 +1419,44 @@ msgid "" " return tests" msgstr "" -#: library/doctest.rst:1037 +#: library/doctest.rst:1040 msgid "" "There are two main functions for creating :class:`unittest.TestSuite` " "instances from text files and modules with doctests:" msgstr "" -#: library/doctest.rst:1043 +#: library/doctest.rst:1046 msgid "" "Convert doctest tests from one or more text files to a :class:`unittest." "TestSuite`." msgstr "" -#: library/doctest.rst:1046 +#: library/doctest.rst:1049 msgid "" "The returned :class:`unittest.TestSuite` is to be run by the unittest " "framework and runs the interactive examples in each file. If an example in " -"any file fails, then the synthesized unit test fails, and a :exc:" -"`failureException` exception is raised showing the name of the file " +"any file fails, then the synthesized unit test fails, and a :exc:`~unittest." +"TestCase.failureException` exception is raised showing the name of the file " "containing the test and a (sometimes approximate) line number. If all the " "examples in a file are skipped, then the synthesized unit test is also " "marked as skipped." msgstr "" -#: library/doctest.rst:1053 +#: library/doctest.rst:1056 msgid "Pass one or more paths (as strings) to text files to be examined." msgstr "" -#: library/doctest.rst:1055 +#: library/doctest.rst:1058 msgid "Options may be provided as keyword arguments:" msgstr "" -#: library/doctest.rst:1057 +#: library/doctest.rst:1060 msgid "" "Optional argument *module_relative* specifies how the filenames in *paths* " "should be interpreted:" msgstr "" -#: library/doctest.rst:1060 +#: library/doctest.rst:1063 msgid "" "If *module_relative* is ``True`` (the default), then each filename in " "*paths* specifies an OS-independent module-relative path. By default, this " @@ -1467,14 +1467,14 @@ msgid "" "``)." msgstr "" -#: library/doctest.rst:1068 +#: library/doctest.rst:1071 msgid "" "If *module_relative* is ``False``, then each filename in *paths* specifies " "an OS-specific path. The path may be absolute or relative; relative paths " "are resolved with respect to the current working directory." msgstr "" -#: library/doctest.rst:1072 +#: library/doctest.rst:1075 msgid "" "Optional argument *package* is a Python package or the name of a Python " "package whose directory should be used as the base directory for module-" @@ -1484,30 +1484,31 @@ msgid "" "``False``." msgstr "" -#: library/doctest.rst:1079 +#: library/doctest.rst:1082 msgid "" "Optional argument *setUp* specifies a set-up function for the test suite. " "This is called before running the tests in each file. The *setUp* function " -"will be passed a :class:`DocTest` object. The setUp function can access the " -"test globals as the *globs* attribute of the test passed." +"will be passed a :class:`DocTest` object. The *setUp* function can access " +"the test globals as the :attr:`~DocTest.globs` attribute of the test passed." msgstr "" -#: library/doctest.rst:1084 +#: library/doctest.rst:1087 msgid "" "Optional argument *tearDown* specifies a tear-down function for the test " "suite. This is called after running the tests in each file. The *tearDown* " -"function will be passed a :class:`DocTest` object. The setUp function can " -"access the test globals as the *globs* attribute of the test passed." +"function will be passed a :class:`DocTest` object. The *tearDown* function " +"can access the test globals as the :attr:`~DocTest.globs` attribute of the " +"test passed." msgstr "" -#: library/doctest.rst:1124 +#: library/doctest.rst:1093 msgid "" "Optional argument *globs* is a dictionary containing the initial global " "variables for the tests. A new copy of this dictionary is created for each " "test. By default, *globs* is a new empty dictionary." msgstr "" -#: library/doctest.rst:1093 +#: library/doctest.rst:1097 msgid "" "Optional argument *optionflags* specifies the default doctest options for " "the tests, created by or-ing together individual option flags. See section :" @@ -1515,70 +1516,71 @@ msgid "" "for a better way to set reporting options." msgstr "" -#: library/doctest.rst:1105 +#: library/doctest.rst:1109 msgid "" "The global ``__file__`` is added to the globals provided to doctests loaded " "from a text file using :func:`DocFileSuite`." msgstr "" -#: library/doctest.rst:1111 +#: library/doctest.rst:1115 msgid "Convert doctest tests for a module to a :class:`unittest.TestSuite`." msgstr "" -#: library/doctest.rst:1113 +#: library/doctest.rst:1117 msgid "" "The returned :class:`unittest.TestSuite` is to be run by the unittest " -"framework and runs each doctest in the module. If any of the doctests fail, " -"then the synthesized unit test fails, and a :exc:`failureException` " -"exception is raised showing the name of the file containing the test and a " -"(sometimes approximate) line number. If all the examples in a docstring are " -"skipped, then the synthesized unit test is also marked as skipped." +"framework and runs each doctest in the module. Each docstring is run as a " +"separate unit test. If any of the doctests fail, then the synthesized unit " +"test fails, and a :exc:`unittest.TestCase.failureException` exception is " +"raised showing the name of the file containing the test and a (sometimes " +"approximate) line number. If all the examples in a docstring are skipped, " +"then the" msgstr "" -#: library/doctest.rst:1120 +#: library/doctest.rst:1125 msgid "" "Optional argument *module* provides the module to be tested. It can be a " "module object or a (possibly dotted) module name. If not specified, the " "module calling this function is used." msgstr "" -#: library/doctest.rst:1128 +#: library/doctest.rst:1129 +msgid "" +"Optional argument *globs* is a dictionary containing the initial global " +"variables for the tests. A new copy of this dictionary is created for each " +"test. By default, *globs* is the module's :attr:`~module.__dict__`." +msgstr "" + +#: library/doctest.rst:1133 msgid "" "Optional argument *extraglobs* specifies an extra set of global variables, " "which is merged into *globs*. By default, no extra globals are used." msgstr "" -#: library/doctest.rst:1131 +#: library/doctest.rst:1136 msgid "" "Optional argument *test_finder* is the :class:`DocTestFinder` object (or a " "drop-in replacement) that is used to extract doctests from the module." msgstr "" -#: library/doctest.rst:1134 +#: library/doctest.rst:1139 msgid "" "Optional arguments *setUp*, *tearDown*, and *optionflags* are the same as " -"for function :func:`DocFileSuite` above." +"for function :func:`DocFileSuite` above, but they are called for each " +"docstring." msgstr "" -#: library/doctest.rst:1137 +#: library/doctest.rst:1142 msgid "This function uses the same search technique as :func:`testmod`." msgstr "" -#: library/doctest.rst:1139 +#: library/doctest.rst:1144 msgid "" ":func:`DocTestSuite` returns an empty :class:`unittest.TestSuite` if " "*module* contains no docstrings instead of raising :exc:`ValueError`." msgstr "" -#: library/doctest.rst:1145 -msgid "" -"When doctests which have been converted to unit tests by :func:" -"`DocFileSuite` or :func:`DocTestSuite` fail, this exception is raised " -"showing the name of the file containing the test and a (sometimes " -"approximate) line number." -msgstr "" - -#: library/doctest.rst:1149 +#: library/doctest.rst:1148 msgid "" "Under the covers, :func:`DocTestSuite` creates a :class:`unittest.TestSuite` " "out of :class:`!doctest.DocTestCase` instances, and :class:`!DocTestCase` is " @@ -1587,67 +1589,67 @@ msgid "" "questions about the exact details of :mod:`unittest` integration." msgstr "" -#: library/doctest.rst:1155 +#: library/doctest.rst:1154 msgid "" "Similarly, :func:`DocFileSuite` creates a :class:`unittest.TestSuite` out " "of :class:`!doctest.DocFileCase` instances, and :class:`!DocFileCase` is a " "subclass of :class:`!DocTestCase`." msgstr "" -#: library/doctest.rst:1159 +#: library/doctest.rst:1158 msgid "" "So both ways of creating a :class:`unittest.TestSuite` run instances of :" "class:`!DocTestCase`. This is important for a subtle reason: when you run :" -"mod:`doctest` functions yourself, you can control the :mod:`doctest` options " -"in use directly, by passing option flags to :mod:`doctest` functions. " -"However, if you're writing a :mod:`unittest` framework, :mod:`unittest` " -"ultimately controls when and how tests get run. The framework author " -"typically wants to control :mod:`doctest` reporting options (perhaps, e.g., " -"specified by command line options), but there's no way to pass options " -"through :mod:`unittest` to :mod:`doctest` test runners." +"mod:`doctest` functions yourself, you can control the :mod:`!doctest` " +"options in use directly, by passing option flags to :mod:`!doctest` " +"functions. However, if you're writing a :mod:`unittest` framework, :mod:`!" +"unittest` ultimately controls when and how tests get run. The framework " +"author typically wants to control :mod:`!doctest` reporting options " +"(perhaps, e.g., specified by command line options), but there's no way to " +"pass options through :mod:`!unittest` to :mod:`!doctest` test runners." msgstr "" -#: library/doctest.rst:1169 +#: library/doctest.rst:1168 msgid "" -"For this reason, :mod:`doctest` also supports a notion of :mod:`doctest` " +"For this reason, :mod:`doctest` also supports a notion of :mod:`!doctest` " "reporting flags specific to :mod:`unittest` support, via this function:" msgstr "" -#: library/doctest.rst:1175 +#: library/doctest.rst:1174 msgid "Set the :mod:`doctest` reporting flags to use." msgstr "" -#: library/doctest.rst:1177 +#: library/doctest.rst:1176 msgid "" "Argument *flags* takes the :ref:`bitwise OR ` of option flags. See " "section :ref:`doctest-options`. Only \"reporting flags\" can be used." msgstr "" -#: library/doctest.rst:1180 +#: library/doctest.rst:1179 msgid "" "This is a module-global setting, and affects all future doctests run by " "module :mod:`unittest`: the :meth:`!runTest` method of :class:`!" "DocTestCase` looks at the option flags specified for the test case when the :" "class:`!DocTestCase` instance was constructed. If no reporting flags were " -"specified (which is the typical and expected case), :mod:`!doctest`'s :mod:" -"`unittest` reporting flags are :ref:`bitwise ORed ` into the option " +"specified (which is the typical and expected case), :mod:`!doctest`'s :mod:`!" +"unittest` reporting flags are :ref:`bitwise ORed ` into the option " "flags, and the option flags so augmented are passed to the :class:" "`DocTestRunner` instance created to run the doctest. If any reporting flags " "were specified when the :class:`!DocTestCase` instance was constructed, :mod:" -"`!doctest`'s :mod:`unittest` reporting flags are ignored." +"`!doctest`'s :mod:`!unittest` reporting flags are ignored." msgstr "" -#: library/doctest.rst:1191 +#: library/doctest.rst:1190 msgid "" "The value of the :mod:`unittest` reporting flags in effect before the " "function was called is returned by the function." msgstr "" -#: library/doctest.rst:1198 +#: library/doctest.rst:1197 msgid "Advanced API" msgstr "" -#: library/doctest.rst:1200 +#: library/doctest.rst:1199 msgid "" "The basic API is a simple wrapper that's intended to make doctest easy to " "use. It is fairly flexible, and should meet most users' needs; however, if " @@ -1655,62 +1657,62 @@ msgid "" "doctest's capabilities, then you should use the advanced API." msgstr "" -#: library/doctest.rst:1205 +#: library/doctest.rst:1204 msgid "" "The advanced API revolves around two container classes, which are used to " "store the interactive examples extracted from doctest cases:" msgstr "" -#: library/doctest.rst:1208 +#: library/doctest.rst:1207 msgid "" ":class:`Example`: A single Python :term:`statement`, paired with its " "expected output." msgstr "" -#: library/doctest.rst:1211 +#: library/doctest.rst:1210 msgid "" ":class:`DocTest`: A collection of :class:`Example`\\ s, typically extracted " "from a single docstring or text file." msgstr "" -#: library/doctest.rst:1214 +#: library/doctest.rst:1213 msgid "" "Additional processing classes are defined to find, parse, and run, and check " "doctest examples:" msgstr "" -#: library/doctest.rst:1217 +#: library/doctest.rst:1216 msgid "" ":class:`DocTestFinder`: Finds all docstrings in a given module, and uses a :" "class:`DocTestParser` to create a :class:`DocTest` from every docstring that " "contains interactive examples." msgstr "" -#: library/doctest.rst:1221 +#: library/doctest.rst:1220 msgid "" ":class:`DocTestParser`: Creates a :class:`DocTest` object from a string " "(such as an object's docstring)." msgstr "" -#: library/doctest.rst:1224 +#: library/doctest.rst:1223 msgid "" ":class:`DocTestRunner`: Executes the examples in a :class:`DocTest`, and " "uses an :class:`OutputChecker` to verify their output." msgstr "" -#: library/doctest.rst:1227 +#: library/doctest.rst:1226 msgid "" ":class:`OutputChecker`: Compares the actual output from a doctest example " "with the expected output, and decides whether they match." msgstr "" -#: library/doctest.rst:1230 +#: library/doctest.rst:1229 msgid "" "The relationships among these processing classes are summarized in the " "following diagram::" msgstr "" -#: library/doctest.rst:1233 +#: library/doctest.rst:1232 msgid "" " list of:\n" "+------+ +---------+\n" @@ -1722,30 +1724,30 @@ msgid "" " +---------+" msgstr "" -#: library/doctest.rst:1246 +#: library/doctest.rst:1245 msgid "DocTest Objects" msgstr "" -#: library/doctest.rst:1251 +#: library/doctest.rst:1250 msgid "" "A collection of doctest examples that should be run in a single namespace. " "The constructor arguments are used to initialize the attributes of the same " "names." msgstr "" -#: library/doctest.rst:1255 +#: library/doctest.rst:1254 msgid "" ":class:`DocTest` defines the following attributes. They are initialized by " "the constructor, and should not be modified directly." msgstr "" -#: library/doctest.rst:1261 +#: library/doctest.rst:1260 msgid "" "A list of :class:`Example` objects encoding the individual interactive " "Python examples that should be run by this test." msgstr "" -#: library/doctest.rst:1267 +#: library/doctest.rst:1266 msgid "" "The namespace (aka globals) that the examples should be run in. This is a " "dictionary mapping names to values. Any changes to the namespace made by " @@ -1753,57 +1755,57 @@ msgid "" "`globs` after the test is run." msgstr "" -#: library/doctest.rst:1275 +#: library/doctest.rst:1274 msgid "" "A string name identifying the :class:`DocTest`. Typically, this is the name " "of the object or file that the test was extracted from." msgstr "" -#: library/doctest.rst:1281 +#: library/doctest.rst:1280 msgid "" "The name of the file that this :class:`DocTest` was extracted from; or " -"``None`` if the filename is unknown, or if the :class:`DocTest` was not " +"``None`` if the filename is unknown, or if the :class:`!DocTest` was not " "extracted from a file." msgstr "" -#: library/doctest.rst:1288 +#: library/doctest.rst:1287 msgid "" "The line number within :attr:`filename` where this :class:`DocTest` begins, " "or ``None`` if the line number is unavailable. This line number is zero-" "based with respect to the beginning of the file." msgstr "" -#: library/doctest.rst:1295 +#: library/doctest.rst:1294 msgid "" "The string that the test was extracted from, or ``None`` if the string is " "unavailable, or if the test was not extracted from a string." msgstr "" -#: library/doctest.rst:1302 +#: library/doctest.rst:1301 msgid "Example Objects" msgstr "" -#: library/doctest.rst:1307 +#: library/doctest.rst:1306 msgid "" "A single interactive example, consisting of a Python statement and its " "expected output. The constructor arguments are used to initialize the " "attributes of the same names." msgstr "" -#: library/doctest.rst:1312 +#: library/doctest.rst:1311 msgid "" ":class:`Example` defines the following attributes. They are initialized by " "the constructor, and should not be modified directly." msgstr "" -#: library/doctest.rst:1318 +#: library/doctest.rst:1317 msgid "" "A string containing the example's source code. This source code consists of " "a single Python statement, and always ends with a newline; the constructor " "adds a newline when necessary." msgstr "" -#: library/doctest.rst:1325 +#: library/doctest.rst:1324 msgid "" "The expected output from running the example's source code (either from " "stdout, or a traceback in case of exception). :attr:`want` ends with a " @@ -1811,7 +1813,7 @@ msgid "" "The constructor adds a newline when necessary." msgstr "" -#: library/doctest.rst:1333 +#: library/doctest.rst:1332 msgid "" "The exception message generated by the example, if the example is expected " "to generate an exception; or ``None`` if it is not expected to generate an " @@ -1820,20 +1822,20 @@ msgid "" "unless it's ``None``. The constructor adds a newline if needed." msgstr "" -#: library/doctest.rst:1342 +#: library/doctest.rst:1341 msgid "" "The line number within the string containing this example where the example " "begins. This line number is zero-based with respect to the beginning of the " "containing string." msgstr "" -#: library/doctest.rst:1349 +#: library/doctest.rst:1348 msgid "" "The example's indentation in the containing string, i.e., the number of " "space characters that precede the example's first prompt." msgstr "" -#: library/doctest.rst:1355 +#: library/doctest.rst:1354 msgid "" "A dictionary mapping from option flags to ``True`` or ``False``, which is " "used to override default options for this example. Any option flags not " @@ -1842,11 +1844,11 @@ msgid "" "default, no options are set." msgstr "" -#: library/doctest.rst:1365 +#: library/doctest.rst:1364 msgid "DocTestFinder objects" msgstr "" -#: library/doctest.rst:1370 +#: library/doctest.rst:1369 msgid "" "A processing class used to extract the :class:`DocTest`\\ s that are " "relevant to a given object, from its docstring and the docstrings of its " @@ -1854,48 +1856,48 @@ msgid "" "classes, functions, methods, staticmethods, classmethods, and properties." msgstr "" -#: library/doctest.rst:1375 +#: library/doctest.rst:1374 msgid "" "The optional argument *verbose* can be used to display the objects searched " "by the finder. It defaults to ``False`` (no output)." msgstr "" -#: library/doctest.rst:1378 +#: library/doctest.rst:1377 msgid "" "The optional argument *parser* specifies the :class:`DocTestParser` object " "(or a drop-in replacement) that is used to extract doctests from docstrings." msgstr "" -#: library/doctest.rst:1381 +#: library/doctest.rst:1380 msgid "" "If the optional argument *recurse* is false, then :meth:`DocTestFinder.find` " "will only examine the given object, and not any contained objects." msgstr "" -#: library/doctest.rst:1384 +#: library/doctest.rst:1383 msgid "" "If the optional argument *exclude_empty* is false, then :meth:`DocTestFinder." "find` will include tests for objects with empty docstrings." msgstr "" -#: library/doctest.rst:1388 +#: library/doctest.rst:1387 msgid ":class:`DocTestFinder` defines the following method:" msgstr "" -#: library/doctest.rst:1393 +#: library/doctest.rst:1392 msgid "" "Return a list of the :class:`DocTest`\\ s that are defined by *obj*'s " "docstring, or by any of its contained objects' docstrings." msgstr "" -#: library/doctest.rst:1396 +#: library/doctest.rst:1395 msgid "" "The optional argument *name* specifies the object's name; this name will be " "used to construct names for the returned :class:`DocTest`\\ s. If *name* is " "not specified, then ``obj.__name__`` is used." msgstr "" -#: library/doctest.rst:1400 +#: library/doctest.rst:1399 msgid "" "The optional parameter *module* is the module that contains the given " "object. If the module is not specified or is ``None``, then the test finder " @@ -1903,26 +1905,26 @@ msgid "" "module is used:" msgstr "" -#: library/doctest.rst:1404 +#: library/doctest.rst:1403 msgid "As a default namespace, if *globs* is not specified." msgstr "" -#: library/doctest.rst:1406 +#: library/doctest.rst:1405 msgid "" "To prevent the DocTestFinder from extracting DocTests from objects that are " "imported from other modules. (Contained objects with modules other than " "*module* are ignored.)" msgstr "" -#: library/doctest.rst:1410 +#: library/doctest.rst:1409 msgid "To find the name of the file containing the object." msgstr "" -#: library/doctest.rst:1412 +#: library/doctest.rst:1411 msgid "To help find the line number of the object within its file." msgstr "" -#: library/doctest.rst:1414 +#: library/doctest.rst:1413 msgid "" "If *module* is ``False``, no attempt to find the module will be made. This " "is obscure, of use mostly in testing doctest itself: if *module* is " @@ -1931,44 +1933,44 @@ msgid "" "contained objects will (recursively) be searched for doctests." msgstr "" -#: library/doctest.rst:1420 +#: library/doctest.rst:1419 msgid "" "The globals for each :class:`DocTest` is formed by combining *globs* and " "*extraglobs* (bindings in *extraglobs* override bindings in *globs*). A new " -"shallow copy of the globals dictionary is created for each :class:`DocTest`. " -"If *globs* is not specified, then it defaults to the module's *__dict__*, if " -"specified, or ``{}`` otherwise. If *extraglobs* is not specified, then it " -"defaults to ``{}``." +"shallow copy of the globals dictionary is created for each :class:`!" +"DocTest`. If *globs* is not specified, then it defaults to the module's :" +"attr:`~module.__dict__`, if specified, or ``{}`` otherwise. If *extraglobs* " +"is not specified, then it defaults to ``{}``." msgstr "" -#: library/doctest.rst:1431 +#: library/doctest.rst:1430 msgid "DocTestParser objects" msgstr "" -#: library/doctest.rst:1436 +#: library/doctest.rst:1435 msgid "" "A processing class used to extract interactive examples from a string, and " "use them to create a :class:`DocTest` object." msgstr "" -#: library/doctest.rst:1440 +#: library/doctest.rst:1439 msgid ":class:`DocTestParser` defines the following methods:" msgstr "" -#: library/doctest.rst:1445 +#: library/doctest.rst:1444 msgid "" "Extract all doctest examples from the given string, and collect them into a :" "class:`DocTest` object." msgstr "" -#: library/doctest.rst:1448 +#: library/doctest.rst:1447 msgid "" "*globs*, *name*, *filename*, and *lineno* are attributes for the new :class:" -"`DocTest` object. See the documentation for :class:`DocTest` for more " +"`!DocTest` object. See the documentation for :class:`DocTest` for more " "information." msgstr "" -#: library/doctest.rst:1455 +#: library/doctest.rst:1454 msgid "" "Extract all doctest examples from the given string, and return them as a " "list of :class:`Example` objects. Line numbers are 0-based. The optional " @@ -1976,51 +1978,51 @@ msgid "" "error messages." msgstr "" -#: library/doctest.rst:1462 +#: library/doctest.rst:1461 msgid "" "Divide the given string into examples and intervening text, and return them " "as a list of alternating :class:`Example`\\ s and strings. Line numbers for " -"the :class:`Example`\\ s are 0-based. The optional argument *name* is a " +"the :class:`!Example`\\ s are 0-based. The optional argument *name* is a " "name identifying this string, and is only used for error messages." msgstr "" -#: library/doctest.rst:1469 +#: library/doctest.rst:1468 msgid "TestResults objects" msgstr "" -#: library/doctest.rst:1476 +#: library/doctest.rst:1475 msgid "Number of failed tests." msgstr "" -#: library/doctest.rst:1480 +#: library/doctest.rst:1479 msgid "Number of attempted tests." msgstr "" -#: library/doctest.rst:1484 +#: library/doctest.rst:1483 msgid "Number of skipped tests." msgstr "" -#: library/doctest.rst:1492 +#: library/doctest.rst:1491 msgid "DocTestRunner objects" msgstr "" -#: library/doctest.rst:1497 +#: library/doctest.rst:1496 msgid "" "A processing class used to execute and verify the interactive examples in a :" "class:`DocTest`." msgstr "" -#: library/doctest.rst:1500 +#: library/doctest.rst:1499 msgid "" "The comparison between expected outputs and actual outputs is done by an :" "class:`OutputChecker`. This comparison may be customized with a number of " "option flags; see section :ref:`doctest-options` for more information. If " "the option flags are insufficient, then the comparison may also be " -"customized by passing a subclass of :class:`OutputChecker` to the " +"customized by passing a subclass of :class:`!OutputChecker` to the " "constructor." msgstr "" -#: library/doctest.rst:1506 +#: library/doctest.rst:1505 msgid "" "The test runner's display output can be controlled in two ways. First, an " "output function can be passed to :meth:`run`; this function will be called " @@ -2031,14 +2033,14 @@ msgid "" "`report_unexpected_exception`, and :meth:`report_failure`." msgstr "" -#: library/doctest.rst:1514 +#: library/doctest.rst:1513 msgid "" "The optional keyword argument *checker* specifies the :class:`OutputChecker` " "object (or drop-in replacement) that should be used to compare the expected " "outputs to the actual outputs of doctest examples." msgstr "" -#: library/doctest.rst:1518 +#: library/doctest.rst:1517 msgid "" "The optional keyword argument *verbose* controls the :class:" "`DocTestRunner`'s verbosity. If *verbose* is ``True``, then information is " @@ -2047,14 +2049,14 @@ msgid "" "verbose output is used iff the command-line switch ``-v`` is used." msgstr "" -#: library/doctest.rst:1524 +#: library/doctest.rst:1523 msgid "" "The optional keyword argument *optionflags* can be used to control how the " "test runner compares expected output to actual output, and how it displays " "failures. For more information, see section :ref:`doctest-options`." msgstr "" -#: library/doctest.rst:1528 +#: library/doctest.rst:1527 msgid "" "The test runner accumulates statistics. The aggregated number of attempted, " "failed and skipped examples is also available via the :attr:`tries`, :attr:" @@ -2062,53 +2064,53 @@ msgid "" "`summarize` methods return a :class:`TestResults` instance." msgstr "" -#: library/doctest.rst:1533 +#: library/doctest.rst:1532 msgid ":class:`DocTestRunner` defines the following methods:" msgstr "" -#: library/doctest.rst:1538 +#: library/doctest.rst:1537 msgid "" "Report that the test runner is about to process the given example. This " "method is provided to allow subclasses of :class:`DocTestRunner` to " "customize their output; it should not be called directly." msgstr "" -#: library/doctest.rst:1542 +#: library/doctest.rst:1541 msgid "" "*example* is the example about to be processed. *test* is the test " -"*containing example*. *out* is the output function that was passed to :meth:" +"containing *example*. *out* is the output function that was passed to :meth:" "`DocTestRunner.run`." msgstr "" -#: library/doctest.rst:1549 +#: library/doctest.rst:1548 msgid "" "Report that the given example ran successfully. This method is provided to " "allow subclasses of :class:`DocTestRunner` to customize their output; it " "should not be called directly." msgstr "" -#: library/doctest.rst:1564 +#: library/doctest.rst:1563 msgid "" "*example* is the example about to be processed. *got* is the actual output " "from the example. *test* is the test containing *example*. *out* is the " "output function that was passed to :meth:`DocTestRunner.run`." msgstr "" -#: library/doctest.rst:1560 +#: library/doctest.rst:1559 msgid "" "Report that the given example failed. This method is provided to allow " "subclasses of :class:`DocTestRunner` to customize their output; it should " "not be called directly." msgstr "" -#: library/doctest.rst:1571 +#: library/doctest.rst:1570 msgid "" "Report that the given example raised an unexpected exception. This method is " "provided to allow subclasses of :class:`DocTestRunner` to customize their " "output; it should not be called directly." msgstr "" -#: library/doctest.rst:1575 +#: library/doctest.rst:1574 msgid "" "*example* is the example about to be processed. *exc_info* is a tuple " "containing information about the unexpected exception (as returned by :func:" @@ -2116,14 +2118,14 @@ msgid "" "output function that was passed to :meth:`DocTestRunner.run`." msgstr "" -#: library/doctest.rst:1583 +#: library/doctest.rst:1582 msgid "" "Run the examples in *test* (a :class:`DocTest` object), and display the " "results using the writer function *out*. Return a :class:`TestResults` " "instance." msgstr "" -#: library/doctest.rst:1587 +#: library/doctest.rst:1586 msgid "" "The examples are run in the namespace ``test.globs``. If *clear_globs* is " "true (the default), then this namespace will be cleared after the test runs, " @@ -2131,54 +2133,54 @@ msgid "" "after the test completes, then use *clear_globs=False*." msgstr "" -#: library/doctest.rst:1592 +#: library/doctest.rst:1591 msgid "" "*compileflags* gives the set of flags that should be used by the Python " "compiler when running the examples. If not specified, then it will default " "to the set of future-import flags that apply to *globs*." msgstr "" -#: library/doctest.rst:1596 +#: library/doctest.rst:1595 msgid "" "The output of each example is checked using the :class:`DocTestRunner`'s " "output checker, and the results are formatted by the :meth:`!DocTestRunner." "report_\\*` methods." msgstr "" -#: library/doctest.rst:1603 +#: library/doctest.rst:1602 msgid "" "Print a summary of all the test cases that have been run by this " "DocTestRunner, and return a :class:`TestResults` instance." msgstr "" -#: library/doctest.rst:1606 +#: library/doctest.rst:1605 msgid "" "The optional *verbose* argument controls how detailed the summary is. If " "the verbosity is not specified, then the :class:`DocTestRunner`'s verbosity " "is used." msgstr "" -#: library/doctest.rst:1610 +#: library/doctest.rst:1609 msgid ":class:`DocTestParser` has the following attributes:" msgstr "" -#: library/doctest.rst:1614 +#: library/doctest.rst:1613 msgid "Number of attempted examples." msgstr "" -#: library/doctest.rst:1618 +#: library/doctest.rst:1617 msgid "Number of failed examples." msgstr "" -#: library/doctest.rst:1622 +#: library/doctest.rst:1621 msgid "Number of skipped examples." msgstr "" -#: library/doctest.rst:1630 +#: library/doctest.rst:1629 msgid "OutputChecker objects" msgstr "" -#: library/doctest.rst:1635 +#: library/doctest.rst:1634 msgid "" "A class used to check the whether the actual output from a doctest example " "matches the expected output. :class:`OutputChecker` defines two methods: :" @@ -2187,11 +2189,11 @@ msgid "" "string describing the differences between two outputs." msgstr "" -#: library/doctest.rst:1642 +#: library/doctest.rst:1641 msgid ":class:`OutputChecker` defines the following methods:" msgstr "" -#: library/doctest.rst:1646 +#: library/doctest.rst:1645 msgid "" "Return ``True`` iff the actual output from an example (*got*) matches the " "expected output (*want*). These strings are always considered to match if " @@ -2200,28 +2202,28 @@ msgid "" "`doctest-options` for more information about option flags." msgstr "" -#: library/doctest.rst:1655 +#: library/doctest.rst:1654 msgid "" "Return a string describing the differences between the expected output for a " "given example (*example*) and the actual output (*got*). *optionflags* is " "the set of option flags used to compare *want* and *got*." msgstr "" -#: library/doctest.rst:1663 +#: library/doctest.rst:1662 msgid "Debugging" msgstr "" -#: library/doctest.rst:1665 +#: library/doctest.rst:1664 msgid "Doctest provides several mechanisms for debugging doctest examples:" msgstr "" -#: library/doctest.rst:1667 +#: library/doctest.rst:1666 msgid "" "Several functions convert doctests to executable Python programs, which can " "be run under the Python debugger, :mod:`pdb`." msgstr "" -#: library/doctest.rst:1670 +#: library/doctest.rst:1669 msgid "" "The :class:`DebugRunner` class is a subclass of :class:`DocTestRunner` that " "raises an exception for the first failing example, containing information " @@ -2229,13 +2231,13 @@ msgid "" "debugging on the example." msgstr "" -#: library/doctest.rst:1675 +#: library/doctest.rst:1674 msgid "" "The :mod:`unittest` cases generated by :func:`DocTestSuite` support the :" "meth:`debug` method defined by :class:`unittest.TestCase`." msgstr "" -#: library/doctest.rst:1678 +#: library/doctest.rst:1677 msgid "" "You can add a call to :func:`pdb.set_trace` in a doctest example, and you'll " "drop into the Python debugger when that line is executed. Then you can " @@ -2243,7 +2245,7 @@ msgid "" "`a.py` contains just this module docstring::" msgstr "" -#: library/doctest.rst:1683 +#: library/doctest.rst:1682 msgid "" "\"\"\"\n" ">>> def f(x):\n" @@ -2256,11 +2258,11 @@ msgid "" "\"\"\"" msgstr "" -#: library/doctest.rst:1693 +#: library/doctest.rst:1692 msgid "Then an interactive Python session may look like this::" msgstr "" -#: library/doctest.rst:1695 +#: library/doctest.rst:1694 msgid "" ">>> import a, doctest\n" ">>> doctest.testmod(a)\n" @@ -2293,17 +2295,17 @@ msgid "" ">>>" msgstr "" -#: library/doctest.rst:1726 +#: library/doctest.rst:1725 msgid "" "Functions that convert doctests to Python code, and possibly run the " "synthesized code under the debugger:" msgstr "" -#: library/doctest.rst:1732 +#: library/doctest.rst:1731 msgid "Convert text with examples to a script." msgstr "" -#: library/doctest.rst:1734 +#: library/doctest.rst:1733 msgid "" "Argument *s* is a string containing doctest examples. The string is " "converted to a Python script, where doctest examples in *s* are converted to " @@ -2311,7 +2313,7 @@ msgid "" "generated script is returned as a string. For example, ::" msgstr "" -#: library/doctest.rst:1739 +#: library/doctest.rst:1738 msgid "" "import doctest\n" "print(doctest.script_from_examples(r\"\"\"\n" @@ -2324,11 +2326,11 @@ msgid "" "\"\"\"))" msgstr "" -#: library/doctest.rst:1749 +#: library/doctest.rst:1748 msgid "displays::" msgstr "" -#: library/doctest.rst:1751 +#: library/doctest.rst:1750 msgid "" "# Set x and y to 1 and 2.\n" "x, y = 1, 2\n" @@ -2339,18 +2341,18 @@ msgid "" "## 3" msgstr "" -#: library/doctest.rst:1759 +#: library/doctest.rst:1758 msgid "" "This function is used internally by other functions (see below), but can " "also be useful when you want to transform an interactive Python session into " "a Python script." msgstr "" -#: library/doctest.rst:1766 +#: library/doctest.rst:1765 msgid "Convert the doctest for an object to a script." msgstr "" -#: library/doctest.rst:1768 +#: library/doctest.rst:1767 msgid "" "Argument *module* is a module object, or dotted name of a module, containing " "the object whose doctests are of interest. Argument *name* is the name " @@ -2360,23 +2362,23 @@ msgid "" "module :file:`a.py` contains a top-level function :func:`!f`, then ::" msgstr "" -#: library/doctest.rst:1775 +#: library/doctest.rst:1774 msgid "" "import a, doctest\n" "print(doctest.testsource(a, \"a.f\"))" msgstr "" -#: library/doctest.rst:1778 +#: library/doctest.rst:1777 msgid "" "prints a script version of function :func:`!f`'s docstring, with doctests " "converted to code, and the rest placed in comments." msgstr "" -#: library/doctest.rst:1784 +#: library/doctest.rst:1783 msgid "Debug the doctests for an object." msgstr "" -#: library/doctest.rst:1786 +#: library/doctest.rst:1785 msgid "" "The *module* and *name* arguments are the same as for function :func:" "`testsource` above. The synthesized Python script for the named object's " @@ -2384,13 +2386,13 @@ msgid "" "the control of the Python debugger, :mod:`pdb`." msgstr "" -#: library/doctest.rst:1791 +#: library/doctest.rst:1790 msgid "" "A shallow copy of ``module.__dict__`` is used for both local and global " "execution context." msgstr "" -#: library/doctest.rst:1794 +#: library/doctest.rst:1793 msgid "" "Optional argument *pm* controls whether post-mortem debugging is used. If " "*pm* has a true value, the script file is run directly, and the debugger " @@ -2402,30 +2404,30 @@ msgid "" "to :func:`pdb.run`." msgstr "" -#: library/doctest.rst:1805 +#: library/doctest.rst:1804 msgid "Debug the doctests in a string." msgstr "" -#: library/doctest.rst:1807 +#: library/doctest.rst:1806 msgid "" "This is like function :func:`debug` above, except that a string containing " "doctest examples is specified directly, via the *src* argument." msgstr "" -#: library/doctest.rst:1810 +#: library/doctest.rst:1809 msgid "" "Optional argument *pm* has the same meaning as in function :func:`debug` " "above." msgstr "" -#: library/doctest.rst:1812 +#: library/doctest.rst:1811 msgid "" "Optional argument *globs* gives a dictionary to use as both local and global " "execution context. If not specified, or ``None``, an empty dictionary is " "used. If specified, a shallow copy of the dictionary is used." msgstr "" -#: library/doctest.rst:1817 +#: library/doctest.rst:1816 msgid "" "The :class:`DebugRunner` class, and the special exceptions it may raise, are " "of most interest to testing framework authors, and will only be sketched " @@ -2433,7 +2435,7 @@ msgid "" "(which is a doctest!) for more details:" msgstr "" -#: library/doctest.rst:1825 +#: library/doctest.rst:1824 msgid "" "A subclass of :class:`DocTestRunner` that raises an exception as soon as a " "failure is encountered. If an unexpected exception occurs, an :exc:" @@ -2443,89 +2445,89 @@ msgid "" "the actual output." msgstr "" -#: library/doctest.rst:1832 +#: library/doctest.rst:1831 msgid "" "For information about the constructor parameters and methods, see the " "documentation for :class:`DocTestRunner` in section :ref:`doctest-advanced-" "api`." msgstr "" -#: library/doctest.rst:1835 +#: library/doctest.rst:1834 msgid "" "There are two exceptions that may be raised by :class:`DebugRunner` " "instances:" msgstr "" -#: library/doctest.rst:1840 +#: library/doctest.rst:1839 msgid "" "An exception raised by :class:`DocTestRunner` to signal that a doctest " "example's actual output did not match its expected output. The constructor " "arguments are used to initialize the attributes of the same names." msgstr "" -#: library/doctest.rst:1844 +#: library/doctest.rst:1843 msgid ":exc:`DocTestFailure` defines the following attributes:" msgstr "" -#: library/doctest.rst:1873 +#: library/doctest.rst:1872 msgid "The :class:`DocTest` object that was being run when the example failed." msgstr "" -#: library/doctest.rst:1878 +#: library/doctest.rst:1877 msgid "The :class:`Example` that failed." msgstr "" -#: library/doctest.rst:1859 +#: library/doctest.rst:1858 msgid "The example's actual output." msgstr "" -#: library/doctest.rst:1864 +#: library/doctest.rst:1863 msgid "" "An exception raised by :class:`DocTestRunner` to signal that a doctest " "example raised an unexpected exception. The constructor arguments are used " "to initialize the attributes of the same names." msgstr "" -#: library/doctest.rst:1868 +#: library/doctest.rst:1867 msgid ":exc:`UnexpectedException` defines the following attributes:" msgstr "" -#: library/doctest.rst:1883 +#: library/doctest.rst:1882 msgid "" "A tuple containing information about the unexpected exception, as returned " "by :func:`sys.exc_info`." msgstr "" -#: library/doctest.rst:1890 +#: library/doctest.rst:1889 msgid "Soapbox" msgstr "" -#: library/doctest.rst:1892 +#: library/doctest.rst:1891 msgid "" "As mentioned in the introduction, :mod:`doctest` has grown to have three " "primary uses:" msgstr "" -#: library/doctest.rst:1895 +#: library/doctest.rst:1894 msgid "Checking examples in docstrings." msgstr "" -#: library/doctest.rst:1897 +#: library/doctest.rst:1896 msgid "Regression testing." msgstr "" -#: library/doctest.rst:1899 +#: library/doctest.rst:1898 msgid "Executable documentation / literate testing." msgstr "" -#: library/doctest.rst:1901 +#: library/doctest.rst:1900 msgid "" "These uses have different requirements, and it is important to distinguish " "them. In particular, filling your docstrings with obscure test cases makes " "for bad documentation." msgstr "" -#: library/doctest.rst:1905 +#: library/doctest.rst:1904 msgid "" "When writing a docstring, choose docstring examples with care. There's an " "art to this that needs to be learned---it may not be natural at first. " @@ -2537,7 +2539,7 @@ msgid "" "\"harmless\" change." msgstr "" -#: library/doctest.rst:1913 +#: library/doctest.rst:1912 msgid "" "Doctest also makes an excellent tool for regression testing, especially if " "you don't skimp on explanatory text. By interleaving prose and examples, it " @@ -2558,13 +2560,13 @@ msgid "" "different results, blurring the distinction between testing and explaining." msgstr "" -#: library/doctest.rst:1931 +#: library/doctest.rst:1930 msgid "" "Regression testing is best confined to dedicated objects or files. There " "are several options for organizing tests:" msgstr "" -#: library/doctest.rst:1934 +#: library/doctest.rst:1933 msgid "" "Write text files containing test cases as interactive examples, and test the " "files using :func:`testfile` or :func:`DocFileSuite`. This is recommended, " @@ -2572,7 +2574,7 @@ msgid "" "doctest." msgstr "" -#: library/doctest.rst:1939 +#: library/doctest.rst:1938 msgid "" "Define functions named ``_regrtest_topic`` that consist of single " "docstrings, containing test cases for the named topics. These functions can " @@ -2580,13 +2582,13 @@ msgid "" "test file." msgstr "" -#: library/doctest.rst:1943 +#: library/doctest.rst:1942 msgid "" -"Define a ``__test__`` dictionary mapping from regression test topics to " -"docstrings containing test cases." +"Define a :attr:`~module.__test__` dictionary mapping from regression test " +"topics to docstrings containing test cases." msgstr "" -#: library/doctest.rst:1946 +#: library/doctest.rst:1945 msgid "" "When you have placed your tests in a module, the module can itself be the " "test runner. When a test fails, you can arrange for your test runner to re-" @@ -2594,7 +2596,7 @@ msgid "" "example of such a test runner::" msgstr "" -#: library/doctest.rst:1951 +#: library/doctest.rst:1950 msgid "" "if __name__ == '__main__':\n" " import doctest\n" @@ -2612,53 +2614,53 @@ msgid "" " print(f\"{fail} failures out of {total} tests\")" msgstr "" -#: library/doctest.rst:1968 +#: library/doctest.rst:1967 msgid "Footnotes" msgstr "" -#: library/doctest.rst:1969 +#: library/doctest.rst:1968 msgid "" "Examples containing both expected output and an exception are not supported. " "Trying to guess where one ends and the other begins is too error-prone, and " "that also makes for a confusing test." msgstr "" -#: library/doctest.rst:373 +#: library/doctest.rst:376 msgid ">>>" msgstr "" -#: library/doctest.rst:373 +#: library/doctest.rst:376 msgid "interpreter prompt" msgstr "" -#: library/doctest.rst:608 +#: library/doctest.rst:611 msgid "..." msgstr "" -#: library/doctest.rst:539 +#: library/doctest.rst:542 msgid "^ (caret)" msgstr "" -#: library/doctest.rst:539 +#: library/doctest.rst:542 msgid "marker" msgstr "" -#: library/doctest.rst:588 +#: library/doctest.rst:591 msgid "" msgstr "" -#: library/doctest.rst:733 +#: library/doctest.rst:736 msgid "in doctests" msgstr "" -#: library/doctest.rst:733 +#: library/doctest.rst:736 msgid "# (hash)" msgstr "" -#: library/doctest.rst:733 +#: library/doctest.rst:736 msgid "+ (plus)" msgstr "" -#: library/doctest.rst:733 +#: library/doctest.rst:736 msgid "- (minus)" msgstr "" diff --git a/library/email.charset.po b/library/email.charset.po index 1e9fd54e..7f0b2688 100644 --- a/library/email.charset.po +++ b/library/email.charset.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-01-27 01:00+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/email.compat32-message.po b/library/email.compat32-message.po index 882c4d61..0e602630 100644 --- a/library/email.compat32-message.po +++ b/library/email.compat32-message.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.contentmanager.po b/library/email.contentmanager.po index e44dcd80..304ff22b 100644 --- a/library/email.contentmanager.po +++ b/library/email.contentmanager.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.encoders.po b/library/email.encoders.po index 9f454d6f..dabf7bd0 100644 --- a/library/email.encoders.po +++ b/library/email.encoders.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.errors.po b/library/email.errors.po index 0b263bd1..87e8cfa5 100644 --- a/library/email.errors.po +++ b/library/email.errors.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-12-14 01:00+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/email.examples.po b/library/email.examples.po index 57cc731d..d914bbbb 100644 --- a/library/email.examples.po +++ b/library/email.examples.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.generator.po b/library/email.generator.po index 4e24f563..d27a724d 100644 --- a/library/email.generator.po +++ b/library/email.generator.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.header.po b/library/email.header.po index cd0dcf55..e5f033f2 100644 --- a/library/email.header.po +++ b/library/email.header.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -266,40 +266,68 @@ msgid "" msgstr "" #: library/email.header.rst:181 +msgid "For historical reasons, this function may return either:" +msgstr "" + +#: library/email.header.rst:183 msgid "" -"This function returns a list of ``(decoded_string, charset)`` pairs " -"containing each of the decoded parts of the header. *charset* is ``None`` " -"for non-encoded parts of the header, otherwise a lower case string " -"containing the name of the character set specified in the encoded string." +"A list of pairs containing each of the decoded parts of the header, " +"``(decoded_bytes, charset)``, where *decoded_bytes* is always an instance " +"of :class:`bytes`, and *charset* is either:" +msgstr "" + +#: library/email.header.rst:187 +msgid "A lower case string containing the name of the character set specified." msgstr "" -#: library/email.header.rst:186 -msgid "Here's an example::" +#: library/email.header.rst:189 +msgid "``None`` for non-encoded parts of the header." msgstr "" -#: library/email.header.rst:188 +#: library/email.header.rst:191 msgid "" -">>> from email.header import decode_header\n" -">>> decode_header('=?iso-8859-1?q?p=F6stal?=')\n" -"[(b'p\\xf6stal', 'iso-8859-1')]" +"A list of length 1 containing a pair ``(string, None)``, where *string* is " +"always an instance of :class:`str`." msgstr "" -#: library/email.header.rst:195 +#: library/email.header.rst:194 +msgid "" +"An :exc:`email.errors.HeaderParseError` may be raised when certain decoding " +"errors occur (e.g. a base64 decoding exception)." +msgstr "" + +#: library/email.header.rst:197 +msgid "Here are examples:" +msgstr "" + +#: library/email.header.rst:209 +msgid "" +"This function exists for for backwards compatibility only. For new code, we " +"recommend using :class:`email.headerregistry.HeaderRegistry`." +msgstr "" + +#: library/email.header.rst:215 msgid "" "Create a :class:`Header` instance from a sequence of pairs as returned by :" "func:`decode_header`." msgstr "" -#: library/email.header.rst:198 +#: library/email.header.rst:218 msgid "" ":func:`decode_header` takes a header value string and returns a sequence of " "pairs of the format ``(decoded_string, charset)`` where *charset* is the " "name of the character set." msgstr "" -#: library/email.header.rst:202 +#: library/email.header.rst:222 msgid "" "This function takes one of those sequence of pairs and returns a :class:" "`Header` instance. Optional *maxlinelen*, *header_name*, and " "*continuation_ws* are as in the :class:`Header` constructor." msgstr "" + +#: library/email.header.rst:228 +msgid "" +"This function exists for for backwards compatibility only, and is not " +"recommended for use in new code." +msgstr "" diff --git a/library/email.headerregistry.po b/library/email.headerregistry.po index 81dd1800..1817482b 100644 --- a/library/email.headerregistry.po +++ b/library/email.headerregistry.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.iterators.po b/library/email.iterators.po index 7dd6b6f1..081e3997 100644 --- a/library/email.iterators.po +++ b/library/email.iterators.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.message.po b/library/email.message.po index 5db54dad..d9b138ac 100644 --- a/library/email.message.po +++ b/library/email.message.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.mime.po b/library/email.mime.po index d983b2e3..c84e890b 100644 --- a/library/email.mime.po +++ b/library/email.mime.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.parser.po b/library/email.parser.po index 88b4452a..2827bec2 100644 --- a/library/email.parser.po +++ b/library/email.parser.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.po b/library/email.po index 044728ee..0be6b80f 100644 --- a/library/email.po +++ b/library/email.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.policy.po b/library/email.policy.po index a69b13b3..50fa68c2 100644 --- a/library/email.policy.po +++ b/library/email.policy.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/email.utils.po b/library/email.utils.po index 38520a75..8e620051 100644 --- a/library/email.utils.po +++ b/library/email.utils.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/ensurepip.po b/library/ensurepip.po index 0c3d543d..22c34c78 100644 --- a/library/ensurepip.po +++ b/library/ensurepip.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/enum.po b/library/enum.po index 7d344c3d..69c1c06b 100644 --- a/library/enum.po +++ b/library/enum.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/errno.po b/library/errno.po index f244b3c2..f69aa0d0 100644 --- a/library/errno.po +++ b/library/errno.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/exceptions.po b/library/exceptions.po index f07d7cb2..5ae334bf 100644 --- a/library/exceptions.po +++ b/library/exceptions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/faulthandler.po b/library/faulthandler.po index 2b46c88d..366d69ff 100644 --- a/library/faulthandler.po +++ b/library/faulthandler.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/fcntl.po b/library/fcntl.po index 8dcb2cc7..284cf374 100644 --- a/library/fcntl.po +++ b/library/fcntl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/filecmp.po b/library/filecmp.po index 47ddaf10..cbc86ca1 100644 --- a/library/filecmp.po +++ b/library/filecmp.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/fileformats.po b/library/fileformats.po index a4ed86cd..11bb7945 100644 --- a/library/fileformats.po +++ b/library/fileformats.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/fileinput.po b/library/fileinput.po index a0962ab8..2c868e6f 100644 --- a/library/fileinput.po +++ b/library/fileinput.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/filesys.po b/library/filesys.po index aad63050..c49d9bd7 100644 --- a/library/filesys.po +++ b/library/filesys.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/fnmatch.po b/library/fnmatch.po index 69e455d5..609c3b77 100644 --- a/library/fnmatch.po +++ b/library/fnmatch.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/fractions.po b/library/fractions.po index cc4dfadf..9f1aa1b0 100644 --- a/library/fractions.po +++ b/library/fractions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/frameworks.po b/library/frameworks.po index 77e42db3..b3ee476c 100644 --- a/library/frameworks.po +++ b/library/frameworks.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/ftplib.po b/library/ftplib.po index 80d4f57f..9bd86b3c 100644 --- a/library/ftplib.po +++ b/library/ftplib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/functional.po b/library/functional.po index 3afead6f..e86afd43 100644 --- a/library/functional.po +++ b/library/functional.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/functions.po b/library/functions.po index c5ee33bc..bc501ee4 100644 --- a/library/functions.po +++ b/library/functions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-10 22:23+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/library/functools.po b/library/functools.po index 33c00413..86adc65a 100644 --- a/library/functools.po +++ b/library/functools.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/gc.po b/library/gc.po index e3b68529..7f5b5d46 100644 --- a/library/gc.po +++ b/library/gc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/getopt.po b/library/getopt.po index c7ddf8c9..4a92fb94 100644 --- a/library/getopt.po +++ b/library/getopt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/getpass.po b/library/getpass.po index 75743af7..6ce29e63 100644 --- a/library/getpass.po +++ b/library/getpass.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/gettext.po b/library/gettext.po index 478e9665..9b512b1d 100644 --- a/library/gettext.po +++ b/library/gettext.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/glob.po b/library/glob.po index 462b92e3..9374aa18 100644 --- a/library/glob.po +++ b/library/glob.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/graphlib.po b/library/graphlib.po index 967bfbcd..3531fde3 100644 --- a/library/graphlib.po +++ b/library/graphlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/grp.po b/library/grp.po index 1ce144eb..94b3f873 100644 --- a/library/grp.po +++ b/library/grp.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/gzip.po b/library/gzip.po index 0c8ec782..248f3578 100644 --- a/library/gzip.po +++ b/library/gzip.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-10 22:33+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/hashlib.po b/library/hashlib.po index 11ddae41..354c3a7c 100644 --- a/library/hashlib.po +++ b/library/hashlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/heapq.po b/library/heapq.po index 76be72e5..ac6a3b7a 100644 --- a/library/heapq.po +++ b/library/heapq.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/hmac.po b/library/hmac.po index 93fe76fb..0a23fa50 100644 --- a/library/hmac.po +++ b/library/hmac.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/html.entities.po b/library/html.entities.po index 232922f5..af72f89d 100644 --- a/library/html.entities.po +++ b/library/html.entities.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/html.parser.po b/library/html.parser.po index 2c3d9e52..edc9bc58 100644 --- a/library/html.parser.po +++ b/library/html.parser.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/html.po b/library/html.po index f5a01703..12e1079b 100644 --- a/library/html.po +++ b/library/html.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/http.client.po b/library/http.client.po index feb18a3c..7a8be4fe 100644 --- a/library/http.client.po +++ b/library/http.client.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/http.cookiejar.po b/library/http.cookiejar.po index ebbdb7ad..8bef0bc9 100644 --- a/library/http.cookiejar.po +++ b/library/http.cookiejar.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/http.cookies.po b/library/http.cookies.po index 054c62d5..db332f1c 100644 --- a/library/http.cookies.po +++ b/library/http.cookies.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/http.po b/library/http.po index ab78b08f..73480f20 100644 --- a/library/http.po +++ b/library/http.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/http.server.po b/library/http.server.po index 6440a9f6..a0c21202 100644 --- a/library/http.server.po +++ b/library/http.server.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -529,28 +529,27 @@ msgstr "" #: library/http.server.rst:431 msgid "" "Then follows a blank line signifying the end of the headers, and then the " -"contents of the file are output. If the file's MIME type starts with ``text/" -"`` the file is opened in text mode; otherwise binary mode is used." +"contents of the file are output." msgstr "" -#: library/http.server.rst:435 +#: library/http.server.rst:434 msgid "" "For example usage, see the implementation of the ``test`` function in :" "source:`Lib/http/server.py`." msgstr "" -#: library/http.server.rst:438 +#: library/http.server.rst:437 msgid "Support of the ``'If-Modified-Since'`` header." msgstr "" -#: library/http.server.rst:441 +#: library/http.server.rst:440 msgid "" "The :class:`SimpleHTTPRequestHandler` class can be used in the following " "manner in order to create a very basic webserver serving files relative to " "the current directory::" msgstr "" -#: library/http.server.rst:445 +#: library/http.server.rst:444 msgid "" "import http.server\n" "import socketserver\n" @@ -564,28 +563,28 @@ msgid "" " httpd.serve_forever()" msgstr "" -#: library/http.server.rst:457 +#: library/http.server.rst:456 msgid "" ":class:`SimpleHTTPRequestHandler` can also be subclassed to enhance " "behavior, such as using different index file names by overriding the class " "attribute :attr:`index_pages`." msgstr "" -#: library/http.server.rst:464 +#: library/http.server.rst:463 msgid "" "This class is used to serve either files or output of CGI scripts from the " "current directory and below. Note that mapping HTTP hierarchic structure to " "local directory structure is exactly as in :class:`SimpleHTTPRequestHandler`." msgstr "" -#: library/http.server.rst:470 +#: library/http.server.rst:469 msgid "" "CGI scripts run by the :class:`CGIHTTPRequestHandler` class cannot execute " "redirects (HTTP code 302), because code 200 (script output follows) is sent " "prior to execution of the CGI script. This pre-empts the status code." msgstr "" -#: library/http.server.rst:475 +#: library/http.server.rst:474 msgid "" "The class will however, run the CGI script, instead of serving it as a file, " "if it guesses it to be a CGI script. Only directory-based CGI are used --- " @@ -593,41 +592,41 @@ msgid "" "denoting CGI scripts." msgstr "" -#: library/http.server.rst:480 +#: library/http.server.rst:479 msgid "" "The :func:`do_GET` and :func:`do_HEAD` functions are modified to run CGI " "scripts and serve the output, instead of serving files, if the request leads " "to somewhere below the ``cgi_directories`` path." msgstr "" -#: library/http.server.rst:484 +#: library/http.server.rst:483 msgid "The :class:`CGIHTTPRequestHandler` defines the following data member:" msgstr "" -#: library/http.server.rst:488 +#: library/http.server.rst:487 msgid "" "This defaults to ``['/cgi-bin', '/htbin']`` and describes directories to " "treat as containing CGI scripts." msgstr "" -#: library/http.server.rst:491 +#: library/http.server.rst:490 msgid "The :class:`CGIHTTPRequestHandler` defines the following method:" msgstr "" -#: library/http.server.rst:495 +#: library/http.server.rst:494 msgid "" "This method serves the ``'POST'`` request type, only allowed for CGI " "scripts. Error 501, \"Can only POST to CGI scripts\", is output when trying " "to POST to a non-CGI url." msgstr "" -#: library/http.server.rst:499 +#: library/http.server.rst:498 msgid "" "Note that CGI scripts will be run with UID of user nobody, for security " "reasons. Problems with the CGI script will be translated to error 403." msgstr "" -#: library/http.server.rst:504 +#: library/http.server.rst:503 msgid "" ":class:`CGIHTTPRequestHandler` is being removed in 3.15. CGI has not been " "considered a good way to do things for well over a decade. This code has " @@ -636,36 +635,36 @@ msgid "" "server-security>`." msgstr "" -#: library/http.server.rst:514 +#: library/http.server.rst:513 msgid "Command-line interface" msgstr "" -#: library/http.server.rst:516 +#: library/http.server.rst:515 msgid "" ":mod:`http.server` can also be invoked directly using the :option:`-m` " "switch of the interpreter. The following example illustrates how to serve " "files relative to the current directory::" msgstr "" -#: library/http.server.rst:520 +#: library/http.server.rst:519 msgid "python -m http.server [OPTIONS] [port]" msgstr "" -#: library/http.server.rst:522 +#: library/http.server.rst:521 msgid "The following options are accepted:" msgstr "" -#: library/http.server.rst:528 +#: library/http.server.rst:527 msgid "" "The server listens to port 8000 by default. The default can be overridden by " "passing the desired port number as an argument::" msgstr "" -#: library/http.server.rst:531 +#: library/http.server.rst:530 msgid "python -m http.server 9000" msgstr "" -#: library/http.server.rst:535 +#: library/http.server.rst:534 msgid "" "Specifies a specific address to which it should bind. Both IPv4 and IPv6 " "addresses are supported. By default, the server binds itself to all " @@ -673,80 +672,80 @@ msgid "" "localhost only::" msgstr "" -#: library/http.server.rst:540 +#: library/http.server.rst:539 msgid "python -m http.server --bind 127.0.0.1" msgstr "" -#: library/http.server.rst:544 +#: library/http.server.rst:543 msgid "Support IPv6 in the ``--bind`` option." msgstr "" -#: library/http.server.rst:549 +#: library/http.server.rst:548 msgid "" "Specifies a directory to which it should serve the files. By default, the " "server uses the current directory. For example, the following command uses a " "specific directory::" msgstr "" -#: library/http.server.rst:553 +#: library/http.server.rst:552 msgid "python -m http.server --directory /tmp/" msgstr "" -#: library/http.server.rst:559 +#: library/http.server.rst:558 msgid "" "Specifies the HTTP version to which the server is conformant. By default, " "the server is conformant to HTTP/1.0. For example, the following command " "runs an HTTP/1.1 conformant server::" msgstr "" -#: library/http.server.rst:563 +#: library/http.server.rst:562 msgid "python -m http.server --protocol HTTP/1.1" msgstr "" -#: library/http.server.rst:569 +#: library/http.server.rst:568 msgid "" ":class:`CGIHTTPRequestHandler` can be enabled in the command line by passing " "the ``--cgi`` option::" msgstr "" -#: library/http.server.rst:572 +#: library/http.server.rst:571 msgid "python -m http.server --cgi" msgstr "" -#: library/http.server.rst:576 +#: library/http.server.rst:575 msgid "" ":mod:`http.server` command line ``--cgi`` support is being removed because :" "class:`CGIHTTPRequestHandler` is being removed." msgstr "" -#: library/http.server.rst:581 +#: library/http.server.rst:580 msgid "" ":class:`CGIHTTPRequestHandler` and the ``--cgi`` command-line option are not " "intended for use by untrusted clients and may be vulnerable to exploitation. " "Always use within a secure environment." msgstr "" -#: library/http.server.rst:587 +#: library/http.server.rst:586 msgid "Specifies a TLS certificate chain for HTTPS connections::" msgstr "" -#: library/http.server.rst:589 +#: library/http.server.rst:588 msgid "python -m http.server --tls-cert fullchain.pem" msgstr "" -#: library/http.server.rst:595 +#: library/http.server.rst:594 msgid "Specifies a private key file for HTTPS connections." msgstr "" -#: library/http.server.rst:597 +#: library/http.server.rst:596 msgid "This option requires ``--tls-cert`` to be specified." msgstr "" -#: library/http.server.rst:603 +#: library/http.server.rst:602 msgid "Specifies the password file for password-protected private keys::" msgstr "" -#: library/http.server.rst:605 +#: library/http.server.rst:604 msgid "" "python -m http.server \\\n" " --tls-cert cert.pem \\\n" @@ -754,22 +753,22 @@ msgid "" " --tls-password-file password.txt" msgstr "" -#: library/http.server.rst:610 +#: library/http.server.rst:609 msgid "This option requires `--tls-cert`` to be specified." msgstr "" -#: library/http.server.rst:618 +#: library/http.server.rst:617 msgid "Security considerations" msgstr "" -#: library/http.server.rst:622 +#: library/http.server.rst:621 msgid "" ":class:`SimpleHTTPRequestHandler` will follow symbolic links when handling " "requests, this makes it possible for files outside of the specified " "directory to be served." msgstr "" -#: library/http.server.rst:626 +#: library/http.server.rst:625 msgid "" "Earlier versions of Python did not scrub control characters from the log " "messages emitted to stderr from ``python -m http.server`` or the default :" @@ -778,7 +777,7 @@ msgid "" "codes to your terminal." msgstr "" -#: library/http.server.rst:632 +#: library/http.server.rst:631 msgid "Control characters are scrubbed in stderr logs." msgstr "" @@ -806,10 +805,10 @@ msgstr "" msgid "httpd" msgstr "" -#: library/http.server.rst:620 +#: library/http.server.rst:619 msgid "http.server" msgstr "" -#: library/http.server.rst:620 +#: library/http.server.rst:619 msgid "security" msgstr "" diff --git a/library/i18n.po b/library/i18n.po index c742bd0c..5ba32ad2 100644 --- a/library/i18n.po +++ b/library/i18n.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/idle.po b/library/idle.po index 265689c8..23047acb 100644 --- a/library/idle.po +++ b/library/idle.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/imaplib.po b/library/imaplib.po index 47ac55b8..ca87f2d6 100644 --- a/library/imaplib.po +++ b/library/imaplib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/imghdr.po b/library/imghdr.po index 0504fe3c..7067afb0 100644 --- a/library/imghdr.po +++ b/library/imghdr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/imp.po b/library/imp.po index b147fa89..180011a1 100644 --- a/library/imp.po +++ b/library/imp.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/importlib.metadata.po b/library/importlib.metadata.po index 939a0adc..b028a1dd 100644 --- a/library/importlib.metadata.po +++ b/library/importlib.metadata.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/importlib.po b/library/importlib.po index 1141315c..b3841761 100644 --- a/library/importlib.po +++ b/library/importlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/importlib.resources.abc.po b/library/importlib.resources.abc.po index 940c452a..0d9f598a 100644 --- a/library/importlib.resources.abc.po +++ b/library/importlib.resources.abc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/importlib.resources.po b/library/importlib.resources.po index bb7723c7..f1984299 100644 --- a/library/importlib.resources.po +++ b/library/importlib.resources.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-06 12:58+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/index.po b/library/index.po index 71d4ced3..36f55fc2 100644 --- a/library/index.po +++ b/library/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/inspect.po b/library/inspect.po index 1481cef3..0f4eebf7 100644 --- a/library/inspect.po +++ b/library/inspect.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/internet.po b/library/internet.po index 13eae2d3..6ce81280 100644 --- a/library/internet.po +++ b/library/internet.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-12-15 13:44+0000\n" "Last-Translator: Artemis Leonardou \n" "Language-Team: PyGreece \n" diff --git a/library/intro.po b/library/intro.po index 74af9272..bbf29ad4 100644 --- a/library/intro.po +++ b/library/intro.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/io.po b/library/io.po index 3e8b4750..1f062431 100644 --- a/library/io.po +++ b/library/io.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -62,7 +62,7 @@ msgid "" "since :exc:`IOError` is now an alias of :exc:`OSError`." msgstr "" -#: library/io.rst:870 library/io.rst:1219 +#: library/io.rst:867 library/io.rst:1217 msgid "Text I/O" msgstr "" @@ -106,7 +106,7 @@ msgid "" "`TextIOBase`." msgstr "" -#: library/io.rst:1207 +#: library/io.rst:1205 msgid "Binary I/O" msgstr "" @@ -650,7 +650,7 @@ msgid "" "negative" msgstr "" -#: library/io.rst:945 +#: library/io.rst:943 msgid "The :data:`!SEEK_*` constants." msgstr "" @@ -776,109 +776,117 @@ msgstr "" msgid "" "The main difference with :class:`RawIOBase` is that methods :meth:`read`, :" "meth:`readinto` and :meth:`write` will try (respectively) to read as much " -"input as requested or to consume all given output, at the expense of making " -"perhaps more than one system call." +"input as requested or to emit all provided data." msgstr "" -#: library/io.rst:535 +#: library/io.rst:534 msgid "" -"In addition, those methods can raise :exc:`BlockingIOError` if the " -"underlying raw stream is in non-blocking mode and cannot take or give enough " -"data; unlike their :class:`RawIOBase` counterparts, they will never return " -"``None``." +"In addition, if the underlying raw stream is in non-blocking mode, when the " +"system returns would block :meth:`write` will raise :exc:`BlockingIOError` " +"with :attr:`BlockingIOError.characters_written` and :meth:`read` will return " +"data read so far or ``None`` if no data is available." msgstr "" -#: library/io.rst:540 +#: library/io.rst:539 msgid "" "Besides, the :meth:`read` method does not have a default implementation that " "defers to :meth:`readinto`." msgstr "" -#: library/io.rst:543 +#: library/io.rst:542 msgid "" "A typical :class:`BufferedIOBase` implementation should not inherit from a :" "class:`RawIOBase` implementation, but wrap one, like :class:`BufferedWriter` " "and :class:`BufferedReader` do." msgstr "" -#: library/io.rst:547 +#: library/io.rst:546 msgid "" ":class:`BufferedIOBase` provides or overrides these data attributes and " "methods in addition to those from :class:`IOBase`:" msgstr "" -#: library/io.rst:552 +#: library/io.rst:551 msgid "" "The underlying raw stream (a :class:`RawIOBase` instance) that :class:" "`BufferedIOBase` deals with. This is not part of the :class:" "`BufferedIOBase` API and may not exist on some implementations." msgstr "" -#: library/io.rst:558 +#: library/io.rst:557 msgid "Separate the underlying raw stream from the buffer and return it." msgstr "" -#: library/io.rst:560 +#: library/io.rst:559 msgid "" "After the raw stream has been detached, the buffer is in an unusable state." msgstr "" -#: library/io.rst:563 +#: library/io.rst:562 msgid "" "Some buffers, like :class:`BytesIO`, do not have the concept of a single raw " "stream to return from this method. They raise :exc:`UnsupportedOperation`." msgstr "" -#: library/io.rst:571 +#: library/io.rst:570 msgid "" -"Read and return up to *size* bytes. If the argument is omitted, ``None``, " -"or negative, data is read and returned until EOF is reached. An empty :" -"class:`bytes` object is returned if the stream is already at EOF." +"Read and return up to *size* bytes. If the argument is omitted, ``None``, or " +"negative read as much as possible." msgstr "" -#: library/io.rst:575 +#: library/io.rst:573 msgid "" -"If the argument is positive, and the underlying raw stream is not " -"interactive, multiple raw reads may be issued to satisfy the byte count " -"(unless EOF is reached first). But for interactive raw streams, at most one " -"raw read will be issued, and a short result does not imply that EOF is " -"imminent." +"Fewer bytes may be returned than requested. An empty :class:`bytes` object " +"is returned if the stream is already at EOF. More than one read may be made " +"and calls may be retried if specific errors are encountered, see :meth:`os." +"read` and :pep:`475` for more details. Less than size bytes being returned " +"does not imply that EOF is imminent." msgstr "" -#: library/io.rst:604 library/io.rst:614 +#: library/io.rst:579 msgid "" -"A :exc:`BlockingIOError` is raised if the underlying raw stream is in non " -"blocking-mode, and has no data available at the moment." +"When reading as much as possible the default implementation will use ``raw." +"readall`` if available (which should implement :meth:`RawIOBase.readall`), " +"otherwise will read in a loop until read returns ``None``, an empty :class:" +"`bytes`, or a non-retryable error. For most streams this is to EOF, but for " +"non-blocking streams more data may become available." msgstr "" -#: library/io.rst:586 +#: library/io.rst:601 msgid "" -"Read and return up to *size* bytes, with at most one call to the underlying " -"raw stream's :meth:`~RawIOBase.read` (or :meth:`~RawIOBase.readinto`) " -"method. This can be useful if you are implementing your own buffering on " -"top of a :class:`BufferedIOBase` object." +"When the underlying raw stream is non-blocking, implementations may either " +"raise :exc:`BlockingIOError` or return ``None`` if no data is available. :" +"mod:`io` implementations return ``None``." msgstr "" -#: library/io.rst:592 +#: library/io.rst:594 msgid "" -"If *size* is ``-1`` (the default), an arbitrary number of bytes are returned " -"(more than zero unless EOF is reached)." +"Read and return up to *size* bytes, calling :meth:`~RawIOBase.readinto` " +"which may retry if :py:const:`~errno.EINTR` is encountered per :pep:`475`. " +"If *size* is ``-1`` or not provided, the implementation will choose an " +"arbitrary value for *size*." msgstr "" -#: library/io.rst:597 +#: library/io.rst:607 msgid "" "Read bytes into a pre-allocated, writable :term:`bytes-like object` *b* and " "return the number of bytes read. For example, *b* might be a :class:" "`bytearray`." msgstr "" -#: library/io.rst:601 +#: library/io.rst:611 msgid "" "Like :meth:`read`, multiple reads may be issued to the underlying raw " "stream, unless the latter is interactive." msgstr "" -#: library/io.rst:609 +#: library/io.rst:624 +msgid "" +"A :exc:`BlockingIOError` is raised if the underlying raw stream is in non " +"blocking-mode, and has no data available at the moment." +msgstr "" + +#: library/io.rst:619 msgid "" "Read bytes into a pre-allocated, writable :term:`bytes-like object` *b*, " "using at most one call to the underlying raw stream's :meth:`~RawIOBase." @@ -886,7 +894,7 @@ msgid "" "read." msgstr "" -#: library/io.rst:621 +#: library/io.rst:631 msgid "" "Write the given :term:`bytes-like object`, *b*, and return the number of " "bytes written (always equal to the length of *b* in bytes, since if the " @@ -895,41 +903,41 @@ msgid "" "or held in a buffer for performance and latency reasons." msgstr "" -#: library/io.rst:628 +#: library/io.rst:638 msgid "" "When in non-blocking mode, a :exc:`BlockingIOError` is raised if the data " "needed to be written to the raw stream but it couldn't accept all the data " "without blocking." msgstr "" -#: library/io.rst:632 +#: library/io.rst:642 msgid "" "The caller may release or mutate *b* after this method returns, so the " "implementation should only access *b* during the method call." msgstr "" -#: library/io.rst:637 +#: library/io.rst:647 msgid "Raw File I/O" msgstr "" -#: library/io.rst:641 +#: library/io.rst:651 msgid "" "A raw binary stream representing an OS-level file containing bytes data. It " "inherits from :class:`RawIOBase`." msgstr "" -#: library/io.rst:644 +#: library/io.rst:654 msgid "The *name* can be one of two things:" msgstr "" -#: library/io.rst:646 +#: library/io.rst:656 msgid "" "a character string or :class:`bytes` object representing the path to the " "file which will be opened. In this case closefd must be ``True`` (the " "default) otherwise an error will be raised." msgstr "" -#: library/io.rst:649 +#: library/io.rst:659 msgid "" "an integer representing the number of an existing OS-level file descriptor " "to which the resulting :class:`FileIO` object will give access. When the " @@ -937,7 +945,7 @@ msgid "" "set to ``False``." msgstr "" -#: library/io.rst:654 +#: library/io.rst:664 msgid "" "The *mode* can be ``'r'``, ``'w'``, ``'x'`` or ``'a'`` for reading " "(default), writing, exclusive creation or appending. The file will be " @@ -948,14 +956,14 @@ msgid "" "``'+'`` to the mode to allow simultaneous reading and writing." msgstr "" -#: library/io.rst:662 +#: library/io.rst:672 msgid "" "The :meth:`~RawIOBase.read` (when called with a positive argument), :meth:" "`~RawIOBase.readinto` and :meth:`~RawIOBase.write` methods on this class " "will only make one system call." msgstr "" -#: library/io.rst:666 +#: library/io.rst:676 msgid "" "A custom opener can be used by passing a callable as *opener*. The " "underlying file descriptor for the file object is then obtained by calling " @@ -964,77 +972,77 @@ msgid "" "similar to passing ``None``)." msgstr "" -#: library/io.rst:672 +#: library/io.rst:682 msgid "The newly created file is :ref:`non-inheritable `." msgstr "" -#: library/io.rst:674 +#: library/io.rst:684 msgid "" "See the :func:`open` built-in function for examples on using the *opener* " "parameter." msgstr "" -#: library/io.rst:677 +#: library/io.rst:687 msgid "The *opener* parameter was added. The ``'x'`` mode was added." msgstr "" -#: library/io.rst:681 +#: library/io.rst:691 msgid "The file is now non-inheritable." msgstr "" -#: library/io.rst:684 +#: library/io.rst:694 msgid "" ":class:`FileIO` provides these data attributes in addition to those from :" "class:`RawIOBase` and :class:`IOBase`:" msgstr "" -#: library/io.rst:689 +#: library/io.rst:699 msgid "The mode as given in the constructor." msgstr "" -#: library/io.rst:693 +#: library/io.rst:703 msgid "" "The file name. This is the file descriptor of the file when no name is " "given in the constructor." msgstr "" -#: library/io.rst:698 +#: library/io.rst:708 msgid "Buffered Streams" msgstr "" -#: library/io.rst:700 +#: library/io.rst:710 msgid "" "Buffered I/O streams provide a higher-level interface to an I/O device than " "raw I/O does." msgstr "" -#: library/io.rst:705 +#: library/io.rst:715 msgid "" "A binary stream using an in-memory bytes buffer. It inherits from :class:" "`BufferedIOBase`. The buffer is discarded when the :meth:`~IOBase.close` " "method is called." msgstr "" -#: library/io.rst:709 +#: library/io.rst:719 msgid "" "The optional argument *initial_bytes* is a :term:`bytes-like object` that " "contains initial data." msgstr "" -#: library/io.rst:712 +#: library/io.rst:722 msgid "" ":class:`BytesIO` provides or overrides these methods in addition to those " "from :class:`BufferedIOBase` and :class:`IOBase`:" msgstr "" -#: library/io.rst:717 +#: library/io.rst:727 msgid "" "Return a readable and writable view over the contents of the buffer without " "copying them. Also, mutating the view will transparently update the " "contents of the buffer::" msgstr "" -#: library/io.rst:721 +#: library/io.rst:731 msgid "" ">>> b = io.BytesIO(b\"abcdef\")\n" ">>> view = b.getbuffer()\n" @@ -1043,309 +1051,302 @@ msgid "" "b'ab56ef'" msgstr "" -#: library/io.rst:728 +#: library/io.rst:738 msgid "" "As long as the view exists, the :class:`BytesIO` object cannot be resized or " "closed." msgstr "" -#: library/io.rst:735 +#: library/io.rst:745 msgid "Return :class:`bytes` containing the entire contents of the buffer." msgstr "" -#: library/io.rst:740 +#: library/io.rst:750 msgid "In :class:`BytesIO`, this is the same as :meth:`~BufferedIOBase.read`." msgstr "" -#: library/io.rst:790 +#: library/io.rst:792 msgid "The *size* argument is now optional." msgstr "" -#: library/io.rst:747 +#: library/io.rst:757 msgid "" "In :class:`BytesIO`, this is the same as :meth:`~BufferedIOBase.readinto`." msgstr "" -#: library/io.rst:753 +#: library/io.rst:763 msgid "" "A buffered binary stream providing higher-level access to a readable, non " "seekable :class:`RawIOBase` raw binary stream. It inherits from :class:" "`BufferedIOBase`." msgstr "" -#: library/io.rst:757 +#: library/io.rst:767 msgid "" "When reading data from this object, a larger amount of data may be requested " "from the underlying raw stream, and kept in an internal buffer. The buffered " "data can then be returned directly on subsequent reads." msgstr "" -#: library/io.rst:761 +#: library/io.rst:771 msgid "" "The constructor creates a :class:`BufferedReader` for the given readable " "*raw* stream and *buffer_size*. If *buffer_size* is omitted, :data:" "`DEFAULT_BUFFER_SIZE` is used." msgstr "" -#: library/io.rst:765 +#: library/io.rst:775 msgid "" ":class:`BufferedReader` provides or overrides these methods in addition to " "those from :class:`BufferedIOBase` and :class:`IOBase`:" msgstr "" -#: library/io.rst:770 -msgid "" -"Return bytes from the stream without advancing the position. At most one " -"single read on the raw stream is done to satisfy the call. The number of " -"bytes returned may be less or more than requested." -msgstr "" - -#: library/io.rst:776 +#: library/io.rst:780 msgid "" -"Read and return *size* bytes, or if *size* is not given or negative, until " -"EOF or if the read call would block in non-blocking mode." +"Return bytes from the stream without advancing the position. The number of " +"bytes returned may be less or more than requested. If the underlying raw " +"stream is non-blocking and the operation would block, returns empty bytes." msgstr "" -#: library/io.rst:795 library/io.rst:1028 +#: library/io.rst:786 msgid "" -"When the underlying raw stream is non-blocking, a :exc:`BlockingIOError` may " -"be raised if a read operation cannot be completed immediately." +"In :class:`BufferedReader` this is the same as :meth:`io.BufferedIOBase.read`" msgstr "" -#: library/io.rst:786 +#: library/io.rst:790 msgid "" -"Read and return up to *size* bytes with only one call on the raw stream. If " -"at least one byte is buffered, only buffered bytes are returned. Otherwise, " -"one raw stream read call is made." +"In :class:`BufferedReader` this is the same as :meth:`io.BufferedIOBase." +"read1`" msgstr "" -#: library/io.rst:800 +#: library/io.rst:797 msgid "" "A buffered binary stream providing higher-level access to a writeable, non " "seekable :class:`RawIOBase` raw binary stream. It inherits from :class:" "`BufferedIOBase`." msgstr "" -#: library/io.rst:804 +#: library/io.rst:801 msgid "" "When writing to this object, data is normally placed into an internal " "buffer. The buffer will be written out to the underlying :class:`RawIOBase` " "object under various conditions, including:" msgstr "" -#: library/io.rst:808 +#: library/io.rst:805 msgid "when the buffer gets too small for all pending data;" msgstr "" -#: library/io.rst:809 +#: library/io.rst:806 msgid "when :meth:`flush` is called;" msgstr "" -#: library/io.rst:810 +#: library/io.rst:807 msgid "" "when a :meth:`~IOBase.seek` is requested (for :class:`BufferedRandom` " "objects);" msgstr "" -#: library/io.rst:811 +#: library/io.rst:808 msgid "when the :class:`BufferedWriter` object is closed or destroyed." msgstr "" -#: library/io.rst:813 +#: library/io.rst:810 msgid "" "The constructor creates a :class:`BufferedWriter` for the given writeable " "*raw* stream. If the *buffer_size* is not given, it defaults to :data:" "`DEFAULT_BUFFER_SIZE`." msgstr "" -#: library/io.rst:817 +#: library/io.rst:814 msgid "" ":class:`BufferedWriter` provides or overrides these methods in addition to " "those from :class:`BufferedIOBase` and :class:`IOBase`:" msgstr "" -#: library/io.rst:822 +#: library/io.rst:819 msgid "" "Force bytes held in the buffer into the raw stream. A :exc:" "`BlockingIOError` should be raised if the raw stream blocks." msgstr "" -#: library/io.rst:827 +#: library/io.rst:824 msgid "" "Write the :term:`bytes-like object`, *b*, and return the number of bytes " -"written. When in non-blocking mode, a :exc:`BlockingIOError` is raised if " -"the buffer needs to be written out but the raw stream blocks." +"written. When in non-blocking mode, a :exc:`BlockingIOError` with :attr:" +"`BlockingIOError.characters_written` set is raised if the buffer needs to be " +"written out but the raw stream blocks." msgstr "" -#: library/io.rst:835 +#: library/io.rst:832 msgid "" "A buffered binary stream providing higher-level access to a seekable :class:" "`RawIOBase` raw binary stream. It inherits from :class:`BufferedReader` " "and :class:`BufferedWriter`." msgstr "" -#: library/io.rst:839 +#: library/io.rst:836 msgid "" "The constructor creates a reader and writer for a seekable raw stream, given " "in the first argument. If the *buffer_size* is omitted it defaults to :data:" "`DEFAULT_BUFFER_SIZE`." msgstr "" -#: library/io.rst:843 +#: library/io.rst:840 msgid "" ":class:`BufferedRandom` is capable of anything :class:`BufferedReader` or :" "class:`BufferedWriter` can do. In addition, :meth:`~IOBase.seek` and :meth:" "`~IOBase.tell` are guaranteed to be implemented." msgstr "" -#: library/io.rst:850 +#: library/io.rst:847 msgid "" "A buffered binary stream providing higher-level access to two non seekable :" "class:`RawIOBase` raw binary streams---one readable, the other writeable. It " "inherits from :class:`BufferedIOBase`." msgstr "" -#: library/io.rst:854 +#: library/io.rst:851 msgid "" "*reader* and *writer* are :class:`RawIOBase` objects that are readable and " "writeable respectively. If the *buffer_size* is omitted it defaults to :" "data:`DEFAULT_BUFFER_SIZE`." msgstr "" -#: library/io.rst:858 +#: library/io.rst:855 msgid "" ":class:`BufferedRWPair` implements all of :class:`BufferedIOBase`\\'s " "methods except for :meth:`~BufferedIOBase.detach`, which raises :exc:" "`UnsupportedOperation`." msgstr "" -#: library/io.rst:864 +#: library/io.rst:861 msgid "" ":class:`BufferedRWPair` does not attempt to synchronize accesses to its " "underlying raw streams. You should not pass it the same object as reader " "and writer; use :class:`BufferedRandom` instead." msgstr "" -#: library/io.rst:874 +#: library/io.rst:871 msgid "" "Base class for text streams. This class provides a character and line based " "interface to stream I/O. It inherits from :class:`IOBase`." msgstr "" -#: library/io.rst:877 +#: library/io.rst:874 msgid "" ":class:`TextIOBase` provides or overrides these data attributes and methods " "in addition to those from :class:`IOBase`:" msgstr "" -#: library/io.rst:882 +#: library/io.rst:879 msgid "" "The name of the encoding used to decode the stream's bytes into strings, and " "to encode strings into bytes." msgstr "" -#: library/io.rst:887 +#: library/io.rst:884 msgid "The error setting of the decoder or encoder." msgstr "" -#: library/io.rst:891 +#: library/io.rst:888 msgid "" "A string, a tuple of strings, or ``None``, indicating the newlines " "translated so far. Depending on the implementation and the initial " "constructor flags, this may not be available." msgstr "" -#: library/io.rst:897 +#: library/io.rst:894 msgid "" -"The underlying binary buffer (a :class:`BufferedIOBase` instance) that :" -"class:`TextIOBase` deals with. This is not part of the :class:`TextIOBase` " -"API and may not exist in some implementations." +"The underlying binary buffer (a :class:`BufferedIOBase` or :class:" +"`RawIOBase` instance) that :class:`TextIOBase` deals with. This is not part " +"of the :class:`TextIOBase` API and may not exist in some implementations." msgstr "" -#: library/io.rst:903 +#: library/io.rst:901 msgid "" "Separate the underlying binary buffer from the :class:`TextIOBase` and " "return it." msgstr "" -#: library/io.rst:906 +#: library/io.rst:904 msgid "" "After the underlying buffer has been detached, the :class:`TextIOBase` is in " "an unusable state." msgstr "" -#: library/io.rst:909 +#: library/io.rst:907 msgid "" "Some :class:`TextIOBase` implementations, like :class:`StringIO`, may not " "have the concept of an underlying buffer and calling this method will raise :" "exc:`UnsupportedOperation`." msgstr "" -#: library/io.rst:917 +#: library/io.rst:915 msgid "" "Read and return at most *size* characters from the stream as a single :class:" "`str`. If *size* is negative or ``None``, reads until EOF." msgstr "" -#: library/io.rst:922 +#: library/io.rst:920 msgid "" "Read until newline or EOF and return a single :class:`str`. If the stream " "is already at EOF, an empty string is returned." msgstr "" -#: library/io.rst:925 +#: library/io.rst:923 msgid "If *size* is specified, at most *size* characters will be read." msgstr "" -#: library/io.rst:929 +#: library/io.rst:927 msgid "" "Change the stream position to the given *offset*. Behaviour depends on the " "*whence* parameter. The default value for *whence* is :data:`!SEEK_SET`." msgstr "" -#: library/io.rst:933 +#: library/io.rst:931 msgid "" ":data:`!SEEK_SET` or ``0``: seek from the start of the stream (the default); " "*offset* must either be a number returned by :meth:`TextIOBase.tell`, or " "zero. Any other *offset* value produces undefined behaviour." msgstr "" -#: library/io.rst:937 +#: library/io.rst:935 msgid "" ":data:`!SEEK_CUR` or ``1``: \"seek\" to the current position; *offset* must " "be zero, which is a no-operation (all other values are unsupported)." msgstr "" -#: library/io.rst:940 +#: library/io.rst:938 msgid "" ":data:`!SEEK_END` or ``2``: seek to the end of the stream; *offset* must be " "zero (all other values are unsupported)." msgstr "" -#: library/io.rst:943 +#: library/io.rst:941 msgid "Return the new absolute position as an opaque number." msgstr "" -#: library/io.rst:950 +#: library/io.rst:948 msgid "" "Return the current stream position as an opaque number. The number does not " "usually represent a number of bytes in the underlying binary storage." msgstr "" -#: library/io.rst:956 +#: library/io.rst:954 msgid "" "Write the string *s* to the stream and return the number of characters " "written." msgstr "" -#: library/io.rst:963 +#: library/io.rst:961 msgid "" "A buffered text stream providing higher-level access to a :class:" "`BufferedIOBase` buffered binary stream. It inherits from :class:" "`TextIOBase`." msgstr "" -#: library/io.rst:967 +#: library/io.rst:965 msgid "" "*encoding* gives the name of the encoding that the stream will be decoded or " "encoded with. In :ref:`UTF-8 Mode `, this defaults to UTF-8. " @@ -1354,7 +1355,7 @@ msgid "" "explicitly. See :ref:`io-text-encoding` for more information." msgstr "" -#: library/io.rst:973 +#: library/io.rst:971 msgid "" "*errors* is an optional string that specifies how encoding and decoding " "errors are to be handled. Pass ``'strict'`` to raise a :exc:`ValueError` " @@ -1369,13 +1370,13 @@ msgid "" "that has been registered with :func:`codecs.register_error` is also valid." msgstr "" -#: library/io.rst:989 +#: library/io.rst:987 msgid "" "*newline* controls how line endings are handled. It can be ``None``, " "``''``, ``'\\n'``, ``'\\r'``, and ``'\\r\\n'``. It works as follows:" msgstr "" -#: library/io.rst:992 +#: library/io.rst:990 msgid "" "When reading input from the stream, if *newline* is ``None``, :term:" "`universal newlines` mode is enabled. Lines in the input can end in " @@ -1387,7 +1388,7 @@ msgid "" "returned to the caller untranslated." msgstr "" -#: library/io.rst:1001 +#: library/io.rst:999 msgid "" "When writing output to the stream, if *newline* is ``None``, any ``'\\n'`` " "characters written are translated to the system default line separator, :" @@ -1396,13 +1397,13 @@ msgid "" "characters written are translated to the given string." msgstr "" -#: library/io.rst:1007 +#: library/io.rst:1005 msgid "" "If *line_buffering* is ``True``, :meth:`~IOBase.flush` is implied when a " "call to write contains a newline character or a carriage return." msgstr "" -#: library/io.rst:1010 +#: library/io.rst:1008 msgid "" "If *write_through* is ``True``, calls to :meth:`~BufferedIOBase.write` are " "guaranteed not to be buffered: any data written on the :class:" @@ -1410,11 +1411,11 @@ msgid "" "*buffer*." msgstr "" -#: library/io.rst:1014 +#: library/io.rst:1012 msgid "The *write_through* argument has been added." msgstr "" -#: library/io.rst:1017 +#: library/io.rst:1015 msgid "" "The default *encoding* is now ``locale.getpreferredencoding(False)`` instead " "of ``locale.getpreferredencoding()``. Don't change temporary the locale " @@ -1422,108 +1423,114 @@ msgid "" "instead of the user preferred encoding." msgstr "" -#: library/io.rst:1023 +#: library/io.rst:1021 msgid "" "The *encoding* argument now supports the ``\"locale\"`` dummy encoding name." msgstr "" -#: library/io.rst:1031 +#: library/io.rst:1026 +msgid "" +"When the underlying raw stream is non-blocking, a :exc:`BlockingIOError` may " +"be raised if a read operation cannot be completed immediately." +msgstr "" + +#: library/io.rst:1029 msgid "" ":class:`TextIOWrapper` provides these data attributes and methods in " "addition to those from :class:`TextIOBase` and :class:`IOBase`:" msgstr "" -#: library/io.rst:1036 +#: library/io.rst:1034 msgid "Whether line buffering is enabled." msgstr "" -#: library/io.rst:1040 +#: library/io.rst:1038 msgid "Whether writes are passed immediately to the underlying binary buffer." msgstr "" -#: library/io.rst:1048 +#: library/io.rst:1046 msgid "" "Reconfigure this text stream using new settings for *encoding*, *errors*, " "*newline*, *line_buffering* and *write_through*." msgstr "" -#: library/io.rst:1051 +#: library/io.rst:1049 msgid "" "Parameters not specified keep current settings, except ``errors='strict'`` " "is used when *encoding* is specified but *errors* is not specified." msgstr "" -#: library/io.rst:1055 +#: library/io.rst:1053 msgid "" "It is not possible to change the encoding or newline if some data has " "already been read from the stream. On the other hand, changing encoding " "after write is possible." msgstr "" -#: library/io.rst:1059 +#: library/io.rst:1057 msgid "" "This method does an implicit stream flush before setting the new parameters." msgstr "" -#: library/io.rst:1064 +#: library/io.rst:1062 msgid "The method supports ``encoding=\"locale\"`` option." msgstr "" -#: library/io.rst:1069 +#: library/io.rst:1067 msgid "" "Set the stream position. Return the new stream position as an :class:`int`." msgstr "" -#: library/io.rst:1072 +#: library/io.rst:1070 msgid "" "Four operations are supported, given by the following argument combinations:" msgstr "" -#: library/io.rst:1075 +#: library/io.rst:1073 msgid "``seek(0, SEEK_SET)``: Rewind to the start of the stream." msgstr "" -#: library/io.rst:1076 +#: library/io.rst:1074 msgid "" "``seek(cookie, SEEK_SET)``: Restore a previous position; *cookie* **must " "be** a number returned by :meth:`tell`." msgstr "" -#: library/io.rst:1078 +#: library/io.rst:1076 msgid "``seek(0, SEEK_END)``: Fast-forward to the end of the stream." msgstr "" -#: library/io.rst:1079 +#: library/io.rst:1077 msgid "``seek(0, SEEK_CUR)``: Leave the current stream position unchanged." msgstr "" -#: library/io.rst:1081 +#: library/io.rst:1079 msgid "Any other argument combinations are invalid, and may raise exceptions." msgstr "" -#: library/io.rst:1086 +#: library/io.rst:1084 msgid ":data:`os.SEEK_SET`, :data:`os.SEEK_CUR`, and :data:`os.SEEK_END`." msgstr "" -#: library/io.rst:1090 +#: library/io.rst:1088 msgid "" "Return the stream position as an opaque number. The return value of :meth:`!" "tell` can be given as input to :meth:`seek`, to restore a previous stream " "position." msgstr "" -#: library/io.rst:1097 +#: library/io.rst:1095 msgid "" "A text stream using an in-memory text buffer. It inherits from :class:" "`TextIOBase`." msgstr "" -#: library/io.rst:1100 +#: library/io.rst:1098 msgid "" "The text buffer is discarded when the :meth:`~IOBase.close` method is called." msgstr "" -#: library/io.rst:1103 +#: library/io.rst:1101 msgid "" "The initial value of the buffer can be set by providing *initial_value*. If " "newline translation is enabled, newlines will be encoded as if by :meth:" @@ -1535,31 +1542,31 @@ msgid "" "at the end of the buffer." msgstr "" -#: library/io.rst:1112 +#: library/io.rst:1110 msgid "" "The *newline* argument works like that of :class:`TextIOWrapper`, except " "that when writing output to the stream, if *newline* is ``None``, newlines " "are written as ``\\n`` on all platforms." msgstr "" -#: library/io.rst:1116 +#: library/io.rst:1114 msgid "" ":class:`StringIO` provides this method in addition to those from :class:" "`TextIOBase` and :class:`IOBase`:" msgstr "" -#: library/io.rst:1121 +#: library/io.rst:1119 msgid "" "Return a :class:`str` containing the entire contents of the buffer. Newlines " "are decoded as if by :meth:`~TextIOBase.read`, although the stream position " "is not changed." msgstr "" -#: library/io.rst:1125 +#: library/io.rst:1123 msgid "Example usage::" msgstr "" -#: library/io.rst:1127 +#: library/io.rst:1125 msgid "" "import io\n" "\n" @@ -1576,84 +1583,84 @@ msgid "" "output.close()" msgstr "" -#: library/io.rst:1147 +#: library/io.rst:1145 msgid "" "A helper codec that decodes newlines for :term:`universal newlines` mode. It " "inherits from :class:`codecs.IncrementalDecoder`." msgstr "" -#: library/io.rst:1152 +#: library/io.rst:1150 msgid "Static Typing" msgstr "" -#: library/io.rst:1154 +#: library/io.rst:1152 msgid "" "The following protocols can be used for annotating function and method " "arguments for simple stream reading or writing operations. They are " "decorated with :deco:`typing.runtime_checkable`." msgstr "" -#: library/io.rst:1160 +#: library/io.rst:1158 msgid "" "Generic protocol for reading from a file or other input stream. ``T`` will " "usually be :class:`str` or :class:`bytes`, but can be any type that is read " "from the stream." msgstr "" -#: library/io.rst:1169 +#: library/io.rst:1167 msgid "" "Read data from the input stream and return it. If *size* is specified, it " "should be an integer, and at most *size* items (bytes/characters) will be " "read." msgstr "" -#: library/io.rst:1192 +#: library/io.rst:1190 msgid "For example::" msgstr "" -#: library/io.rst:1175 +#: library/io.rst:1173 msgid "" "def read_it(reader: Reader[str]):\n" " data = reader.read(11)\n" " assert isinstance(data, str)" msgstr "" -#: library/io.rst:1181 +#: library/io.rst:1179 msgid "" "Generic protocol for writing to a file or other output stream. ``T`` will " "usually be :class:`str` or :class:`bytes`, but can be any type that can be " "written to the stream." msgstr "" -#: library/io.rst:1189 +#: library/io.rst:1187 msgid "" "Write *data* to the output stream and return the number of items (bytes/" "characters) written." msgstr "" -#: library/io.rst:1194 +#: library/io.rst:1192 msgid "" "def write_binary(writer: Writer[bytes]):\n" " writer.write(b\"Hello world!\\n\")" msgstr "" -#: library/io.rst:1197 +#: library/io.rst:1195 msgid "" "See :ref:`typing-io` for other I/O related protocols and classes that can be " "used for static type checking." msgstr "" -#: library/io.rst:1201 +#: library/io.rst:1199 msgid "Performance" msgstr "" -#: library/io.rst:1203 +#: library/io.rst:1201 msgid "" "This section discusses the performance of the provided concrete I/O " "implementations." msgstr "" -#: library/io.rst:1209 +#: library/io.rst:1207 msgid "" "By reading and writing only large chunks of data even when the user asks for " "a single byte, buffered I/O hides any inefficiency in calling and executing " @@ -1666,7 +1673,7 @@ msgid "" "data." msgstr "" -#: library/io.rst:1221 +#: library/io.rst:1219 msgid "" "Text I/O over a binary storage (such as a file) is significantly slower than " "binary I/O over the same storage, because it requires conversions between " @@ -1676,24 +1683,24 @@ msgid "" "the reconstruction algorithm used." msgstr "" -#: library/io.rst:1228 +#: library/io.rst:1226 msgid "" ":class:`StringIO`, however, is a native in-memory unicode container and will " "exhibit similar speed to :class:`BytesIO`." msgstr "" -#: library/io.rst:1232 +#: library/io.rst:1230 msgid "Multi-threading" msgstr "" -#: library/io.rst:1234 +#: library/io.rst:1232 msgid "" ":class:`FileIO` objects are thread-safe to the extent that the operating " "system calls (such as :manpage:`read(2)` under Unix) they wrap are thread-" "safe too." msgstr "" -#: library/io.rst:1237 +#: library/io.rst:1235 msgid "" "Binary buffered objects (instances of :class:`BufferedReader`, :class:" "`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`) " @@ -1701,15 +1708,15 @@ msgid "" "them from multiple threads at once." msgstr "" -#: library/io.rst:1242 +#: library/io.rst:1240 msgid ":class:`TextIOWrapper` objects are not thread-safe." msgstr "" -#: library/io.rst:1245 +#: library/io.rst:1243 msgid "Reentrancy" msgstr "" -#: library/io.rst:1247 +#: library/io.rst:1245 msgid "" "Binary buffered objects (instances of :class:`BufferedReader`, :class:" "`BufferedWriter`, :class:`BufferedRandom` and :class:`BufferedRWPair`) are " @@ -1720,7 +1727,7 @@ msgid "" "from entering the buffered object." msgstr "" -#: library/io.rst:1255 +#: library/io.rst:1253 msgid "" "The above implicitly extends to text files, since the :func:`open` function " "will wrap a buffered object inside a :class:`TextIOWrapper`. This includes " @@ -1736,14 +1743,14 @@ msgstr "" msgid "io module" msgstr "" -#: library/io.rst:1142 +#: library/io.rst:1140 msgid "universal newlines" msgstr "" -#: library/io.rst:986 +#: library/io.rst:984 msgid "io.TextIOWrapper class" msgstr "" -#: library/io.rst:1142 +#: library/io.rst:1140 msgid "io.IncrementalNewlineDecoder class" msgstr "" diff --git a/library/ipaddress.po b/library/ipaddress.po index 3d2d777a..75566b92 100644 --- a/library/ipaddress.po +++ b/library/ipaddress.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/ipc.po b/library/ipc.po index 18b684df..6ef8626a 100644 --- a/library/ipc.po +++ b/library/ipc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/itertools.po b/library/itertools.po index f3f5c58d..2ecfe350 100644 --- a/library/itertools.po +++ b/library/itertools.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/json.po b/library/json.po index cc108173..4330cd8c 100644 --- a/library/json.po +++ b/library/json.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -37,22 +37,29 @@ msgstr "" #: library/json.rst:22 msgid "" +"The term \"object\" in the context of JSON processing in Python can be " +"ambiguous. All values in Python are objects. In JSON, an object refers to " +"any data wrapped in curly braces, similar to a Python dictionary." +msgstr "" + +#: library/json.rst:27 +msgid "" "Be cautious when parsing JSON data from untrusted sources. A malicious JSON " "string may cause the decoder to consume considerable CPU and memory " "resources. Limiting the size of data to be parsed is recommended." msgstr "" -#: library/json.rst:26 +#: library/json.rst:31 msgid "" -":mod:`json` exposes an API familiar to users of the standard library :mod:" +"This module exposes an API familiar to users of the standard library :mod:" "`marshal` and :mod:`pickle` modules." msgstr "" -#: library/json.rst:29 +#: library/json.rst:34 msgid "Encoding basic Python object hierarchies::" msgstr "" -#: library/json.rst:31 +#: library/json.rst:36 msgid "" ">>> import json\n" ">>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])\n" @@ -72,22 +79,22 @@ msgid "" "'[\"streaming API\"]'" msgstr "" -#: library/json.rst:48 +#: library/json.rst:53 msgid "Compact encoding::" msgstr "" -#: library/json.rst:50 +#: library/json.rst:55 msgid "" ">>> import json\n" ">>> json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))\n" "'[1,2,3,{\"4\":5,\"6\":7}]'" msgstr "" -#: library/json.rst:54 +#: library/json.rst:59 msgid "Pretty printing::" msgstr "" -#: library/json.rst:56 +#: library/json.rst:61 msgid "" ">>> import json\n" ">>> print(json.dumps({'6': 7, '4': 5}, sort_keys=True, indent=4))\n" @@ -97,11 +104,11 @@ msgid "" "}" msgstr "" -#: library/json.rst:63 -msgid "Specializing JSON object encoding::" +#: library/json.rst:68 +msgid "Customizing JSON object encoding::" msgstr "" -#: library/json.rst:65 +#: library/json.rst:70 msgid "" ">>> import json\n" ">>> def custom_json(obj):\n" @@ -114,11 +121,11 @@ msgid "" "'{\"__complex__\": true, \"real\": 1.0, \"imag\": 2.0}'" msgstr "" -#: library/json.rst:74 +#: library/json.rst:79 msgid "Decoding JSON::" msgstr "" -#: library/json.rst:76 +#: library/json.rst:81 msgid "" ">>> import json\n" ">>> json.loads('[\"foo\", {\"bar\":[\"baz\", null, 1.0, 2]}]')\n" @@ -131,11 +138,11 @@ msgid "" "['streaming API']" msgstr "" -#: library/json.rst:86 -msgid "Specializing JSON object decoding::" +#: library/json.rst:91 +msgid "Customizing JSON object decoding::" msgstr "" -#: library/json.rst:88 +#: library/json.rst:93 msgid "" ">>> import json\n" ">>> def as_complex(dct):\n" @@ -151,11 +158,11 @@ msgid "" "Decimal('1.1')" msgstr "" -#: library/json.rst:101 +#: library/json.rst:106 msgid "Extending :class:`JSONEncoder`::" msgstr "" -#: library/json.rst:103 +#: library/json.rst:108 msgid "" ">>> import json\n" ">>> class ComplexEncoder(json.JSONEncoder):\n" @@ -173,11 +180,11 @@ msgid "" "['[2.0', ', 1.0', ']']" msgstr "" -#: library/json.rst:119 +#: library/json.rst:124 msgid "Using :mod:`json` from the shell to validate and pretty-print:" msgstr "" -#: library/json.rst:121 +#: library/json.rst:126 msgid "" "$ echo '{\"json\":\"obj\"}' | python -m json\n" "{\n" @@ -187,11 +194,11 @@ msgid "" "Expecting property name enclosed in double quotes: line 1 column 2 (char 1)" msgstr "" -#: library/json.rst:130 +#: library/json.rst:135 msgid "See :ref:`json-commandline` for detailed documentation." msgstr "" -#: library/json.rst:134 +#: library/json.rst:139 msgid "" "JSON is a subset of `YAML `_ 1.2. The JSON produced by " "this module's default settings (in particular, the default *separators* " @@ -199,24 +206,24 @@ msgid "" "used as a YAML serializer." msgstr "" -#: library/json.rst:141 +#: library/json.rst:146 msgid "" "This module's encoders and decoders preserve input and output order by " "default. Order is only lost if the underlying containers are unordered." msgstr "" -#: library/json.rst:146 +#: library/json.rst:151 msgid "Basic Usage" msgstr "" -#: library/json.rst:153 +#: library/json.rst:158 msgid "" "Serialize *obj* as a JSON formatted stream to *fp* (a ``.write()``-" "supporting :term:`file-like object`) using this :ref:`Python-to-JSON " "conversion table `." msgstr "" -#: library/json.rst:159 +#: library/json.rst:164 msgid "" "Unlike :mod:`pickle` and :mod:`marshal`, JSON is not a framed protocol, so " "trying to serialize multiple objects with repeated calls to :func:`dump` " @@ -227,39 +234,39 @@ msgstr "" msgid "Parameters" msgstr "" -#: library/json.rst:163 +#: library/json.rst:168 msgid "The Python object to be serialized." msgstr "" -#: library/json.rst:166 +#: library/json.rst:171 msgid "" "The file-like object *obj* will be serialized to. The :mod:`!json` module " "always produces :class:`str` objects, not :class:`bytes` objects, therefore " "``fp.write()`` must support :class:`str` input." msgstr "" -#: library/json.rst:173 +#: library/json.rst:178 msgid "" "If ``True``, keys that are not of a basic type (:class:`str`, :class:`int`, :" "class:`float`, :class:`bool`, ``None``) will be skipped instead of raising " "a :exc:`TypeError`. Default ``False``." msgstr "" -#: library/json.rst:179 +#: library/json.rst:184 msgid "" "If ``True`` (the default), the output is guaranteed to have all incoming non-" "ASCII characters escaped. If ``False``, these characters will be outputted " "as-is." msgstr "" -#: library/json.rst:184 +#: library/json.rst:189 msgid "" "If ``False``, the circular reference check for container types is skipped " "and a circular reference will result in a :exc:`RecursionError` (or worse). " "Default ``True``." msgstr "" -#: library/json.rst:189 +#: library/json.rst:194 msgid "" "If ``False``, serialization of out-of-range :class:`float` values (``nan``, " "``inf``, ``-inf``) will result in a :exc:`ValueError`, in strict compliance " @@ -267,14 +274,14 @@ msgid "" "equivalents (``NaN``, ``Infinity``, ``-Infinity``) are used." msgstr "" -#: library/json.rst:196 +#: library/json.rst:201 msgid "" "If set, a custom JSON encoder with the :meth:`~JSONEncoder.default` method " "overridden, for serializing into custom datatypes. If ``None`` (the " "default), :class:`!JSONEncoder` is used." msgstr "" -#: library/json.rst:203 +#: library/json.rst:208 msgid "" "If a positive integer or string, JSON array elements and object members will " "be pretty-printed with that indent level. A positive integer indents that " @@ -283,7 +290,7 @@ msgid "" "inserted. If ``None`` (the default), the most compact representation is used." msgstr "" -#: library/json.rst:213 +#: library/json.rst:218 msgid "" "A two-tuple: ``(item_separator, key_separator)``. If ``None`` (the default), " "*separators* defaults to ``(', ', ': ')`` if *indent* is ``None``, and " @@ -291,39 +298,39 @@ msgid "" "to eliminate whitespace." msgstr "" -#: library/json.rst:222 +#: library/json.rst:227 msgid "" "A function that is called for objects that can't otherwise be serialized. It " "should return a JSON encodable version of the object or raise a :exc:" "`TypeError`. If ``None`` (the default), :exc:`!TypeError` is raised." msgstr "" -#: library/json.rst:229 +#: library/json.rst:234 msgid "" "If ``True``, dictionaries will be outputted sorted by key. Default ``False``." msgstr "" -#: library/json.rst:518 +#: library/json.rst:523 msgid "Allow strings for *indent* in addition to integers." msgstr "" -#: library/json.rst:526 +#: library/json.rst:531 msgid "Use ``(',', ': ')`` as default if *indent* is not ``None``." msgstr "" -#: library/json.rst:338 +#: library/json.rst:343 msgid "" "All optional parameters are now :ref:`keyword-only `." msgstr "" -#: library/json.rst:248 +#: library/json.rst:253 msgid "" "Serialize *obj* to a JSON formatted :class:`str` using this :ref:`conversion " "table `. The arguments have the same meaning as in :func:" "`dump`." msgstr "" -#: library/json.rst:254 +#: library/json.rst:259 msgid "" "Keys in key/value pairs of JSON are always of the type :class:`str`. When a " "dictionary is converted into JSON, all the keys of the dictionary are " @@ -332,44 +339,44 @@ msgid "" "original one. That is, ``loads(dumps(x)) != x`` if x has non-string keys." msgstr "" -#: library/json.rst:265 +#: library/json.rst:270 msgid "" "Deserialize *fp* to a Python object using the :ref:`JSON-to-Python " "conversion table `." msgstr "" -#: library/json.rst:268 +#: library/json.rst:273 msgid "" "A ``.read()``-supporting :term:`text file` or :term:`binary file` containing " "the JSON document to be deserialized." msgstr "" -#: library/json.rst:273 +#: library/json.rst:278 msgid "" "If set, a custom JSON decoder. Additional keyword arguments to :func:`!load` " "will be passed to the constructor of *cls*. If ``None`` (the default), :" "class:`!JSONDecoder` is used." msgstr "" -#: library/json.rst:280 +#: library/json.rst:285 msgid "" -"If set, a function that is called with the result of any object literal " +"If set, a function that is called with the result of any JSON object literal " "decoded (a :class:`dict`). The return value of this function will be used " "instead of the :class:`dict`. This feature can be used to implement custom " "decoders, for example `JSON-RPC `_ class hinting. " "Default ``None``." msgstr "" -#: library/json.rst:290 +#: library/json.rst:295 msgid "" -"If set, a function that is called with the result of any object literal " +"If set, a function that is called with the result of any JSON object literal " "decoded with an ordered list of pairs. The return value of this function " "will be used instead of the :class:`dict`. This feature can be used to " "implement custom decoders. If *object_hook* is also set, *object_pairs_hook* " "takes priority. Default ``None``." msgstr "" -#: library/json.rst:300 +#: library/json.rst:305 msgid "" "If set, a function that is called with the string of every JSON float to be " "decoded. If ``None`` (the default), it is equivalent to ``float(num_str)``. " @@ -377,7 +384,7 @@ msgid "" "class:`decimal.Decimal`." msgstr "" -#: library/json.rst:308 +#: library/json.rst:313 msgid "" "If set, a function that is called with the string of every JSON int to be " "decoded. If ``None`` (the default), it is equivalent to ``int(num_str)``. " @@ -385,7 +392,7 @@ msgid "" "class:`float`." msgstr "" -#: library/json.rst:316 +#: library/json.rst:321 msgid "" "If set, a function that is called with one of the following strings: ``'-" "Infinity'``, ``'Infinity'``, or ``'NaN'``. This can be used to raise an " @@ -396,38 +403,38 @@ msgstr "" msgid "Raises" msgstr "" -#: library/json.rst:324 +#: library/json.rst:329 msgid "When the data being deserialized is not a valid JSON document." msgstr "" -#: library/json.rst:327 +#: library/json.rst:332 msgid "" "When the data being deserialized does not contain UTF-8, UTF-16 or UTF-32 " "encoded data." msgstr "" -#: library/json.rst:333 +#: library/json.rst:338 msgid "Added the optional *object_pairs_hook* parameter." msgstr "" -#: library/json.rst:334 +#: library/json.rst:339 msgid "*parse_constant* doesn't get called on 'null', 'true', 'false' anymore." msgstr "" -#: library/json.rst:339 +#: library/json.rst:344 msgid "" "*fp* can now be a :term:`binary file`. The input encoding should be UTF-8, " "UTF-16 or UTF-32." msgstr "" -#: library/json.rst:342 +#: library/json.rst:347 msgid "" "The default *parse_int* of :func:`int` now limits the maximum length of the " "integer string via the interpreter's :ref:`integer string conversion length " "limitation ` to help avoid denial of service attacks." msgstr "" -#: library/json.rst:350 +#: library/json.rst:355 msgid "" "Identical to :func:`load`, but instead of a file-like object, deserialize " "*s* (a :class:`str`, :class:`bytes` or :class:`bytearray` instance " @@ -435,107 +442,107 @@ msgid "" "table `." msgstr "" -#: library/json.rst:355 +#: library/json.rst:360 msgid "" "*s* can now be of type :class:`bytes` or :class:`bytearray`. The input " "encoding should be UTF-8, UTF-16 or UTF-32." msgstr "" -#: library/json.rst:359 +#: library/json.rst:364 msgid "The keyword argument *encoding* has been removed." msgstr "" -#: library/json.rst:364 +#: library/json.rst:369 msgid "Encoders and Decoders" msgstr "" -#: library/json.rst:368 +#: library/json.rst:373 msgid "Simple JSON decoder." msgstr "" -#: library/json.rst:370 +#: library/json.rst:375 msgid "Performs the following translations in decoding by default:" msgstr "" -#: library/json.rst:463 +#: library/json.rst:468 msgid "JSON" msgstr "" -#: library/json.rst:463 +#: library/json.rst:468 msgid "Python" msgstr "" -#: library/json.rst:465 +#: library/json.rst:470 msgid "object" msgstr "" -#: library/json.rst:465 +#: library/json.rst:470 msgid "dict" msgstr "" -#: library/json.rst:467 +#: library/json.rst:472 msgid "array" msgstr "" -#: library/json.rst:379 +#: library/json.rst:384 msgid "list" msgstr "" -#: library/json.rst:469 +#: library/json.rst:474 msgid "string" msgstr "" -#: library/json.rst:469 +#: library/json.rst:474 msgid "str" msgstr "" -#: library/json.rst:383 +#: library/json.rst:388 msgid "number (int)" msgstr "" -#: library/json.rst:383 +#: library/json.rst:388 msgid "int" msgstr "" -#: library/json.rst:385 +#: library/json.rst:390 msgid "number (real)" msgstr "" -#: library/json.rst:385 +#: library/json.rst:390 msgid "float" msgstr "" -#: library/json.rst:473 +#: library/json.rst:478 msgid "true" msgstr "" -#: library/json.rst:473 +#: library/json.rst:478 msgid "True" msgstr "" -#: library/json.rst:475 +#: library/json.rst:480 msgid "false" msgstr "" -#: library/json.rst:475 +#: library/json.rst:480 msgid "False" msgstr "" -#: library/json.rst:477 +#: library/json.rst:482 msgid "null" msgstr "" -#: library/json.rst:477 +#: library/json.rst:482 msgid "None" msgstr "" -#: library/json.rst:394 +#: library/json.rst:399 msgid "" "It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as their " "corresponding ``float`` values, which is outside the JSON spec." msgstr "" -#: library/json.rst:397 +#: library/json.rst:402 msgid "" "*object_hook* is an optional function that will be called with the result of " "every JSON object decoded and its return value will be used in place of the " @@ -543,7 +550,7 @@ msgid "" "g. to support `JSON-RPC `_ class hinting)." msgstr "" -#: library/json.rst:402 +#: library/json.rst:407 msgid "" "*object_pairs_hook* is an optional function that will be called with the " "result of every JSON object decoded with an ordered list of pairs. The " @@ -552,11 +559,11 @@ msgid "" "*object_hook* is also defined, the *object_pairs_hook* takes priority." msgstr "" -#: library/json.rst:408 +#: library/json.rst:413 msgid "Added support for *object_pairs_hook*." msgstr "" -#: library/json.rst:411 +#: library/json.rst:416 msgid "" "*parse_float* is an optional function that will be called with the string of " "every JSON float to be decoded. By default, this is equivalent to " @@ -564,7 +571,7 @@ msgid "" "JSON floats (e.g. :class:`decimal.Decimal`)." msgstr "" -#: library/json.rst:416 +#: library/json.rst:421 msgid "" "*parse_int* is an optional function that will be called with the string of " "every JSON int to be decoded. By default, this is equivalent to " @@ -572,14 +579,14 @@ msgid "" "JSON integers (e.g. :class:`float`)." msgstr "" -#: library/json.rst:421 +#: library/json.rst:426 msgid "" "*parse_constant* is an optional function that will be called with one of the " "following strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``. This can be " "used to raise an exception if invalid JSON numbers are encountered." msgstr "" -#: library/json.rst:425 +#: library/json.rst:430 msgid "" "If *strict* is false (``True`` is the default), then control characters will " "be allowed inside strings. Control characters in this context are those " @@ -587,66 +594,66 @@ msgid "" "``'\\n'``, ``'\\r'`` and ``'\\0'``." msgstr "" -#: library/json.rst:430 +#: library/json.rst:435 msgid "" "If the data being deserialized is not a valid JSON document, a :exc:" "`JSONDecodeError` will be raised." msgstr "" -#: library/json.rst:534 +#: library/json.rst:539 msgid "All parameters are now :ref:`keyword-only `." msgstr "" -#: library/json.rst:438 +#: library/json.rst:443 msgid "" "Return the Python representation of *s* (a :class:`str` instance containing " "a JSON document)." msgstr "" -#: library/json.rst:441 +#: library/json.rst:446 msgid "" ":exc:`JSONDecodeError` will be raised if the given JSON document is not " "valid." msgstr "" -#: library/json.rst:446 +#: library/json.rst:451 msgid "" "Decode a JSON document from *s* (a :class:`str` beginning with a JSON " "document) and return a 2-tuple of the Python representation and the index in " "*s* where the document ended." msgstr "" -#: library/json.rst:450 +#: library/json.rst:455 msgid "" "This can be used to decode a JSON document from a string that may have " "extraneous data at the end." msgstr "" -#: library/json.rst:456 +#: library/json.rst:461 msgid "Extensible JSON encoder for Python data structures." msgstr "" -#: library/json.rst:458 +#: library/json.rst:463 msgid "Supports the following objects and types by default:" msgstr "" -#: library/json.rst:467 +#: library/json.rst:472 msgid "list, tuple" msgstr "" -#: library/json.rst:471 +#: library/json.rst:476 msgid "int, float, int- & float-derived Enums" msgstr "" -#: library/json.rst:471 +#: library/json.rst:476 msgid "number" msgstr "" -#: library/json.rst:480 +#: library/json.rst:485 msgid "Added support for int- and float-derived Enum classes." msgstr "" -#: library/json.rst:483 +#: library/json.rst:488 msgid "" "To extend this to recognize other objects, subclass and implement a :meth:" "`~JSONEncoder.default` method with another method that returns a " @@ -654,7 +661,7 @@ msgid "" "superclass implementation (to raise :exc:`TypeError`)." msgstr "" -#: library/json.rst:488 +#: library/json.rst:493 msgid "" "If *skipkeys* is false (the default), a :exc:`TypeError` will be raised when " "trying to encode keys that are not :class:`str`, :class:`int`, :class:" @@ -662,14 +669,14 @@ msgid "" "simply skipped." msgstr "" -#: library/json.rst:492 +#: library/json.rst:497 msgid "" "If *ensure_ascii* is true (the default), the output is guaranteed to have " "all incoming non-ASCII characters escaped. If *ensure_ascii* is false, " "these characters will be output as-is." msgstr "" -#: library/json.rst:496 +#: library/json.rst:501 msgid "" "If *check_circular* is true (the default), then lists, dicts, and custom " "encoded objects will be checked for circular references during encoding to " @@ -677,7 +684,7 @@ msgid "" "Otherwise, no such check takes place." msgstr "" -#: library/json.rst:501 +#: library/json.rst:506 msgid "" "If *allow_nan* is true (the default), then ``NaN``, ``Infinity``, and ``-" "Infinity`` will be encoded as such. This behavior is not JSON specification " @@ -685,14 +692,14 @@ msgid "" "decoders. Otherwise, it will be a :exc:`ValueError` to encode such floats." msgstr "" -#: library/json.rst:507 +#: library/json.rst:512 msgid "" "If *sort_keys* is true (default: ``False``), then the output of dictionaries " "will be sorted by key; this is useful for regression tests to ensure that " "JSON serializations can be compared on a day-to-day basis." msgstr "" -#: library/json.rst:511 +#: library/json.rst:516 msgid "" "If *indent* is a non-negative integer or string, then JSON array elements " "and object members will be pretty-printed with that indent level. An indent " @@ -702,7 +709,7 @@ msgid "" "``\"\\t\"``), that string is used to indent each level." msgstr "" -#: library/json.rst:521 +#: library/json.rst:526 msgid "" "If specified, *separators* should be an ``(item_separator, key_separator)`` " "tuple. The default is ``(', ', ': ')`` if *indent* is ``None`` and ``(',', " @@ -710,7 +717,7 @@ msgid "" "specify ``(',', ':')`` to eliminate whitespace." msgstr "" -#: library/json.rst:529 +#: library/json.rst:534 msgid "" "If specified, *default* should be a function that gets called for objects " "that can't otherwise be serialized. It should return a JSON encodable " @@ -718,20 +725,20 @@ msgid "" "`TypeError` is raised." msgstr "" -#: library/json.rst:540 +#: library/json.rst:545 msgid "" "Implement this method in a subclass such that it returns a serializable " "object for *o*, or calls the base implementation (to raise a :exc:" "`TypeError`)." msgstr "" -#: library/json.rst:544 +#: library/json.rst:549 msgid "" "For example, to support arbitrary iterators, you could implement :meth:" "`~JSONEncoder.default` like this::" msgstr "" -#: library/json.rst:547 +#: library/json.rst:552 msgid "" "def default(self, o):\n" " try:\n" @@ -744,63 +751,63 @@ msgid "" " return super().default(o)" msgstr "" -#: library/json.rst:560 +#: library/json.rst:565 msgid "" "Return a JSON string representation of a Python data structure, *o*. For " "example::" msgstr "" -#: library/json.rst:563 +#: library/json.rst:568 msgid "" ">>> json.JSONEncoder().encode({\"foo\": [\"bar\", \"baz\"]})\n" "'{\"foo\": [\"bar\", \"baz\"]}'" msgstr "" -#: library/json.rst:569 +#: library/json.rst:574 msgid "" "Encode the given object, *o*, and yield each string representation as " "available. For example::" msgstr "" -#: library/json.rst:572 +#: library/json.rst:577 msgid "" "for chunk in json.JSONEncoder().iterencode(bigobject):\n" " mysocket.write(chunk)" msgstr "" -#: library/json.rst:577 +#: library/json.rst:582 msgid "Exceptions" msgstr "" -#: library/json.rst:581 +#: library/json.rst:586 msgid "Subclass of :exc:`ValueError` with the following additional attributes:" msgstr "" -#: library/json.rst:585 +#: library/json.rst:590 msgid "The unformatted error message." msgstr "" -#: library/json.rst:589 +#: library/json.rst:594 msgid "The JSON document being parsed." msgstr "" -#: library/json.rst:593 +#: library/json.rst:598 msgid "The start index of *doc* where parsing failed." msgstr "" -#: library/json.rst:597 +#: library/json.rst:602 msgid "The line corresponding to *pos*." msgstr "" -#: library/json.rst:601 +#: library/json.rst:606 msgid "The column corresponding to *pos*." msgstr "" -#: library/json.rst:607 +#: library/json.rst:612 msgid "Standard Compliance and Interoperability" msgstr "" -#: library/json.rst:609 +#: library/json.rst:614 msgid "" "The JSON format is specified by :rfc:`7159` and by `ECMA-404 `_. This " @@ -809,48 +816,48 @@ msgid "" "parameters other than those explicitly mentioned, are not considered." msgstr "" -#: library/json.rst:615 +#: library/json.rst:620 msgid "" "This module does not comply with the RFC in a strict fashion, implementing " "some extensions that are valid JavaScript but not valid JSON. In particular:" msgstr "" -#: library/json.rst:618 +#: library/json.rst:623 msgid "Infinite and NaN number values are accepted and output;" msgstr "" -#: library/json.rst:619 +#: library/json.rst:624 msgid "" "Repeated names within an object are accepted, and only the value of the last " "name-value pair is used." msgstr "" -#: library/json.rst:622 +#: library/json.rst:627 msgid "" "Since the RFC permits RFC-compliant parsers to accept input texts that are " "not RFC-compliant, this module's deserializer is technically RFC-compliant " "under default settings." msgstr "" -#: library/json.rst:627 +#: library/json.rst:632 msgid "Character Encodings" msgstr "" -#: library/json.rst:629 +#: library/json.rst:634 msgid "" "The RFC requires that JSON be represented using either UTF-8, UTF-16, or " "UTF-32, with UTF-8 being the recommended default for maximum " "interoperability." msgstr "" -#: library/json.rst:632 +#: library/json.rst:637 msgid "" "As permitted, though not required, by the RFC, this module's serializer sets " "*ensure_ascii=True* by default, thus escaping the output so that the " "resulting strings only contain ASCII characters." msgstr "" -#: library/json.rst:636 +#: library/json.rst:641 msgid "" "Other than the *ensure_ascii* parameter, this module is defined strictly in " "terms of conversion between Python objects and :class:`Unicode strings " @@ -858,7 +865,7 @@ msgid "" "encodings." msgstr "" -#: library/json.rst:641 +#: library/json.rst:646 msgid "" "The RFC prohibits adding a byte order mark (BOM) to the start of a JSON " "text, and this module's serializer does not add a BOM to its output. The RFC " @@ -867,7 +874,7 @@ msgid "" "an initial BOM is present." msgstr "" -#: library/json.rst:647 +#: library/json.rst:652 msgid "" "The RFC does not explicitly forbid JSON strings which contain byte sequences " "that don't correspond to valid Unicode characters (e.g. unpaired UTF-16 " @@ -876,18 +883,18 @@ msgid "" "class:`str`) code points for such sequences." msgstr "" -#: library/json.rst:655 +#: library/json.rst:660 msgid "Infinite and NaN Number Values" msgstr "" -#: library/json.rst:657 +#: library/json.rst:662 msgid "" "The RFC does not permit the representation of infinite or NaN number values. " "Despite that, by default, this module accepts and outputs ``Infinity``, ``-" "Infinity``, and ``NaN`` as if they were valid JSON number literal values::" msgstr "" -#: library/json.rst:661 +#: library/json.rst:666 msgid "" ">>> # Neither of these calls raises an exception, but the results are not " "valid JSON\n" @@ -902,18 +909,18 @@ msgid "" "nan" msgstr "" -#: library/json.rst:672 +#: library/json.rst:677 msgid "" "In the serializer, the *allow_nan* parameter can be used to alter this " "behavior. In the deserializer, the *parse_constant* parameter can be used " "to alter this behavior." msgstr "" -#: library/json.rst:678 +#: library/json.rst:683 msgid "Repeated Names Within an Object" msgstr "" -#: library/json.rst:680 +#: library/json.rst:685 msgid "" "The RFC specifies that the names within a JSON object should be unique, but " "does not mandate how repeated names in JSON objects should be handled. By " @@ -921,22 +928,22 @@ msgid "" "but the last name-value pair for a given name::" msgstr "" -#: library/json.rst:685 +#: library/json.rst:690 msgid "" ">>> weird_json = '{\"x\": 1, \"x\": 2, \"x\": 3}'\n" ">>> json.loads(weird_json)\n" "{'x': 3}" msgstr "" -#: library/json.rst:689 +#: library/json.rst:694 msgid "The *object_pairs_hook* parameter can be used to alter this behavior." msgstr "" -#: library/json.rst:693 +#: library/json.rst:698 msgid "Top-level Non-Object, Non-Array Values" msgstr "" -#: library/json.rst:695 +#: library/json.rst:700 msgid "" "The old version of JSON specified by the obsolete :rfc:`4627` required that " "the top-level value of a JSON text must be either a JSON object or array " @@ -946,43 +953,43 @@ msgid "" "its serializer or its deserializer." msgstr "" -#: library/json.rst:702 +#: library/json.rst:707 msgid "" "Regardless, for maximum interoperability, you may wish to voluntarily adhere " "to the restriction yourself." msgstr "" -#: library/json.rst:707 +#: library/json.rst:712 msgid "Implementation Limitations" msgstr "" -#: library/json.rst:709 +#: library/json.rst:714 msgid "Some JSON deserializer implementations may set limits on:" msgstr "" -#: library/json.rst:711 +#: library/json.rst:716 msgid "the size of accepted JSON texts" msgstr "" -#: library/json.rst:712 +#: library/json.rst:717 msgid "the maximum level of nesting of JSON objects and arrays" msgstr "" -#: library/json.rst:713 +#: library/json.rst:718 msgid "the range and precision of JSON numbers" msgstr "" -#: library/json.rst:714 +#: library/json.rst:719 msgid "the content and maximum length of JSON strings" msgstr "" -#: library/json.rst:716 +#: library/json.rst:721 msgid "" "This module does not impose any such limits beyond those of the relevant " "Python datatypes themselves or the Python interpreter itself." msgstr "" -#: library/json.rst:719 +#: library/json.rst:724 msgid "" "When serializing to JSON, beware any such limitations in applications that " "may consume your JSON. In particular, it is common for JSON numbers to be " @@ -993,28 +1000,28 @@ msgid "" "as :class:`decimal.Decimal`." msgstr "" -#: library/json.rst:732 +#: library/json.rst:737 msgid "Command-line interface" msgstr "" -#: library/json.rst:737 +#: library/json.rst:742 msgid "**Source code:** :source:`Lib/json/tool.py`" msgstr "" -#: library/json.rst:741 +#: library/json.rst:746 msgid "" "The :mod:`json` module can be invoked as a script via ``python -m json`` to " "validate and pretty-print JSON objects. The :mod:`json.tool` submodule " "implements this interface." msgstr "" -#: library/json.rst:745 +#: library/json.rst:750 msgid "" "If the optional ``infile`` and ``outfile`` arguments are not specified, :" "data:`sys.stdin` and :data:`sys.stdout` will be used respectively:" msgstr "" -#: library/json.rst:748 +#: library/json.rst:753 msgid "" "$ echo '{\"json\": \"obj\"}' | python -m json\n" "{\n" @@ -1024,28 +1031,28 @@ msgid "" "Expecting property name enclosed in double quotes: line 1 column 2 (char 1)" msgstr "" -#: library/json.rst:757 +#: library/json.rst:762 msgid "" "The output is now in the same order as the input. Use the :option:`--sort-" "keys` option to sort the output of dictionaries alphabetically by key." msgstr "" -#: library/json.rst:762 +#: library/json.rst:767 msgid "" "The :mod:`json` module may now be directly executed as ``python -m json``. " "For backwards compatibility, invoking the CLI as ``python -m json.tool`` " "remains supported." msgstr "" -#: library/json.rst:769 +#: library/json.rst:774 msgid "Command-line options" msgstr "" -#: library/json.rst:773 +#: library/json.rst:778 msgid "The JSON file to be validated or pretty-printed:" msgstr "" -#: library/json.rst:775 +#: library/json.rst:780 msgid "" "$ python -m json mp_films.json\n" "[\n" @@ -1060,43 +1067,43 @@ msgid "" "]" msgstr "" -#: library/json.rst:789 +#: library/json.rst:794 msgid "If *infile* is not specified, read from :data:`sys.stdin`." msgstr "" -#: library/json.rst:793 +#: library/json.rst:798 msgid "" "Write the output of the *infile* to the given *outfile*. Otherwise, write it " "to :data:`sys.stdout`." msgstr "" -#: library/json.rst:798 +#: library/json.rst:803 msgid "Sort the output of dictionaries alphabetically by key." msgstr "" -#: library/json.rst:804 +#: library/json.rst:809 msgid "" "Disable escaping of non-ascii characters, see :func:`json.dumps` for more " "information." msgstr "" -#: library/json.rst:810 +#: library/json.rst:815 msgid "Parse every input line as separate JSON object." msgstr "" -#: library/json.rst:816 +#: library/json.rst:821 msgid "Mutually exclusive options for whitespace control." msgstr "" -#: library/json.rst:822 +#: library/json.rst:827 msgid "Show the help message." msgstr "" -#: library/json.rst:826 +#: library/json.rst:831 msgid "Footnotes" msgstr "" -#: library/json.rst:827 +#: library/json.rst:832 msgid "" "As noted in `the errata for RFC 7159 `_, JSON permits literal U+2028 (LINE SEPARATOR) " diff --git a/library/keyword.po b/library/keyword.po index 74756f05..65ebc628 100644 --- a/library/keyword.po +++ b/library/keyword.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/language.po b/library/language.po index 0a249664..d03310bf 100644 --- a/library/language.po +++ b/library/language.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/linecache.po b/library/linecache.po index d333c185..07604f0b 100644 --- a/library/linecache.po +++ b/library/linecache.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/locale.po b/library/locale.po index dfef1aa0..2b8430ba 100644 --- a/library/locale.po +++ b/library/locale.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/logging.config.po b/library/logging.config.po index b96b48ad..629b7cb6 100644 --- a/library/logging.config.po +++ b/library/logging.config.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -765,10 +765,10 @@ msgstr "" #: library/logging.config.rst:551 msgid "" -"You can also specify a special key ``'.'`` whose value is a dictionary is a " -"mapping of attribute names to values. If found, the specified attributes " -"will be set on the user-defined object before it is returned. Thus, with the " -"following configuration::" +"You can also specify a special key ``'.'`` whose value is a mapping of " +"attribute names to values. If found, the specified attributes will be set on " +"the user-defined object before it is returned. Thus, with the following " +"configuration::" msgstr "" #: library/logging.config.rst:556 @@ -813,7 +813,7 @@ msgid "" "handler has been configured) it points to the configured handler instance. " "Thus, ``cfg://handlers.foo`` could resolve to either a dictionary or a " "handler instance. In general, it is wise to name handlers in a way such that " -"dependent handlers are configured _after_ any handlers they depend on; that " +"dependent handlers are configured *after* any handlers they depend on; that " "allows something like ``cfg://handlers.foo`` to be used in configuring a " "handler that depends on handler ``foo``. If that dependent handler were " "named ``bar``, problems would result, because the configuration of ``bar`` " diff --git a/library/logging.handlers.po b/library/logging.handlers.po index 270da3ca..f963db53 100644 --- a/library/logging.handlers.po +++ b/library/logging.handlers.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -145,14 +145,14 @@ msgid "" msgstr "" #: library/logging.handlers.rst:105 library/logging.handlers.rst:190 -#: library/logging.handlers.rst:338 library/logging.handlers.rst:444 +#: library/logging.handlers.rst:338 library/logging.handlers.rst:448 msgid "" "As well as string values, :class:`~pathlib.Path` objects are also accepted " "for the *filename* argument." msgstr "" #: library/logging.handlers.rst:109 library/logging.handlers.rst:194 -#: library/logging.handlers.rst:342 library/logging.handlers.rst:448 +#: library/logging.handlers.rst:342 library/logging.handlers.rst:452 msgid "The *errors* parameter was added." msgstr "" @@ -413,7 +413,7 @@ msgid "" "they are renamed to :file:`app.log.2`, :file:`app.log.3` etc. respectively." msgstr "" -#: library/logging.handlers.rst:347 library/logging.handlers.rst:453 +#: library/logging.handlers.rst:347 library/logging.handlers.rst:457 msgid "Does a rollover, as described above." msgstr "" @@ -423,18 +423,24 @@ msgid "" "previously." msgstr "" -#: library/logging.handlers.rst:358 +#: library/logging.handlers.rst:357 +msgid "" +"See if the supplied record would cause the file to exceed the configured " +"size limit." +msgstr "" + +#: library/logging.handlers.rst:362 msgid "TimedRotatingFileHandler" msgstr "" -#: library/logging.handlers.rst:360 +#: library/logging.handlers.rst:364 msgid "" "The :class:`TimedRotatingFileHandler` class, located in the :mod:`logging." "handlers` module, supports rotation of disk log files at certain timed " "intervals." msgstr "" -#: library/logging.handlers.rst:367 +#: library/logging.handlers.rst:371 msgid "" "Returns a new instance of the :class:`TimedRotatingFileHandler` class. The " "specified file is opened and used as the stream for logging. On rotating it " @@ -442,89 +448,89 @@ msgid "" "*when* and *interval*." msgstr "" -#: library/logging.handlers.rst:372 +#: library/logging.handlers.rst:376 msgid "" "You can use the *when* to specify the type of *interval*. The list of " "possible values is below. Note that they are not case sensitive." msgstr "" -#: library/logging.handlers.rst:376 +#: library/logging.handlers.rst:380 msgid "Value" msgstr "" -#: library/logging.handlers.rst:376 +#: library/logging.handlers.rst:380 msgid "Type of interval" msgstr "" -#: library/logging.handlers.rst:376 +#: library/logging.handlers.rst:380 msgid "If/how *atTime* is used" msgstr "" -#: library/logging.handlers.rst:378 +#: library/logging.handlers.rst:382 msgid "``'S'``" msgstr "" -#: library/logging.handlers.rst:378 +#: library/logging.handlers.rst:382 msgid "Seconds" msgstr "" -#: library/logging.handlers.rst:378 library/logging.handlers.rst:380 #: library/logging.handlers.rst:382 library/logging.handlers.rst:384 +#: library/logging.handlers.rst:386 library/logging.handlers.rst:388 msgid "Ignored" msgstr "" -#: library/logging.handlers.rst:380 +#: library/logging.handlers.rst:384 msgid "``'M'``" msgstr "" -#: library/logging.handlers.rst:380 +#: library/logging.handlers.rst:384 msgid "Minutes" msgstr "" -#: library/logging.handlers.rst:382 +#: library/logging.handlers.rst:386 msgid "``'H'``" msgstr "" -#: library/logging.handlers.rst:382 +#: library/logging.handlers.rst:386 msgid "Hours" msgstr "" -#: library/logging.handlers.rst:384 +#: library/logging.handlers.rst:388 msgid "``'D'``" msgstr "" -#: library/logging.handlers.rst:384 +#: library/logging.handlers.rst:388 msgid "Days" msgstr "" -#: library/logging.handlers.rst:386 +#: library/logging.handlers.rst:390 msgid "``'W0'-'W6'``" msgstr "" -#: library/logging.handlers.rst:386 +#: library/logging.handlers.rst:390 msgid "Weekday (0=Monday)" msgstr "" -#: library/logging.handlers.rst:386 library/logging.handlers.rst:389 +#: library/logging.handlers.rst:390 library/logging.handlers.rst:393 msgid "Used to compute initial rollover time" msgstr "" -#: library/logging.handlers.rst:389 +#: library/logging.handlers.rst:393 msgid "``'midnight'``" msgstr "" -#: library/logging.handlers.rst:389 +#: library/logging.handlers.rst:393 msgid "Roll over at midnight, if *atTime* not specified, else at time *atTime*" msgstr "" -#: library/logging.handlers.rst:394 +#: library/logging.handlers.rst:398 msgid "" "When using weekday-based rotation, specify 'W0' for Monday, 'W1' for " "Tuesday, and so on up to 'W6' for Sunday. In this case, the value passed for " "*interval* isn't used." msgstr "" -#: library/logging.handlers.rst:398 +#: library/logging.handlers.rst:402 msgid "" "The system will save old log files by appending extensions to the filename. " "The extensions are date-and-time based, using the strftime format ``%Y-%m-" @@ -532,20 +538,20 @@ msgid "" "interval." msgstr "" -#: library/logging.handlers.rst:403 +#: library/logging.handlers.rst:407 msgid "" "When computing the next rollover time for the first time (when the handler " "is created), the last modification time of an existing log file, or else the " "current time, is used to compute when the next rotation will occur." msgstr "" -#: library/logging.handlers.rst:407 +#: library/logging.handlers.rst:411 msgid "" "If the *utc* argument is true, times in UTC will be used; otherwise local " "time is used." msgstr "" -#: library/logging.handlers.rst:410 +#: library/logging.handlers.rst:414 msgid "" "If *backupCount* is nonzero, at most *backupCount* files will be kept, and " "if more would be created when rollover occurs, the oldest one is deleted. " @@ -553,13 +559,13 @@ msgid "" "changing the interval may leave old files lying around." msgstr "" -#: library/logging.handlers.rst:415 +#: library/logging.handlers.rst:419 msgid "" "If *delay* is true, then file opening is deferred until the first call to :" "meth:`emit`." msgstr "" -#: library/logging.handlers.rst:418 +#: library/logging.handlers.rst:422 msgid "" "If *atTime* is not ``None``, it must be a ``datetime.time`` instance which " "specifies the time of day when rollover occurs, for the cases where rollover " @@ -569,13 +575,13 @@ msgid "" "normal interval calculation." msgstr "" -#: library/logging.handlers.rst:425 +#: library/logging.handlers.rst:429 msgid "" "If *errors* is specified, it's used to determine how encoding errors are " "handled." msgstr "" -#: library/logging.handlers.rst:428 +#: library/logging.handlers.rst:432 msgid "" "Calculation of the initial rollover time is done when the handler is " "initialised. Calculation of subsequent rollover times is done only when " @@ -590,51 +596,56 @@ msgid "" "to the minutes where no output (and hence no rollover) occurred." msgstr "" -#: library/logging.handlers.rst:441 +#: library/logging.handlers.rst:445 msgid "*atTime* parameter was added." msgstr "" -#: library/logging.handlers.rst:457 +#: library/logging.handlers.rst:461 msgid "" "Outputs the record to the file, catering for rollover as described above." msgstr "" -#: library/logging.handlers.rst:461 +#: library/logging.handlers.rst:465 msgid "" "Returns a list of filenames which should be deleted as part of rollover. " -"These are the absolute paths of the oldest backup log files written by the " -"handler." +"These" msgstr "" -#: library/logging.handlers.rst:467 +#: library/logging.handlers.rst:469 +msgid "" +"See if enough time has passed for a rollover to occur and if it has, compute " +"the next rollover time." +msgstr "" + +#: library/logging.handlers.rst:475 msgid "SocketHandler" msgstr "" -#: library/logging.handlers.rst:469 +#: library/logging.handlers.rst:477 msgid "" "The :class:`SocketHandler` class, located in the :mod:`logging.handlers` " "module, sends logging output to a network socket. The base class uses a TCP " "socket." msgstr "" -#: library/logging.handlers.rst:475 +#: library/logging.handlers.rst:483 msgid "" "Returns a new instance of the :class:`SocketHandler` class intended to " "communicate with a remote machine whose address is given by *host* and " "*port*." msgstr "" -#: library/logging.handlers.rst:478 +#: library/logging.handlers.rst:486 msgid "" "If ``port`` is specified as ``None``, a Unix domain socket is created using " "the value in ``host`` - otherwise, a TCP socket is created." msgstr "" -#: library/logging.handlers.rst:484 +#: library/logging.handlers.rst:492 msgid "Closes the socket." msgstr "" -#: library/logging.handlers.rst:489 +#: library/logging.handlers.rst:497 msgid "" "Pickles the record's attribute dictionary and writes it to the socket in " "binary format. If there is an error with the socket, silently drops the " @@ -643,35 +654,35 @@ msgid "" "`~logging.LogRecord`, use the :func:`~logging.makeLogRecord` function." msgstr "" -#: library/logging.handlers.rst:499 +#: library/logging.handlers.rst:507 msgid "" "Handles an error which has occurred during :meth:`emit`. The most likely " "cause is a lost connection. Closes the socket so that we can retry on the " "next event." msgstr "" -#: library/logging.handlers.rst:506 +#: library/logging.handlers.rst:514 msgid "" "This is a factory method which allows subclasses to define the precise type " "of socket they want. The default implementation creates a TCP socket (:const:" "`socket.SOCK_STREAM`)." msgstr "" -#: library/logging.handlers.rst:513 +#: library/logging.handlers.rst:521 msgid "" "Pickles the record's attribute dictionary in binary format with a length " "prefix, and returns it ready for transmission across the socket. The details " "of this operation are equivalent to::" msgstr "" -#: library/logging.handlers.rst:517 +#: library/logging.handlers.rst:525 msgid "" "data = pickle.dumps(record_attr_dict, 1)\n" "datalen = struct.pack('>L', len(data))\n" "return datalen + data" msgstr "" -#: library/logging.handlers.rst:521 +#: library/logging.handlers.rst:529 msgid "" "Note that pickles aren't completely secure. If you are concerned about " "security, you may want to override this method to implement a more secure " @@ -680,20 +691,20 @@ msgid "" "objects on the receiving end." msgstr "" -#: library/logging.handlers.rst:530 +#: library/logging.handlers.rst:538 msgid "" "Send a pickled byte-string *packet* to the socket. The format of the sent " "byte-string is as described in the documentation for :meth:`~SocketHandler." "makePickle`." msgstr "" -#: library/logging.handlers.rst:534 +#: library/logging.handlers.rst:542 msgid "" "This function allows for partial sends, which can happen when the network is " "busy." msgstr "" -#: library/logging.handlers.rst:540 +#: library/logging.handlers.rst:548 msgid "" "Tries to create a socket; on failure, uses an exponential back-off " "algorithm. On initial failure, the handler will drop the message it was " @@ -704,23 +715,23 @@ msgid "" "each time up to a maximum of 30 seconds." msgstr "" -#: library/logging.handlers.rst:548 +#: library/logging.handlers.rst:556 msgid "This behaviour is controlled by the following handler attributes:" msgstr "" -#: library/logging.handlers.rst:550 +#: library/logging.handlers.rst:558 msgid "``retryStart`` (initial delay, defaulting to 1.0 seconds)." msgstr "" -#: library/logging.handlers.rst:551 +#: library/logging.handlers.rst:559 msgid "``retryFactor`` (multiplier, defaulting to 2.0)." msgstr "" -#: library/logging.handlers.rst:552 +#: library/logging.handlers.rst:560 msgid "``retryMax`` (maximum delay, defaulting to 30.0 seconds)." msgstr "" -#: library/logging.handlers.rst:554 +#: library/logging.handlers.rst:562 msgid "" "This means that if the remote listener starts up *after* the handler has " "been used, you could lose messages (since the handler won't even attempt a " @@ -728,25 +739,25 @@ msgid "" "during the delay period)." msgstr "" -#: library/logging.handlers.rst:563 +#: library/logging.handlers.rst:571 msgid "DatagramHandler" msgstr "" -#: library/logging.handlers.rst:565 +#: library/logging.handlers.rst:573 msgid "" "The :class:`DatagramHandler` class, located in the :mod:`logging.handlers` " "module, inherits from :class:`SocketHandler` to support sending logging " "messages over UDP sockets." msgstr "" -#: library/logging.handlers.rst:572 +#: library/logging.handlers.rst:580 msgid "" "Returns a new instance of the :class:`DatagramHandler` class intended to " "communicate with a remote machine whose address is given by *host* and " "*port*." msgstr "" -#: library/logging.handlers.rst:575 +#: library/logging.handlers.rst:583 msgid "" "As UDP is not a streaming protocol, there is no persistent connection " "between an instance of this handler and *host*. For this reason, when using " @@ -756,13 +767,13 @@ msgid "" "looked-up IP address rather than the hostname." msgstr "" -#: library/logging.handlers.rst:582 +#: library/logging.handlers.rst:590 msgid "" "If ``port`` is specified as ``None``, a Unix domain socket is created using " "the value in ``host`` - otherwise, a UDP socket is created." msgstr "" -#: library/logging.handlers.rst:588 +#: library/logging.handlers.rst:596 msgid "" "Pickles the record's attribute dictionary and writes it to the socket in " "binary format. If there is an error with the socket, silently drops the " @@ -770,29 +781,29 @@ msgid "" "LogRecord`, use the :func:`~logging.makeLogRecord` function." msgstr "" -#: library/logging.handlers.rst:597 +#: library/logging.handlers.rst:605 msgid "" "The factory method of :class:`SocketHandler` is here overridden to create a " "UDP socket (:const:`socket.SOCK_DGRAM`)." msgstr "" -#: library/logging.handlers.rst:603 +#: library/logging.handlers.rst:611 msgid "" "Send a pickled byte-string to a socket. The format of the sent byte-string " "is as described in the documentation for :meth:`SocketHandler.makePickle`." msgstr "" -#: library/logging.handlers.rst:610 +#: library/logging.handlers.rst:618 msgid "SysLogHandler" msgstr "" -#: library/logging.handlers.rst:612 +#: library/logging.handlers.rst:620 msgid "" "The :class:`SysLogHandler` class, located in the :mod:`logging.handlers` " "module, supports sending logging messages to a remote or local Unix syslog." msgstr "" -#: library/logging.handlers.rst:618 +#: library/logging.handlers.rst:626 msgid "" "Returns a new instance of the :class:`SysLogHandler` class intended to " "communicate with a remote Unix machine whose address is given by *address* " @@ -811,7 +822,7 @@ msgid "" "applied." msgstr "" -#: library/logging.handlers.rst:635 +#: library/logging.handlers.rst:643 msgid "" "Note that if your server is not listening on UDP port 514, :class:" "`SysLogHandler` may appear not to work. In that case, check what address you " @@ -822,30 +833,30 @@ msgid "" "platforms). On Windows, you pretty much have to use the UDP option." msgstr "" -#: library/logging.handlers.rst:644 +#: library/logging.handlers.rst:652 msgid "" "On macOS 12.x (Monterey), Apple has changed the behaviour of their syslog " "daemon - it no longer listens on a domain socket. Therefore, you cannot " "expect :class:`SysLogHandler` to work on this system." msgstr "" -#: library/logging.handlers.rst:648 +#: library/logging.handlers.rst:656 msgid "See :gh:`91070` for more information." msgstr "" -#: library/logging.handlers.rst:650 +#: library/logging.handlers.rst:658 msgid "*socktype* was added." msgstr "" -#: library/logging.handlers.rst:653 +#: library/logging.handlers.rst:661 msgid "*timeout* was added." msgstr "" -#: library/logging.handlers.rst:658 +#: library/logging.handlers.rst:666 msgid "Closes the socket to the remote host." msgstr "" -#: library/logging.handlers.rst:662 +#: library/logging.handlers.rst:670 msgid "" "Tries to create a socket and, if it's not a datagram socket, connect it to " "the other end. This method is called during handler initialization, but it's " @@ -854,13 +865,13 @@ msgid "" "socket at that point." msgstr "" -#: library/logging.handlers.rst:672 +#: library/logging.handlers.rst:680 msgid "" "The record is formatted, and then sent to the syslog server. If exception " "information is present, it is *not* sent to the server." msgstr "" -#: library/logging.handlers.rst:675 +#: library/logging.handlers.rst:683 msgid "" "(See: :issue:`12168`.) In earlier versions, the message sent to the syslog " "daemons was always terminated with a NUL byte, because early versions of " @@ -871,7 +882,7 @@ msgid "" "byte on as part of the message." msgstr "" -#: library/logging.handlers.rst:684 +#: library/logging.handlers.rst:692 msgid "" "To enable easier handling of syslog messages in the face of all these " "differing daemon behaviours, the appending of the NUL byte has been made " @@ -881,7 +892,7 @@ msgid "" "*not* append the NUL terminator." msgstr "" -#: library/logging.handlers.rst:691 +#: library/logging.handlers.rst:699 msgid "" "(See: :issue:`12419`.) In earlier versions, there was no facility for an " "\"ident\" or \"tag\" prefix to identify the source of the message. This can " @@ -892,260 +903,260 @@ msgid "" "bytes, and is prepended to the message exactly as is." msgstr "" -#: library/logging.handlers.rst:702 +#: library/logging.handlers.rst:710 msgid "" "Encodes the facility and priority into an integer. You can pass in strings " "or integers - if strings are passed, internal mapping dictionaries are used " "to convert them to integers." msgstr "" -#: library/logging.handlers.rst:706 +#: library/logging.handlers.rst:714 msgid "" "The symbolic ``LOG_`` values are defined in :class:`SysLogHandler` and " "mirror the values defined in the ``sys/syslog.h`` header file." msgstr "" -#: library/logging.handlers.rst:709 +#: library/logging.handlers.rst:717 msgid "**Priorities**" msgstr "" -#: library/logging.handlers.rst:712 library/logging.handlers.rst:734 +#: library/logging.handlers.rst:720 library/logging.handlers.rst:742 msgid "Name (string)" msgstr "" -#: library/logging.handlers.rst:712 library/logging.handlers.rst:734 +#: library/logging.handlers.rst:720 library/logging.handlers.rst:742 msgid "Symbolic value" msgstr "" -#: library/logging.handlers.rst:714 +#: library/logging.handlers.rst:722 msgid "``alert``" msgstr "" -#: library/logging.handlers.rst:714 +#: library/logging.handlers.rst:722 msgid "LOG_ALERT" msgstr "" -#: library/logging.handlers.rst:716 +#: library/logging.handlers.rst:724 msgid "``crit`` or ``critical``" msgstr "" -#: library/logging.handlers.rst:716 +#: library/logging.handlers.rst:724 msgid "LOG_CRIT" msgstr "" -#: library/logging.handlers.rst:718 +#: library/logging.handlers.rst:726 msgid "``debug``" msgstr "" -#: library/logging.handlers.rst:718 +#: library/logging.handlers.rst:726 msgid "LOG_DEBUG" msgstr "" -#: library/logging.handlers.rst:720 +#: library/logging.handlers.rst:728 msgid "``emerg`` or ``panic``" msgstr "" -#: library/logging.handlers.rst:720 +#: library/logging.handlers.rst:728 msgid "LOG_EMERG" msgstr "" -#: library/logging.handlers.rst:722 +#: library/logging.handlers.rst:730 msgid "``err`` or ``error``" msgstr "" -#: library/logging.handlers.rst:722 +#: library/logging.handlers.rst:730 msgid "LOG_ERR" msgstr "" -#: library/logging.handlers.rst:724 +#: library/logging.handlers.rst:732 msgid "``info``" msgstr "" -#: library/logging.handlers.rst:724 +#: library/logging.handlers.rst:732 msgid "LOG_INFO" msgstr "" -#: library/logging.handlers.rst:726 +#: library/logging.handlers.rst:734 msgid "``notice``" msgstr "" -#: library/logging.handlers.rst:726 +#: library/logging.handlers.rst:734 msgid "LOG_NOTICE" msgstr "" -#: library/logging.handlers.rst:728 +#: library/logging.handlers.rst:736 msgid "``warn`` or ``warning``" msgstr "" -#: library/logging.handlers.rst:728 +#: library/logging.handlers.rst:736 msgid "LOG_WARNING" msgstr "" -#: library/logging.handlers.rst:731 +#: library/logging.handlers.rst:739 msgid "**Facilities**" msgstr "" -#: library/logging.handlers.rst:736 +#: library/logging.handlers.rst:744 msgid "``auth``" msgstr "" -#: library/logging.handlers.rst:736 +#: library/logging.handlers.rst:744 msgid "LOG_AUTH" msgstr "" -#: library/logging.handlers.rst:738 +#: library/logging.handlers.rst:746 msgid "``authpriv``" msgstr "" -#: library/logging.handlers.rst:738 +#: library/logging.handlers.rst:746 msgid "LOG_AUTHPRIV" msgstr "" -#: library/logging.handlers.rst:740 +#: library/logging.handlers.rst:748 msgid "``cron``" msgstr "" -#: library/logging.handlers.rst:740 +#: library/logging.handlers.rst:748 msgid "LOG_CRON" msgstr "" -#: library/logging.handlers.rst:742 +#: library/logging.handlers.rst:750 msgid "``daemon``" msgstr "" -#: library/logging.handlers.rst:742 +#: library/logging.handlers.rst:750 msgid "LOG_DAEMON" msgstr "" -#: library/logging.handlers.rst:744 +#: library/logging.handlers.rst:752 msgid "``ftp``" msgstr "" -#: library/logging.handlers.rst:744 +#: library/logging.handlers.rst:752 msgid "LOG_FTP" msgstr "" -#: library/logging.handlers.rst:746 +#: library/logging.handlers.rst:754 msgid "``kern``" msgstr "" -#: library/logging.handlers.rst:746 +#: library/logging.handlers.rst:754 msgid "LOG_KERN" msgstr "" -#: library/logging.handlers.rst:748 +#: library/logging.handlers.rst:756 msgid "``lpr``" msgstr "" -#: library/logging.handlers.rst:748 +#: library/logging.handlers.rst:756 msgid "LOG_LPR" msgstr "" -#: library/logging.handlers.rst:750 +#: library/logging.handlers.rst:758 msgid "``mail``" msgstr "" -#: library/logging.handlers.rst:750 +#: library/logging.handlers.rst:758 msgid "LOG_MAIL" msgstr "" -#: library/logging.handlers.rst:752 +#: library/logging.handlers.rst:760 msgid "``news``" msgstr "" -#: library/logging.handlers.rst:752 +#: library/logging.handlers.rst:760 msgid "LOG_NEWS" msgstr "" -#: library/logging.handlers.rst:754 +#: library/logging.handlers.rst:762 msgid "``syslog``" msgstr "" -#: library/logging.handlers.rst:754 +#: library/logging.handlers.rst:762 msgid "LOG_SYSLOG" msgstr "" -#: library/logging.handlers.rst:756 +#: library/logging.handlers.rst:764 msgid "``user``" msgstr "" -#: library/logging.handlers.rst:756 +#: library/logging.handlers.rst:764 msgid "LOG_USER" msgstr "" -#: library/logging.handlers.rst:758 +#: library/logging.handlers.rst:766 msgid "``uucp``" msgstr "" -#: library/logging.handlers.rst:758 +#: library/logging.handlers.rst:766 msgid "LOG_UUCP" msgstr "" -#: library/logging.handlers.rst:760 +#: library/logging.handlers.rst:768 msgid "``local0``" msgstr "" -#: library/logging.handlers.rst:760 +#: library/logging.handlers.rst:768 msgid "LOG_LOCAL0" msgstr "" -#: library/logging.handlers.rst:762 +#: library/logging.handlers.rst:770 msgid "``local1``" msgstr "" -#: library/logging.handlers.rst:762 +#: library/logging.handlers.rst:770 msgid "LOG_LOCAL1" msgstr "" -#: library/logging.handlers.rst:764 +#: library/logging.handlers.rst:772 msgid "``local2``" msgstr "" -#: library/logging.handlers.rst:764 +#: library/logging.handlers.rst:772 msgid "LOG_LOCAL2" msgstr "" -#: library/logging.handlers.rst:766 +#: library/logging.handlers.rst:774 msgid "``local3``" msgstr "" -#: library/logging.handlers.rst:766 +#: library/logging.handlers.rst:774 msgid "LOG_LOCAL3" msgstr "" -#: library/logging.handlers.rst:768 +#: library/logging.handlers.rst:776 msgid "``local4``" msgstr "" -#: library/logging.handlers.rst:768 +#: library/logging.handlers.rst:776 msgid "LOG_LOCAL4" msgstr "" -#: library/logging.handlers.rst:770 +#: library/logging.handlers.rst:778 msgid "``local5``" msgstr "" -#: library/logging.handlers.rst:770 +#: library/logging.handlers.rst:778 msgid "LOG_LOCAL5" msgstr "" -#: library/logging.handlers.rst:772 +#: library/logging.handlers.rst:780 msgid "``local6``" msgstr "" -#: library/logging.handlers.rst:772 +#: library/logging.handlers.rst:780 msgid "LOG_LOCAL6" msgstr "" -#: library/logging.handlers.rst:774 +#: library/logging.handlers.rst:782 msgid "``local7``" msgstr "" -#: library/logging.handlers.rst:774 +#: library/logging.handlers.rst:782 msgid "LOG_LOCAL7" msgstr "" -#: library/logging.handlers.rst:779 +#: library/logging.handlers.rst:787 msgid "" "Maps a logging level name to a syslog priority name. You may need to " "override this if you are using custom levels, or if the default algorithm is " @@ -1154,11 +1165,11 @@ msgid "" "all other level names to 'warning'." msgstr "" -#: library/logging.handlers.rst:789 +#: library/logging.handlers.rst:797 msgid "NTEventLogHandler" msgstr "" -#: library/logging.handlers.rst:791 +#: library/logging.handlers.rst:799 msgid "" "The :class:`NTEventLogHandler` class, located in the :mod:`logging.handlers` " "module, supports sending logging messages to a local Windows NT, Windows " @@ -1166,7 +1177,7 @@ msgid "" "Win32 extensions for Python installed." msgstr "" -#: library/logging.handlers.rst:799 +#: library/logging.handlers.rst:807 msgid "" "Returns a new instance of the :class:`NTEventLogHandler` class. The " "*appname* is used to define the application name as it appears in the event " @@ -1182,7 +1193,7 @@ msgid "" "or ``'Security'``, and defaults to ``'Application'``." msgstr "" -#: library/logging.handlers.rst:815 +#: library/logging.handlers.rst:823 msgid "" "At this point, you can remove the application name from the registry as a " "source of event log entries. However, if you do this, you will not be able " @@ -1191,19 +1202,19 @@ msgid "" "not do this." msgstr "" -#: library/logging.handlers.rst:824 +#: library/logging.handlers.rst:832 msgid "" "Determines the message ID, event category and event type, and then logs the " "message in the NT event log." msgstr "" -#: library/logging.handlers.rst:830 +#: library/logging.handlers.rst:838 msgid "" "Returns the event category for the record. Override this if you want to " "specify your own categories. This version returns 0." msgstr "" -#: library/logging.handlers.rst:836 +#: library/logging.handlers.rst:844 msgid "" "Returns the event type for the record. Override this if you want to specify " "your own types. This version does a mapping using the handler's typemap " @@ -1214,7 +1225,7 @@ msgid "" "the handler's *typemap* attribute." msgstr "" -#: library/logging.handlers.rst:847 +#: library/logging.handlers.rst:855 msgid "" "Returns the message ID for the record. If you are using your own messages, " "you could do this by having the *msg* passed to the logger being an ID " @@ -1223,17 +1234,17 @@ msgid "" "message ID in :file:`win32service.pyd`." msgstr "" -#: library/logging.handlers.rst:856 +#: library/logging.handlers.rst:864 msgid "SMTPHandler" msgstr "" -#: library/logging.handlers.rst:858 +#: library/logging.handlers.rst:866 msgid "" "The :class:`SMTPHandler` class, located in the :mod:`logging.handlers` " "module, supports sending logging messages to an email address via SMTP." msgstr "" -#: library/logging.handlers.rst:864 +#: library/logging.handlers.rst:872 msgid "" "Returns a new instance of the :class:`SMTPHandler` class. The instance is " "initialized with the from and to addresses and subject line of the email. " @@ -1244,7 +1255,7 @@ msgid "" "*credentials* argument." msgstr "" -#: library/logging.handlers.rst:871 +#: library/logging.handlers.rst:879 msgid "" "To specify the use of a secure protocol (TLS), pass in a tuple to the " "*secure* argument. This will only be used when authentication credentials " @@ -1254,31 +1265,31 @@ msgid "" "SMTP.starttls` method.)" msgstr "" -#: library/logging.handlers.rst:878 +#: library/logging.handlers.rst:886 msgid "" "A timeout can be specified for communication with the SMTP server using the " "*timeout* argument." msgstr "" -#: library/logging.handlers.rst:881 +#: library/logging.handlers.rst:889 msgid "Added the *timeout* parameter." msgstr "" -#: library/logging.handlers.rst:886 +#: library/logging.handlers.rst:894 msgid "Formats the record and sends it to the specified addressees." msgstr "" -#: library/logging.handlers.rst:891 +#: library/logging.handlers.rst:899 msgid "" "If you want to specify a subject line which is record-dependent, override " "this method." msgstr "" -#: library/logging.handlers.rst:897 +#: library/logging.handlers.rst:905 msgid "MemoryHandler" msgstr "" -#: library/logging.handlers.rst:899 +#: library/logging.handlers.rst:907 msgid "" "The :class:`MemoryHandler` class, located in the :mod:`logging.handlers` " "module, supports buffering of logging records in memory, periodically " @@ -1286,7 +1297,7 @@ msgid "" "buffer is full, or when an event of a certain severity or greater is seen." msgstr "" -#: library/logging.handlers.rst:904 +#: library/logging.handlers.rst:912 msgid "" ":class:`MemoryHandler` is a subclass of the more general :class:" "`BufferingHandler`, which is an abstract class. This buffers logging records " @@ -1295,32 +1306,32 @@ msgid "" "should, then :meth:`flush` is expected to do the flushing." msgstr "" -#: library/logging.handlers.rst:913 +#: library/logging.handlers.rst:921 msgid "" "Initializes the handler with a buffer of the specified capacity. Here, " "*capacity* means the number of logging records buffered." msgstr "" -#: library/logging.handlers.rst:919 +#: library/logging.handlers.rst:927 msgid "" "Append the record to the buffer. If :meth:`shouldFlush` returns true, call :" "meth:`flush` to process the buffer." msgstr "" -#: library/logging.handlers.rst:925 +#: library/logging.handlers.rst:933 msgid "" "For a :class:`BufferingHandler` instance, flushing means that it sets the " "buffer to an empty list. This method can be overwritten to implement more " "useful flushing behavior." msgstr "" -#: library/logging.handlers.rst:932 +#: library/logging.handlers.rst:940 msgid "" "Return ``True`` if the buffer is up to capacity. This method can be " "overridden to implement custom flushing strategies." msgstr "" -#: library/logging.handlers.rst:938 +#: library/logging.handlers.rst:946 msgid "" "Returns a new instance of the :class:`MemoryHandler` class. The instance is " "initialized with a buffer size of *capacity* (number of records buffered). " @@ -1332,15 +1343,15 @@ msgid "" "the buffer will occur when the handler is closed." msgstr "" -#: library/logging.handlers.rst:947 +#: library/logging.handlers.rst:955 msgid "The *flushOnClose* parameter was added." msgstr "" -#: library/logging.handlers.rst:953 +#: library/logging.handlers.rst:961 msgid "Calls :meth:`flush`, sets the target to ``None`` and clears the buffer." msgstr "" -#: library/logging.handlers.rst:959 +#: library/logging.handlers.rst:967 msgid "" "For a :class:`MemoryHandler` instance, flushing means just sending the " "buffered records to the target, if there is one. The buffer is also cleared " @@ -1348,26 +1359,26 @@ msgid "" "behavior." msgstr "" -#: library/logging.handlers.rst:966 +#: library/logging.handlers.rst:974 msgid "Sets the target handler for this handler." msgstr "" -#: library/logging.handlers.rst:971 +#: library/logging.handlers.rst:979 msgid "Checks for buffer full or a record at the *flushLevel* or higher." msgstr "" -#: library/logging.handlers.rst:977 +#: library/logging.handlers.rst:985 msgid "HTTPHandler" msgstr "" -#: library/logging.handlers.rst:979 +#: library/logging.handlers.rst:987 msgid "" "The :class:`HTTPHandler` class, located in the :mod:`logging.handlers` " "module, supports sending logging messages to a web server, using either " "``GET`` or ``POST`` semantics." msgstr "" -#: library/logging.handlers.rst:986 +#: library/logging.handlers.rst:994 msgid "" "Returns a new instance of the :class:`HTTPHandler` class. The *host* can be " "of the form ``host:port``, should you need to use a specific port number. " @@ -1381,11 +1392,11 @@ msgid "" "cleartext across the wire." msgstr "" -#: library/logging.handlers.rst:997 +#: library/logging.handlers.rst:1005 msgid "The *context* parameter was added." msgstr "" -#: library/logging.handlers.rst:1002 +#: library/logging.handlers.rst:1010 msgid "" "Provides a dictionary, based on ``record``, which is to be URL-encoded and " "sent to the web server. The default implementation just returns ``record." @@ -1394,14 +1405,14 @@ msgid "" "customization of what's sent to the server is required." msgstr "" -#: library/logging.handlers.rst:1010 +#: library/logging.handlers.rst:1018 msgid "" "Sends the record to the web server as a URL-encoded dictionary. The :meth:" "`mapLogRecord` method is used to convert the record to the dictionary to be " "sent." msgstr "" -#: library/logging.handlers.rst:1014 +#: library/logging.handlers.rst:1022 msgid "" "Since preparing a record for sending it to a web server is not the same as a " "generic formatting operation, using :meth:`~logging.Handler.setFormatter` to " @@ -1411,18 +1422,18 @@ msgid "" "the dictionary in a form suitable for sending to a web server." msgstr "" -#: library/logging.handlers.rst:1027 +#: library/logging.handlers.rst:1035 msgid "QueueHandler" msgstr "" -#: library/logging.handlers.rst:1031 +#: library/logging.handlers.rst:1039 msgid "" "The :class:`QueueHandler` class, located in the :mod:`logging.handlers` " "module, supports sending logging messages to a queue, such as those " "implemented in the :mod:`queue` or :mod:`multiprocessing` modules." msgstr "" -#: library/logging.handlers.rst:1035 +#: library/logging.handlers.rst:1043 msgid "" "Along with the :class:`QueueListener` class, :class:`QueueHandler` can be " "used to let handlers do their work on a separate thread from the one which " @@ -1432,7 +1443,7 @@ msgid "" "an email via :class:`SMTPHandler`) are done on a separate thread." msgstr "" -#: library/logging.handlers.rst:1044 +#: library/logging.handlers.rst:1052 msgid "" "Returns a new instance of the :class:`QueueHandler` class. The instance is " "initialized with the queue to send messages to. The *queue* can be any queue-" @@ -1442,13 +1453,13 @@ msgid "" "instances for *queue*." msgstr "" -#: library/logging.handlers.rst:1051 library/logging.handlers.rst:1140 +#: library/logging.handlers.rst:1059 library/logging.handlers.rst:1148 msgid "" "If you are using :mod:`multiprocessing`, you should avoid using :class:" "`~queue.SimpleQueue` and instead use :class:`multiprocessing.Queue`." msgstr "" -#: library/logging.handlers.rst:1056 +#: library/logging.handlers.rst:1064 msgid "" "Enqueues the result of preparing the LogRecord. Should an exception occur (e." "g. because a bounded queue has filled up), the :meth:`~logging.Handler." @@ -1458,13 +1469,13 @@ msgid "" "raiseExceptions` is ``True``)." msgstr "" -#: library/logging.handlers.rst:1065 +#: library/logging.handlers.rst:1073 msgid "" "Prepares a record for queuing. The object returned by this method is " "enqueued." msgstr "" -#: library/logging.handlers.rst:1068 +#: library/logging.handlers.rst:1076 msgid "" "The base implementation formats the record to merge the message, arguments, " "exception and stack information, if present. It also removes unpickleable " @@ -1474,14 +1485,14 @@ msgid "" "attr:`exc_info` and :attr:`exc_text` attributes to ``None``." msgstr "" -#: library/logging.handlers.rst:1076 +#: library/logging.handlers.rst:1084 msgid "" "You might want to override this method if you want to convert the record to " "a dict or JSON string, or send a modified copy of the record while leaving " "the original intact." msgstr "" -#: library/logging.handlers.rst:1080 +#: library/logging.handlers.rst:1088 msgid "" "The base implementation formats the message with arguments, sets the " "``message`` and ``msg`` attributes to the formatted message and sets the " @@ -1497,25 +1508,25 @@ msgid "" "libraries that you use.)" msgstr "" -#: library/logging.handlers.rst:1096 +#: library/logging.handlers.rst:1104 msgid "" "Enqueues the record on the queue using ``put_nowait()``; you may want to " "override this if you want to use blocking behaviour, or a timeout, or a " "customized queue implementation." msgstr "" -#: library/logging.handlers.rst:1102 +#: library/logging.handlers.rst:1110 msgid "" "When created via configuration using :func:`~logging.config.dictConfig`, " "this attribute will contain a :class:`QueueListener` instance for use with " "this handler. Otherwise, it will be ``None``." msgstr "" -#: library/logging.handlers.rst:1111 +#: library/logging.handlers.rst:1119 msgid "QueueListener" msgstr "" -#: library/logging.handlers.rst:1115 +#: library/logging.handlers.rst:1123 msgid "" "The :class:`QueueListener` class, located in the :mod:`logging.handlers` " "module, supports receiving logging messages from a queue, such as those " @@ -1526,7 +1537,7 @@ msgid "" "works hand-in-hand with :class:`QueueHandler`." msgstr "" -#: library/logging.handlers.rst:1123 +#: library/logging.handlers.rst:1131 msgid "" "Along with the :class:`QueueHandler` class, :class:`QueueListener` can be " "used to let handlers do their work on a separate thread from the one which " @@ -1536,7 +1547,7 @@ msgid "" "an email via :class:`SMTPHandler`) are done on a separate thread." msgstr "" -#: library/logging.handlers.rst:1132 +#: library/logging.handlers.rst:1140 msgid "" "Returns a new instance of the :class:`QueueListener` class. The instance is " "initialized with the queue to send messages to and a list of handlers which " @@ -1547,7 +1558,7 @@ msgid "" "class:`~queue.SimpleQueue` instances for *queue*." msgstr "" -#: library/logging.handlers.rst:1143 +#: library/logging.handlers.rst:1151 msgid "" "If ``respect_handler_level`` is ``True``, a handler's level is respected " "(compared with the level for the message) when deciding whether to pass " @@ -1555,11 +1566,11 @@ msgid "" "versions - to always pass each message to each handler." msgstr "" -#: library/logging.handlers.rst:1148 +#: library/logging.handlers.rst:1156 msgid "The ``respect_handler_level`` argument was added." msgstr "" -#: library/logging.handlers.rst:1151 +#: library/logging.handlers.rst:1159 msgid "" ":class:`QueueListener` can now be used as a context manager via :keyword:" "`with`. When entering the context, the listener is started. When exiting the " @@ -1567,83 +1578,83 @@ msgid "" "the :class:`QueueListener` object." msgstr "" -#: library/logging.handlers.rst:1160 +#: library/logging.handlers.rst:1168 msgid "Dequeues a record and return it, optionally blocking." msgstr "" -#: library/logging.handlers.rst:1162 +#: library/logging.handlers.rst:1170 msgid "" "The base implementation uses ``get()``. You may want to override this method " "if you want to use timeouts or work with custom queue implementations." msgstr "" -#: library/logging.handlers.rst:1168 +#: library/logging.handlers.rst:1176 msgid "Prepare a record for handling." msgstr "" -#: library/logging.handlers.rst:1170 +#: library/logging.handlers.rst:1178 msgid "" "This implementation just returns the passed-in record. You may want to " "override this method if you need to do any custom marshalling or " "manipulation of the record before passing it to the handlers." msgstr "" -#: library/logging.handlers.rst:1176 +#: library/logging.handlers.rst:1184 msgid "Handle a record." msgstr "" -#: library/logging.handlers.rst:1178 +#: library/logging.handlers.rst:1186 msgid "" "This just loops through the handlers offering them the record to handle. The " "actual object passed to the handlers is that which is returned from :meth:" "`prepare`." msgstr "" -#: library/logging.handlers.rst:1184 +#: library/logging.handlers.rst:1192 msgid "Starts the listener." msgstr "" -#: library/logging.handlers.rst:1186 +#: library/logging.handlers.rst:1194 msgid "" "This starts up a background thread to monitor the queue for LogRecords to " "process." msgstr "" -#: library/logging.handlers.rst:1189 +#: library/logging.handlers.rst:1197 msgid "" "Raises :exc:`RuntimeError` if called and the listener is already running." msgstr "" -#: library/logging.handlers.rst:1195 +#: library/logging.handlers.rst:1203 msgid "Stops the listener." msgstr "" -#: library/logging.handlers.rst:1197 +#: library/logging.handlers.rst:1205 msgid "" "This asks the thread to terminate, and then waits for it to do so. Note that " "if you don't call this before your application exits, there may be some " "records still left on the queue, which won't be processed." msgstr "" -#: library/logging.handlers.rst:1203 +#: library/logging.handlers.rst:1211 msgid "" "Writes a sentinel to the queue to tell the listener to quit. This " "implementation uses ``put_nowait()``. You may want to override this method " "if you want to use timeouts or work with custom queue implementations." msgstr "" -#: library/logging.handlers.rst:1213 +#: library/logging.handlers.rst:1221 msgid "Module :mod:`logging`" msgstr "" -#: library/logging.handlers.rst:1214 +#: library/logging.handlers.rst:1222 msgid "API reference for the logging module." msgstr "" -#: library/logging.handlers.rst:1216 +#: library/logging.handlers.rst:1224 msgid "Module :mod:`logging.config`" msgstr "" -#: library/logging.handlers.rst:1217 +#: library/logging.handlers.rst:1225 msgid "Configuration API for the logging module." msgstr "" diff --git a/library/logging.po b/library/logging.po index 1e035e2c..cafd3d72 100644 --- a/library/logging.po +++ b/library/logging.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/lzma.po b/library/lzma.po index 91b3dd30..0426d947 100644 --- a/library/lzma.po +++ b/library/lzma.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/mailbox.po b/library/mailbox.po index f7017417..06e6e197 100644 --- a/library/mailbox.po +++ b/library/mailbox.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/mailcap.po b/library/mailcap.po index 697ae32f..fc0f15ee 100644 --- a/library/mailcap.po +++ b/library/mailcap.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/markup.po b/library/markup.po index 52567f8e..d93ae1bd 100644 --- a/library/markup.po +++ b/library/markup.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/marshal.po b/library/marshal.po index 0a4db9ce..0836d283 100644 --- a/library/marshal.po +++ b/library/marshal.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/math.po b/library/math.po index e1949671..5835ff7d 100644 --- a/library/math.po +++ b/library/math.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -23,8 +23,8 @@ msgstr "" #: library/math.rst:13 msgid "" -"This module provides access to the mathematical functions defined by the C " -"standard." +"This module provides access to common mathematical functions and constants, " +"including those defined by the C standard." msgstr "" #: library/math.rst:16 @@ -613,23 +613,21 @@ msgid "" "coefficient of k-th term in polynomial expansion of ``(1 + x)ⁿ``." msgstr "" -#: library/math.rst:205 +#: library/math.rst:204 msgid "" "Raises :exc:`TypeError` if either of the arguments are not integers. Raises :" "exc:`ValueError` if either of the arguments are negative." msgstr "" #: library/math.rst:147 -msgid "" -"Return *n* factorial as an integer. Raises :exc:`ValueError` if *n* is not " -"integral or is negative." +msgid "Return factorial of the nonnegative integer *n*." msgstr "" -#: library/math.rst:150 +#: library/math.rst:149 msgid "Floats with integral values (like ``5.0``) are no longer accepted." msgstr "" -#: library/math.rst:156 +#: library/math.rst:155 msgid "" "Return the greatest common divisor of the specified integer arguments. If " "any of the arguments is nonzero, then the returned value is the largest " @@ -638,20 +636,20 @@ msgid "" "``0``." msgstr "" -#: library/math.rst:164 +#: library/math.rst:163 msgid "" "Added support for an arbitrary number of arguments. Formerly, only two " "arguments were supported." msgstr "" -#: library/math.rst:171 +#: library/math.rst:170 msgid "" "Return the integer square root of the nonnegative integer *n*. This is the " "floor of the exact square root of *n*, or equivalently the greatest integer " "*a* such that *a*\\ ² |nbsp| ≤ |nbsp| *n*." msgstr "" -#: library/math.rst:175 +#: library/math.rst:174 msgid "" "For some applications, it may be more convenient to have the least integer " "*a* such that *n* |nbsp| ≤ |nbsp| *a*\\ ², or in other words the ceiling of " @@ -659,7 +657,7 @@ msgid "" "``a = 1 + isqrt(n - 1)``." msgstr "" -#: library/math.rst:185 +#: library/math.rst:184 msgid "" "Return the least common multiple of the specified integer arguments. If all " "arguments are nonzero, then the returned value is the smallest positive " @@ -668,47 +666,47 @@ msgid "" "``1``." msgstr "" -#: library/math.rst:196 +#: library/math.rst:195 msgid "" "Return the number of ways to choose *k* items from *n* items without " "repetition and with order." msgstr "" -#: library/math.rst:199 +#: library/math.rst:198 msgid "" "Evaluates to ``n! / (n - k)!`` when ``k <= n`` and evaluates to zero when " "``k > n``." msgstr "" -#: library/math.rst:202 +#: library/math.rst:201 msgid "" "If *k* is not specified or is ``None``, then *k* defaults to *n* and the " "function returns ``n!``." msgstr "" -#: library/math.rst:212 +#: library/math.rst:211 msgid "Floating point arithmetic" msgstr "" -#: library/math.rst:216 +#: library/math.rst:215 msgid "" "Return the ceiling of *x*, the smallest integer greater than or equal to " "*x*. If *x* is not a float, delegates to :meth:`x.__ceil__ `, which should return an :class:`~numbers.Integral` value." msgstr "" -#: library/math.rst:223 +#: library/math.rst:222 msgid "Return the absolute value of *x*." msgstr "" -#: library/math.rst:228 +#: library/math.rst:227 msgid "" "Return the floor of *x*, the largest integer less than or equal to *x*. If " "*x* is not a float, delegates to :meth:`x.__floor__ `, " "which should return an :class:`~numbers.Integral` value." msgstr "" -#: library/math.rst:235 +#: library/math.rst:234 msgid "" "Fused multiply-add operation. Return ``(x * y) + z``, computed as though " "with infinite precision and range followed by a single round to the " @@ -716,7 +714,7 @@ msgid "" "direct expression ``(x * y) + z``." msgstr "" -#: library/math.rst:240 +#: library/math.rst:239 msgid "" "This function follows the specification of the fusedMultiplyAdd operation " "described in the IEEE 754 standard. The standard leaves one case " @@ -725,7 +723,7 @@ msgid "" "not raise any exception." msgstr "" -#: library/math.rst:251 +#: library/math.rst:250 msgid "" "Return the floating-point remainder of ``x / y``, as defined by the platform " "C library function ``fmod(x, y)``. Note that the Python expression ``x % y`` " @@ -741,13 +739,13 @@ msgid "" "floats, while Python's ``x % y`` is preferred when working with integers." msgstr "" -#: library/math.rst:267 +#: library/math.rst:266 msgid "" "Return the fractional and integer parts of *x*. Both results carry the sign " "of *x* and are floats." msgstr "" -#: library/math.rst:270 +#: library/math.rst:269 msgid "" "Note that :func:`modf` has a different call/return pattern than its C " "equivalents: it takes a single argument and return a pair of values, rather " @@ -755,7 +753,7 @@ msgid "" "is no such thing in Python)." msgstr "" -#: library/math.rst:278 +#: library/math.rst:277 msgid "" "Return the IEEE 754-style remainder of *x* with respect to *y*. For finite " "*x* and finite nonzero *y*, this is the difference ``x - n*y``, where ``n`` " @@ -765,7 +763,7 @@ msgid "" "thus always satisfies ``abs(r) <= 0.5 * abs(y)``." msgstr "" -#: library/math.rst:285 +#: library/math.rst:284 msgid "" "Special cases follow IEEE 754: in particular, ``remainder(x, math.inf)`` is " "*x* for any finite *x*, and ``remainder(x, 0)`` and ``remainder(math.inf, " @@ -773,13 +771,13 @@ msgid "" "remainder operation is zero, that zero will have the same sign as *x*." msgstr "" -#: library/math.rst:291 +#: library/math.rst:290 msgid "" "On platforms using IEEE 754 binary floating point, the result of this " "operation is always exactly representable: no rounding error is introduced." msgstr "" -#: library/math.rst:299 +#: library/math.rst:298 msgid "" "Return *x* with the fractional part removed, leaving the integer part. This " "rounds toward 0: ``trunc()`` is equivalent to :func:`floor` for positive " @@ -788,7 +786,7 @@ msgid "" "class:`~numbers.Integral` value." msgstr "" -#: library/math.rst:306 +#: library/math.rst:305 msgid "" "For the :func:`ceil`, :func:`floor`, and :func:`modf` functions, note that " "*all* floating-point numbers of sufficiently large magnitude are exact " @@ -797,18 +795,18 @@ msgid "" "``abs(x) >= 2**52`` necessarily has no fractional bits." msgstr "" -#: library/math.rst:314 +#: library/math.rst:313 msgid "Floating point manipulation functions" msgstr "" -#: library/math.rst:318 +#: library/math.rst:317 msgid "" "Return a float with the magnitude (absolute value) of *x* but the sign of " "*y*. On platforms that support signed zeros, ``copysign(1.0, -0.0)`` " "returns *-1.0*." msgstr "" -#: library/math.rst:325 +#: library/math.rst:324 msgid "" "Return the mantissa and exponent of *x* as the pair ``(m, e)``. *m* is a " "float and *e* is an integer such that ``x == m * 2**e`` exactly. If *x* is " @@ -816,7 +814,7 @@ msgid "" "to \"pick apart\" the internal representation of a float in a portable way." msgstr "" -#: library/math.rst:330 +#: library/math.rst:329 msgid "" "Note that :func:`frexp` has a different call/return pattern than its C " "equivalents: it takes a single argument and return a pair of values, rather " @@ -824,20 +822,20 @@ msgid "" "is no such thing in Python)." msgstr "" -#: library/math.rst:337 +#: library/math.rst:336 msgid "" "Return ``True`` if the values *a* and *b* are close to each other and " "``False`` otherwise." msgstr "" -#: library/math.rst:340 +#: library/math.rst:339 msgid "" "Whether or not two values are considered close is determined according to " "given absolute and relative tolerances. If no errors occur, the result will " "be: ``abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)``." msgstr "" -#: library/math.rst:344 +#: library/math.rst:343 msgid "" "*rel_tol* is the relative tolerance -- it is the maximum allowed difference " "between *a* and *b*, relative to the larger absolute value of *a* or *b*. " @@ -847,7 +845,7 @@ msgid "" "``1.0``." msgstr "" -#: library/math.rst:351 +#: library/math.rst:350 msgid "" "*abs_tol* is the absolute tolerance; it defaults to ``0.0`` and it must be " "nonnegative. When comparing ``x`` to ``0.0``, ``isclose(x, 0)`` is computed " @@ -856,7 +854,7 @@ msgid "" "argument to the call." msgstr "" -#: library/math.rst:357 +#: library/math.rst:356 msgid "" "The IEEE 754 special values of ``NaN``, ``inf``, and ``-inf`` will be " "handled according to IEEE rules. Specifically, ``NaN`` is not considered " @@ -864,136 +862,136 @@ msgid "" "considered close to themselves." msgstr "" -#: library/math.rst:366 +#: library/math.rst:365 msgid ":pep:`485` -- A function for testing approximate equality" msgstr "" -#: library/math.rst:371 +#: library/math.rst:370 msgid "" "Return ``True`` if *x* is neither an infinity nor a NaN, and ``False`` " "otherwise. (Note that ``0.0`` *is* considered finite.)" msgstr "" -#: library/math.rst:379 +#: library/math.rst:378 msgid "" "Return ``True`` if *x* is a positive or negative infinity, and ``False`` " "otherwise." msgstr "" -#: library/math.rst:385 +#: library/math.rst:384 msgid "" "Return ``True`` if *x* is a NaN (not a number), and ``False`` otherwise." msgstr "" -#: library/math.rst:390 +#: library/math.rst:389 msgid "" "Return ``x * (2**i)``. This is essentially the inverse of function :func:" "`frexp`." msgstr "" -#: library/math.rst:396 +#: library/math.rst:395 msgid "Return the floating-point value *steps* steps after *x* towards *y*." msgstr "" -#: library/math.rst:398 +#: library/math.rst:397 msgid "If *x* is equal to *y*, return *y*, unless *steps* is zero." msgstr "" -#: library/math.rst:400 +#: library/math.rst:399 msgid "Examples:" msgstr "" -#: library/math.rst:402 +#: library/math.rst:401 msgid "``math.nextafter(x, math.inf)`` goes up: towards positive infinity." msgstr "" -#: library/math.rst:403 +#: library/math.rst:402 msgid "``math.nextafter(x, -math.inf)`` goes down: towards minus infinity." msgstr "" -#: library/math.rst:404 +#: library/math.rst:403 msgid "``math.nextafter(x, 0.0)`` goes towards zero." msgstr "" -#: library/math.rst:405 +#: library/math.rst:404 msgid "``math.nextafter(x, math.copysign(math.inf, x))`` goes away from zero." msgstr "" -#: library/math.rst:407 +#: library/math.rst:406 msgid "See also :func:`math.ulp`." msgstr "" -#: library/math.rst:411 +#: library/math.rst:410 msgid "Added the *steps* argument." msgstr "" -#: library/math.rst:417 +#: library/math.rst:416 msgid "Return the value of the least significant bit of the float *x*:" msgstr "" -#: library/math.rst:419 +#: library/math.rst:418 msgid "If *x* is a NaN (not a number), return *x*." msgstr "" -#: library/math.rst:420 +#: library/math.rst:419 msgid "If *x* is negative, return ``ulp(-x)``." msgstr "" -#: library/math.rst:421 +#: library/math.rst:420 msgid "If *x* is a positive infinity, return *x*." msgstr "" -#: library/math.rst:422 +#: library/math.rst:421 msgid "" "If *x* is equal to zero, return the smallest positive *denormalized* " "representable float (smaller than the minimum positive *normalized* float, :" "data:`sys.float_info.min `)." msgstr "" -#: library/math.rst:425 +#: library/math.rst:424 msgid "" "If *x* is equal to the largest positive representable float, return the " "value of the least significant bit of *x*, such that the first float smaller " "than *x* is ``x - ulp(x)``." msgstr "" -#: library/math.rst:428 +#: library/math.rst:427 msgid "" "Otherwise (*x* is a positive finite number), return the value of the least " "significant bit of *x*, such that the first float bigger than *x* is ``x + " "ulp(x)``." msgstr "" -#: library/math.rst:432 +#: library/math.rst:431 msgid "ULP stands for \"Unit in the Last Place\"." msgstr "" -#: library/math.rst:434 +#: library/math.rst:433 msgid "" "See also :func:`math.nextafter` and :data:`sys.float_info.epsilon `." msgstr "" -#: library/math.rst:441 +#: library/math.rst:440 msgid "Power, exponential and logarithmic functions" msgstr "" -#: library/math.rst:445 +#: library/math.rst:444 msgid "Return the cube root of *x*." msgstr "" -#: library/math.rst:452 +#: library/math.rst:451 msgid "" "Return *e* raised to the power *x*, where *e* = 2.718281... is the base of " "natural logarithms. This is usually more accurate than ``math.e ** x`` or " "``pow(math.e, x)``." msgstr "" -#: library/math.rst:459 +#: library/math.rst:458 msgid "Return *2* raised to the power *x*." msgstr "" -#: library/math.rst:466 +#: library/math.rst:465 msgid "" "Return *e* raised to the power *x*, minus 1. Here *e* is the base of " "natural logarithms. For small floats *x*, the subtraction in ``exp(x) - 1`` " @@ -1002,41 +1000,41 @@ msgid "" "compute this quantity to full precision:" msgstr "" -#: library/math.rst:483 +#: library/math.rst:482 msgid "With one argument, return the natural logarithm of *x* (to base *e*)." msgstr "" -#: library/math.rst:485 +#: library/math.rst:484 msgid "" "With two arguments, return the logarithm of *x* to the given *base*, " "calculated as ``log(x)/log(base)``." msgstr "" -#: library/math.rst:491 +#: library/math.rst:490 msgid "" "Return the natural logarithm of *1+x* (base *e*). The result is calculated " "in a way which is accurate for *x* near zero." msgstr "" -#: library/math.rst:497 +#: library/math.rst:496 msgid "" "Return the base-2 logarithm of *x*. This is usually more accurate than " "``log(x, 2)``." msgstr "" -#: library/math.rst:504 +#: library/math.rst:503 msgid "" ":meth:`int.bit_length` returns the number of bits necessary to represent an " "integer in binary, excluding the sign and leading zeros." msgstr "" -#: library/math.rst:510 +#: library/math.rst:509 msgid "" "Return the base-10 logarithm of *x*. This is usually more accurate than " "``log(x, 10)``." msgstr "" -#: library/math.rst:516 +#: library/math.rst:515 msgid "" "Return *x* raised to the power *y*. Exceptional cases follow the IEEE 754 " "standard as far as possible. In particular, ``pow(1.0, x)`` and ``pow(x, " @@ -1045,50 +1043,50 @@ msgid "" "y)`` is undefined, and raises :exc:`ValueError`." msgstr "" -#: library/math.rst:523 +#: library/math.rst:522 msgid "" "Unlike the built-in ``**`` operator, :func:`math.pow` converts both its " "arguments to type :class:`float`. Use ``**`` or the built-in :func:`pow` " "function for computing exact integer powers." msgstr "" -#: library/math.rst:527 +#: library/math.rst:526 msgid "" "The special cases ``pow(0.0, -inf)`` and ``pow(-0.0, -inf)`` were changed to " "return ``inf`` instead of raising :exc:`ValueError`, for consistency with " "IEEE 754." msgstr "" -#: library/math.rst:535 +#: library/math.rst:534 msgid "Return the square root of *x*." msgstr "" -#: library/math.rst:539 +#: library/math.rst:538 msgid "Summation and product functions" msgstr "" -#: library/math.rst:543 +#: library/math.rst:542 msgid "" "Return the Euclidean distance between two points *p* and *q*, each given as " "a sequence (or iterable) of coordinates. The two points must have the same " "dimension." msgstr "" -#: library/math.rst:608 +#: library/math.rst:607 msgid "Roughly equivalent to::" msgstr "" -#: library/math.rst:549 +#: library/math.rst:548 msgid "sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))" msgstr "" -#: library/math.rst:556 +#: library/math.rst:555 msgid "" "Return an accurate floating-point sum of values in the iterable. Avoids " "loss of precision by tracking multiple intermediate partial sums." msgstr "" -#: library/math.rst:559 +#: library/math.rst:558 msgid "" "The algorithm's accuracy depends on IEEE-754 arithmetic guarantees and the " "typical case where the rounding mode is half-even. On some non-Windows " @@ -1097,7 +1095,7 @@ msgid "" "least significant bit." msgstr "" -#: library/math.rst:565 +#: library/math.rst:564 msgid "" "For further discussion and two alternative approaches, see the `ASPN " "cookbook recipes for accurate floating-point summation `_\\." msgstr "" -#: library/math.rst:572 +#: library/math.rst:571 msgid "" "Return the Euclidean norm, ``sqrt(sum(x**2 for x in coordinates))``. This is " "the length of the vector from the origin to the point given by the " "coordinates." msgstr "" -#: library/math.rst:576 +#: library/math.rst:575 msgid "" "For a two dimensional point ``(x, y)``, this is equivalent to computing the " "hypotenuse of a right triangle using the Pythagorean theorem, ``sqrt(x*x + " "y*y)``." msgstr "" -#: library/math.rst:580 +#: library/math.rst:579 msgid "" "Added support for n-dimensional points. Formerly, only the two dimensional " "case was supported." msgstr "" -#: library/math.rst:584 +#: library/math.rst:583 msgid "" "Improved the algorithm's accuracy so that the maximum error is under 1 ulp " "(unit in the last place). More typically, the result is almost always " "correctly rounded to within 1/2 ulp." msgstr "" -#: library/math.rst:592 +#: library/math.rst:591 msgid "" "Calculate the product of all the elements in the input *iterable*. The " "default *start* value for the product is ``1``." msgstr "" -#: library/math.rst:595 +#: library/math.rst:594 msgid "" "When the iterable is empty, return the start value. This function is " "intended specifically for use with numeric values and may reject non-numeric " "types." msgstr "" -#: library/math.rst:604 +#: library/math.rst:603 msgid "Return the sum of products of values from two iterables *p* and *q*." msgstr "" -#: library/math.rst:606 +#: library/math.rst:605 msgid "Raises :exc:`ValueError` if the inputs do not have the same length." msgstr "" -#: library/math.rst:610 +#: library/math.rst:609 msgid "sum(map(operator.mul, p, q, strict=True))" msgstr "" -#: library/math.rst:612 +#: library/math.rst:611 msgid "" "For float and mixed int/float inputs, the intermediate products and sums are " "computed with extended precision." msgstr "" -#: library/math.rst:619 +#: library/math.rst:618 msgid "Angular conversion" msgstr "" -#: library/math.rst:623 +#: library/math.rst:622 msgid "Convert angle *x* from radians to degrees." msgstr "" -#: library/math.rst:628 +#: library/math.rst:627 msgid "Convert angle *x* from degrees to radians." msgstr "" -#: library/math.rst:632 +#: library/math.rst:631 msgid "Trigonometric functions" msgstr "" -#: library/math.rst:636 +#: library/math.rst:635 msgid "" "Return the arc cosine of *x*, in radians. The result is between ``0`` and " "``pi``." msgstr "" -#: library/math.rst:642 +#: library/math.rst:641 msgid "" "Return the arc sine of *x*, in radians. The result is between ``-pi/2`` and " "``pi/2``." msgstr "" -#: library/math.rst:648 +#: library/math.rst:647 msgid "" "Return the arc tangent of *x*, in radians. The result is between ``-pi/2`` " "and ``pi/2``." msgstr "" -#: library/math.rst:654 +#: library/math.rst:653 msgid "" "Return ``atan(y / x)``, in radians. The result is between ``-pi`` and " "``pi``. The vector in the plane from the origin to point ``(x, y)`` makes " @@ -1207,78 +1205,78 @@ msgid "" "``pi/4``, but ``atan2(-1, -1)`` is ``-3*pi/4``." msgstr "" -#: library/math.rst:664 +#: library/math.rst:663 msgid "Return the cosine of *x* radians." msgstr "" -#: library/math.rst:669 +#: library/math.rst:668 msgid "Return the sine of *x* radians." msgstr "" -#: library/math.rst:674 +#: library/math.rst:673 msgid "Return the tangent of *x* radians." msgstr "" -#: library/math.rst:678 +#: library/math.rst:677 msgid "Hyperbolic functions" msgstr "" -#: library/math.rst:680 +#: library/math.rst:679 msgid "" "`Hyperbolic functions `_ " "are analogs of trigonometric functions that are based on hyperbolas instead " "of circles." msgstr "" -#: library/math.rst:686 +#: library/math.rst:685 msgid "Return the inverse hyperbolic cosine of *x*." msgstr "" -#: library/math.rst:691 +#: library/math.rst:690 msgid "Return the inverse hyperbolic sine of *x*." msgstr "" -#: library/math.rst:696 +#: library/math.rst:695 msgid "Return the inverse hyperbolic tangent of *x*." msgstr "" -#: library/math.rst:701 +#: library/math.rst:700 msgid "Return the hyperbolic cosine of *x*." msgstr "" -#: library/math.rst:706 +#: library/math.rst:705 msgid "Return the hyperbolic sine of *x*." msgstr "" -#: library/math.rst:711 +#: library/math.rst:710 msgid "Return the hyperbolic tangent of *x*." msgstr "" -#: library/math.rst:715 +#: library/math.rst:714 msgid "Special functions" msgstr "" -#: library/math.rst:719 +#: library/math.rst:718 msgid "" "Return the `error function `_ " "at *x*." msgstr "" -#: library/math.rst:722 +#: library/math.rst:721 msgid "" "The :func:`erf` function can be used to compute traditional statistical " "functions such as the `cumulative standard normal distribution `_::" msgstr "" -#: library/math.rst:726 +#: library/math.rst:725 msgid "" "def phi(x):\n" " 'Cumulative distribution function for the standard normal distribution'\n" " return (1.0 + erf(x / sqrt(2.0))) / 2.0" msgstr "" -#: library/math.rst:735 +#: library/math.rst:734 msgid "" "Return the complementary error function at *x*. The `complementary error " "function `_ is defined as " @@ -1287,31 +1285,31 @@ msgid "" "Loss_of_significance>`_\\." msgstr "" -#: library/math.rst:746 +#: library/math.rst:745 msgid "" "Return the `Gamma function `_ " "at *x*." msgstr "" -#: library/math.rst:754 +#: library/math.rst:753 msgid "" "Return the natural logarithm of the absolute value of the Gamma function at " "*x*." msgstr "" -#: library/math.rst:761 +#: library/math.rst:760 msgid "Constants" msgstr "" -#: library/math.rst:765 +#: library/math.rst:764 msgid "The mathematical constant *π* = 3.141592..., to available precision." msgstr "" -#: library/math.rst:770 +#: library/math.rst:769 msgid "The mathematical constant *e* = 2.718281..., to available precision." msgstr "" -#: library/math.rst:775 +#: library/math.rst:774 msgid "" "The mathematical constant *τ* = 6.283185..., to available precision. Tau is " "a circle constant equal to 2\\ *π*, the ratio of a circle's circumference to " @@ -1320,13 +1318,13 @@ msgid "" "celebrating `Tau day `_ by eating twice as much pie!" msgstr "" -#: library/math.rst:786 +#: library/math.rst:785 msgid "" "A floating-point positive infinity. (For negative infinity, use ``-math." "inf``.) Equivalent to the output of ``float('inf')``." msgstr "" -#: library/math.rst:794 +#: library/math.rst:793 msgid "" "A floating-point \"not a number\" (NaN) value. Equivalent to the output of " "``float('nan')``. Due to the requirements of the `IEEE-754 standard \n" "Language-Team: LANGUAGE \n" diff --git a/library/mm.po b/library/mm.po index 8bc8ed6c..614677d0 100644 --- a/library/mm.po +++ b/library/mm.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/mmap.po b/library/mmap.po index 22fc75ab..d2d43292 100644 --- a/library/mmap.po +++ b/library/mmap.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/modulefinder.po b/library/modulefinder.po index b3d27936..e6047cc0 100644 --- a/library/modulefinder.po +++ b/library/modulefinder.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/modules.po b/library/modules.po index 789843ec..41c606f0 100644 --- a/library/modules.po +++ b/library/modules.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/msilib.po b/library/msilib.po index 29da0b64..6fbf9584 100644 --- a/library/msilib.po +++ b/library/msilib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/msvcrt.po b/library/msvcrt.po index 8e1809d6..c9c8a300 100644 --- a/library/msvcrt.po +++ b/library/msvcrt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/multiprocessing.po b/library/multiprocessing.po index abf72f89..560fc3f8 100644 --- a/library/multiprocessing.po +++ b/library/multiprocessing.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1470,7 +1470,7 @@ msgstr "" #: library/multiprocessing.rst:1083 msgid "" "Add support for when a program which uses :mod:`multiprocessing` has been " -"frozen to produce a Windows executable. (Has been tested with **py2exe**, " +"frozen to produce an executable. (Has been tested with **py2exe**, " "**PyInstaller** and **cx_Freeze**.)" msgstr "" @@ -1500,10 +1500,10 @@ msgstr "" #: library/multiprocessing.rst:1102 msgid "" -"Calling ``freeze_support()`` has no effect when invoked on any operating " -"system other than Windows. In addition, if the module is being run normally " -"by the Python interpreter on Windows (the program has not been frozen), then " -"``freeze_support()`` has no effect." +"Calling ``freeze_support()`` has no effect when the start method is not " +"*spawn*. In addition, if the module is being run normally by the Python " +"interpreter (the program has not been frozen), then ``freeze_support()`` has " +"no effect." msgstr "" #: library/multiprocessing.rst:1109 diff --git a/library/multiprocessing.shared_memory.po b/library/multiprocessing.shared_memory.po index 9098d8f5..eb348c3d 100644 --- a/library/multiprocessing.shared_memory.po +++ b/library/multiprocessing.shared_memory.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/netdata.po b/library/netdata.po index 940631bc..fae570bb 100644 --- a/library/netdata.po +++ b/library/netdata.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/netrc.po b/library/netrc.po index fe25dd99..2b3343af 100644 --- a/library/netrc.po +++ b/library/netrc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/nis.po b/library/nis.po index d0444650..bceb80f9 100644 --- a/library/nis.po +++ b/library/nis.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/nntplib.po b/library/nntplib.po index 1f94966f..9a7ec032 100644 --- a/library/nntplib.po +++ b/library/nntplib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/numbers.po b/library/numbers.po index bcba1c53..0d4689f4 100644 --- a/library/numbers.po +++ b/library/numbers.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/numeric.po b/library/numeric.po index 76702ebc..7a9a9929 100644 --- a/library/numeric.po +++ b/library/numeric.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Loukas Sakellaridis \n" "Language-Team: PyGreece \n" diff --git a/library/operator.po b/library/operator.po index 91a102c5..a989145a 100644 --- a/library/operator.po +++ b/library/operator.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/optparse.po b/library/optparse.po index 716f93c5..7879232e 100644 --- a/library/optparse.po +++ b/library/optparse.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/os.path.po b/library/os.path.po index 251bfa59..a4acaba2 100644 --- a/library/os.path.po +++ b/library/os.path.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -91,8 +91,8 @@ msgstr "" #: library/os.path.rst:76 library/os.path.rst:126 library/os.path.rst:152 #: library/os.path.rst:198 library/os.path.rst:227 library/os.path.rst:246 #: library/os.path.rst:270 library/os.path.rst:308 library/os.path.rst:400 -#: library/os.path.rst:443 library/os.path.rst:470 library/os.path.rst:500 -#: library/os.path.rst:589 +#: library/os.path.rst:469 library/os.path.rst:496 library/os.path.rst:526 +#: library/os.path.rst:615 msgid "Accepts a :term:`path-like object`." msgstr "" @@ -417,33 +417,71 @@ msgstr "" #: library/os.path.rst:411 msgid "" -"If a path doesn't exist or a symlink loop is encountered, and *strict* is " -"``True``, :exc:`OSError` is raised. If *strict* is ``False`` these errors " -"are ignored, and so the result might be missing or otherwise inaccessible." +"By default, the path is evaluated up to the first component that does not " +"exist, is a symlink loop, or whose evaluation raises :exc:`OSError`. All " +"such components are appended unchanged to the existing part of the path." msgstr "" -#: library/os.path.rst:416 +#: library/os.path.rst:415 +msgid "" +"Some errors that are handled this way include \"access denied\", \"not a " +"directory\", or \"bad argument to internal function\". Thus, the resulting " +"path may be missing or inaccessible, may still contain links or loops, and " +"may traverse non-directories." +msgstr "" + +#: library/os.path.rst:420 +msgid "This behavior can be modified by keyword arguments:" +msgstr "" + +#: library/os.path.rst:422 +msgid "" +"If *strict* is ``True``, the first error encountered when evaluating the " +"path is re-raised. In particular, :exc:`FileNotFoundError` is raised if " +"*path* does not exist, or another :exc:`OSError` if it is otherwise " +"inaccessible." +msgstr "" + +#: library/os.path.rst:427 +msgid "" +"If *strict* is :py:data:`os.path.ALLOW_MISSING`, errors other than :exc:" +"`FileNotFoundError` are re-raised (as with ``strict=True``). Thus, the " +"returned path will not contain any symbolic links, but the named file and " +"some of its parent directories may be missing." +msgstr "" + +#: library/os.path.rst:433 msgid "" "This function emulates the operating system's procedure for making a path " "canonical, which differs slightly between Windows and UNIX with respect to " "how links and subsequent path components interact." msgstr "" -#: library/os.path.rst:420 +#: library/os.path.rst:437 msgid "" "Operating system APIs make paths canonical as needed, so it's not normally " "necessary to call this function." msgstr "" -#: library/os.path.rst:426 +#: library/os.path.rst:443 msgid "Symbolic links and junctions are now resolved on Windows." msgstr "" -#: library/os.path.rst:429 +#: library/os.path.rst:446 msgid "The *strict* parameter was added." msgstr "" -#: library/os.path.rst:435 +#: library/os.path.rst:449 +msgid "" +"The :py:data:`~os.path.ALLOW_MISSING` value for the *strict* parameter was " +"added." +msgstr "" + +#: library/os.path.rst:455 +msgid "Special value used for the *strict* argument in :func:`realpath`." +msgstr "" + +#: library/os.path.rst:461 msgid "" "Return a relative filepath to *path* either from the current directory or " "from an optional *start* directory. This is a path computation: the " @@ -452,32 +490,32 @@ msgid "" "are on different drives." msgstr "" -#: library/os.path.rst:441 +#: library/os.path.rst:467 msgid "*start* defaults to :data:`os.curdir`." msgstr "" -#: library/os.path.rst:449 +#: library/os.path.rst:475 msgid "" "Return ``True`` if both pathname arguments refer to the same file or " "directory. This is determined by the device number and i-node number and " "raises an exception if an :func:`os.stat` call on either pathname fails." msgstr "" -#: library/os.path.rst:467 library/os.path.rst:481 +#: library/os.path.rst:493 library/os.path.rst:507 msgid "Added Windows support." msgstr "" -#: library/os.path.rst:456 +#: library/os.path.rst:482 msgid "Windows now uses the same implementation as all other platforms." msgstr "" -#: library/os.path.rst:465 +#: library/os.path.rst:491 msgid "" "Return ``True`` if the file descriptors *fp1* and *fp2* refer to the same " "file." msgstr "" -#: library/os.path.rst:476 +#: library/os.path.rst:502 msgid "" "Return ``True`` if the stat tuples *stat1* and *stat2* refer to the same " "file. These structures may have been returned by :func:`os.fstat`, :func:`os." @@ -485,7 +523,7 @@ msgid "" "comparison used by :func:`samefile` and :func:`sameopenfile`." msgstr "" -#: library/os.path.rst:490 +#: library/os.path.rst:516 msgid "" "Split the pathname *path* into a pair, ``(head, tail)`` where *tail* is the " "last pathname component and *head* is everything leading up to that. The " @@ -498,7 +536,7 @@ msgid "" "and :func:`basename`." msgstr "" -#: library/os.path.rst:506 +#: library/os.path.rst:532 msgid "" "Split the pathname *path* into a pair ``(drive, tail)`` where *drive* is " "either a mount point or the empty string. On systems which do not use drive " @@ -506,35 +544,35 @@ msgid "" "``drive + tail`` will be the same as *path*." msgstr "" -#: library/os.path.rst:511 +#: library/os.path.rst:537 msgid "" "On Windows, splits a pathname into drive/UNC sharepoint and relative path." msgstr "" -#: library/os.path.rst:513 +#: library/os.path.rst:539 msgid "" "If the path contains a drive letter, drive will contain everything up to and " "including the colon::" msgstr "" -#: library/os.path.rst:516 +#: library/os.path.rst:542 msgid "" ">>> splitdrive(\"c:/dir\")\n" "(\"c:\", \"/dir\")" msgstr "" -#: library/os.path.rst:519 +#: library/os.path.rst:545 msgid "" "If the path contains a UNC path, drive will contain the host name and share::" msgstr "" -#: library/os.path.rst:522 +#: library/os.path.rst:548 msgid "" ">>> splitdrive(\"//host/computer/dir\")\n" "(\"//host/computer\", \"/dir\")" msgstr "" -#: library/os.path.rst:531 +#: library/os.path.rst:557 msgid "" "Split the pathname *path* into a 3-item tuple ``(drive, root, tail)`` where " "*drive* is a device name or mount point, *root* is a string of separators " @@ -543,7 +581,7 @@ msgid "" "same as *path*." msgstr "" -#: library/os.path.rst:537 +#: library/os.path.rst:563 msgid "" "On POSIX systems, *drive* is always empty. The *root* may be empty (if " "*path* is relative), a single forward slash (if *path* is absolute), or two " @@ -552,7 +590,7 @@ msgid "" "basedefs/V1_chap04.html#tag_04_13>`_.) For example::" msgstr "" -#: library/os.path.rst:543 +#: library/os.path.rst:569 msgid "" ">>> splitroot('/home/sam')\n" "('', '/', 'home/sam')\n" @@ -562,14 +600,14 @@ msgid "" "('', '/', '//home/sam')" msgstr "" -#: library/os.path.rst:550 +#: library/os.path.rst:576 msgid "" "On Windows, *drive* may be empty, a drive-letter name, a UNC share, or a " "device name. The *root* may be empty, a forward slash, or a backward slash. " "For example::" msgstr "" -#: library/os.path.rst:554 +#: library/os.path.rst:580 msgid "" ">>> splitroot('C:/Users/Sam')\n" "('C:', '/', 'Users/Sam')\n" @@ -577,30 +615,30 @@ msgid "" "('//Server/Share', '/', 'Users/Sam')" msgstr "" -#: library/os.path.rst:564 +#: library/os.path.rst:590 msgid "" "Split the pathname *path* into a pair ``(root, ext)`` such that ``root + " "ext == path``, and the extension, *ext*, is empty or begins with a period " "and contains at most one period." msgstr "" -#: library/os.path.rst:568 +#: library/os.path.rst:594 msgid "If the path contains no extension, *ext* will be ``''``::" msgstr "" -#: library/os.path.rst:570 +#: library/os.path.rst:596 msgid "" ">>> splitext('bar')\n" "('bar', '')" msgstr "" -#: library/os.path.rst:573 +#: library/os.path.rst:599 msgid "" "If the path contains an extension, then *ext* will be set to this extension, " "including the leading period. Note that previous periods will be ignored::" msgstr "" -#: library/os.path.rst:576 +#: library/os.path.rst:602 msgid "" ">>> splitext('foo.bar.exe')\n" "('foo.bar', '.exe')\n" @@ -608,13 +646,13 @@ msgid "" "('/foo/bar', '.exe')" msgstr "" -#: library/os.path.rst:581 +#: library/os.path.rst:607 msgid "" "Leading periods of the last component of the path are considered to be part " "of the root::" msgstr "" -#: library/os.path.rst:584 +#: library/os.path.rst:610 msgid "" ">>> splitext('.cshrc')\n" "('.cshrc', '')\n" @@ -622,7 +660,7 @@ msgid "" "('/foo/....jpg', '')" msgstr "" -#: library/os.path.rst:595 +#: library/os.path.rst:621 msgid "" "``True`` if arbitrary Unicode strings can be used as file names (within " "limitations imposed by the file system)." diff --git a/library/os.po b/library/os.po index f0f1a7ab..e1fc73c3 100644 --- a/library/os.po +++ b/library/os.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/ossaudiodev.po b/library/ossaudiodev.po index e3733249..7a0f3d37 100644 --- a/library/ossaudiodev.po +++ b/library/ossaudiodev.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pathlib.po b/library/pathlib.po index 4f6bf4df..88a212c9 100644 --- a/library/pathlib.po +++ b/library/pathlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2236,135 +2236,141 @@ msgid "``[seq]``" msgstr "" #: library/pathlib.rst:1784 -msgid "Matches one character in *seq*." +msgid "" +"Matches one character in *seq*, where *seq* is a sequence of characters. " +"Range expressions are supported; for example, ``[a-z]`` matches any " +"lowercase ASCII letter. Multiple ranges can be combined: ``[a-zA-Z0-9_]`` " +"matches any ASCII letter, digit, or underscore." msgstr "" -#: library/pathlib.rst:1785 +#: library/pathlib.rst:1788 msgid "``[!seq]``" msgstr "" -#: library/pathlib.rst:1786 -msgid "Matches one character not in *seq*." +#: library/pathlib.rst:1789 +msgid "" +"Matches one character not in *seq*, where *seq* follows the same rules as " +"above." msgstr "" -#: library/pathlib.rst:1788 +#: library/pathlib.rst:1791 msgid "" "For a literal match, wrap the meta-characters in brackets. For example, " "``\"[?]\"`` matches the character ``\"?\"``." msgstr "" -#: library/pathlib.rst:1791 +#: library/pathlib.rst:1794 msgid "The \"``**``\" wildcard enables recursive globbing. A few examples:" msgstr "" -#: library/pathlib.rst:1794 +#: library/pathlib.rst:1797 msgid "Pattern" msgstr "" -#: library/pathlib.rst:1794 +#: library/pathlib.rst:1797 msgid "Meaning" msgstr "" -#: library/pathlib.rst:1796 +#: library/pathlib.rst:1799 msgid "\"``**/*``\"" msgstr "" -#: library/pathlib.rst:1796 +#: library/pathlib.rst:1799 msgid "Any path with at least one segment." msgstr "" -#: library/pathlib.rst:1797 +#: library/pathlib.rst:1800 msgid "\"``**/*.py``\"" msgstr "" -#: library/pathlib.rst:1797 +#: library/pathlib.rst:1800 msgid "Any path with a final segment ending \"``.py``\"." msgstr "" -#: library/pathlib.rst:1798 +#: library/pathlib.rst:1801 msgid "\"``assets/**``\"" msgstr "" -#: library/pathlib.rst:1798 +#: library/pathlib.rst:1801 msgid "Any path starting with \"``assets/``\"." msgstr "" -#: library/pathlib.rst:1799 +#: library/pathlib.rst:1802 msgid "\"``assets/**/*``\"" msgstr "" -#: library/pathlib.rst:1799 +#: library/pathlib.rst:1802 msgid "" "Any path starting with \"``assets/``\", excluding \"``assets/``\" itself." msgstr "" -#: library/pathlib.rst:1803 +#: library/pathlib.rst:1806 msgid "" "Globbing with the \"``**``\" wildcard visits every directory in the tree. " "Large directory trees may take a long time to search." msgstr "" -#: library/pathlib.rst:1806 +#: library/pathlib.rst:1809 msgid "" "Globbing with a pattern that ends with \"``**``\" returns both files and " "directories. In previous versions, only directories were returned." msgstr "" -#: library/pathlib.rst:1810 +#: library/pathlib.rst:1813 msgid "" "In :meth:`Path.glob` and :meth:`~Path.rglob`, a trailing slash may be added " "to the pattern to match only directories." msgstr "" -#: library/pathlib.rst:1813 +#: library/pathlib.rst:1816 msgid "" "Globbing with a pattern that ends with a pathname components separator (:" "data:`~os.sep` or :data:`~os.altsep`) returns only directories." msgstr "" -#: library/pathlib.rst:1819 +#: library/pathlib.rst:1822 msgid "Comparison to the :mod:`glob` module" msgstr "" -#: library/pathlib.rst:1821 +#: library/pathlib.rst:1824 msgid "" "The patterns accepted and results generated by :meth:`Path.glob` and :meth:" "`Path.rglob` differ slightly from those by the :mod:`glob` module:" msgstr "" -#: library/pathlib.rst:1824 +#: library/pathlib.rst:1827 msgid "" "Files beginning with a dot are not special in pathlib. This is like passing " "``include_hidden=True`` to :func:`glob.glob`." msgstr "" -#: library/pathlib.rst:1826 +#: library/pathlib.rst:1829 msgid "" "\"``**``\" pattern components are always recursive in pathlib. This is like " "passing ``recursive=True`` to :func:`glob.glob`." msgstr "" -#: library/pathlib.rst:1828 +#: library/pathlib.rst:1831 msgid "" "\"``**``\" pattern components do not follow symlinks by default in pathlib. " "This behaviour has no equivalent in :func:`glob.glob`, but you can pass " "``recurse_symlinks=True`` to :meth:`Path.glob` for compatible behaviour." msgstr "" -#: library/pathlib.rst:1831 +#: library/pathlib.rst:1834 msgid "" "Like all :class:`PurePath` and :class:`Path` objects, the values returned " "from :meth:`Path.glob` and :meth:`Path.rglob` don't include trailing slashes." msgstr "" -#: library/pathlib.rst:1834 +#: library/pathlib.rst:1837 msgid "" "The values returned from pathlib's ``path.glob()`` and ``path.rglob()`` " "include the *path* as a prefix, unlike the results of ``glob." "glob(root_dir=path)``." msgstr "" -#: library/pathlib.rst:1837 +#: library/pathlib.rst:1840 msgid "" "The values returned from pathlib's ``path.glob()`` and ``path.rglob()`` may " "include *path* itself, for example when globbing \"``**``\", whereas the " @@ -2372,11 +2378,11 @@ msgid "" "would correspond to *path*." msgstr "" -#: library/pathlib.rst:1844 +#: library/pathlib.rst:1847 msgid "Comparison to the :mod:`os` and :mod:`os.path` modules" msgstr "" -#: library/pathlib.rst:1846 +#: library/pathlib.rst:1849 msgid "" "pathlib implements path operations using :class:`PurePath` and :class:`Path` " "objects, and so it's said to be *object-oriented*. On the other hand, the :" @@ -2385,21 +2391,21 @@ msgid "" "Some users consider the object-oriented style to be more readable." msgstr "" -#: library/pathlib.rst:1852 +#: library/pathlib.rst:1855 msgid "" "Many functions in :mod:`os` and :mod:`os.path` support ``bytes`` paths and :" "ref:`paths relative to directory descriptors `. These features " "aren't available in pathlib." msgstr "" -#: library/pathlib.rst:1856 +#: library/pathlib.rst:1859 msgid "" "Python's ``str`` and ``bytes`` types, and portions of the :mod:`os` and :mod:" "`os.path` modules, are written in C and are very speedy. pathlib is written " "in pure Python and is often slower, but rarely slow enough to matter." msgstr "" -#: library/pathlib.rst:1860 +#: library/pathlib.rst:1863 msgid "" "pathlib's path normalization is slightly more opinionated and consistent " "than :mod:`os.path`. For example, whereas :func:`os.path.abspath` eliminates " @@ -2408,12 +2414,12 @@ msgid "" "safety." msgstr "" -#: library/pathlib.rst:1865 +#: library/pathlib.rst:1868 msgid "" "pathlib's path normalization may render it unsuitable for some applications:" msgstr "" -#: library/pathlib.rst:1867 +#: library/pathlib.rst:1870 msgid "" "pathlib normalizes ``Path(\"my_folder/\")`` to ``Path(\"my_folder\")``, " "which changes a path's meaning when supplied to various operating system " @@ -2422,7 +2428,7 @@ msgid "" "rather than a directory only." msgstr "" -#: library/pathlib.rst:1872 +#: library/pathlib.rst:1875 msgid "" "pathlib normalizes ``Path(\"./my_program\")`` to ``Path(\"my_program\")``, " "which changes a path's meaning when used as an executable search path, such " @@ -2431,283 +2437,283 @@ msgid "" "rather than the current directory." msgstr "" -#: library/pathlib.rst:1878 +#: library/pathlib.rst:1881 msgid "" "As a consequence of these differences, pathlib is not a drop-in replacement " "for :mod:`os.path`." msgstr "" -#: library/pathlib.rst:1883 +#: library/pathlib.rst:1886 msgid "Corresponding tools" msgstr "" -#: library/pathlib.rst:1885 +#: library/pathlib.rst:1888 msgid "" "Below is a table mapping various :mod:`os` functions to their corresponding :" "class:`PurePath`/:class:`Path` equivalent." msgstr "" -#: library/pathlib.rst:1889 +#: library/pathlib.rst:1892 msgid ":mod:`os` and :mod:`os.path`" msgstr "" -#: library/pathlib.rst:1889 +#: library/pathlib.rst:1892 msgid ":mod:`pathlib`" msgstr "" -#: library/pathlib.rst:1891 +#: library/pathlib.rst:1894 msgid ":func:`os.path.dirname`" msgstr "" -#: library/pathlib.rst:1891 +#: library/pathlib.rst:1894 msgid ":attr:`PurePath.parent`" msgstr "" -#: library/pathlib.rst:1892 +#: library/pathlib.rst:1895 msgid ":func:`os.path.basename`" msgstr "" -#: library/pathlib.rst:1892 +#: library/pathlib.rst:1895 msgid ":attr:`PurePath.name`" msgstr "" -#: library/pathlib.rst:1893 +#: library/pathlib.rst:1896 msgid ":func:`os.path.splitext`" msgstr "" -#: library/pathlib.rst:1893 +#: library/pathlib.rst:1896 msgid ":attr:`PurePath.stem`, :attr:`PurePath.suffix`" msgstr "" -#: library/pathlib.rst:1894 +#: library/pathlib.rst:1897 msgid ":func:`os.path.join`" msgstr "" -#: library/pathlib.rst:1894 +#: library/pathlib.rst:1897 msgid ":meth:`PurePath.joinpath`" msgstr "" -#: library/pathlib.rst:1895 +#: library/pathlib.rst:1898 msgid ":func:`os.path.isabs`" msgstr "" -#: library/pathlib.rst:1895 +#: library/pathlib.rst:1898 msgid ":meth:`PurePath.is_absolute`" msgstr "" -#: library/pathlib.rst:1896 +#: library/pathlib.rst:1899 msgid ":func:`os.path.relpath`" msgstr "" -#: library/pathlib.rst:1896 +#: library/pathlib.rst:1899 msgid ":meth:`PurePath.relative_to` [1]_" msgstr "" -#: library/pathlib.rst:1897 +#: library/pathlib.rst:1900 msgid ":func:`os.path.expanduser`" msgstr "" -#: library/pathlib.rst:1897 +#: library/pathlib.rst:1900 msgid ":meth:`Path.expanduser` [2]_" msgstr "" -#: library/pathlib.rst:1898 +#: library/pathlib.rst:1901 msgid ":func:`os.path.realpath`" msgstr "" -#: library/pathlib.rst:1898 +#: library/pathlib.rst:1901 msgid ":meth:`Path.resolve`" msgstr "" -#: library/pathlib.rst:1899 +#: library/pathlib.rst:1902 msgid ":func:`os.path.abspath`" msgstr "" -#: library/pathlib.rst:1899 +#: library/pathlib.rst:1902 msgid ":meth:`Path.absolute` [3]_" msgstr "" -#: library/pathlib.rst:1900 +#: library/pathlib.rst:1903 msgid ":func:`os.path.exists`" msgstr "" -#: library/pathlib.rst:1900 +#: library/pathlib.rst:1903 msgid ":meth:`Path.exists`" msgstr "" -#: library/pathlib.rst:1901 +#: library/pathlib.rst:1904 msgid ":func:`os.path.isfile`" msgstr "" -#: library/pathlib.rst:1901 +#: library/pathlib.rst:1904 msgid ":meth:`Path.is_file`" msgstr "" -#: library/pathlib.rst:1902 +#: library/pathlib.rst:1905 msgid ":func:`os.path.isdir`" msgstr "" -#: library/pathlib.rst:1902 +#: library/pathlib.rst:1905 msgid ":meth:`Path.is_dir`" msgstr "" -#: library/pathlib.rst:1903 +#: library/pathlib.rst:1906 msgid ":func:`os.path.islink`" msgstr "" -#: library/pathlib.rst:1903 +#: library/pathlib.rst:1906 msgid ":meth:`Path.is_symlink`" msgstr "" -#: library/pathlib.rst:1904 +#: library/pathlib.rst:1907 msgid ":func:`os.path.isjunction`" msgstr "" -#: library/pathlib.rst:1904 +#: library/pathlib.rst:1907 msgid ":meth:`Path.is_junction`" msgstr "" -#: library/pathlib.rst:1905 +#: library/pathlib.rst:1908 msgid ":func:`os.path.ismount`" msgstr "" -#: library/pathlib.rst:1905 +#: library/pathlib.rst:1908 msgid ":meth:`Path.is_mount`" msgstr "" -#: library/pathlib.rst:1906 +#: library/pathlib.rst:1909 msgid ":func:`os.path.samefile`" msgstr "" -#: library/pathlib.rst:1906 +#: library/pathlib.rst:1909 msgid ":meth:`Path.samefile`" msgstr "" -#: library/pathlib.rst:1907 +#: library/pathlib.rst:1910 msgid ":func:`os.getcwd`" msgstr "" -#: library/pathlib.rst:1907 +#: library/pathlib.rst:1910 msgid ":meth:`Path.cwd`" msgstr "" -#: library/pathlib.rst:1908 +#: library/pathlib.rst:1911 msgid ":func:`os.stat`" msgstr "" -#: library/pathlib.rst:1908 +#: library/pathlib.rst:1911 msgid ":meth:`Path.stat`" msgstr "" -#: library/pathlib.rst:1909 +#: library/pathlib.rst:1912 msgid ":func:`os.lstat`" msgstr "" -#: library/pathlib.rst:1909 +#: library/pathlib.rst:1912 msgid ":meth:`Path.lstat`" msgstr "" -#: library/pathlib.rst:1910 +#: library/pathlib.rst:1913 msgid ":func:`os.listdir`" msgstr "" -#: library/pathlib.rst:1910 +#: library/pathlib.rst:1913 msgid ":meth:`Path.iterdir`" msgstr "" -#: library/pathlib.rst:1911 +#: library/pathlib.rst:1914 msgid ":func:`os.walk`" msgstr "" -#: library/pathlib.rst:1911 +#: library/pathlib.rst:1914 msgid ":meth:`Path.walk` [4]_" msgstr "" -#: library/pathlib.rst:1912 +#: library/pathlib.rst:1915 msgid ":func:`os.mkdir`, :func:`os.makedirs`" msgstr "" -#: library/pathlib.rst:1912 +#: library/pathlib.rst:1915 msgid ":meth:`Path.mkdir`" msgstr "" -#: library/pathlib.rst:1913 +#: library/pathlib.rst:1916 msgid ":func:`os.link`" msgstr "" -#: library/pathlib.rst:1913 +#: library/pathlib.rst:1916 msgid ":meth:`Path.hardlink_to`" msgstr "" -#: library/pathlib.rst:1914 +#: library/pathlib.rst:1917 msgid ":func:`os.symlink`" msgstr "" -#: library/pathlib.rst:1914 +#: library/pathlib.rst:1917 msgid ":meth:`Path.symlink_to`" msgstr "" -#: library/pathlib.rst:1915 +#: library/pathlib.rst:1918 msgid ":func:`os.readlink`" msgstr "" -#: library/pathlib.rst:1915 +#: library/pathlib.rst:1918 msgid ":meth:`Path.readlink`" msgstr "" -#: library/pathlib.rst:1916 +#: library/pathlib.rst:1919 msgid ":func:`os.rename`" msgstr "" -#: library/pathlib.rst:1916 +#: library/pathlib.rst:1919 msgid ":meth:`Path.rename`" msgstr "" -#: library/pathlib.rst:1917 +#: library/pathlib.rst:1920 msgid ":func:`os.replace`" msgstr "" -#: library/pathlib.rst:1917 +#: library/pathlib.rst:1920 msgid ":meth:`Path.replace`" msgstr "" -#: library/pathlib.rst:1918 +#: library/pathlib.rst:1921 msgid ":func:`os.remove`, :func:`os.unlink`" msgstr "" -#: library/pathlib.rst:1918 +#: library/pathlib.rst:1921 msgid ":meth:`Path.unlink`" msgstr "" -#: library/pathlib.rst:1919 +#: library/pathlib.rst:1922 msgid ":func:`os.rmdir`" msgstr "" -#: library/pathlib.rst:1919 +#: library/pathlib.rst:1922 msgid ":meth:`Path.rmdir`" msgstr "" -#: library/pathlib.rst:1920 +#: library/pathlib.rst:1923 msgid ":func:`os.chmod`" msgstr "" -#: library/pathlib.rst:1920 +#: library/pathlib.rst:1923 msgid ":meth:`Path.chmod`" msgstr "" -#: library/pathlib.rst:1921 +#: library/pathlib.rst:1924 msgid ":func:`os.lchmod`" msgstr "" -#: library/pathlib.rst:1921 +#: library/pathlib.rst:1924 msgid ":meth:`Path.lchmod`" msgstr "" -#: library/pathlib.rst:1925 +#: library/pathlib.rst:1928 msgid "Footnotes" msgstr "" -#: library/pathlib.rst:1926 +#: library/pathlib.rst:1929 msgid "" ":func:`os.path.relpath` calls :func:`~os.path.abspath` to make paths " "absolute and remove \"``..``\" parts, whereas :meth:`PurePath.relative_to` " @@ -2715,84 +2721,84 @@ msgid "" "anchors differ (e.g. if one path is absolute and the other relative.)" msgstr "" -#: library/pathlib.rst:1930 +#: library/pathlib.rst:1933 msgid "" ":func:`os.path.expanduser` returns the path unchanged if the home directory " "can't be resolved, whereas :meth:`Path.expanduser` raises :exc:" "`RuntimeError`." msgstr "" -#: library/pathlib.rst:1933 +#: library/pathlib.rst:1936 msgid "" ":func:`os.path.abspath` removes \"``..``\" components without resolving " "symlinks, which may change the meaning of the path, whereas :meth:`Path." "absolute` leaves any \"``..``\" components in the path." msgstr "" -#: library/pathlib.rst:1936 +#: library/pathlib.rst:1939 msgid "" ":func:`os.walk` always follows symlinks when categorizing paths into " "*dirnames* and *filenames*, whereas :meth:`Path.walk` categorizes all " "symlinks into *filenames* when *follow_symlinks* is false (the default.)" msgstr "" -#: library/pathlib.rst:1942 +#: library/pathlib.rst:1945 msgid "Protocols" msgstr "" -#: library/pathlib.rst:1948 +#: library/pathlib.rst:1951 msgid "" "The :mod:`pathlib.types` module provides types for static type checking." msgstr "" -#: library/pathlib.rst:1955 +#: library/pathlib.rst:1958 msgid "" "A :class:`typing.Protocol` describing the :attr:`Path.info ` attribute. Implementations may return cached results from their " "methods." msgstr "" -#: library/pathlib.rst:1961 +#: library/pathlib.rst:1964 msgid "" "Return ``True`` if the path is an existing file or directory, or any other " "kind of file; return ``False`` if the path doesn't exist." msgstr "" -#: library/pathlib.rst:1964 +#: library/pathlib.rst:1967 msgid "" "If *follow_symlinks* is ``False``, return ``True`` for symlinks without " "checking if their targets exist." msgstr "" -#: library/pathlib.rst:1969 +#: library/pathlib.rst:1972 msgid "" "Return ``True`` if the path is a directory, or a symbolic link pointing to a " "directory; return ``False`` if the path is (or points to) any other kind of " "file, or if it doesn't exist." msgstr "" -#: library/pathlib.rst:1973 +#: library/pathlib.rst:1976 msgid "" "If *follow_symlinks* is ``False``, return ``True`` only if the path is a " "directory (without following symlinks); return ``False`` if the path is any " "other kind of file, or if it doesn't exist." msgstr "" -#: library/pathlib.rst:1979 +#: library/pathlib.rst:1982 msgid "" "Return ``True`` if the path is a file, or a symbolic link pointing to a " "file; return ``False`` if the path is (or points to) a directory or other " "non-file, or if it doesn't exist." msgstr "" -#: library/pathlib.rst:1983 +#: library/pathlib.rst:1986 msgid "" "If *follow_symlinks* is ``False``, return ``True`` only if the path is a " "file (without following symlinks); return ``False`` if the path is a " "directory or other other non-file, or if it doesn't exist." msgstr "" -#: library/pathlib.rst:1989 +#: library/pathlib.rst:1992 msgid "" "Return ``True`` if the path is a symbolic link (even if broken); return " "``False`` if the path is a directory or any kind of file, or if it doesn't " diff --git a/library/pdb.po b/library/pdb.po index 7e0cbab6..1eb9a4c1 100644 --- a/library/pdb.po +++ b/library/pdb.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -130,7 +130,7 @@ msgid "" msgstr "" #: library/pdb.rst:83 -msgid "python -m pdb [-c command] (-m module | pyfile) [args ...]" +msgid "python -m pdb [-c command] (-m module | -p pid | pyfile) [args ...]" msgstr "" #: library/pdb.rst:85 @@ -162,11 +162,32 @@ msgstr "" msgid "Added the ``-m`` option." msgstr "" -#: library/pdb.rst:107 +#: library/pdb.rst:109 +msgid "Attach to the process with the specified PID." +msgstr "" + +#: library/pdb.rst:114 +msgid "" +"To attach to a running Python process for remote debugging, use the ``-p`` " +"or ``--pid`` option with the target process's PID::" +msgstr "" + +#: library/pdb.rst:117 +msgid "python -m pdb -p 1234" +msgstr "" + +#: library/pdb.rst:121 +msgid "" +"Attaching to a process that is blocked in a system call or waiting for I/O " +"will only work once the next bytecode instruction is executed or when the " +"process receives a signal." +msgstr "" + +#: library/pdb.rst:125 msgid "Typical usage to execute a statement under control of the debugger is::" msgstr "" -#: library/pdb.rst:109 +#: library/pdb.rst:127 msgid "" ">>> import pdb\n" ">>> def f(x):\n" @@ -178,11 +199,11 @@ msgid "" ">>>" msgstr "" -#: library/pdb.rst:118 +#: library/pdb.rst:136 msgid "The typical usage to inspect a crashed program is::" msgstr "" -#: library/pdb.rst:120 +#: library/pdb.rst:138 msgid "" ">>> import pdb\n" ">>> def f(x):\n" @@ -200,20 +221,20 @@ msgid "" "(Pdb)" msgstr "" -#: library/pdb.rst:135 +#: library/pdb.rst:153 msgid "" "The implementation of :pep:`667` means that name assignments made via " "``pdb`` will immediately affect the active scope, even when running inside " "an :term:`optimized scope`." msgstr "" -#: library/pdb.rst:141 +#: library/pdb.rst:159 msgid "" "The module defines the following functions; each enters the debugger in a " "slightly different way:" msgstr "" -#: library/pdb.rst:146 +#: library/pdb.rst:164 msgid "" "Execute the *statement* (given as a string or a code object) under debugger " "control. The debugger prompt appears before any code is executed; you can " @@ -225,14 +246,14 @@ msgid "" "`exec` or :func:`eval` functions.)" msgstr "" -#: library/pdb.rst:158 +#: library/pdb.rst:176 msgid "" "Evaluate the *expression* (given as a string or a code object) under " "debugger control. When :func:`runeval` returns, it returns the value of the " "*expression*. Otherwise this function is similar to :func:`run`." msgstr "" -#: library/pdb.rst:165 +#: library/pdb.rst:183 msgid "" "Call the *function* (a function or method object, not a string) with the " "given arguments. When :func:`runcall` returns, it returns whatever the " @@ -240,7 +261,7 @@ msgid "" "is entered." msgstr "" -#: library/pdb.rst:173 +#: library/pdb.rst:191 msgid "" "Enter the debugger at the calling stack frame. This is useful to hard-code " "a breakpoint at a given point in a program, even if the code is not " @@ -250,55 +271,55 @@ msgid "" "starts." msgstr "" -#: library/pdb.rst:181 +#: library/pdb.rst:199 msgid "The keyword-only argument *header*." msgstr "" -#: library/pdb.rst:184 +#: library/pdb.rst:202 msgid "" ":func:`set_trace` will enter the debugger immediately, rather than on the " "next line of code to be executed." msgstr "" -#: library/pdb.rst:188 +#: library/pdb.rst:206 msgid "The *commands* argument." msgstr "" -#: library/pdb.rst:194 +#: library/pdb.rst:212 msgid "" "async version of :func:`set_trace`. This function should be used inside an " "async function with :keyword:`await`." msgstr "" -#: library/pdb.rst:197 +#: library/pdb.rst:215 msgid "" "async def f():\n" " await pdb.set_trace_async()" msgstr "" -#: library/pdb.rst:202 +#: library/pdb.rst:220 msgid "" ":keyword:`await` statements are supported if the debugger is invoked by this " "function." msgstr "" -#: library/pdb.rst:208 +#: library/pdb.rst:226 msgid "" "Enter post-mortem debugging of the given exception or :ref:`traceback object " "`. If no value is given, it uses the exception that is " "currently being handled, or raises ``ValueError`` if there isn’t one." msgstr "" -#: library/pdb.rst:213 +#: library/pdb.rst:231 msgid "Support for exception objects was added." msgstr "" -#: library/pdb.rst:218 +#: library/pdb.rst:236 msgid "" "Enter post-mortem debugging of the exception found in :data:`sys.last_exc`." msgstr "" -#: library/pdb.rst:223 +#: library/pdb.rst:241 msgid "" "There are two supported backends for pdb: ``'settrace'`` and " "``'monitoring'``. See :class:`bdb.Bdb` for details. The user can set the " @@ -306,41 +327,41 @@ msgid "" "If no backend is specified, the default is ``'settrace'``." msgstr "" -#: library/pdb.rst:230 +#: library/pdb.rst:248 msgid "" ":func:`breakpoint` and :func:`set_trace` will not be affected by this " "function. They always use ``'monitoring'`` backend." msgstr "" -#: library/pdb.rst:237 +#: library/pdb.rst:255 msgid "Returns the default backend for pdb." msgstr "" -#: library/pdb.rst:241 +#: library/pdb.rst:259 msgid "" "The ``run*`` functions and :func:`set_trace` are aliases for instantiating " "the :class:`Pdb` class and calling the method of the same name. If you want " "to access further features, you have to do this yourself:" msgstr "" -#: library/pdb.rst:248 +#: library/pdb.rst:266 msgid ":class:`Pdb` is the debugger class." msgstr "" -#: library/pdb.rst:250 +#: library/pdb.rst:268 msgid "" "The *completekey*, *stdin* and *stdout* arguments are passed to the " "underlying :class:`cmd.Cmd` class; see the description there." msgstr "" -#: library/pdb.rst:253 +#: library/pdb.rst:271 msgid "" "The *skip* argument, if given, must be an iterable of glob-style module name " "patterns. The debugger will not step into frames that originate in a module " "that matches one of these patterns. [1]_" msgstr "" -#: library/pdb.rst:257 +#: library/pdb.rst:275 msgid "" "By default, Pdb sets a handler for the SIGINT signal (which is sent when the " "user presses :kbd:`Ctrl-C` on the console) when you give a :pdbcmd:" @@ -349,13 +370,13 @@ msgid "" "set *nosigint* to true." msgstr "" -#: library/pdb.rst:262 +#: library/pdb.rst:280 msgid "" "The *readrc* argument defaults to true and controls whether Pdb will load ." "pdbrc files from the filesystem." msgstr "" -#: library/pdb.rst:265 +#: library/pdb.rst:283 msgid "" "The *mode* argument specifies how the debugger was invoked. It impacts the " "workings of some debugger commands. Valid values are ``'inline'`` (used by " @@ -364,7 +385,7 @@ msgid "" "argument was added)." msgstr "" -#: library/pdb.rst:272 +#: library/pdb.rst:290 msgid "" "The *backend* argument specifies the backend to use for the debugger. If " "``None`` is passed, the default backend will be used. See :func:" @@ -372,68 +393,68 @@ msgid "" "and ``'monitoring'``." msgstr "" -#: library/pdb.rst:276 +#: library/pdb.rst:294 msgid "" "The *colorize* argument, if set to ``True``, will enable colorized output in " "the debugger, if color is supported. This will highlight source code " "displayed in pdb." msgstr "" -#: library/pdb.rst:279 +#: library/pdb.rst:297 msgid "Example call to enable tracing with *skip*::" msgstr "" -#: library/pdb.rst:281 +#: library/pdb.rst:299 msgid "import pdb; pdb.Pdb(skip=['django.*']).set_trace()" msgstr "" -#: library/pdb.rst:283 +#: library/pdb.rst:301 msgid "" "Raises an :ref:`auditing event ` ``pdb.Pdb`` with no arguments." msgstr "" -#: library/pdb.rst:285 +#: library/pdb.rst:303 msgid "Added the *skip* parameter." msgstr "" -#: library/pdb.rst:288 +#: library/pdb.rst:306 msgid "" "Added the *nosigint* parameter. Previously, a SIGINT handler was never set " "by Pdb." msgstr "" -#: library/pdb.rst:292 +#: library/pdb.rst:310 msgid "The *readrc* argument." msgstr "" -#: library/pdb.rst:295 +#: library/pdb.rst:313 msgid "Added the *mode* argument." msgstr "" -#: library/pdb.rst:298 +#: library/pdb.rst:316 msgid "Added the *backend* argument." msgstr "" -#: library/pdb.rst:301 +#: library/pdb.rst:319 msgid "Added the *colorize* argument." msgstr "" -#: library/pdb.rst:304 +#: library/pdb.rst:322 msgid "" "Inline breakpoints like :func:`breakpoint` or :func:`pdb.set_trace` will " "always stop the program at calling frame, ignoring the *skip* pattern (if " "any)." msgstr "" -#: library/pdb.rst:313 +#: library/pdb.rst:331 msgid "See the documentation for the functions explained above." msgstr "" -#: library/pdb.rst:319 +#: library/pdb.rst:337 msgid "Debugger Commands" msgstr "" -#: library/pdb.rst:321 +#: library/pdb.rst:339 msgid "" "The commands recognized by the debugger are listed below. Most commands can " "be abbreviated to one or two letters as indicated; e.g. ``h(elp)`` means " @@ -445,13 +466,13 @@ msgid "" "are separated by a vertical bar (``|``)." msgstr "" -#: library/pdb.rst:330 +#: library/pdb.rst:348 msgid "" "Entering a blank line repeats the last command entered. Exception: if the " "last command was a :pdbcmd:`list` command, the next 11 lines are listed." msgstr "" -#: library/pdb.rst:333 +#: library/pdb.rst:351 msgid "" "Commands that the debugger doesn't recognize are assumed to be Python " "statements and are executed in the context of the program being debugged. " @@ -462,20 +483,20 @@ msgid "" "is not changed." msgstr "" -#: library/pdb.rst:341 +#: library/pdb.rst:359 msgid "" "Expressions/Statements whose prefix is a pdb command are now correctly " "identified and executed." msgstr "" -#: library/pdb.rst:345 +#: library/pdb.rst:363 msgid "" "The debugger supports :ref:`aliases `. Aliases can have " "parameters which allows one a certain level of adaptability to the context " "under examination." msgstr "" -#: library/pdb.rst:349 +#: library/pdb.rst:367 msgid "" "Multiple commands may be entered on a single line, separated by ``;;``. (A " "single ``;`` is not used as it is the separator for multiple commands in a " @@ -486,7 +507,7 @@ msgid "" "\"\";\"``." msgstr "" -#: library/pdb.rst:356 +#: library/pdb.rst:374 msgid "" "To set a temporary global variable, use a *convenience variable*. A " "*convenience variable* is a variable whose name starts with ``$``. For " @@ -496,35 +517,35 @@ msgid "" "compared to using normal variables like ``foo = 1``." msgstr "" -#: library/pdb.rst:363 +#: library/pdb.rst:381 msgid "There are four preset *convenience variables*:" msgstr "" -#: library/pdb.rst:365 +#: library/pdb.rst:383 msgid "``$_frame``: the current frame you are debugging" msgstr "" -#: library/pdb.rst:366 +#: library/pdb.rst:384 msgid "``$_retval``: the return value if the frame is returning" msgstr "" -#: library/pdb.rst:367 +#: library/pdb.rst:385 msgid "``$_exception``: the exception if the frame is raising an exception" msgstr "" -#: library/pdb.rst:368 +#: library/pdb.rst:386 msgid "``$_asynctask``: the asyncio task if pdb stops in an async function" msgstr "" -#: library/pdb.rst:372 +#: library/pdb.rst:390 msgid "Added the *convenience variable* feature." msgstr "" -#: library/pdb.rst:374 +#: library/pdb.rst:392 msgid "Added the ``$_asynctask`` convenience variable." msgstr "" -#: library/pdb.rst:381 +#: library/pdb.rst:399 msgid "" "If a file :file:`.pdbrc` exists in the user's home directory or in the " "current directory, it is read with ``'utf-8'`` encoding and executed as if " @@ -534,20 +555,20 @@ msgid "" "read first and aliases defined there can be overridden by the local file." msgstr "" -#: library/pdb.rst:388 +#: library/pdb.rst:406 msgid "" ":file:`.pdbrc` can now contain commands that continue debugging, such as :" "pdbcmd:`continue` or :pdbcmd:`next`. Previously, these commands had no " "effect." msgstr "" -#: library/pdb.rst:393 +#: library/pdb.rst:411 msgid "" ":file:`.pdbrc` is now read with ``'utf-8'`` encoding. Previously, it was " "read with the system locale encoding." msgstr "" -#: library/pdb.rst:400 +#: library/pdb.rst:418 msgid "" "Without argument, print the list of available commands. With a *command* as " "argument, print help about that command. ``help pdb`` displays the full " @@ -556,7 +577,7 @@ msgid "" "the ``!`` command." msgstr "" -#: library/pdb.rst:408 +#: library/pdb.rst:426 msgid "" "Print a stack trace, with the most recent frame at the bottom. if *count* " "is 0, print the current frame entry. If *count* is negative, print the least " @@ -565,23 +586,23 @@ msgid "" "determines the context of most commands." msgstr "" -#: library/pdb.rst:414 +#: library/pdb.rst:432 msgid "*count* argument is added." msgstr "" -#: library/pdb.rst:419 +#: library/pdb.rst:437 msgid "" "Move the current frame *count* (default one) levels down in the stack trace " "(to a newer frame)." msgstr "" -#: library/pdb.rst:424 +#: library/pdb.rst:442 msgid "" "Move the current frame *count* (default one) levels up in the stack trace " "(to an older frame)." msgstr "" -#: library/pdb.rst:429 +#: library/pdb.rst:447 msgid "" "With a *lineno* argument, set a break at line *lineno* in the current file. " "The line number may be prefixed with a *filename* and a colon, to specify a " @@ -590,46 +611,46 @@ msgid "" "abspath/to/file.py``, ``relpath/file.py``, ``module`` and ``package.module``." msgstr "" -#: library/pdb.rst:436 +#: library/pdb.rst:454 msgid "" "With a *function* argument, set a break at the first executable statement " "within that function. *function* can be any expression that evaluates to a " "function in the current namespace." msgstr "" -#: library/pdb.rst:440 +#: library/pdb.rst:458 msgid "" "If a second argument is present, it is an expression which must evaluate to " "true before the breakpoint is honored." msgstr "" -#: library/pdb.rst:443 +#: library/pdb.rst:461 msgid "" "Without argument, list all breaks, including for each breakpoint, the number " "of times that breakpoint has been hit, the current ignore count, and the " "associated condition if any." msgstr "" -#: library/pdb.rst:447 +#: library/pdb.rst:465 msgid "" "Each breakpoint is assigned a number to which all the other breakpoint " "commands refer." msgstr "" -#: library/pdb.rst:452 +#: library/pdb.rst:470 msgid "" "Temporary breakpoint, which is removed automatically when it is first hit. " "The arguments are the same as for :pdbcmd:`break`." msgstr "" -#: library/pdb.rst:457 +#: library/pdb.rst:475 msgid "" "With a *filename:lineno* argument, clear all the breakpoints at this line. " "With a space separated list of breakpoint numbers, clear those breakpoints. " "Without argument, clear all breaks (but first ask confirmation)." msgstr "" -#: library/pdb.rst:463 +#: library/pdb.rst:481 msgid "" "Disable the breakpoints given as a space separated list of breakpoint " "numbers. Disabling a breakpoint means it cannot cause the program to stop " @@ -637,11 +658,11 @@ msgid "" "breakpoints and can be (re-)enabled." msgstr "" -#: library/pdb.rst:470 +#: library/pdb.rst:488 msgid "Enable the breakpoints specified." msgstr "" -#: library/pdb.rst:474 +#: library/pdb.rst:492 msgid "" "Set the ignore count for the given breakpoint number. If *count* is " "omitted, the ignore count is set to 0. A breakpoint becomes active when the " @@ -650,21 +671,21 @@ msgid "" "associated condition evaluates to true." msgstr "" -#: library/pdb.rst:482 +#: library/pdb.rst:500 msgid "" "Set a new *condition* for the breakpoint, an expression which must evaluate " "to true before the breakpoint is honored. If *condition* is absent, any " "existing condition is removed; i.e., the breakpoint is made unconditional." msgstr "" -#: library/pdb.rst:488 +#: library/pdb.rst:506 msgid "" "Specify a list of commands for breakpoint number *bpnumber*. The commands " "themselves appear on the following lines. Type a line containing just " "``end`` to terminate the commands. An example::" msgstr "" -#: library/pdb.rst:492 +#: library/pdb.rst:510 msgid "" "(Pdb) commands 1\n" "(com) p some_variable\n" @@ -672,25 +693,25 @@ msgid "" "(Pdb)" msgstr "" -#: library/pdb.rst:497 +#: library/pdb.rst:515 msgid "" "To remove all commands from a breakpoint, type ``commands`` and follow it " "immediately with ``end``; that is, give no commands." msgstr "" -#: library/pdb.rst:500 +#: library/pdb.rst:518 msgid "" "With no *bpnumber* argument, ``commands`` refers to the last breakpoint set." msgstr "" -#: library/pdb.rst:502 +#: library/pdb.rst:520 msgid "" "You can use breakpoint commands to start your program up again. Simply use " "the :pdbcmd:`continue` command, or :pdbcmd:`step`, or any other command that " "resumes execution." msgstr "" -#: library/pdb.rst:506 +#: library/pdb.rst:524 msgid "" "Specifying any command resuming execution (currently :pdbcmd:`continue`, :" "pdbcmd:`step`, :pdbcmd:`next`, :pdbcmd:`return`, :pdbcmd:`until`, :pdbcmd:" @@ -701,26 +722,26 @@ msgid "" "to ambiguities about which list to execute." msgstr "" -#: library/pdb.rst:515 +#: library/pdb.rst:533 msgid "" "If the list of commands contains the ``silent`` command, or a command that " "resumes execution, then the breakpoint message containing information about " "the frame is not displayed." msgstr "" -#: library/pdb.rst:519 +#: library/pdb.rst:537 msgid "" "Frame information will not be displayed if a command that resumes execution " "is present in the command list." msgstr "" -#: library/pdb.rst:525 +#: library/pdb.rst:543 msgid "" "Execute the current line, stop at the first possible occasion (either in a " "function that is called or on the next line in the current function)." msgstr "" -#: library/pdb.rst:530 +#: library/pdb.rst:548 msgid "" "Continue execution until the next line in the current function is reached or " "it returns. (The difference between :pdbcmd:`next` and :pdbcmd:`step` is " @@ -729,46 +750,46 @@ msgid "" "line in the current function.)" msgstr "" -#: library/pdb.rst:538 +#: library/pdb.rst:556 msgid "" "Without argument, continue execution until the line with a number greater " "than the current one is reached." msgstr "" -#: library/pdb.rst:541 +#: library/pdb.rst:559 msgid "" "With *lineno*, continue execution until a line with a number greater or " "equal to *lineno* is reached. In both cases, also stop when the current " "frame returns." msgstr "" -#: library/pdb.rst:545 +#: library/pdb.rst:563 msgid "Allow giving an explicit line number." msgstr "" -#: library/pdb.rst:550 +#: library/pdb.rst:568 msgid "Continue execution until the current function returns." msgstr "" -#: library/pdb.rst:554 +#: library/pdb.rst:572 msgid "Continue execution, only stop when a breakpoint is encountered." msgstr "" -#: library/pdb.rst:558 +#: library/pdb.rst:576 msgid "" "Set the next line that will be executed. Only available in the bottom-most " "frame. This lets you jump back and execute code again, or jump forward to " "skip code that you don't want to run." msgstr "" -#: library/pdb.rst:562 +#: library/pdb.rst:580 msgid "" "It should be noted that not all jumps are allowed -- for instance it is not " "possible to jump into the middle of a :keyword:`for` loop or out of a :" "keyword:`finally` clause." msgstr "" -#: library/pdb.rst:568 +#: library/pdb.rst:586 msgid "" "List source code for the current file. Without arguments, list 11 lines " "around the current line or continue the previous listing. With ``.`` as " @@ -777,7 +798,7 @@ msgid "" "second argument is less than the first, it is interpreted as a count." msgstr "" -#: library/pdb.rst:574 +#: library/pdb.rst:592 msgid "" "The current line in the current frame is indicated by ``->``. If an " "exception is being debugged, the line where the exception was originally " @@ -785,67 +806,67 @@ msgid "" "line." msgstr "" -#: library/pdb.rst:579 +#: library/pdb.rst:597 msgid "Added the ``>>`` marker." msgstr "" -#: library/pdb.rst:584 +#: library/pdb.rst:602 msgid "" "List all source code for the current function or frame. Interesting lines " "are marked as for :pdbcmd:`list`." msgstr "" -#: library/pdb.rst:591 +#: library/pdb.rst:609 msgid "Print the arguments of the current function and their current values." msgstr "" -#: library/pdb.rst:595 +#: library/pdb.rst:613 msgid "Evaluate *expression* in the current context and print its value." msgstr "" -#: library/pdb.rst:599 +#: library/pdb.rst:617 msgid "" "``print()`` can also be used, but is not a debugger command --- this " "executes the Python :func:`print` function." msgstr "" -#: library/pdb.rst:605 +#: library/pdb.rst:623 msgid "" "Like the :pdbcmd:`p` command, except the value of *expression* is pretty-" "printed using the :mod:`pprint` module." msgstr "" -#: library/pdb.rst:610 +#: library/pdb.rst:628 msgid "Print the type of *expression*." msgstr "" -#: library/pdb.rst:614 +#: library/pdb.rst:632 msgid "Try to get source code of *expression* and display it." msgstr "" -#: library/pdb.rst:620 +#: library/pdb.rst:638 msgid "" "Display the value of *expression* if it changed, each time execution stops " "in the current frame." msgstr "" -#: library/pdb.rst:623 +#: library/pdb.rst:641 msgid "" "Without *expression*, list all display expressions for the current frame." msgstr "" -#: library/pdb.rst:627 +#: library/pdb.rst:645 msgid "" "Display evaluates *expression* and compares to the result of the previous " "evaluation of *expression*, so when the result is mutable, display may not " "be able to pick up the changes." msgstr "" -#: library/pdb.rst:796 +#: library/pdb.rst:814 msgid "Example::" msgstr "" -#: library/pdb.rst:633 +#: library/pdb.rst:651 msgid "" "lst = []\n" "breakpoint()\n" @@ -854,13 +875,13 @@ msgid "" "print(lst)" msgstr "" -#: library/pdb.rst:639 +#: library/pdb.rst:657 msgid "" "Display won't realize ``lst`` has been changed because the result of " "evaluation is modified in place by ``lst.append(1)`` before being compared::" msgstr "" -#: library/pdb.rst:642 +#: library/pdb.rst:660 msgid "" "> example.py(3)()\n" "-> pass\n" @@ -875,11 +896,11 @@ msgid "" "(Pdb)" msgstr "" -#: library/pdb.rst:654 +#: library/pdb.rst:672 msgid "You can do some tricks with copy mechanism to make it work::" msgstr "" -#: library/pdb.rst:656 +#: library/pdb.rst:674 msgid "" "> example.py(3)()\n" "-> pass\n" @@ -895,13 +916,13 @@ msgid "" "(Pdb)" msgstr "" -#: library/pdb.rst:673 +#: library/pdb.rst:691 msgid "" "Do not display *expression* anymore in the current frame. Without " "*expression*, clear all display expressions for the current frame." msgstr "" -#: library/pdb.rst:680 +#: library/pdb.rst:698 msgid "" "Start an interactive interpreter (using the :mod:`code` module) in a new " "global namespace initialised from the local and global namespaces for the " @@ -909,7 +930,7 @@ msgid "" "return to the debugger." msgstr "" -#: library/pdb.rst:687 +#: library/pdb.rst:705 msgid "" "As ``interact`` creates a new dedicated namespace for code execution, " "assignments to variables will not affect the original namespaces. However, " @@ -917,18 +938,18 @@ msgid "" "original namespaces as usual." msgstr "" -#: library/pdb.rst:694 +#: library/pdb.rst:712 msgid "" "``exit()`` and ``quit()`` can be used to exit the :pdbcmd:`interact` command." msgstr "" -#: library/pdb.rst:698 +#: library/pdb.rst:716 msgid "" ":pdbcmd:`interact` directs its output to the debugger's output channel " "rather than :data:`sys.stderr`." msgstr "" -#: library/pdb.rst:706 +#: library/pdb.rst:724 msgid "" "Create an alias called *name* that executes *command*. The *command* must " "*not* be enclosed in quotes. Replaceable parameters can be indicated by " @@ -937,7 +958,7 @@ msgid "" "If no arguments are given, all aliases are listed." msgstr "" -#: library/pdb.rst:712 +#: library/pdb.rst:730 msgid "" "Aliases may be nested and can contain anything that can be legally typed at " "the pdb prompt. Note that internal pdb commands *can* be overridden by " @@ -946,13 +967,13 @@ msgid "" "other words in the line are left alone." msgstr "" -#: library/pdb.rst:718 +#: library/pdb.rst:736 msgid "" "As an example, here are two useful aliases (especially when placed in the :" "file:`.pdbrc` file)::" msgstr "" -#: library/pdb.rst:721 +#: library/pdb.rst:739 msgid "" "# Print instance variables (usage \"pi classInst\")\n" "alias pi for k in %1.__dict__.keys(): print(f\"%1.{k} = {%1.__dict__[k]}\")\n" @@ -960,36 +981,36 @@ msgid "" "alias ps pi self" msgstr "" -#: library/pdb.rst:728 +#: library/pdb.rst:746 msgid "Delete the specified alias *name*." msgstr "" -#: library/pdb.rst:732 +#: library/pdb.rst:750 msgid "" "Execute the (one-line) *statement* in the context of the current stack " "frame. The exclamation point can be omitted unless the first word of the " "statement resembles a debugger command, e.g.:" msgstr "" -#: library/pdb.rst:736 +#: library/pdb.rst:754 msgid "" "(Pdb) ! n=42\n" "(Pdb)" msgstr "" -#: library/pdb.rst:741 +#: library/pdb.rst:759 msgid "" "To set a global variable, you can prefix the assignment command with a :" "keyword:`global` statement on the same line, e.g.:" msgstr "" -#: library/pdb.rst:744 +#: library/pdb.rst:762 msgid "" "(Pdb) global list_options; list_options = ['-l']\n" "(Pdb)" msgstr "" -#: library/pdb.rst:752 +#: library/pdb.rst:770 msgid "" "Restart the debugged Python program. If *args* is supplied, it is split " "with :mod:`shlex` and the result is used as the new :data:`sys.argv`. " @@ -997,26 +1018,26 @@ msgid "" "`restart` is an alias for :pdbcmd:`run`." msgstr "" -#: library/pdb.rst:757 +#: library/pdb.rst:775 msgid "" ":pdbcmd:`run` and :pdbcmd:`restart` commands are disabled when the debugger " "is invoked in ``'inline'`` mode." msgstr "" -#: library/pdb.rst:763 +#: library/pdb.rst:781 msgid "" "Quit from the debugger. The program being executed is aborted. An end-of-" "file input is equivalent to :pdbcmd:`quit`." msgstr "" -#: library/pdb.rst:766 +#: library/pdb.rst:784 msgid "" "A confirmation prompt will be shown if the debugger is invoked in " "``'inline'`` mode. Either ``y``, ``Y``, ```` or ``EOF`` will confirm " "the quit." msgstr "" -#: library/pdb.rst:770 +#: library/pdb.rst:788 msgid "" "A confirmation prompt will be shown if the debugger is invoked in " "``'inline'`` mode. After the confirmation, the debugger will call :func:`sys." @@ -1024,21 +1045,21 @@ msgid "" "event." msgstr "" -#: library/pdb.rst:778 +#: library/pdb.rst:796 msgid "" "Enter a recursive debugger that steps through *code* (which is an arbitrary " "expression or statement to be executed in the current environment)." msgstr "" -#: library/pdb.rst:784 +#: library/pdb.rst:802 msgid "Print the return value for the last return of the current function." msgstr "" -#: library/pdb.rst:788 +#: library/pdb.rst:806 msgid "List or jump between chained exceptions." msgstr "" -#: library/pdb.rst:790 +#: library/pdb.rst:808 msgid "" "When using ``pdb.pm()`` or ``Pdb.post_mortem(...)`` with a chained " "exception instead of a traceback, it allows the user to move between the " @@ -1046,7 +1067,7 @@ msgid "" "``exceptions `` to switch to that exception." msgstr "" -#: library/pdb.rst:798 +#: library/pdb.rst:816 msgid "" "def out():\n" " try:\n" @@ -1066,11 +1087,11 @@ msgid "" " out()" msgstr "" -#: library/pdb.rst:815 +#: library/pdb.rst:833 msgid "calling ``pdb.pm()`` will allow to move between exceptions::" msgstr "" -#: library/pdb.rst:817 +#: library/pdb.rst:835 msgid "" "> example.py(5)out()\n" "-> raise ValueError(\"reraise middle() error\") from e\n" @@ -1089,11 +1110,11 @@ msgid "" "-> return inner(0)" msgstr "" -#: library/pdb.rst:836 +#: library/pdb.rst:854 msgid "Footnotes" msgstr "" -#: library/pdb.rst:837 +#: library/pdb.rst:855 msgid "" "Whether a frame is considered to originate in a certain module is determined " "by the ``__name__`` in the frame globals." @@ -1119,18 +1140,18 @@ msgstr "" msgid "cmd" msgstr "" -#: library/pdb.rst:377 +#: library/pdb.rst:395 msgid ".pdbrc" msgstr "" -#: library/pdb.rst:377 +#: library/pdb.rst:395 msgid "file" msgstr "" -#: library/pdb.rst:377 +#: library/pdb.rst:395 msgid "debugger" msgstr "" -#: library/pdb.rst:377 +#: library/pdb.rst:395 msgid "configuration" msgstr "" diff --git a/library/persistence.po b/library/persistence.po index bb132b3e..620fcb99 100644 --- a/library/persistence.po +++ b/library/persistence.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pickle.po b/library/pickle.po index fe76b24a..5ea22a99 100644 --- a/library/pickle.po +++ b/library/pickle.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pickletools.po b/library/pickletools.po index d02d5e91..b9197d2c 100644 --- a/library/pickletools.po +++ b/library/pickletools.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pipes.po b/library/pipes.po index 1530a20e..cf1765de 100644 --- a/library/pipes.po +++ b/library/pipes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pkgutil.po b/library/pkgutil.po index 47034b6d..06faa366 100644 --- a/library/pkgutil.po +++ b/library/pkgutil.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -110,9 +110,10 @@ msgstr "" #: library/pkgutil.rst:72 msgid "" -"If fullname contains a ``'.'``, the finders will be for the package " -"containing fullname, otherwise they will be all registered top level finders " -"(i.e. those on both :data:`sys.meta_path` and :data:`sys.path_hooks`)." +"If *fullname* contains a ``'.'``, the finders will be for the package " +"containing *fullname*, otherwise they will be all registered top level " +"finders (i.e. those on both :data:`sys.meta_path` and :data:`sys." +"path_hooks`)." msgstr "" #: library/pkgutil.rst:76 diff --git a/library/platform.po b/library/platform.po index 0e2e6afc..d99d73f1 100644 --- a/library/platform.po +++ b/library/platform.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-10 22:38+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/plistlib.po b/library/plistlib.po index 66ff8464..1f02e998 100644 --- a/library/plistlib.po +++ b/library/plistlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/poplib.po b/library/poplib.po index 34ba8507..5e83420d 100644 --- a/library/poplib.po +++ b/library/poplib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/posix.po b/library/posix.po index 3617ed11..43aadc37 100644 --- a/library/posix.po +++ b/library/posix.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pprint.po b/library/pprint.po index 3bf0a268..3d5341f8 100644 --- a/library/pprint.po +++ b/library/pprint.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/profile.po b/library/profile.po index 9ac08636..986aef3a 100644 --- a/library/profile.po +++ b/library/profile.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pty.po b/library/pty.po index 982e1399..78c1a001 100644 --- a/library/pty.po +++ b/library/pty.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pwd.po b/library/pwd.po index b101f33c..32feb564 100644 --- a/library/pwd.po +++ b/library/pwd.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/py_compile.po b/library/py_compile.po index be83a5c2..21eb5c99 100644 --- a/library/py_compile.po +++ b/library/py_compile.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pyclbr.po b/library/pyclbr.po index cc2b6001..bf718dc6 100644 --- a/library/pyclbr.po +++ b/library/pyclbr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pydoc.po b/library/pydoc.po index 4b3a1853..81b3a124 100644 --- a/library/pydoc.po +++ b/library/pydoc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/pyexpat.po b/library/pyexpat.po index e32377dc..801cef79 100644 --- a/library/pyexpat.po +++ b/library/pyexpat.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/python.po b/library/python.po index a7391400..83336996 100644 --- a/library/python.po +++ b/library/python.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -27,3 +27,9 @@ msgid "" "related to the Python interpreter and its interaction with its environment. " "Here's an overview:" msgstr "" + +#: library/python.rst:33 +msgid "" +"See the :mod:`concurrent.interpreters` module, which similarly exposes core " +"runtime functionality." +msgstr "" diff --git a/library/queue.po b/library/queue.po index c7ce8418..86ea4e30 100644 --- a/library/queue.po +++ b/library/queue.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/quopri.po b/library/quopri.po index c24e23cb..16edb30d 100644 --- a/library/quopri.po +++ b/library/quopri.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/random.po b/library/random.po index 07035005..c2d7be54 100644 --- a/library/random.po +++ b/library/random.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/re.po b/library/re.po index 3707bc6a..88485145 100644 --- a/library/re.po +++ b/library/re.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -145,7 +145,7 @@ msgstr "" msgid "The special characters are:" msgstr "" -#: library/re.rst:1661 +#: library/re.rst:1663 msgid "``.``" msgstr "" @@ -1214,7 +1214,7 @@ msgid "" msgstr "" #: library/re.rst:931 library/re.rst:960 library/re.rst:1040 -#: library/re.rst:1114 library/re.rst:1150 +#: library/re.rst:1117 library/re.rst:1152 msgid "" "The expression's behaviour can be modified by specifying a *flags* value. " "Values can be any of the `flags`_ variables, combined using bitwise OR (the " @@ -1332,8 +1332,8 @@ msgstr "" #: library/re.rst:994 msgid "" -"Empty matches for the pattern split the string only when not adjacent to a " -"previous empty match." +"Adjacent empty matches are not possible, but an empty match can occur " +"immediately after a non-empty match." msgstr "" #: library/re.rst:997 @@ -1347,7 +1347,7 @@ msgid "" "'']" msgstr "" -#: library/re.rst:1118 +#: library/re.rst:1121 msgid "Added the optional flags argument." msgstr "" @@ -1442,12 +1442,17 @@ msgstr "" msgid "" "The optional argument *count* is the maximum number of pattern occurrences " "to be replaced; *count* must be a non-negative integer. If omitted or zero, " -"all occurrences will be replaced. Empty matches for the pattern are replaced " -"only when not adjacent to a previous empty match, so ``sub('x*', '-', " -"'abxd')`` returns ``'-a-b--d-'``." +"all occurrences will be replaced." msgstr "" -#: library/re.rst:1104 +#: library/re.rst:1100 +msgid "" +"Adjacent empty matches are not possible, but an empty match can occur " +"immediately after a non-empty match. As a result, ``sub('x*', '-', 'abxd')`` " +"returns ``'-a-b--d-'`` instead of ``'-a-b-d-'``." +msgstr "" + +#: library/re.rst:1107 msgid "" "In string-type *repl* arguments, in addition to the character escapes and " "backreferences described above, ``\\g`` will use the substring matched " @@ -1460,51 +1465,50 @@ msgid "" "RE." msgstr "" -#: library/re.rst:1399 +#: library/re.rst:1401 msgid "Unmatched groups are replaced with an empty string." msgstr "" -#: library/re.rst:1124 +#: library/re.rst:1127 msgid "" "Unknown escapes in *pattern* consisting of ``'\\'`` and an ASCII letter now " "are errors." msgstr "" -#: library/re.rst:1128 +#: library/re.rst:1131 msgid "" "Unknown escapes in *repl* consisting of ``'\\'`` and an ASCII letter now are " -"errors. Empty matches for the pattern are replaced when adjacent to a " -"previous non-empty match." +"errors. An empty match can occur immediately after a non-empty match." msgstr "" -#: library/re.rst:1134 +#: library/re.rst:1136 msgid "" "Group *id* can only contain ASCII digits. In :class:`bytes` replacement " "strings, group *name* can only contain bytes in the ASCII range " "(``b'\\x00'``-``b'\\x7f'``)." msgstr "" -#: library/re.rst:1139 +#: library/re.rst:1141 msgid "" "Passing *count* and *flags* as positional arguments is deprecated. In future " "Python versions they will be :ref:`keyword-only parameters `." msgstr "" -#: library/re.rst:1147 +#: library/re.rst:1149 msgid "" "Perform the same operation as :func:`sub`, but return a tuple ``(new_string, " "number_of_subs_made)``." msgstr "" -#: library/re.rst:1157 +#: library/re.rst:1159 msgid "" "Escape special characters in *pattern*. This is useful if you want to match " "an arbitrary literal string that may have regular expression metacharacters " "in it. For example::" msgstr "" -#: library/re.rst:1161 +#: library/re.rst:1163 msgid "" ">>> print(re.escape('https://www.python.org'))\n" "https://www\\.python\\.org\n" @@ -1519,13 +1523,13 @@ msgid "" "/|\\-|\\+|\\*\\*|\\*" msgstr "" -#: library/re.rst:1172 +#: library/re.rst:1174 msgid "" "This function must not be used for the replacement string in :func:`sub` " "and :func:`subn`, only backslashes should be escaped. For example::" msgstr "" -#: library/re.rst:1175 +#: library/re.rst:1177 msgid "" ">>> digits_re = r'\\d+'\n" ">>> sample = '/usr/sbin/sendmail - 0 errors, 12 warnings'\n" @@ -1533,11 +1537,11 @@ msgid "" "/usr/sbin/sendmail - \\d+ errors, \\d+ warnings" msgstr "" -#: library/re.rst:1180 +#: library/re.rst:1182 msgid "The ``'_'`` character is no longer escaped." msgstr "" -#: library/re.rst:1183 +#: library/re.rst:1185 msgid "" "Only characters that can have special meaning in a regular expression are " "escaped. As a result, ``'!'``, ``'\"'``, ``'%'``, ``\"'\"``, ``','``, " @@ -1545,15 +1549,15 @@ msgid "" "are no longer escaped." msgstr "" -#: library/re.rst:1192 +#: library/re.rst:1194 msgid "Clear the regular expression cache." msgstr "" -#: library/re.rst:1196 +#: library/re.rst:1198 msgid "Exceptions" msgstr "" -#: library/re.rst:1200 +#: library/re.rst:1202 msgid "" "Exception raised when a string passed to one of the functions here is not a " "valid regular expression (for example, it might contain unmatched " @@ -1563,51 +1567,51 @@ msgid "" "attributes:" msgstr "" -#: library/re.rst:1208 +#: library/re.rst:1210 msgid "The unformatted error message." msgstr "" -#: library/re.rst:1212 +#: library/re.rst:1214 msgid "The regular expression pattern." msgstr "" -#: library/re.rst:1216 +#: library/re.rst:1218 msgid "The index in *pattern* where compilation failed (may be ``None``)." msgstr "" -#: library/re.rst:1220 +#: library/re.rst:1222 msgid "The line corresponding to *pos* (may be ``None``)." msgstr "" -#: library/re.rst:1224 +#: library/re.rst:1226 msgid "The column corresponding to *pos* (may be ``None``)." msgstr "" -#: library/re.rst:1226 +#: library/re.rst:1228 msgid "Added additional attributes." msgstr "" -#: library/re.rst:1229 +#: library/re.rst:1231 msgid "" "``PatternError`` was originally named ``error``; the latter is kept as an " "alias for backward compatibility." msgstr "" -#: library/re.rst:1236 +#: library/re.rst:1238 msgid "Regular Expression Objects" msgstr "" -#: library/re.rst:1240 +#: library/re.rst:1242 msgid "Compiled regular expression object returned by :func:`re.compile`." msgstr "" -#: library/re.rst:1242 +#: library/re.rst:1244 msgid "" ":py:class:`re.Pattern` supports ``[]`` to indicate a Unicode (str) or bytes " "pattern. See :ref:`types-genericalias`." msgstr "" -#: library/re.rst:1248 +#: library/re.rst:1250 msgid "" "Scan through *string* looking for the first location where this regular " "expression produces a match, and return a corresponding :class:`~re.Match`. " @@ -1616,7 +1620,7 @@ msgid "" "string." msgstr "" -#: library/re.rst:1253 +#: library/re.rst:1255 msgid "" "The optional second parameter *pos* gives an index in the string where the " "search is to start; it defaults to ``0``. This is not completely equivalent " @@ -1625,7 +1629,7 @@ msgid "" "necessarily at the index where the search is to start." msgstr "" -#: library/re.rst:1259 +#: library/re.rst:1261 msgid "" "The optional parameter *endpos* limits how far the string will be searched; " "it will be as if the string is *endpos* characters long, so only the " @@ -1635,7 +1639,7 @@ msgid "" "equivalent to ``rx.search(string[:50], 0)``. ::" msgstr "" -#: library/re.rst:1266 +#: library/re.rst:1268 msgid "" ">>> pattern = re.compile(\"d\")\n" ">>> pattern.search(\"dog\") # Match at index 0\n" @@ -1643,7 +1647,7 @@ msgid "" ">>> pattern.search(\"dog\", 1) # No match; search doesn't include the \"d\"" msgstr "" -#: library/re.rst:1274 +#: library/re.rst:1276 msgid "" "If zero or more characters at the *beginning* of *string* match this regular " "expression, return a corresponding :class:`~re.Match`. Return ``None`` if " @@ -1651,13 +1655,13 @@ msgid "" "zero-length match." msgstr "" -#: library/re.rst:1297 +#: library/re.rst:1299 msgid "" "The optional *pos* and *endpos* parameters have the same meaning as for the :" "meth:`~Pattern.search` method. ::" msgstr "" -#: library/re.rst:1282 +#: library/re.rst:1284 msgid "" ">>> pattern = re.compile(\"o\")\n" ">>> pattern.match(\"dog\") # No match as \"o\" is not at the start of " @@ -1667,20 +1671,20 @@ msgid "" "" msgstr "" -#: library/re.rst:1287 +#: library/re.rst:1289 msgid "" "If you want to locate a match anywhere in *string*, use :meth:`~Pattern." "search` instead (see also :ref:`search-vs-match`)." msgstr "" -#: library/re.rst:1293 +#: library/re.rst:1295 msgid "" "If the whole *string* matches this regular expression, return a " "corresponding :class:`~re.Match`. Return ``None`` if the string does not " "match the pattern; note that this is different from a zero-length match." msgstr "" -#: library/re.rst:1300 +#: library/re.rst:1302 msgid "" ">>> pattern = re.compile(\"o[gh]\")\n" ">>> pattern.fullmatch(\"dog\") # No match as \"o\" is not at the start " @@ -1691,89 +1695,89 @@ msgid "" "" msgstr "" -#: library/re.rst:1311 +#: library/re.rst:1313 msgid "Identical to the :func:`split` function, using the compiled pattern." msgstr "" -#: library/re.rst:1316 +#: library/re.rst:1318 msgid "" "Similar to the :func:`findall` function, using the compiled pattern, but " "also accepts optional *pos* and *endpos* parameters that limit the search " "region like for :meth:`search`." msgstr "" -#: library/re.rst:1323 +#: library/re.rst:1325 msgid "" "Similar to the :func:`finditer` function, using the compiled pattern, but " "also accepts optional *pos* and *endpos* parameters that limit the search " "region like for :meth:`search`." msgstr "" -#: library/re.rst:1330 +#: library/re.rst:1332 msgid "Identical to the :func:`sub` function, using the compiled pattern." msgstr "" -#: library/re.rst:1335 +#: library/re.rst:1337 msgid "Identical to the :func:`subn` function, using the compiled pattern." msgstr "" -#: library/re.rst:1340 +#: library/re.rst:1342 msgid "" "The regex matching flags. This is a combination of the flags given to :func:" "`.compile`, any ``(?...)`` inline flags in the pattern, and implicit flags " "such as :py:const:`~re.UNICODE` if the pattern is a Unicode string." msgstr "" -#: library/re.rst:1347 +#: library/re.rst:1349 msgid "The number of capturing groups in the pattern." msgstr "" -#: library/re.rst:1352 +#: library/re.rst:1354 msgid "" "A dictionary mapping any symbolic group names defined by ``(?P)`` to " "group numbers. The dictionary is empty if no symbolic groups were used in " "the pattern." msgstr "" -#: library/re.rst:1359 +#: library/re.rst:1361 msgid "The pattern string from which the pattern object was compiled." msgstr "" -#: library/re.rst:1362 +#: library/re.rst:1364 msgid "" "Added support of :func:`copy.copy` and :func:`copy.deepcopy`. Compiled " "regular expression objects are considered atomic." msgstr "" -#: library/re.rst:1370 +#: library/re.rst:1372 msgid "Match Objects" msgstr "" -#: library/re.rst:1372 +#: library/re.rst:1374 msgid "" "Match objects always have a boolean value of ``True``. Since :meth:`~Pattern." "match` and :meth:`~Pattern.search` return ``None`` when there is no match, " "you can test whether there was a match with a simple ``if`` statement::" msgstr "" -#: library/re.rst:1377 +#: library/re.rst:1379 msgid "" "match = re.search(pattern, string)\n" "if match:\n" " process(match)" msgstr "" -#: library/re.rst:1383 +#: library/re.rst:1385 msgid "Match object returned by successful ``match``\\ es and ``search``\\ es." msgstr "" -#: library/re.rst:1385 +#: library/re.rst:1387 msgid "" ":py:class:`re.Match` supports ``[]`` to indicate a Unicode (str) or bytes " "match. See :ref:`types-genericalias`." msgstr "" -#: library/re.rst:1391 +#: library/re.rst:1393 msgid "" "Return the string obtained by doing backslash substitution on the template " "string *template*, as done by the :meth:`~Pattern.sub` method. Escapes such " @@ -1783,7 +1787,7 @@ msgid "" "backreference ``\\g<0>`` will be replaced by the entire match." msgstr "" -#: library/re.rst:1404 +#: library/re.rst:1406 msgid "" "Returns one or more subgroups of the match. If there is a single argument, " "the result is a single string; if there are multiple arguments, the result " @@ -1798,7 +1802,7 @@ msgid "" "the pattern that matched multiple times, the last match is returned. ::" msgstr "" -#: library/re.rst:1416 +#: library/re.rst:1418 msgid "" ">>> m = re.match(r\"(\\w+) (\\w+)\", \"Isaac Newton, physicist\")\n" ">>> m.group(0) # The entire match\n" @@ -1811,7 +1815,7 @@ msgid "" "('Isaac', 'Newton')" msgstr "" -#: library/re.rst:1426 +#: library/re.rst:1428 msgid "" "If the regular expression uses the ``(?P...)`` syntax, the *groupN* " "arguments may also be strings identifying groups by their group name. If a " @@ -1819,11 +1823,11 @@ msgid "" "`IndexError` exception is raised." msgstr "" -#: library/re.rst:1431 +#: library/re.rst:1433 msgid "A moderately complicated example::" msgstr "" -#: library/re.rst:1433 +#: library/re.rst:1435 msgid "" ">>> m = re.match(r\"(?P\\w+) (?P\\w+)\", \"Malcolm " "Reynolds\")\n" @@ -1833,11 +1837,11 @@ msgid "" "'Reynolds'" msgstr "" -#: library/re.rst:1439 +#: library/re.rst:1441 msgid "Named groups can also be referred to by their index::" msgstr "" -#: library/re.rst:1441 +#: library/re.rst:1443 msgid "" ">>> m.group(1)\n" "'Malcolm'\n" @@ -1845,24 +1849,24 @@ msgid "" "'Reynolds'" msgstr "" -#: library/re.rst:1446 +#: library/re.rst:1448 msgid "If a group matches multiple times, only the last match is accessible::" msgstr "" -#: library/re.rst:1448 +#: library/re.rst:1450 msgid "" ">>> m = re.match(r\"(..)+\", \"a1b2c3\") # Matches 3 times.\n" ">>> m.group(1) # Returns only the last match.\n" "'c3'" msgstr "" -#: library/re.rst:1455 +#: library/re.rst:1457 msgid "" "This is identical to ``m.group(g)``. This allows easier access to an " "individual group from a match::" msgstr "" -#: library/re.rst:1458 +#: library/re.rst:1460 msgid "" ">>> m = re.match(r\"(\\w+) (\\w+)\", \"Isaac Newton, physicist\")\n" ">>> m[0] # The entire match\n" @@ -1873,11 +1877,11 @@ msgid "" "'Newton'" msgstr "" -#: library/re.rst:1466 +#: library/re.rst:1468 msgid "Named groups are supported as well::" msgstr "" -#: library/re.rst:1468 +#: library/re.rst:1470 msgid "" ">>> m = re.match(r\"(?P\\w+) (?P\\w+)\", \"Isaac " "Newton\")\n" @@ -1887,32 +1891,32 @@ msgid "" "'Newton'" msgstr "" -#: library/re.rst:1479 +#: library/re.rst:1481 msgid "" "Return a tuple containing all the subgroups of the match, from 1 up to " "however many groups are in the pattern. The *default* argument is used for " "groups that did not participate in the match; it defaults to ``None``." msgstr "" -#: library/re.rst:1708 +#: library/re.rst:1710 msgid "For example::" msgstr "" -#: library/re.rst:1485 +#: library/re.rst:1487 msgid "" ">>> m = re.match(r\"(\\d+)\\.(\\d+)\", \"24.1632\")\n" ">>> m.groups()\n" "('24', '1632')" msgstr "" -#: library/re.rst:1489 +#: library/re.rst:1491 msgid "" "If we make the decimal place and everything after it optional, not all " "groups might participate in the match. These groups will default to " "``None`` unless the *default* argument is given::" msgstr "" -#: library/re.rst:1493 +#: library/re.rst:1495 msgid "" ">>> m = re.match(r\"(\\d+)\\.?(\\d+)?\", \"24\")\n" ">>> m.groups() # Second group defaults to None.\n" @@ -1921,14 +1925,14 @@ msgid "" "('24', '0')" msgstr "" -#: library/re.rst:1502 +#: library/re.rst:1504 msgid "" "Return a dictionary containing all the *named* subgroups of the match, keyed " "by the subgroup name. The *default* argument is used for groups that did " "not participate in the match; it defaults to ``None``. For example::" msgstr "" -#: library/re.rst:1506 +#: library/re.rst:1508 msgid "" ">>> m = re.match(r\"(?P\\w+) (?P\\w+)\", \"Malcolm " "Reynolds\")\n" @@ -1936,7 +1940,7 @@ msgid "" "{'first_name': 'Malcolm', 'last_name': 'Reynolds'}" msgstr "" -#: library/re.rst:1514 +#: library/re.rst:1516 msgid "" "Return the indices of the start and end of the substring matched by *group*; " "*group* defaults to zero (meaning the whole matched substring). Return " @@ -1945,11 +1949,11 @@ msgid "" "matched by group *g* (equivalent to ``m.group(g)``) is ::" msgstr "" -#: library/re.rst:1520 +#: library/re.rst:1522 msgid "m.string[m.start(g):m.end(g)]" msgstr "" -#: library/re.rst:1522 +#: library/re.rst:1524 msgid "" "Note that ``m.start(group)`` will equal ``m.end(group)`` if *group* matched " "a null string. For example, after ``m = re.search('b(c?)', 'cba')``, ``m." @@ -1957,11 +1961,11 @@ msgid "" "2, and ``m.start(2)`` raises an :exc:`IndexError` exception." msgstr "" -#: library/re.rst:1527 +#: library/re.rst:1529 msgid "An example that will remove *remove_this* from email addresses::" msgstr "" -#: library/re.rst:1529 +#: library/re.rst:1531 msgid "" ">>> email = \"tony@tiremove_thisger.net\"\n" ">>> m = re.search(\"remove_this\", email)\n" @@ -1969,28 +1973,28 @@ msgid "" "'tony@tiger.net'" msgstr "" -#: library/re.rst:1537 +#: library/re.rst:1539 msgid "" "For a match *m*, return the 2-tuple ``(m.start(group), m.end(group))``. Note " "that if *group* did not contribute to the match, this is ``(-1, -1)``. " "*group* defaults to zero, the entire match." msgstr "" -#: library/re.rst:1544 +#: library/re.rst:1546 msgid "" "The value of *pos* which was passed to the :meth:`~Pattern.search` or :meth:" "`~Pattern.match` method of a :ref:`regex object `. This is the " "index into the string at which the RE engine started looking for a match." msgstr "" -#: library/re.rst:1551 +#: library/re.rst:1553 msgid "" "The value of *endpos* which was passed to the :meth:`~Pattern.search` or :" "meth:`~Pattern.match` method of a :ref:`regex object `. This is " "the index into the string beyond which the RE engine will not go." msgstr "" -#: library/re.rst:1558 +#: library/re.rst:1560 msgid "" "The integer index of the last matched capturing group, or ``None`` if no " "group was matched at all. For example, the expressions ``(a)b``, ``((a)" @@ -1999,43 +2003,43 @@ msgid "" "applied to the same string." msgstr "" -#: library/re.rst:1567 +#: library/re.rst:1569 msgid "" "The name of the last matched capturing group, or ``None`` if the group " "didn't have a name, or if no group was matched at all." msgstr "" -#: library/re.rst:1573 +#: library/re.rst:1575 msgid "" "The :ref:`regular expression object ` whose :meth:`~Pattern." "match` or :meth:`~Pattern.search` method produced this match instance." msgstr "" -#: library/re.rst:1579 +#: library/re.rst:1581 msgid "The string passed to :meth:`~Pattern.match` or :meth:`~Pattern.search`." msgstr "" -#: library/re.rst:1582 +#: library/re.rst:1584 msgid "" "Added support of :func:`copy.copy` and :func:`copy.deepcopy`. Match objects " "are considered atomic." msgstr "" -#: library/re.rst:1590 +#: library/re.rst:1592 msgid "Regular Expression Examples" msgstr "" -#: library/re.rst:1594 +#: library/re.rst:1596 msgid "Checking for a Pair" msgstr "" -#: library/re.rst:1596 +#: library/re.rst:1598 msgid "" "In this example, we'll use the following helper function to display match " "objects a little more gracefully::" msgstr "" -#: library/re.rst:1599 +#: library/re.rst:1601 msgid "" "def displaymatch(match):\n" " if match is None:\n" @@ -2043,7 +2047,7 @@ msgid "" " return '' % (match.group(), match.groups())" msgstr "" -#: library/re.rst:1604 +#: library/re.rst:1606 msgid "" "Suppose you are writing a poker program where a player's hand is represented " "as a 5-character string with each character representing a card, \"a\" for " @@ -2051,11 +2055,11 @@ msgid "" "\"2\" through \"9\" representing the card with that value." msgstr "" -#: library/re.rst:1609 +#: library/re.rst:1611 msgid "To see if a given string is a valid hand, one could do the following::" msgstr "" -#: library/re.rst:1611 +#: library/re.rst:1613 msgid "" ">>> valid = re.compile(r\"^[a2-9tjqk]{5}$\")\n" ">>> displaymatch(valid.match(\"akt5q\")) # Valid.\n" @@ -2066,14 +2070,14 @@ msgid "" "\"\"" msgstr "" -#: library/re.rst:1619 +#: library/re.rst:1621 msgid "" "That last hand, ``\"727ak\"``, contained a pair, or two of the same valued " "cards. To match this with a regular expression, one could use backreferences " "as such::" msgstr "" -#: library/re.rst:1622 +#: library/re.rst:1624 msgid "" ">>> pair = re.compile(r\".*(.).*\\1\")\n" ">>> displaymatch(pair.match(\"717ak\")) # Pair of 7s.\n" @@ -2083,13 +2087,13 @@ msgid "" "\"\"" msgstr "" -#: library/re.rst:1629 +#: library/re.rst:1631 msgid "" "To find out what card the pair consists of, one could use the :meth:`~Match." "group` method of the match object in the following manner::" msgstr "" -#: library/re.rst:1632 +#: library/re.rst:1634 msgid "" ">>> pair = re.compile(r\".*(.).*\\1\")\n" ">>> pair.match(\"717ak\").group(1)\n" @@ -2107,11 +2111,11 @@ msgid "" "'a'" msgstr "" -#: library/re.rst:1648 +#: library/re.rst:1650 msgid "Simulating scanf()" msgstr "" -#: library/re.rst:1652 +#: library/re.rst:1654 msgid "" "Python does not currently have an equivalent to :c:func:`!scanf`. Regular " "expressions are generally more powerful, though also more verbose, than :c:" @@ -2120,130 +2124,130 @@ msgid "" "expressions." msgstr "" -#: library/re.rst:1659 +#: library/re.rst:1661 msgid ":c:func:`!scanf` Token" msgstr "" -#: library/re.rst:1659 +#: library/re.rst:1661 msgid "Regular Expression" msgstr "" -#: library/re.rst:1661 +#: library/re.rst:1663 msgid "``%c``" msgstr "" -#: library/re.rst:1663 +#: library/re.rst:1665 msgid "``%5c``" msgstr "" -#: library/re.rst:1663 +#: library/re.rst:1665 msgid "``.{5}``" msgstr "" -#: library/re.rst:1665 +#: library/re.rst:1667 msgid "``%d``" msgstr "" -#: library/re.rst:1665 +#: library/re.rst:1667 msgid "``[-+]?\\d+``" msgstr "" -#: library/re.rst:1667 +#: library/re.rst:1669 msgid "``%e``, ``%E``, ``%f``, ``%g``" msgstr "" -#: library/re.rst:1667 +#: library/re.rst:1669 msgid "``[-+]?(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?``" msgstr "" -#: library/re.rst:1669 +#: library/re.rst:1671 msgid "``%i``" msgstr "" -#: library/re.rst:1669 +#: library/re.rst:1671 msgid "``[-+]?(0[xX][\\dA-Fa-f]+|0[0-7]*|\\d+)``" msgstr "" -#: library/re.rst:1671 +#: library/re.rst:1673 msgid "``%o``" msgstr "" -#: library/re.rst:1671 +#: library/re.rst:1673 msgid "``[-+]?[0-7]+``" msgstr "" -#: library/re.rst:1673 +#: library/re.rst:1675 msgid "``%s``" msgstr "" -#: library/re.rst:1673 +#: library/re.rst:1675 msgid "``\\S+``" msgstr "" -#: library/re.rst:1675 +#: library/re.rst:1677 msgid "``%u``" msgstr "" -#: library/re.rst:1675 +#: library/re.rst:1677 msgid "``\\d+``" msgstr "" -#: library/re.rst:1677 +#: library/re.rst:1679 msgid "``%x``, ``%X``" msgstr "" -#: library/re.rst:1677 +#: library/re.rst:1679 msgid "``[-+]?(0[xX])?[\\dA-Fa-f]+``" msgstr "" -#: library/re.rst:1680 +#: library/re.rst:1682 msgid "To extract the filename and numbers from a string like ::" msgstr "" -#: library/re.rst:1682 +#: library/re.rst:1684 msgid "/usr/sbin/sendmail - 0 errors, 4 warnings" msgstr "" -#: library/re.rst:1684 +#: library/re.rst:1686 msgid "you would use a :c:func:`!scanf` format like ::" msgstr "" -#: library/re.rst:1686 +#: library/re.rst:1688 msgid "%s - %d errors, %d warnings" msgstr "" -#: library/re.rst:1688 +#: library/re.rst:1690 msgid "The equivalent regular expression would be ::" msgstr "" -#: library/re.rst:1690 +#: library/re.rst:1692 msgid "(\\S+) - (\\d+) errors, (\\d+) warnings" msgstr "" -#: library/re.rst:1696 +#: library/re.rst:1698 msgid "search() vs. match()" msgstr "" -#: library/re.rst:1700 +#: library/re.rst:1702 msgid "" "Python offers different primitive operations based on regular expressions:" msgstr "" -#: library/re.rst:1702 +#: library/re.rst:1704 msgid ":func:`re.match` checks for a match only at the beginning of the string" msgstr "" -#: library/re.rst:1703 +#: library/re.rst:1705 msgid "" ":func:`re.search` checks for a match anywhere in the string (this is what " "Perl does by default)" msgstr "" -#: library/re.rst:1705 +#: library/re.rst:1707 msgid ":func:`re.fullmatch` checks for entire string to be a match" msgstr "" -#: library/re.rst:1710 +#: library/re.rst:1712 msgid "" ">>> re.match(\"c\", \"abcdef\") # No match\n" ">>> re.search(\"c\", \"abcdef\") # Match\n" @@ -2253,13 +2257,13 @@ msgid "" ">>> re.fullmatch(\"r.*n\", \"python\") # No match" msgstr "" -#: library/re.rst:1717 +#: library/re.rst:1719 msgid "" "Regular expressions beginning with ``'^'`` can be used with :func:`search` " "to restrict the match at the beginning of the string::" msgstr "" -#: library/re.rst:1720 +#: library/re.rst:1722 msgid "" ">>> re.match(\"c\", \"abcdef\") # No match\n" ">>> re.search(\"^c\", \"abcdef\") # No match\n" @@ -2267,7 +2271,7 @@ msgid "" "" msgstr "" -#: library/re.rst:1725 +#: library/re.rst:1727 msgid "" "Note however that in :const:`MULTILINE` mode :func:`match` only matches at " "the beginning of the string, whereas using :func:`search` with a regular " @@ -2275,18 +2279,18 @@ msgid "" "line. ::" msgstr "" -#: library/re.rst:1729 +#: library/re.rst:1731 msgid "" ">>> re.match(\"X\", \"A\\nB\\nX\", re.MULTILINE) # No match\n" ">>> re.search(\"^X\", \"A\\nB\\nX\", re.MULTILINE) # Match\n" "" msgstr "" -#: library/re.rst:1735 +#: library/re.rst:1737 msgid "Making a Phonebook" msgstr "" -#: library/re.rst:1737 +#: library/re.rst:1739 msgid "" ":func:`split` splits a string into a list delimited by the passed pattern. " "The method is invaluable for converting textual data into data structures " @@ -2294,13 +2298,13 @@ msgid "" "following example that creates a phonebook." msgstr "" -#: library/re.rst:1742 +#: library/re.rst:1744 msgid "" "First, here is the input. Normally it may come from a file, here we are " "using triple-quoted string syntax" msgstr "" -#: library/re.rst:1745 +#: library/re.rst:1747 msgid "" ">>> text = \"\"\"Ross McFluff: 834.345.1254 155 Elm Street\n" "...\n" @@ -2311,13 +2315,13 @@ msgid "" "... Heather Albrecht: 548.326.4584 919 Park Place\"\"\"" msgstr "" -#: library/re.rst:1755 +#: library/re.rst:1757 msgid "" "The entries are separated by one or more newlines. Now we convert the string " "into a list with each nonempty line having its own entry:" msgstr "" -#: library/re.rst:1758 +#: library/re.rst:1760 msgid "" ">>> entries = re.split(\"\\n+\", text)\n" ">>> entries\n" @@ -2327,14 +2331,14 @@ msgid "" "'Heather Albrecht: 548.326.4584 919 Park Place']" msgstr "" -#: library/re.rst:1768 +#: library/re.rst:1770 msgid "" "Finally, split each entry into a list with first name, last name, telephone " "number, and address. We use the ``maxsplit`` parameter of :func:`split` " "because the address has spaces, our splitting pattern, in it:" msgstr "" -#: library/re.rst:1772 +#: library/re.rst:1774 msgid "" ">>> [re.split(\":? \", entry, maxsplit=3) for entry in entries]\n" "[['Ross', 'McFluff', '834.345.1254', '155 Elm Street'],\n" @@ -2343,14 +2347,14 @@ msgid "" "['Heather', 'Albrecht', '548.326.4584', '919 Park Place']]" msgstr "" -#: library/re.rst:1781 +#: library/re.rst:1783 msgid "" "The ``:?`` pattern matches the colon after the last name, so that it does " "not occur in the result list. With a ``maxsplit`` of ``4``, we could " "separate the house number from the street name:" msgstr "" -#: library/re.rst:1785 +#: library/re.rst:1787 msgid "" ">>> [re.split(\":? \", entry, maxsplit=4) for entry in entries]\n" "[['Ross', 'McFluff', '834.345.1254', '155', 'Elm Street'],\n" @@ -2359,11 +2363,11 @@ msgid "" "['Heather', 'Albrecht', '548.326.4584', '919', 'Park Place']]" msgstr "" -#: library/re.rst:1796 +#: library/re.rst:1798 msgid "Text Munging" msgstr "" -#: library/re.rst:1798 +#: library/re.rst:1800 msgid "" ":func:`sub` replaces every occurrence of a pattern with a string or the " "result of a function. This example demonstrates using :func:`sub` with a " @@ -2371,7 +2375,7 @@ msgid "" "each word of a sentence except for the first and last characters::" msgstr "" -#: library/re.rst:1803 +#: library/re.rst:1805 msgid "" ">>> def repl(m):\n" "... inner_word = list(m.group(2))\n" @@ -2385,11 +2389,11 @@ msgid "" "'Pofsroser Aodlambelk, plasee reoprt yuor asnebces potlmrpy.'" msgstr "" -#: library/re.rst:1816 +#: library/re.rst:1818 msgid "Finding all Adverbs" msgstr "" -#: library/re.rst:1818 +#: library/re.rst:1820 msgid "" ":func:`findall` matches *all* occurrences of a pattern, not just the first " "one as :func:`search` does. For example, if a writer wanted to find all of " @@ -2397,18 +2401,18 @@ msgid "" "manner::" msgstr "" -#: library/re.rst:1823 +#: library/re.rst:1825 msgid "" ">>> text = \"He was carefully disguised but captured quickly by police.\"\n" ">>> re.findall(r\"\\w+ly\\b\", text)\n" "['carefully', 'quickly']" msgstr "" -#: library/re.rst:1829 +#: library/re.rst:1831 msgid "Finding all Adverbs and their Positions" msgstr "" -#: library/re.rst:1831 +#: library/re.rst:1833 msgid "" "If one wants more information about all matches of a pattern than the " "matched text, :func:`finditer` is useful as it provides :class:`~re.Match` " @@ -2417,7 +2421,7 @@ msgid "" "they would use :func:`finditer` in the following manner::" msgstr "" -#: library/re.rst:1837 +#: library/re.rst:1839 msgid "" ">>> text = \"He was carefully disguised but captured quickly by police.\"\n" ">>> for m in re.finditer(r\"\\w+ly\\b\", text):\n" @@ -2426,11 +2430,11 @@ msgid "" "40-47: quickly" msgstr "" -#: library/re.rst:1845 +#: library/re.rst:1847 msgid "Raw String Notation" msgstr "" -#: library/re.rst:1847 +#: library/re.rst:1849 msgid "" "Raw string notation (``r\"text\"``) keeps regular expressions sane. Without " "it, every backslash (``'\\'``) in a regular expression would have to be " @@ -2438,7 +2442,7 @@ msgid "" "lines of code are functionally identical::" msgstr "" -#: library/re.rst:1852 +#: library/re.rst:1854 msgid "" ">>> re.match(r\"\\W(.)\\1\\W\", \" ff \")\n" "\n" @@ -2446,7 +2450,7 @@ msgid "" "" msgstr "" -#: library/re.rst:1857 +#: library/re.rst:1859 msgid "" "When one wants to match a literal backslash, it must be escaped in the " "regular expression. With raw string notation, this means ``r\"\\\\\"``. " @@ -2454,7 +2458,7 @@ msgid "" "following lines of code functionally identical::" msgstr "" -#: library/re.rst:1862 +#: library/re.rst:1864 msgid "" ">>> re.match(r\"\\\\\", r\"\\\\\")\n" "\n" @@ -2462,25 +2466,25 @@ msgid "" "" msgstr "" -#: library/re.rst:1869 +#: library/re.rst:1871 msgid "Writing a Tokenizer" msgstr "" -#: library/re.rst:1871 +#: library/re.rst:1873 msgid "" "A `tokenizer or scanner `_ " "analyzes a string to categorize groups of characters. This is a useful " "first step in writing a compiler or interpreter." msgstr "" -#: library/re.rst:1875 +#: library/re.rst:1877 msgid "" "The text categories are specified with regular expressions. The technique " "is to combine those into a single master regular expression and to loop over " "successive matches::" msgstr "" -#: library/re.rst:1879 +#: library/re.rst:1881 msgid "" "from typing import NamedTuple\n" "import re\n" @@ -2536,11 +2540,11 @@ msgid "" " print(token)" msgstr "" -#: library/re.rst:1931 +#: library/re.rst:1933 msgid "The tokenizer produces the following output::" msgstr "" -#: library/re.rst:1933 +#: library/re.rst:1935 msgid "" "Token(type='IF', value='IF', line=2, column=4)\n" "Token(type='ID', value='quantity', line=2, column=7)\n" @@ -2563,7 +2567,7 @@ msgid "" "Token(type='END', value=';', line=5, column=9)" msgstr "" -#: library/re.rst:1954 +#: library/re.rst:1956 msgid "" "Friedl, Jeffrey. Mastering Regular Expressions. 3rd ed., O'Reilly Media, " "2009. The third edition of the book no longer covers Python at all, but the " @@ -2579,7 +2583,7 @@ msgstr "" #: library/re.rst:235 library/re.rst:258 library/re.rst:304 library/re.rst:327 #: library/re.rst:414 library/re.rst:452 library/re.rst:464 library/re.rst:498 #: library/re.rst:531 library/re.rst:548 library/re.rst:587 library/re.rst:611 -#: library/re.rst:633 library/re.rst:664 library/re.rst:866 library/re.rst:1102 +#: library/re.rst:633 library/re.rst:664 library/re.rst:866 library/re.rst:1105 msgid "in regular expressions" msgstr "" @@ -2783,10 +2787,10 @@ msgstr "" msgid "# (hash)" msgstr "" -#: library/re.rst:1102 +#: library/re.rst:1105 msgid "\\g" msgstr "" -#: library/re.rst:1650 +#: library/re.rst:1652 msgid "scanf (C function)" msgstr "" diff --git a/library/readline.po b/library/readline.po index e26685d9..9e8a4507 100644 --- a/library/readline.po +++ b/library/readline.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/removed.po b/library/removed.po index 5ff0f853..550c68ba 100644 --- a/library/removed.po +++ b/library/removed.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/reprlib.po b/library/reprlib.po index be5c2016..61300d7d 100644 --- a/library/reprlib.po +++ b/library/reprlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/resource.po b/library/resource.po index d14c7f1b..45df9e53 100644 --- a/library/resource.po +++ b/library/resource.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/rlcompleter.po b/library/rlcompleter.po index 4ba4e814..ed591273 100644 --- a/library/rlcompleter.po +++ b/library/rlcompleter.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/runpy.po b/library/runpy.po index 33ba6d67..c3a9842e 100644 --- a/library/runpy.po +++ b/library/runpy.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sched.po b/library/sched.po index 2a44fe36..68dd047f 100644 --- a/library/sched.po +++ b/library/sched.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/secrets.po b/library/secrets.po index 2bccf147..474ad7bf 100644 --- a/library/secrets.po +++ b/library/secrets.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/security_warnings.po b/library/security_warnings.po index b7b3fe5c..80c118da 100644 --- a/library/security_warnings.po +++ b/library/security_warnings.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/select.po b/library/select.po index f66ab2b1..c772d97d 100644 --- a/library/select.po +++ b/library/select.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/selectors.po b/library/selectors.po index cc1f5ce0..a0e1397a 100644 --- a/library/selectors.po +++ b/library/selectors.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/shelve.po b/library/shelve.po index 20baa812..926b1fe4 100644 --- a/library/shelve.po +++ b/library/shelve.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/shlex.po b/library/shlex.po index 4cbc5ddc..4647f406 100644 --- a/library/shlex.po +++ b/library/shlex.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/shutil.po b/library/shutil.po index 6ab4937e..5466e071 100644 --- a/library/shutil.po +++ b/library/shutil.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -110,7 +110,7 @@ msgid "" "subclass of the latter, this change is backward compatible." msgstr "" -#: library/shutil.rst:185 library/shutil.rst:287 library/shutil.rst:396 +#: library/shutil.rst:185 library/shutil.rst:287 library/shutil.rst:400 msgid "" "Platform-specific fast-copy syscalls may be used internally in order to copy " "the file more efficiently. See :ref:`shutil-platform-dependent-efficient-" @@ -410,66 +410,72 @@ msgid "" "parameter it receives is the tuple returned from :func:`sys.exc_info`." msgstr "" -#: library/shutil.rst:330 +#: library/shutil.rst:331 +msgid "" +":ref:`shutil-rmtree-example` for an example of handling the removal of a " +"directory tree that contains read-only files." +msgstr "" + +#: library/shutil.rst:334 msgid "" "Raises an :ref:`auditing event ` ``shutil.rmtree`` with arguments " "``path``, ``dir_fd``." msgstr "" -#: library/shutil.rst:332 +#: library/shutil.rst:336 msgid "" "Added a symlink attack resistant version that is used automatically if " "platform supports fd-based functions." msgstr "" -#: library/shutil.rst:336 +#: library/shutil.rst:340 msgid "" "On Windows, will no longer delete the contents of a directory junction " "before removing the junction." msgstr "" -#: library/shutil.rst:340 +#: library/shutil.rst:344 msgid "Added the *dir_fd* parameter." msgstr "" -#: library/shutil.rst:343 +#: library/shutil.rst:347 msgid "Added the *onexc* parameter, deprecated *onerror*." msgstr "" -#: library/shutil.rst:346 +#: library/shutil.rst:350 msgid "" ":func:`!rmtree` now ignores :exc:`FileNotFoundError` exceptions for all but " "the top-level path. Exceptions other than :exc:`OSError` and subclasses of :" "exc:`!OSError` are now always propagated to the caller." msgstr "" -#: library/shutil.rst:354 +#: library/shutil.rst:358 msgid "" "Indicates whether the current platform and implementation provides a symlink " "attack resistant version of :func:`rmtree`. Currently this is only true for " "platforms supporting fd-based directory access functions." msgstr "" -#: library/shutil.rst:363 +#: library/shutil.rst:367 msgid "" "Recursively move a file or directory (*src*) to another location and return " "the destination." msgstr "" -#: library/shutil.rst:366 +#: library/shutil.rst:370 msgid "" "If *dst* is an existing directory or a symlink to a directory, then *src* is " "moved inside that directory. The destination path in that directory must not " "already exist." msgstr "" -#: library/shutil.rst:370 +#: library/shutil.rst:374 msgid "" "If *dst* already exists but is not a directory, it may be overwritten " "depending on :func:`os.rename` semantics." msgstr "" -#: library/shutil.rst:373 +#: library/shutil.rst:377 msgid "" "If the destination is on the current filesystem, then :func:`os.rename` is " "used. Otherwise, *src* is copied to the destination using *copy_function* " @@ -477,7 +483,7 @@ msgid "" "of *src* will be created as the destination and *src* will be removed." msgstr "" -#: library/shutil.rst:378 +#: library/shutil.rst:382 msgid "" "If *copy_function* is given, it must be a callable that takes two arguments, " "*src* and the destination, and will be used to copy *src* to the destination " @@ -488,85 +494,85 @@ msgid "" "copy the metadata, at the expense of not copying any of the metadata." msgstr "" -#: library/shutil.rst:386 +#: library/shutil.rst:390 msgid "" "Raises an :ref:`auditing event ` ``shutil.move`` with arguments " "``src``, ``dst``." msgstr "" -#: library/shutil.rst:388 +#: library/shutil.rst:392 msgid "" "Added explicit symlink handling for foreign filesystems, thus adapting it to " "the behavior of GNU's :program:`mv`. Now returns *dst*." msgstr "" -#: library/shutil.rst:393 +#: library/shutil.rst:397 msgid "Added the *copy_function* keyword argument." msgstr "" -#: library/shutil.rst:401 +#: library/shutil.rst:405 msgid "Accepts a :term:`path-like object` for both *src* and *dst*." msgstr "" -#: library/shutil.rst:406 +#: library/shutil.rst:410 msgid "" "Return disk usage statistics about the given path as a :term:`named tuple` " "with the attributes *total*, *used* and *free*, which are the amount of " "total, used and free space, in bytes. *path* may be a file or a directory." msgstr "" -#: library/shutil.rst:413 +#: library/shutil.rst:417 msgid "" "On Unix filesystems, *path* must point to a path within a **mounted** " "filesystem partition. On those platforms, CPython doesn't attempt to " "retrieve disk usage information from non-mounted filesystems." msgstr "" -#: library/shutil.rst:419 +#: library/shutil.rst:423 msgid "On Windows, *path* can now be a file or directory." msgstr "" -#: library/shutil.rst:436 +#: library/shutil.rst:440 msgid "Availability" msgstr "" -#: library/shutil.rst:427 +#: library/shutil.rst:431 msgid "Change owner *user* and/or *group* of the given *path*." msgstr "" -#: library/shutil.rst:429 +#: library/shutil.rst:433 msgid "" "*user* can be a system user name or a uid; the same applies to *group*. At " "least one argument is required." msgstr "" -#: library/shutil.rst:432 +#: library/shutil.rst:436 msgid "See also :func:`os.chown`, the underlying function." msgstr "" -#: library/shutil.rst:434 +#: library/shutil.rst:438 msgid "" "Raises an :ref:`auditing event ` ``shutil.chown`` with arguments " "``path``, ``user``, ``group``." msgstr "" -#: library/shutil.rst:440 +#: library/shutil.rst:444 msgid "Added *dir_fd* and *follow_symlinks* parameters." msgstr "" -#: library/shutil.rst:446 +#: library/shutil.rst:450 msgid "" "Return the path to an executable which would be run if the given *cmd* was " "called. If no *cmd* would be called, return ``None``." msgstr "" -#: library/shutil.rst:449 +#: library/shutil.rst:453 msgid "" "*mode* is a permission mask passed to :func:`os.access`, by default " "determining if the file exists and is executable." msgstr "" -#: library/shutil.rst:452 +#: library/shutil.rst:456 msgid "" "*path* is a \"``PATH`` string\" specifying the directories to look in, " "delimited by :data:`os.pathsep`. When no *path* is specified, the :envvar:" @@ -574,7 +580,14 @@ msgid "" "to :data:`os.defpath` if it is not set." msgstr "" -#: library/shutil.rst:457 +#: library/shutil.rst:461 +msgid "" +"If *cmd* contains a directory component, :func:`!which` only checks the " +"specified path directly and does not search the directories listed in *path* " +"or in the system's :envvar:`PATH` environment variable." +msgstr "" + +#: library/shutil.rst:465 msgid "" "On Windows, the current directory is prepended to the *path* if *mode* does " "not include ``os.X_OK``. When the *mode* does include ``os.X_OK``, the " @@ -584,7 +597,7 @@ msgid "" "environment variable ``NoDefaultCurrentDirectoryInExePath``." msgstr "" -#: library/shutil.rst:464 +#: library/shutil.rst:472 msgid "" "Also on Windows, the :envvar:`PATHEXT` environment variable is used to " "resolve commands that may not already include an extension. For example, if " @@ -593,31 +606,31 @@ msgid "" "directories. For example, on Windows::" msgstr "" -#: library/shutil.rst:470 +#: library/shutil.rst:478 msgid "" ">>> shutil.which(\"python\")\n" "'C:\\\\Python33\\\\python.EXE'" msgstr "" -#: library/shutil.rst:473 +#: library/shutil.rst:481 msgid "" "This is also applied when *cmd* is a path that contains a directory " "component::" msgstr "" -#: library/shutil.rst:476 +#: library/shutil.rst:484 msgid "" ">>> shutil.which(\"C:\\\\Python33\\\\python\")\n" "'C:\\\\Python33\\\\python.EXE'" msgstr "" -#: library/shutil.rst:481 +#: library/shutil.rst:489 msgid "" "The :class:`bytes` type is now accepted. If *cmd* type is :class:`bytes`, " "the result type is also :class:`bytes`." msgstr "" -#: library/shutil.rst:485 +#: library/shutil.rst:493 msgid "" "On Windows, the current directory is no longer prepended to the search path " "if *mode* includes ``os.X_OK`` and WinAPI " @@ -628,18 +641,18 @@ msgid "" "now be found." msgstr "" -#: library/shutil.rst:496 +#: library/shutil.rst:504 msgid "" "This exception collects exceptions that are raised during a multi-file " "operation. For :func:`copytree`, the exception argument is a list of 3-" "tuples (*srcname*, *dstname*, *exception*)." msgstr "" -#: library/shutil.rst:503 +#: library/shutil.rst:511 msgid "Platform-dependent efficient copy operations" msgstr "" -#: library/shutil.rst:505 +#: library/shutil.rst:513 msgid "" "Starting from Python 3.8, all functions involving a file copy (:func:" "`copyfile`, :func:`~shutil.copy`, :func:`copy2`, :func:`copytree`, and :func:" @@ -649,68 +662,68 @@ msgid "" "buffers in Python as in \"``outfd.write(infd.read())``\"." msgstr "" -#: library/shutil.rst:513 +#: library/shutil.rst:521 msgid "On macOS `fcopyfile`_ is used to copy the file content (not metadata)." msgstr "" -#: library/shutil.rst:515 +#: library/shutil.rst:523 msgid "On Linux :func:`os.copy_file_range` or :func:`os.sendfile` is used." msgstr "" -#: library/shutil.rst:517 +#: library/shutil.rst:525 msgid "On Solaris :func:`os.sendfile` is used." msgstr "" -#: library/shutil.rst:519 +#: library/shutil.rst:527 msgid "" "On Windows :func:`shutil.copyfile` uses a bigger default buffer size (1 MiB " "instead of 64 KiB) and a :func:`memoryview`-based variant of :func:`shutil." "copyfileobj` is used." msgstr "" -#: library/shutil.rst:523 +#: library/shutil.rst:531 msgid "" "If the fast-copy operation fails and no data was written in the destination " "file then shutil will silently fallback on using less efficient :func:" "`copyfileobj` function internally." msgstr "" -#: library/shutil.rst:529 +#: library/shutil.rst:537 msgid "Solaris now uses :func:`os.sendfile`." msgstr "" -#: library/shutil.rst:532 +#: library/shutil.rst:540 msgid "" "Copy-on-write or server-side copy may be used internally via :func:`os." "copy_file_range` on supported Linux filesystems." msgstr "" -#: library/shutil.rst:539 +#: library/shutil.rst:547 msgid "copytree example" msgstr "" -#: library/shutil.rst:541 +#: library/shutil.rst:549 msgid "An example that uses the :func:`ignore_patterns` helper::" msgstr "" -#: library/shutil.rst:543 +#: library/shutil.rst:551 msgid "" "from shutil import copytree, ignore_patterns\n" "\n" "copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))" msgstr "" -#: library/shutil.rst:547 +#: library/shutil.rst:555 msgid "" "This will copy everything except ``.pyc`` files and files or directories " "whose name starts with ``tmp``." msgstr "" -#: library/shutil.rst:550 +#: library/shutil.rst:558 msgid "Another example that uses the *ignore* argument to add a logging call::" msgstr "" -#: library/shutil.rst:552 +#: library/shutil.rst:560 msgid "" "from shutil import copytree\n" "import logging\n" @@ -722,11 +735,11 @@ msgid "" "copytree(source, destination, ignore=_logpath)" msgstr "" -#: library/shutil.rst:565 +#: library/shutil.rst:573 msgid "rmtree example" msgstr "" -#: library/shutil.rst:567 +#: library/shutil.rst:575 msgid "" "This example shows how to remove a directory tree on Windows where some of " "the files have their read-only bit set. It uses the onexc callback to clear " @@ -734,7 +747,7 @@ msgid "" "propagate. ::" msgstr "" -#: library/shutil.rst:572 +#: library/shutil.rst:580 msgid "" "import os, stat\n" "import shutil\n" @@ -747,31 +760,31 @@ msgid "" "shutil.rmtree(directory, onexc=remove_readonly)" msgstr "" -#: library/shutil.rst:585 +#: library/shutil.rst:593 msgid "Archiving operations" msgstr "" -#: library/shutil.rst:589 +#: library/shutil.rst:597 msgid "Added support for the *xztar* format." msgstr "" -#: library/shutil.rst:593 +#: library/shutil.rst:601 msgid "" "High-level utilities to create and read compressed and archived files are " "also provided. They rely on the :mod:`zipfile` and :mod:`tarfile` modules." msgstr "" -#: library/shutil.rst:598 +#: library/shutil.rst:606 msgid "Create an archive file (such as zip or tar) and return its name." msgstr "" -#: library/shutil.rst:600 +#: library/shutil.rst:608 msgid "" "*base_name* is the name of the file to create, including the path, minus any " "format-specific extension." msgstr "" -#: library/shutil.rst:603 +#: library/shutil.rst:611 msgid "" "*format* is the archive format: one of \"zip\" (if the :mod:`zlib` module is " "available), \"tar\", \"gztar\" (if the :mod:`zlib` module is available), " @@ -779,14 +792,14 @@ msgid "" "`lzma` module is available)." msgstr "" -#: library/shutil.rst:608 +#: library/shutil.rst:616 msgid "" "*root_dir* is a directory that will be the root directory of the archive, " "all paths in the archive will be relative to it; for example, we typically " "chdir into *root_dir* before creating the archive." msgstr "" -#: library/shutil.rst:612 +#: library/shutil.rst:620 msgid "" "*base_dir* is the directory where we start archiving from; i.e. *base_dir* " "will be the common prefix of all files and directories in the archive. " @@ -794,39 +807,39 @@ msgid "" "example-with-basedir` for how to use *base_dir* and *root_dir* together." msgstr "" -#: library/shutil.rst:618 +#: library/shutil.rst:626 msgid "*root_dir* and *base_dir* both default to the current directory." msgstr "" -#: library/shutil.rst:620 +#: library/shutil.rst:628 msgid "" "If *dry_run* is true, no archive is created, but the operations that would " "be executed are logged to *logger*." msgstr "" -#: library/shutil.rst:623 +#: library/shutil.rst:631 msgid "" "*owner* and *group* are used when creating a tar archive. By default, uses " "the current owner and group." msgstr "" -#: library/shutil.rst:626 +#: library/shutil.rst:634 msgid "" "*logger* must be an object compatible with :pep:`282`, usually an instance " "of :class:`logging.Logger`." msgstr "" -#: library/shutil.rst:629 +#: library/shutil.rst:637 msgid "The *verbose* argument is unused and deprecated." msgstr "" -#: library/shutil.rst:631 +#: library/shutil.rst:639 msgid "" "Raises an :ref:`auditing event ` ``shutil.make_archive`` with " "arguments ``base_name``, ``format``, ``root_dir``, ``base_dir``." msgstr "" -#: library/shutil.rst:635 +#: library/shutil.rst:643 msgid "" "This function is not thread-safe when custom archivers registered with :func:" "`register_archive_format` do not support the *root_dir* argument. In this " @@ -834,60 +847,60 @@ msgid "" "*root_dir* to perform archiving." msgstr "" -#: library/shutil.rst:641 +#: library/shutil.rst:649 msgid "" "The modern pax (POSIX.1-2001) format is now used instead of the legacy GNU " "format for archives created with ``format=\"tar\"``." msgstr "" -#: library/shutil.rst:645 +#: library/shutil.rst:653 msgid "" "This function is now made thread-safe during creation of standard ``.zip`` " "and tar archives." msgstr "" -#: library/shutil.rst:651 +#: library/shutil.rst:659 msgid "" "Return a list of supported formats for archiving. Each element of the " "returned sequence is a tuple ``(name, description)``." msgstr "" -#: library/shutil.rst:769 +#: library/shutil.rst:777 msgid "By default :mod:`shutil` provides these formats:" msgstr "" -#: library/shutil.rst:656 +#: library/shutil.rst:664 msgid "*zip*: ZIP file (if the :mod:`zlib` module is available)." msgstr "" -#: library/shutil.rst:657 +#: library/shutil.rst:665 msgid "" "*tar*: Uncompressed tar file. Uses POSIX.1-2001 pax format for new archives." msgstr "" -#: library/shutil.rst:774 +#: library/shutil.rst:782 msgid "*gztar*: gzip'ed tar-file (if the :mod:`zlib` module is available)." msgstr "" -#: library/shutil.rst:775 +#: library/shutil.rst:783 msgid "*bztar*: bzip2'ed tar-file (if the :mod:`bz2` module is available)." msgstr "" -#: library/shutil.rst:776 +#: library/shutil.rst:784 msgid "*xztar*: xz'ed tar-file (if the :mod:`lzma` module is available)." msgstr "" -#: library/shutil.rst:662 +#: library/shutil.rst:670 msgid "" "You can register new formats or provide your own archiver for any existing " "formats, by using :func:`register_archive_format`." msgstr "" -#: library/shutil.rst:668 +#: library/shutil.rst:676 msgid "Register an archiver for the format *name*." msgstr "" -#: library/shutil.rst:670 +#: library/shutil.rst:678 msgid "" "*function* is the callable that will be used to unpack archives. The " "callable will receive the *base_name* of the file to create, followed by the " @@ -896,7 +909,7 @@ msgid "" "*dry_run* and *logger* (as passed in :func:`make_archive`)." msgstr "" -#: library/shutil.rst:676 +#: library/shutil.rst:684 msgid "" "If *function* has the custom attribute ``function.supports_root_dir`` set to " "``True``, the *root_dir* argument is passed as a keyword argument. Otherwise " @@ -905,37 +918,37 @@ msgid "" "not thread-safe." msgstr "" -#: library/shutil.rst:682 +#: library/shutil.rst:690 msgid "" "If given, *extra_args* is a sequence of ``(name, value)`` pairs that will be " "used as extra keywords arguments when the archiver callable is used." msgstr "" -#: library/shutil.rst:685 +#: library/shutil.rst:693 msgid "" "*description* is used by :func:`get_archive_formats` which returns the list " "of archivers. Defaults to an empty string." msgstr "" -#: library/shutil.rst:688 +#: library/shutil.rst:696 msgid "Added support for functions supporting the *root_dir* argument." msgstr "" -#: library/shutil.rst:694 +#: library/shutil.rst:702 msgid "Remove the archive format *name* from the list of supported formats." msgstr "" -#: library/shutil.rst:699 +#: library/shutil.rst:707 msgid "Unpack an archive. *filename* is the full path of the archive." msgstr "" -#: library/shutil.rst:701 +#: library/shutil.rst:709 msgid "" "*extract_dir* is the name of the target directory where the archive is " "unpacked. If not provided, the current working directory is used." msgstr "" -#: library/shutil.rst:704 +#: library/shutil.rst:712 msgid "" "*format* is the archive format: one of \"zip\", \"tar\", \"gztar\", " "\"bztar\", or \"xztar\". Or any other format registered with :func:" @@ -944,7 +957,7 @@ msgid "" "that extension. In case none is found, a :exc:`ValueError` is raised." msgstr "" -#: library/shutil.rst:711 +#: library/shutil.rst:719 msgid "" "The keyword-only *filter* argument is passed to the underlying unpacking " "function. For zip files, *filter* is not accepted. For tar files, it is " @@ -953,13 +966,13 @@ msgid "" "extraction-filter` for details.)" msgstr "" -#: library/shutil.rst:717 +#: library/shutil.rst:725 msgid "" "Raises an :ref:`auditing event ` ``shutil.unpack_archive`` with " "arguments ``filename``, ``extract_dir``, ``format``." msgstr "" -#: library/shutil.rst:721 +#: library/shutil.rst:729 msgid "" "Never extract archives from untrusted sources without prior inspection. It " "is possible that files are created outside of the path specified in the " @@ -967,7 +980,7 @@ msgid "" "with \"/\" or filenames with two dots \"..\"." msgstr "" -#: library/shutil.rst:726 +#: library/shutil.rst:734 msgid "" "Since Python 3.14, the defaults for both built-in formats (zip and tar " "files) will prevent the most dangerous of such security issues, but will not " @@ -975,91 +988,91 @@ msgid "" "verification` section for tar-specific details." msgstr "" -#: library/shutil.rst:732 +#: library/shutil.rst:740 msgid "Accepts a :term:`path-like object` for *filename* and *extract_dir*." msgstr "" -#: library/shutil.rst:735 +#: library/shutil.rst:743 msgid "Added the *filter* argument." msgstr "" -#: library/shutil.rst:740 +#: library/shutil.rst:748 msgid "" "Registers an unpack format. *name* is the name of the format and " "*extensions* is a list of extensions corresponding to the format, like ``." "zip`` for Zip files." msgstr "" -#: library/shutil.rst:744 +#: library/shutil.rst:752 msgid "" "*function* is the callable that will be used to unpack archives. The " "callable will receive:" msgstr "" -#: library/shutil.rst:747 +#: library/shutil.rst:755 msgid "the path of the archive, as a positional argument;" msgstr "" -#: library/shutil.rst:748 +#: library/shutil.rst:756 msgid "" "the directory the archive must be extracted to, as a positional argument;" msgstr "" -#: library/shutil.rst:749 +#: library/shutil.rst:757 msgid "" "possibly a *filter* keyword argument, if it was given to :func:" "`unpack_archive`;" msgstr "" -#: library/shutil.rst:751 +#: library/shutil.rst:759 msgid "" "additional keyword arguments, specified by *extra_args* as a sequence of " "``(name, value)`` tuples." msgstr "" -#: library/shutil.rst:754 +#: library/shutil.rst:762 msgid "" "*description* can be provided to describe the format, and will be returned " "by the :func:`get_unpack_formats` function." msgstr "" -#: library/shutil.rst:760 +#: library/shutil.rst:768 msgid "Unregister an unpack format. *name* is the name of the format." msgstr "" -#: library/shutil.rst:765 +#: library/shutil.rst:773 msgid "" "Return a list of all registered formats for unpacking. Each element of the " "returned sequence is a tuple ``(name, extensions, description)``." msgstr "" -#: library/shutil.rst:771 +#: library/shutil.rst:779 msgid "" "*zip*: ZIP file (unpacking compressed files works only if the corresponding " "module is available)." msgstr "" -#: library/shutil.rst:773 +#: library/shutil.rst:781 msgid "*tar*: uncompressed tar file." msgstr "" -#: library/shutil.rst:778 +#: library/shutil.rst:786 msgid "" "You can register new formats or provide your own unpacker for any existing " "formats, by using :func:`register_unpack_format`." msgstr "" -#: library/shutil.rst:785 +#: library/shutil.rst:793 msgid "Archiving example" msgstr "" -#: library/shutil.rst:787 +#: library/shutil.rst:795 msgid "" "In this example, we create a gzip'ed tar-file archive containing all files " "found in the :file:`.ssh` directory of the user::" msgstr "" -#: library/shutil.rst:790 +#: library/shutil.rst:798 msgid "" ">>> from shutil import make_archive\n" ">>> import os\n" @@ -1069,11 +1082,11 @@ msgid "" "'/Users/tarek/myarchive.tar.gz'" msgstr "" -#: library/shutil.rst:797 +#: library/shutil.rst:805 msgid "The resulting archive contains:" msgstr "" -#: library/shutil.rst:799 +#: library/shutil.rst:807 msgid "" "$ tar -tzvf /Users/tarek/myarchive.tar.gz\n" "drwx------ tarek/staff 0 2010-02-01 16:23:40 ./\n" @@ -1086,18 +1099,18 @@ msgid "" "-rw-r--r-- tarek/staff 37192 2010-02-06 18:23:10 ./known_hosts" msgstr "" -#: library/shutil.rst:815 +#: library/shutil.rst:823 msgid "Archiving example with *base_dir*" msgstr "" -#: library/shutil.rst:817 +#: library/shutil.rst:825 msgid "" "In this example, similar to the `one above `_, we " "show how to use :func:`make_archive`, but this time with the usage of " "*base_dir*. We now have the following directory structure:" msgstr "" -#: library/shutil.rst:821 +#: library/shutil.rst:829 msgid "" "$ tree tmp\n" "tmp\n" @@ -1108,13 +1121,13 @@ msgid "" " └── do_not_add.txt" msgstr "" -#: library/shutil.rst:831 +#: library/shutil.rst:839 msgid "" "In the final archive, :file:`please_add.txt` should be included, but :file:" "`do_not_add.txt` should not. Therefore we use the following::" msgstr "" -#: library/shutil.rst:834 +#: library/shutil.rst:842 msgid "" ">>> from shutil import make_archive\n" ">>> import os\n" @@ -1128,40 +1141,40 @@ msgid "" "'/Users/tarek/my_archive.tar'" msgstr "" -#: library/shutil.rst:845 +#: library/shutil.rst:853 msgid "Listing the files in the resulting archive gives us:" msgstr "" -#: library/shutil.rst:847 +#: library/shutil.rst:855 msgid "" "$ python -m tarfile -l /Users/tarek/myarchive.tar\n" "structure/content/\n" "structure/content/please_add.txt" msgstr "" -#: library/shutil.rst:855 +#: library/shutil.rst:863 msgid "Querying the size of the output terminal" msgstr "" -#: library/shutil.rst:859 +#: library/shutil.rst:867 msgid "Get the size of the terminal window." msgstr "" -#: library/shutil.rst:861 +#: library/shutil.rst:869 msgid "" "For each of the two dimensions, the environment variable, ``COLUMNS`` and " "``LINES`` respectively, is checked. If the variable is defined and the value " "is a positive integer, it is used." msgstr "" -#: library/shutil.rst:865 +#: library/shutil.rst:873 msgid "" "When ``COLUMNS`` or ``LINES`` is not defined, which is the common case, the " "terminal connected to :data:`sys.__stdout__` is queried by invoking :func:" "`os.get_terminal_size`." msgstr "" -#: library/shutil.rst:869 +#: library/shutil.rst:877 msgid "" "If the terminal size cannot be successfully queried, either because the " "system doesn't support querying, or because we are not connected to a " @@ -1170,17 +1183,17 @@ msgid "" "emulators." msgstr "" -#: library/shutil.rst:875 +#: library/shutil.rst:883 msgid "The value returned is a named tuple of type :class:`os.terminal_size`." msgstr "" -#: library/shutil.rst:877 +#: library/shutil.rst:885 msgid "" "See also: The Single UNIX Specification, Version 2, `Other Environment " "Variables`_." msgstr "" -#: library/shutil.rst:882 +#: library/shutil.rst:890 msgid "" "The ``fallback`` values are also used if :func:`os.get_terminal_size` " "returns zeroes." diff --git a/library/signal.po b/library/signal.po index 548298f1..54094de7 100644 --- a/library/signal.po +++ b/library/signal.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/site.po b/library/site.po index 84964488..2fad0457 100644 --- a/library/site.po +++ b/library/site.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/smtpd.po b/library/smtpd.po index 5325ad02..b96ecbf8 100644 --- a/library/smtpd.po +++ b/library/smtpd.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/smtplib.po b/library/smtplib.po index baa01091..c9834ca4 100644 --- a/library/smtplib.po +++ b/library/smtplib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sndhdr.po b/library/sndhdr.po index 59ba65c7..4098a13e 100644 --- a/library/sndhdr.po +++ b/library/sndhdr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/socket.po b/library/socket.po index 8e1bb9b5..d2a3601c 100644 --- a/library/socket.po +++ b/library/socket.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1644,7 +1644,7 @@ msgid "" "`~socket.sendmsg` for the documentation of these parameters." msgstr "" -#: library/socket.rst:1511 +#: library/socket.rst:1497 msgid "" "Unix platforms supporting :meth:`~socket.sendmsg` and :const:`SCM_RIGHTS` " "mechanism." @@ -1657,6 +1657,12 @@ msgid "" "recvmsg` for the documentation of these parameters." msgstr "" +#: library/socket.rst:1511 +msgid "" +"Unix platforms supporting :meth:`~socket.recvmsg` and :const:`SCM_RIGHTS` " +"mechanism." +msgstr "" + #: library/socket.rst:1518 msgid "Any truncated integers at the end of the list of file descriptors." msgstr "" diff --git a/library/socketserver.po b/library/socketserver.po index 37ad93dc..37888b35 100644 --- a/library/socketserver.po +++ b/library/socketserver.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/spwd.po b/library/spwd.po index e4ad1ed7..248a71c7 100644 --- a/library/spwd.po +++ b/library/spwd.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sqlite3.po b/library/sqlite3.po index 1c463497..7626c886 100644 --- a/library/sqlite3.po +++ b/library/sqlite3.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1762,10 +1762,13 @@ msgid "" msgstr "" #: library/sqlite3.rst:1494 -msgid "If *sql* contains more than one SQL statement." +msgid "" +"When *sql* contains more than one SQL statement. When :ref:`named " +"placeholders ` are used and *parameters* is a sequence " +"instead of a :class:`dict`." msgstr "" -#: library/sqlite3.rst:1497 +#: library/sqlite3.rst:1499 msgid "" "If :attr:`~Connection.autocommit` is :data:`LEGACY_TRANSACTION_CONTROL`, :" "attr:`~Connection.isolation_level` is not ``None``, *sql* is an ``INSERT``, " @@ -1773,12 +1776,11 @@ msgid "" "transaction, a transaction is implicitly opened before executing *sql*." msgstr "" -#: library/sqlite3.rst:1506 +#: library/sqlite3.rst:1508 msgid "" -":exc:`DeprecationWarning` is emitted if :ref:`named placeholders ` are used and *parameters* is a sequence instead of a :class:" -"`dict`. Starting with Python 3.14, :exc:`ProgrammingError` will be raised " -"instead." +"`dict`." msgstr "" #: library/sqlite3.rst:1512 @@ -1808,10 +1810,12 @@ msgstr "" #: library/sqlite3.rst:1531 msgid "" -"If *sql* contains more than one SQL statement, or is not a DML statement." +"When *sql* contains more than one SQL statement or is not a DML statement, " +"When :ref:`named placeholders ` are used and the items " +"in *parameters* are sequences instead of :class:`dict`\\s." msgstr "" -#: library/sqlite3.rst:1537 +#: library/sqlite3.rst:1539 msgid "" "rows = [\n" " (\"row1\",),\n" @@ -1821,18 +1825,17 @@ msgid "" "cur.executemany(\"INSERT INTO data VALUES(?)\", rows)" msgstr "" -#: library/sqlite3.rst:1552 +#: library/sqlite3.rst:1554 msgid "" "Any resulting rows are discarded, including DML statements with `RETURNING " "clauses`_." msgstr "" -#: library/sqlite3.rst:1559 +#: library/sqlite3.rst:1561 msgid "" -":exc:`DeprecationWarning` is emitted if :ref:`named placeholders ` are used and the items in *parameters* are sequences instead " -"of :class:`dict`\\s. Starting with Python 3.14, :exc:`ProgrammingError` will " -"be raised instead." +"of :class:`dict`\\s." msgstr "" #: library/sqlite3.rst:1568 diff --git a/library/ssl.po b/library/ssl.po index 64247aaf..6104b7ea 100644 --- a/library/ssl.po +++ b/library/ssl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/stat.po b/library/stat.po index 02605d58..5a90417c 100644 --- a/library/stat.po +++ b/library/stat.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/statistics.po b/library/statistics.po index aa358ba7..b3f5d34e 100644 --- a/library/statistics.po +++ b/library/statistics.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/stdtypes.po b/library/stdtypes.po index b3c334de..52ab0189 100644 --- a/library/stdtypes.po +++ b/library/stdtypes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-03 00:13+0300\n" "Last-Translator: Theofanis Petkos \n" "Language-Team: PyGreece \n" @@ -135,16 +135,16 @@ msgstr "" "Αυτές είναι οι λογικές (Boolean) πράξεις, ταξινομημένες βάσει προτεραιότητας:" #: library/stdtypes.rst:144 library/stdtypes.rst:372 library/stdtypes.rst:1007 -#: library/stdtypes.rst:1212 +#: library/stdtypes.rst:1215 msgid "Operation" msgstr "Πράξη" -#: library/stdtypes.rst:282 library/stdtypes.rst:422 library/stdtypes.rst:1212 +#: library/stdtypes.rst:282 library/stdtypes.rst:422 library/stdtypes.rst:1215 msgid "Result" msgstr "Αποτέλεσμα" -#: library/stdtypes.rst:282 library/stdtypes.rst:1007 library/stdtypes.rst:2714 -#: library/stdtypes.rst:3973 +#: library/stdtypes.rst:282 library/stdtypes.rst:1007 library/stdtypes.rst:2770 +#: library/stdtypes.rst:4029 msgid "Notes" msgstr "Σημειώσεις" @@ -156,8 +156,8 @@ msgstr "``x or y``" msgid "if *x* is true, then *x*, else *y*" msgstr "αν το *x* είναι true, τότε *x*, αλλιώς *y*" -#: library/stdtypes.rst:1009 library/stdtypes.rst:1223 -#: library/stdtypes.rst:3979 +#: library/stdtypes.rst:1009 library/stdtypes.rst:1228 +#: library/stdtypes.rst:4035 msgid "\\(1)" msgstr "\\(1)" @@ -169,8 +169,8 @@ msgstr "``x and y``" msgid "if *x* is false, then *x*, else *y*" msgstr "αν το *x* είναι false, τότε *x*, αλλιώς *y*" -#: library/stdtypes.rst:295 library/stdtypes.rst:1251 library/stdtypes.rst:2726 -#: library/stdtypes.rst:3985 +#: library/stdtypes.rst:295 library/stdtypes.rst:1256 library/stdtypes.rst:2782 +#: library/stdtypes.rst:4041 msgid "\\(2)" msgstr "\\(2)" @@ -182,14 +182,14 @@ msgstr "``not x``" msgid "if *x* is false, then ``True``, else ``False``" msgstr "if *x* είναι false, τότε ``True``, αλλιώς ``False``" -#: library/stdtypes.rst:1021 library/stdtypes.rst:2728 -#: library/stdtypes.rst:2732 library/stdtypes.rst:3987 -#: library/stdtypes.rst:3991 library/stdtypes.rst:3993 +#: library/stdtypes.rst:1259 library/stdtypes.rst:2786 +#: library/stdtypes.rst:2790 library/stdtypes.rst:4045 +#: library/stdtypes.rst:4049 msgid "\\(3)" msgstr "\\(3)" -#: library/stdtypes.rst:326 library/stdtypes.rst:1058 library/stdtypes.rst:2760 -#: library/stdtypes.rst:4023 +#: library/stdtypes.rst:326 library/stdtypes.rst:1058 library/stdtypes.rst:2816 +#: library/stdtypes.rst:4079 msgid "Notes:" msgstr "Σημειώσεις:" @@ -241,8 +241,8 @@ msgstr "" msgid "This table summarizes the comparison operations:" msgstr "Αυτός ο πίνακας συνοψίζει τις πράξεις σύγκρισης:" -#: library/stdtypes.rst:2546 library/stdtypes.rst:2714 -#: library/stdtypes.rst:3973 +#: library/stdtypes.rst:2602 library/stdtypes.rst:2770 +#: library/stdtypes.rst:4029 msgid "Meaning" msgstr "Έννοια" @@ -598,7 +598,7 @@ msgstr "" "ένας μιγαδικός αριθμός με πραγματικό μέρος *re*, φανταστικό μέρος *im*. Το " "*im* μετατρέπεται αυτόματα σε μηδέν." -#: library/stdtypes.rst:1244 library/stdtypes.rst:4010 +#: library/stdtypes.rst:1249 library/stdtypes.rst:4066 msgid "\\(6)" msgstr "\\(6)" @@ -634,8 +634,8 @@ msgstr "``pow(x, y)``" msgid "*x* to the power *y*" msgstr "*x* σε δύναμη του *y*" -#: library/stdtypes.rst:319 library/stdtypes.rst:1236 library/stdtypes.rst:2750 -#: library/stdtypes.rst:4006 library/stdtypes.rst:4013 +#: library/stdtypes.rst:319 library/stdtypes.rst:1241 library/stdtypes.rst:2806 +#: library/stdtypes.rst:4062 library/stdtypes.rst:4069 msgid "\\(5)" msgstr "\\(5)" @@ -810,8 +810,8 @@ msgstr "``x | y``" msgid "bitwise :dfn:`or` of *x* and *y*" msgstr "bitwise :dfn:`or` των *x* και *y*" -#: library/stdtypes.rst:427 library/stdtypes.rst:1258 library/stdtypes.rst:2740 -#: library/stdtypes.rst:3999 +#: library/stdtypes.rst:427 library/stdtypes.rst:1263 library/stdtypes.rst:2796 +#: library/stdtypes.rst:4055 msgid "\\(4)" msgstr "\\(4)" @@ -1898,6 +1898,11 @@ msgstr "``s[i]``" msgid "*i*\\ th item of *s*, origin 0" msgstr "*i*\\ ο στοιχείο του *s*, αρχή το 0" +#: library/stdtypes.rst:1021 +#, fuzzy +msgid "(3)(9)" +msgstr "(3)(4)" + #: library/stdtypes.rst:1023 msgid "``s[i:j]``" msgstr "``s[i:j]``" @@ -1958,7 +1963,7 @@ msgstr "" "δείκτης της πρώτης εμφάνισης του *x* στο *s* (μετά από τον ή στον δείκτη *i* " "και πριν από το δείκτη *j*)" -#: library/stdtypes.rst:3981 +#: library/stdtypes.rst:4037 msgid "\\(8)" msgstr "\\(8)" @@ -2209,11 +2214,15 @@ msgstr "" "δεδομένα και με τον επιστρεφόμενο δείκτη να είναι σχετικός με την αρχή της " "ακολουθίας και όχι στην αρχή του υποσυνόλου (slice)." -#: library/stdtypes.rst:1157 +#: library/stdtypes.rst:1154 +msgid "An :exc:`IndexError` is raised if *i* is outside the sequence range." +msgstr "" + +#: library/stdtypes.rst:1160 msgid "Immutable Sequence Types" msgstr "Τύποι Αμετάβλητων Ακολουθιών (Sequences)" -#: library/stdtypes.rst:1164 +#: library/stdtypes.rst:1167 msgid "" "The only operation that immutable sequence types generally implement that is " "not also implemented by mutable sequence types is support for the :func:" @@ -2223,7 +2232,7 @@ msgstr "" "δεν είναι υλοποιημένοι από μεταβλητούς τύπους ακολουθίας, είναι η υποστήριξη " "της :func:`hash` built-in." -#: library/stdtypes.rst:1168 +#: library/stdtypes.rst:1171 msgid "" "This support allows immutable sequences, such as :class:`tuple` instances, " "to be used as :class:`dict` keys and stored in :class:`set` and :class:" @@ -2233,7 +2242,7 @@ msgstr "" "class:`tuple`, να χρησιμοποιούνται ως κλειδιά :class:`dict` και να " "αποθηκεύονται σε :class:`set` και :class:`frozenset` instances." -#: library/stdtypes.rst:1172 +#: library/stdtypes.rst:1175 msgid "" "Attempting to hash an immutable sequence that contains unhashable values " "will result in :exc:`TypeError`." @@ -2241,11 +2250,11 @@ msgstr "" "Η προσπάθεια κατακερματισμού μιας αμετάβλητης ακολουθίας που περιέχει μη " "κατακερματιστέες (unhashable) τιμές θα οδηγήσει σε :exc:`TypeError`." -#: library/stdtypes.rst:1179 +#: library/stdtypes.rst:1182 msgid "Mutable Sequence Types" msgstr "Τύποι Μεταβλητών Ακολουθιών (Sequences)" -#: library/stdtypes.rst:1186 +#: library/stdtypes.rst:1189 msgid "" "The operations in the following table are defined on mutable sequence types. " "The :class:`collections.abc.MutableSequence` ABC is provided to make it " @@ -2256,7 +2265,7 @@ msgstr "" "κάνει ευκολότερη την σωστή υλοποίηση αυτών των λειτουργιών σε " "προσαρμοσμένους τύπους ακολουθιών." -#: library/stdtypes.rst:1190 +#: library/stdtypes.rst:1193 msgid "" "In the table *s* is an instance of a mutable sequence type, *t* is any " "iterable object and *x* is an arbitrary object that meets any type and value " @@ -2269,80 +2278,90 @@ msgstr "" "επιβάλλονται από το *s* (για παράδειγμα, το :class:`bytearray` δέχεται μόνο " "ακέραιους που πληρούν τον περιορισμό ``0 <= x <= 255``)." -#: library/stdtypes.rst:1214 +#: library/stdtypes.rst:1217 msgid "``s[i] = x``" msgstr "``s[i] = x``" -#: library/stdtypes.rst:1214 +#: library/stdtypes.rst:1217 msgid "item *i* of *s* is replaced by *x*" msgstr "το στοιχείο *i* του *s* αντικαθίσταται από το *x*" -#: library/stdtypes.rst:1217 +#: library/stdtypes.rst:1220 +#, fuzzy +msgid "``del s[i]``" +msgstr "``del s[i:j]``" + +#: library/stdtypes.rst:1220 +#, fuzzy +msgid "removes item *i* of *s*" +msgstr "μεγαλύτερο αντικείμενο του *s*" + +#: library/stdtypes.rst:1222 msgid "``s[i:j] = t``" msgstr "``s[i:j] = t``" -#: library/stdtypes.rst:1217 +#: library/stdtypes.rst:1222 msgid "" "slice of *s* from *i* to *j* is replaced by the contents of the iterable *t*" msgstr "" "το υποσύνολο (slice) του *s* από το *i* έως το *j* αντικαθίσταται από τα " "περιεχόμενα του iterable *t*" -#: library/stdtypes.rst:1221 +#: library/stdtypes.rst:1226 msgid "``del s[i:j]``" msgstr "``del s[i:j]``" -#: library/stdtypes.rst:1221 +#: library/stdtypes.rst:1226 msgid "same as ``s[i:j] = []``" msgstr "ίδιο με το ``s[i:j] = []``" -#: library/stdtypes.rst:1223 +#: library/stdtypes.rst:1228 msgid "``s[i:j:k] = t``" msgstr "``s[i:j:k] = t``" -#: library/stdtypes.rst:1223 +#: library/stdtypes.rst:1228 msgid "the elements of ``s[i:j:k]`` are replaced by those of *t*" msgstr "τα στοιχεία του ``s[i:j:k]`` αντικαθίστανται από εκείνα του *t*" -#: library/stdtypes.rst:1226 +#: library/stdtypes.rst:1231 msgid "``del s[i:j:k]``" msgstr "``del s[i:j:k]``" -#: library/stdtypes.rst:1226 +#: library/stdtypes.rst:1231 msgid "removes the elements of ``s[i:j:k]`` from the list" msgstr "αφαιρεί τα στοιχεία του ``s[i:j:k]`` από τη λίστα" -#: library/stdtypes.rst:1229 +#: library/stdtypes.rst:1234 msgid "``s.append(x)``" msgstr "``s.append(x)``" -#: library/stdtypes.rst:1229 +#: library/stdtypes.rst:1234 msgid "" "appends *x* to the end of the sequence (same as ``s[len(s):len(s)] = [x]``)" msgstr "" "εισάγει το *x* στο τέλος της ακολουθίας (ίδιο με ``s[len(s):len(s)] = [x]``)" -#: library/stdtypes.rst:1233 +#: library/stdtypes.rst:1238 msgid "``s.clear()``" msgstr "``s.clear()``" -#: library/stdtypes.rst:1233 +#: library/stdtypes.rst:1238 msgid "removes all items from *s* (same as ``del s[:]``)" msgstr "αφαιρεί όλα τα στοιχεία από το *s* (ίδιο με το ``del s[:]``)" -#: library/stdtypes.rst:1236 +#: library/stdtypes.rst:1241 msgid "``s.copy()``" msgstr "``s.copy()``" -#: library/stdtypes.rst:1236 +#: library/stdtypes.rst:1241 msgid "creates a shallow copy of *s* (same as ``s[:]``)" msgstr "δημιουργεί ένα shallow αντίγραφο του *s* (ίδιο με το ``s[:]``)" -#: library/stdtypes.rst:1239 +#: library/stdtypes.rst:1244 msgid "``s.extend(t)`` or ``s += t``" msgstr "``s.extend(t)`` ή ``s += t``" -#: library/stdtypes.rst:1239 +#: library/stdtypes.rst:1244 msgid "" "extends *s* with the contents of *t* (for the most part the same as " "``s[len(s):len(s)] = t``)" @@ -2350,50 +2369,50 @@ msgstr "" "επεκτείνει το *s* με τα περιεχόμενα του *t* (ως επί το πλείστον το ίδιο με " "το ``s[len(s):len(s)] = t``)" -#: library/stdtypes.rst:1244 +#: library/stdtypes.rst:1249 msgid "``s *= n``" msgstr "``s *= n``" -#: library/stdtypes.rst:1244 +#: library/stdtypes.rst:1249 msgid "updates *s* with its contents repeated *n* times" msgstr "ενημερώνει το *s* με το περιεχόμενό του επαναλαμβανόμενο *n* φορές" -#: library/stdtypes.rst:1247 +#: library/stdtypes.rst:1252 msgid "``s.insert(i, x)``" msgstr "``s.insert(i, x)``" -#: library/stdtypes.rst:1247 +#: library/stdtypes.rst:1252 msgid "" "inserts *x* into *s* at the index given by *i* (same as ``s[i:i] = [x]``)" msgstr "" "εισάγει το *x* στο *s* στο δείκτη που δίνεται από το *i* (το ίδιο με το " "``s[i:i] = [x]``)" -#: library/stdtypes.rst:1251 +#: library/stdtypes.rst:1256 msgid "``s.pop()`` or ``s.pop(i)``" msgstr "``s.pop()`` ή ``s.pop(i)``" -#: library/stdtypes.rst:1251 +#: library/stdtypes.rst:1256 msgid "retrieves the item at *i* and also removes it from *s*" msgstr "ανακτά το στοιχείο στο *i* και το αφαιρεί επίσης από το *s*" -#: library/stdtypes.rst:1254 +#: library/stdtypes.rst:1259 msgid "``s.remove(x)``" msgstr "``s.remove(x)``" -#: library/stdtypes.rst:1254 +#: library/stdtypes.rst:1259 msgid "removes the first item from *s* where ``s[i]`` is equal to *x*" msgstr "αφαιρεί το πρώτο στοιχείο από το *s* όπου ``s[i]`` είναι ίσο με *x*" -#: library/stdtypes.rst:1258 +#: library/stdtypes.rst:1263 msgid "``s.reverse()``" msgstr "``s.reverse()``" -#: library/stdtypes.rst:1258 +#: library/stdtypes.rst:1263 msgid "reverses the items of *s* in place" msgstr "αντιστρέφει τα στοιχεία του *s*" -#: library/stdtypes.rst:1266 +#: library/stdtypes.rst:1271 msgid "" "If *k* is not equal to ``1``, *t* must have the same length as the slice it " "is replacing." @@ -2401,7 +2420,7 @@ msgstr "" "Αν το *k* δεν είναι ίσο με ``1``, το *t* πρέπει να έχει το ίδιο μήκος με το " "τμήμα που αντικαθιστά." -#: library/stdtypes.rst:1269 +#: library/stdtypes.rst:1274 msgid "" "The optional argument *i* defaults to ``-1``, so that by default the last " "item is removed and returned." @@ -2409,13 +2428,13 @@ msgstr "" "Το προαιρετικό όρισμα *i* έχει προεπιλεγμένη τιμή ``-1``, έτσι ώστε από " "default το τελευταίο στοιχείο αφαιρείται και επιστρέφεται." -#: library/stdtypes.rst:1273 +#: library/stdtypes.rst:1278 msgid ":meth:`remove` raises :exc:`ValueError` when *x* is not found in *s*." msgstr "" "η :meth:`remove` κάνει raise :exc:`ValueError` όταν το *x* δεν βρίσκεται στο " "*s*." -#: library/stdtypes.rst:1276 +#: library/stdtypes.rst:1281 msgid "" "The :meth:`reverse` method modifies the sequence in place for economy of " "space when reversing a large sequence. To remind users that it operates by " @@ -2426,7 +2445,7 @@ msgstr "" "στους χρήστες ότι λειτουργεί με παρενέργεια, δεν επιστρέφει την " "αντιστραμμένη ακολουθία." -#: library/stdtypes.rst:1281 +#: library/stdtypes.rst:1286 msgid "" ":meth:`clear` and :meth:`!copy` are included for consistency with the " "interfaces of mutable containers that don't support slicing operations (such " @@ -2440,11 +2459,11 @@ msgstr "" "αποτελεί μέρος της :class:`collections.abc.MutableSequence` ABC, αλλά οι " "περισσότερες κλάσεις μεταβλητών ακολουθιών την παρέχουν." -#: library/stdtypes.rst:1287 +#: library/stdtypes.rst:1292 msgid ":meth:`clear` and :meth:`!copy` methods." msgstr "μέθοδοι :meth:`clear` και :meth:`!copy`." -#: library/stdtypes.rst:1291 +#: library/stdtypes.rst:1296 msgid "" "The value *n* is an integer, or an object implementing :meth:`~object." "__index__`. Zero and negative values of *n* clear the sequence. Items in " @@ -2457,11 +2476,11 @@ msgstr "" "αναφέρονται πολλές φορές, όπως εξηγείται για το ``s * n``` στο :ref:" "`typesseq-common`." -#: library/stdtypes.rst:1300 +#: library/stdtypes.rst:1305 msgid "Lists" msgstr "Λίστες" -#: library/stdtypes.rst:1304 +#: library/stdtypes.rst:1309 msgid "" "Lists are mutable sequences, typically used to store collections of " "homogeneous items (where the precise degree of similarity will vary by " @@ -2471,33 +2490,33 @@ msgstr "" "αποθήκευση συλλογών ομοιογενών στοιχείων (όπου ο ακριβής βαθμός ομοιότητας " "ποικίλλει ανάλογα με εφαρμογή)." -#: library/stdtypes.rst:1310 +#: library/stdtypes.rst:1315 msgid "Lists may be constructed in several ways:" msgstr "Οι λίστες μπορούν να κατασκευαστούν με διάφορους τρόπους:" -#: library/stdtypes.rst:1312 +#: library/stdtypes.rst:1317 msgid "Using a pair of square brackets to denote the empty list: ``[]``" msgstr "" "Χρησιμοποιείστε ένα ζεύγος αγκυλών για να δηλώσετε την κενή λίστα: ``[]``" -#: library/stdtypes.rst:1313 +#: library/stdtypes.rst:1318 msgid "" "Using square brackets, separating items with commas: ``[a]``, ``[a, b, c]``" msgstr "" "Χρησιμοποιώντας αγκύλες, διαχωρίζοντας τα στοιχεία με κόμματα: ``[a]``, " "``[a, b, c]``" -#: library/stdtypes.rst:1314 +#: library/stdtypes.rst:1319 msgid "Using a list comprehension: ``[x for x in iterable]``" msgstr "Χρήση ενός list comprehension: ``[x for x in iterable]``" -#: library/stdtypes.rst:1315 +#: library/stdtypes.rst:1320 msgid "Using the type constructor: ``list()`` or ``list(iterable)``" msgstr "" "Χρήση του κατασκευαστή τύπου (type constructor): ``list()`` ή " "``list(iterable)``" -#: library/stdtypes.rst:1317 +#: library/stdtypes.rst:1322 msgid "" "The constructor builds a list whose items are the same and in the same order " "as *iterable*'s items. *iterable* may be either a sequence, a container " @@ -2516,7 +2535,7 @@ msgstr "" "'b', 'c']`` και η ``list( (1, 2, 3) )`` επιστρέφει ``[1, 2, 3]``. Αν δεν " "δοθεί κανένα όρισμα, ο κατασκευαστής δημιουργεί μία νέα κενή λίστα, ``[]``." -#: library/stdtypes.rst:1326 +#: library/stdtypes.rst:1331 msgid "" "Many other operations also produce lists, including the :func:`sorted` built-" "in." @@ -2524,7 +2543,7 @@ msgstr "" "Πολλές άλλες λειτουργίες παράγουν επίσης λίστες, συμπεριλαμβανομένης της " "built-in :func:`sorted`." -#: library/stdtypes.rst:1329 +#: library/stdtypes.rst:1334 msgid "" "Lists implement all of the :ref:`common ` and :ref:`mutable " "` sequence operations. Lists also provide the following " @@ -2534,7 +2553,7 @@ msgstr "" "`mutable ` λειτουργίες ακολουθίας. Οι λίστες παρέχουν " "επίσης την ακόλουθη πρόσθετη μέθοδο:" -#: library/stdtypes.rst:1335 +#: library/stdtypes.rst:1340 msgid "" "This method sorts the list in place, using only ``<`` comparisons between " "items. Exceptions are not suppressed - if any comparison operations fail, " @@ -2546,7 +2565,7 @@ msgstr "" "πράξη σύγκρισης, ολόκληρη η λειτουργία ταξινόμησης θα αποτύχει (και η λίστα " "θα παραμείνει πιθανότατα σε μια μερικώς τροποποιημένη κατάσταση)." -#: library/stdtypes.rst:1340 +#: library/stdtypes.rst:1345 msgid "" ":meth:`sort` accepts two arguments that can only be passed by keyword (:ref:" "`keyword-only arguments `):" @@ -2554,7 +2573,7 @@ msgstr "" "η :meth:`sort` δέχεται δύο ορίσματα που μπορούν να περάσουν μόνο με τη λέξη-" "κλειδί (:ref:`keyword-only arguments `):" -#: library/stdtypes.rst:1343 +#: library/stdtypes.rst:1348 msgid "" "*key* specifies a function of one argument that is used to extract a " "comparison key from each list element (for example, ``key=str.lower``). The " @@ -2570,7 +2589,7 @@ msgstr "" "(default) ``None`` σημαίνει ότι τα στοιχεία της λίστας ταξινομούνται " "απευθείας χωρίς να υπολογίζεται ξεχωριστή τιμή κλειδιού." -#: library/stdtypes.rst:1350 +#: library/stdtypes.rst:1355 msgid "" "The :func:`functools.cmp_to_key` utility is available to convert a 2.x style " "*cmp* function to a *key* function." @@ -2578,7 +2597,7 @@ msgstr "" "Το utility :func:`functools.cmp_to_key` είναι διαθέσιμο για τη μετατροπή μια " "συνάρτηση *cmp* στυλ 2.x σε συνάρτηση *key*." -#: library/stdtypes.rst:1353 +#: library/stdtypes.rst:1358 msgid "" "*reverse* is a boolean value. If set to ``True``, then the list elements " "are sorted as if each comparison were reversed." @@ -2586,7 +2605,7 @@ msgstr "" "η *reverse* είναι μια λογική (boolean) τιμή. Αν τεθεί σε ``True``, τότε τα " "στοιχεία της λίστας ταξινομούνται σαν να ήταν αντίστροφη κάθε σύγκριση." -#: library/stdtypes.rst:1356 +#: library/stdtypes.rst:1361 msgid "" "This method modifies the sequence in place for economy of space when sorting " "a large sequence. To remind users that it operates by side effect, it does " @@ -2599,7 +2618,7 @@ msgstr "" "(χρησιμοποιήστε την :func:`sorted` για να ζητήσετε μια νέα περίπτωση " "ταξινομημένης λίστας)." -#: library/stdtypes.rst:1361 +#: library/stdtypes.rst:1366 msgid "" "The :meth:`sort` method is guaranteed to be stable. A sort is stable if it " "guarantees not to change the relative order of elements that compare equal " @@ -2612,14 +2631,14 @@ msgstr "" "περάσματα (για παράδειγμα, ταξινόμηση κατά τμήμα, στη συνέχεια με βάση το " "μισθολογικό κλιμάκιο κτλ)." -#: library/stdtypes.rst:1366 +#: library/stdtypes.rst:1371 msgid "" "For sorting examples and a brief sorting tutorial, see :ref:`sortinghowto`." msgstr "" "Για παραδείγματα ταξινόμησης και ένα σύντομο tutorial, δείτε :ref:" "`sortinghowto`." -#: library/stdtypes.rst:1370 +#: library/stdtypes.rst:1375 msgid "" "While a list is being sorted, the effect of attempting to mutate, or even " "inspect, the list is undefined. The C implementation of Python makes the " @@ -2632,11 +2651,11 @@ msgstr "" "κάνει raise :exc:`ValueError` αν ανιχνεύσει ότι η λίστα έχει μεταλλαχθεί " "κατά τη διάρκεια μιας ταξινόμησης." -#: library/stdtypes.rst:1379 +#: library/stdtypes.rst:1384 msgid "Tuples" msgstr "Πλειάδες (Tuples)" -#: library/stdtypes.rst:1383 +#: library/stdtypes.rst:1388 msgid "" "Tuples are immutable sequences, typically used to store collections of " "heterogeneous data (such as the 2-tuples produced by the :func:`enumerate` " @@ -2651,31 +2670,31 @@ msgstr "" "ομοιογενών δεδομένων (όπως για παράδειγμα για να επιτρέπεται η αποθήκευση σε " "ένα :class:`set` ή σε ένα :class:`dict` instance)." -#: library/stdtypes.rst:1391 +#: library/stdtypes.rst:1396 msgid "Tuples may be constructed in a number of ways:" msgstr "Οι πλειάδες (tuples) μπορούν να κατασκευαστούν με διάφορους τρόπους:" -#: library/stdtypes.rst:1393 +#: library/stdtypes.rst:1398 msgid "Using a pair of parentheses to denote the empty tuple: ``()``" msgstr "" "Χρήση ενός ζεύγους παρενθέσεων για να δηλωθεί το κενό tuple (πλειάδα): ``()``" -#: library/stdtypes.rst:1394 +#: library/stdtypes.rst:1399 msgid "Using a trailing comma for a singleton tuple: ``a,`` or ``(a,)``" msgstr "" "Χρήση ενός κόμματος στο τέλος για ένα μοναδικό tuple (πλειάδα): ``a,`` ή " "``(a,)``" -#: library/stdtypes.rst:1395 +#: library/stdtypes.rst:1400 msgid "Separating items with commas: ``a, b, c`` or ``(a, b, c)``" msgstr "Διαχωρισμός στοιχείων με κόμμα: ``a, b, c`` ή ``(a, b, c)``" -#: library/stdtypes.rst:1396 +#: library/stdtypes.rst:1401 msgid "Using the :func:`tuple` built-in: ``tuple()`` or ``tuple(iterable)``" msgstr "" "Χρήση του ενσωματωμένου :func:`tuple`: ``tuple()`` ή ``tuple(iterable)``" -#: library/stdtypes.rst:1398 +#: library/stdtypes.rst:1403 msgid "" "The constructor builds a tuple whose items are the same and in the same " "order as *iterable*'s items. *iterable* may be either a sequence, a " @@ -2694,7 +2713,7 @@ msgstr "" "3] )`` επιστρέφει ``(1, 2, 3)``. Αν δεν δοθεί κανένα όρισμα, ο κατασκευαστής " "δημιουργεί μια ένα κενό tuple, ``()``." -#: library/stdtypes.rst:1406 +#: library/stdtypes.rst:1411 msgid "" "Note that it is actually the comma which makes a tuple, not the parentheses. " "The parentheses are optional, except in the empty tuple case, or when they " @@ -2709,7 +2728,7 @@ msgstr "" "τρία ορίσματα, ενώ η ``f((a, b, c))`` είναι μια συνάρτηση κλήση συνάρτησης " "με ένα 3-tuple ως μοναδικό όρισμα." -#: library/stdtypes.rst:1412 +#: library/stdtypes.rst:1417 msgid "" "Tuples implement all of the :ref:`common ` sequence " "operations." @@ -2717,7 +2736,7 @@ msgstr "" "Τα Tuples υλοποιούν όλες τις πράξεις ακολουθιών :ref:`common `." -#: library/stdtypes.rst:1415 +#: library/stdtypes.rst:1420 msgid "" "For heterogeneous collections of data where access by name is clearer than " "access by index, :func:`collections.namedtuple` may be a more appropriate " @@ -2728,11 +2747,11 @@ msgstr "" "namedtuple` μπορεί να είναι μια πιο κατάλληλη επιλογή από ένα απλό " "αντικείμενο tuple (πλειάδα)." -#: library/stdtypes.rst:1423 +#: library/stdtypes.rst:1428 msgid "Ranges" msgstr "Εύρη (Ranges)" -#: library/stdtypes.rst:1427 +#: library/stdtypes.rst:1432 msgid "" "The :class:`range` type represents an immutable sequence of numbers and is " "commonly used for looping a specific number of times in :keyword:`for` loops." @@ -2741,7 +2760,7 @@ msgstr "" "συνήθως χρησιμοποιείται για την επανάληψη ενός συγκεκριμένου αριθμού " "επαναλήψεων σε βρόχους :keyword:`for`." -#: library/stdtypes.rst:1434 +#: library/stdtypes.rst:1439 msgid "" "The arguments to the range constructor must be integers (either built-in :" "class:`int` or any object that implements the :meth:`~object.__index__` " @@ -2756,7 +2775,7 @@ msgstr "" "*start* παραλείπεται, το προεπιλογή (default) είναι ``0``. Εάν το *step* " "είναι μηδέν, γίνεται raise ένα :exc:`ValueError`." -#: library/stdtypes.rst:1440 +#: library/stdtypes.rst:1445 msgid "" "For a positive *step*, the contents of a range ``r`` are determined by the " "formula ``r[i] = start + step*i`` where ``i >= 0`` and ``r[i] < stop``." @@ -2764,7 +2783,7 @@ msgstr "" "Για ένα θετικό *βήμα*, τα περιεχόμενα του range (εύρους) ``r`` καθορίζονται " "από τον τύπο ``r[i] = start + step*i`` όπου ``i >= 0`` και ``r[i] < stop``." -#: library/stdtypes.rst:1444 +#: library/stdtypes.rst:1449 msgid "" "For a negative *step*, the contents of the range are still determined by the " "formula ``r[i] = start + step*i``, but the constraints are ``i >= 0`` and " @@ -2774,7 +2793,7 @@ msgstr "" "καθορίζονται από τον τύπο ``r[i] = start + step*i``, αλλά οι περιορισμοί " "είναι ``i >= 0`` και ``r[i] > stop``." -#: library/stdtypes.rst:1448 +#: library/stdtypes.rst:1453 msgid "" "A range object will be empty if ``r[0]`` does not meet the value constraint. " "Ranges do support negative indices, but these are interpreted as indexing " @@ -2785,7 +2804,7 @@ msgstr "" "ερμηνεύονται ως δείκτες από το τέλος της ακολουθίας που καθορίζεται από τους " "θετικούς δείκτες." -#: library/stdtypes.rst:1453 +#: library/stdtypes.rst:1458 msgid "" "Ranges containing absolute values larger than :data:`sys.maxsize` are " "permitted but some features (such as :func:`len`) may raise :exc:" @@ -2795,11 +2814,11 @@ msgstr "" "είναι επιτρεπτά, αλλά ορισμένα χαρακτηριστικά (όπως :func:`len`) μπορεί να " "κάνουν raise :exc:`OverflowError`." -#: library/stdtypes.rst:1457 +#: library/stdtypes.rst:1462 msgid "Range examples::" msgstr "Παραδείγματα Range::" -#: library/stdtypes.rst:1459 +#: library/stdtypes.rst:1464 msgid "" ">>> list(range(10))\n" "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" @@ -2831,7 +2850,7 @@ msgstr "" ">>> list(range(1, 0))\n" "[]" -#: library/stdtypes.rst:1474 +#: library/stdtypes.rst:1479 msgid "" "Ranges implement all of the :ref:`common ` sequence " "operations except concatenation and repetition (due to the fact that range " @@ -2844,23 +2863,23 @@ msgstr "" "αυστηρό μοτίβο και η επανάληψη και η συνένωση συνήθως παραβιάζουν αυτό το " "πρότυπο)." -#: library/stdtypes.rst:1481 +#: library/stdtypes.rst:1486 msgid "" "The value of the *start* parameter (or ``0`` if the parameter was not " "supplied)" msgstr "Η τιμή της παραμέτρου *start* (ή ``0`` αν η παράμετρος δεν παρέχεται)" -#: library/stdtypes.rst:1486 +#: library/stdtypes.rst:1491 msgid "The value of the *stop* parameter" msgstr "Η τιμή της παραμέτρου *stop*" -#: library/stdtypes.rst:1490 +#: library/stdtypes.rst:1495 msgid "" "The value of the *step* parameter (or ``1`` if the parameter was not " "supplied)" msgstr "Η τιμή της παραμέτρου *step* (ή ``1`` αν η παράμετρος δεν παρέχεται)" -#: library/stdtypes.rst:1493 +#: library/stdtypes.rst:1498 msgid "" "The advantage of the :class:`range` type over a regular :class:`list` or :" "class:`tuple` is that a :class:`range` object will always take the same " @@ -2875,7 +2894,7 @@ msgstr "" "``step``, υπολογίζοντας τα μεμονωμένα στοιχεία και τις υποπεριοχές όπως " "απαιτείται)." -#: library/stdtypes.rst:1499 +#: library/stdtypes.rst:1504 msgid "" "Range objects implement the :class:`collections.abc.Sequence` ABC, and " "provide features such as containment tests, element index lookup, slicing " @@ -2885,7 +2904,7 @@ msgstr "" "και παρέχουν χαρακτηριστικά όπως δοκιμές περιορισμού, αναζήτηση δείκτη " "στοιχείου, τεμαχισμό και υποστήριξη αρνητικών δεικτών (βλ. :ref:`typesseq`):" -#: library/stdtypes.rst:1519 +#: library/stdtypes.rst:1524 msgid "" "Testing range objects for equality with ``==`` and ``!=`` compares them as " "sequences. That is, two range objects are considered equal if they " @@ -2902,7 +2921,7 @@ msgstr "" "παράδειγμα ``range(0) == range(2, 1, 3)`` ή ``range(0, 3, 2) == range(0, 4, " "2)``.)" -#: library/stdtypes.rst:1526 +#: library/stdtypes.rst:1531 msgid "" "Implement the Sequence ABC. Support slicing and negative indices. Test :" "class:`int` objects for membership in constant time instead of iterating " @@ -2912,7 +2931,7 @@ msgstr "" "αρνητικούς δείκτες. Δοκιμάστε τα :class:`int` αντικείμενα για συμμετοχή σε " "σταθερό χρόνο αντί της επανάληψης σε όλα τα αντικείμενα." -#: library/stdtypes.rst:1532 +#: library/stdtypes.rst:1537 msgid "" "Define '==' and '!=' to compare range objects based on the sequence of " "values they define (instead of comparing based on object identity)." @@ -2921,7 +2940,7 @@ msgstr "" "ακολουθία των τιμών που ορίζουν (αντί να συγκρίνουν με βάση την ταυτότητα " "του αντικειμένου)." -#: library/stdtypes.rst:1537 +#: library/stdtypes.rst:1542 msgid "" "Added the :attr:`~range.start`, :attr:`~range.stop` and :attr:`~range.step` " "attributes." @@ -2929,7 +2948,7 @@ msgstr "" "Προστέθηκαν τα :attr:`~range.start`, :attr:`~range.stop` και :attr:`~range." "step` attributes." -#: library/stdtypes.rst:1542 +#: library/stdtypes.rst:1547 msgid "" "The `linspace recipe `_ shows how to implement a lazy version of range " @@ -2939,11 +2958,11 @@ msgstr "" "spaced-numbers-linspace/>`_ δείχνει πώς να υλοποιήσετε μια lazy έκδοση του " "range κατάλληλη για εφαρμογές κινητής υποδιαστολής." -#: library/stdtypes.rst:1554 +#: library/stdtypes.rst:1559 msgid "Text and Binary Sequence Type Methods Summary" msgstr "Σύνοψη μεθόδων τύπου κειμένου και δυαδική ακολουθίας" -#: library/stdtypes.rst:1555 +#: library/stdtypes.rst:1560 msgid "" "The following table summarizes the text and binary sequence types methods by " "category." @@ -2951,379 +2970,379 @@ msgstr "" "Ο παρακάτω πίνακας συνοψίζει τις μεθόδους τύπων κειμένου και δυαδική " "ακολουθίας ανά κατηγορία." -#: library/stdtypes.rst:1560 +#: library/stdtypes.rst:1565 msgid "Category" msgstr "Κατηγορία" -#: library/stdtypes.rst:1560 +#: library/stdtypes.rst:1565 msgid ":class:`str` methods" msgstr ":class:`str` methods" -#: library/stdtypes.rst:1560 +#: library/stdtypes.rst:1565 msgid ":class:`bytes` and :class:`bytearray` methods" msgstr "οι μέθοδοι :class:`bytes` και :class:`bytearray`" -#: library/stdtypes.rst:1562 +#: library/stdtypes.rst:1567 msgid "Formatting" msgstr "Μορφοποίηση" -#: library/stdtypes.rst:1562 +#: library/stdtypes.rst:1567 msgid ":meth:`str.format`" msgstr ":meth:`str.format`" -#: library/stdtypes.rst:1564 +#: library/stdtypes.rst:1569 msgid ":meth:`str.format_map`" msgstr ":meth:`str.format_map`" -#: library/stdtypes.rst:1566 +#: library/stdtypes.rst:1571 msgid ":ref:`f-strings`" msgstr ":ref:`f-strings`" -#: library/stdtypes.rst:1568 +#: library/stdtypes.rst:1573 msgid ":ref:`old-string-formatting`" msgstr ":ref:`old-string-formatting`" -#: library/stdtypes.rst:1568 +#: library/stdtypes.rst:1573 msgid ":ref:`bytes-formatting`" msgstr ":ref:`bytes-formatting`" -#: library/stdtypes.rst:1570 +#: library/stdtypes.rst:1575 msgid "Searching and Replacing" msgstr "Αναζήτηση και Αντικατάσταση" -#: library/stdtypes.rst:1570 +#: library/stdtypes.rst:1575 msgid ":meth:`str.find`" msgstr ":meth:`str.find`" -#: library/stdtypes.rst:1570 +#: library/stdtypes.rst:1575 msgid ":meth:`str.rfind`" msgstr ":meth:`str.rfind`" -#: library/stdtypes.rst:1570 +#: library/stdtypes.rst:1575 msgid ":meth:`bytes.find`" msgstr ":meth:`bytes.find`" -#: library/stdtypes.rst:1570 +#: library/stdtypes.rst:1575 msgid ":meth:`bytes.rfind`" msgstr ":meth:`bytes.rfind`" -#: library/stdtypes.rst:1572 +#: library/stdtypes.rst:1577 msgid ":meth:`str.index`" msgstr ":meth:`str.index`" -#: library/stdtypes.rst:1572 +#: library/stdtypes.rst:1577 msgid ":meth:`str.rindex`" msgstr ":meth:`str.rindex`" -#: library/stdtypes.rst:1572 +#: library/stdtypes.rst:1577 msgid ":meth:`bytes.index`" msgstr ":meth:`bytes.index`" -#: library/stdtypes.rst:1572 +#: library/stdtypes.rst:1577 msgid ":meth:`bytes.rindex`" msgstr ":meth:`bytes.rindex`" -#: library/stdtypes.rst:1574 +#: library/stdtypes.rst:1579 msgid ":meth:`str.startswith`" msgstr ":meth:`str.startswith`" -#: library/stdtypes.rst:1574 +#: library/stdtypes.rst:1579 msgid ":meth:`bytes.startswith`" msgstr ":meth:`bytes.startswith`" -#: library/stdtypes.rst:1576 +#: library/stdtypes.rst:1581 msgid ":meth:`str.endswith`" msgstr ":meth:`str.endswith`" -#: library/stdtypes.rst:1576 +#: library/stdtypes.rst:1581 msgid ":meth:`bytes.endswith`" msgstr ":meth:`bytes.endswith`" -#: library/stdtypes.rst:1578 +#: library/stdtypes.rst:1583 msgid ":meth:`str.count`" msgstr ":meth:`str.count`" -#: library/stdtypes.rst:1578 +#: library/stdtypes.rst:1583 msgid ":meth:`bytes.count`" msgstr ":meth:`bytes.count`" -#: library/stdtypes.rst:1580 +#: library/stdtypes.rst:1585 msgid ":meth:`str.replace`" msgstr ":meth:`str.replace`" -#: library/stdtypes.rst:1580 +#: library/stdtypes.rst:1585 msgid ":meth:`bytes.replace`" msgstr ":meth:`bytes.replace`" -#: library/stdtypes.rst:1582 +#: library/stdtypes.rst:1587 msgid "Splitting and Joining" msgstr "Διαχωρισμός και Ένωση" -#: library/stdtypes.rst:1582 +#: library/stdtypes.rst:1587 msgid ":meth:`str.split`" msgstr ":meth:`str.split`" -#: library/stdtypes.rst:1582 +#: library/stdtypes.rst:1587 msgid ":meth:`str.rsplit`" msgstr ":meth:`str.rsplit`" -#: library/stdtypes.rst:1582 +#: library/stdtypes.rst:1587 msgid ":meth:`bytes.split`" msgstr ":meth:`bytes.split`" -#: library/stdtypes.rst:1582 +#: library/stdtypes.rst:1587 msgid ":meth:`bytes.rsplit`" msgstr ":meth:`bytes.rsplit`" -#: library/stdtypes.rst:1584 +#: library/stdtypes.rst:1589 msgid ":meth:`str.splitlines`" msgstr ":meth:`str.splitlines`" -#: library/stdtypes.rst:1584 +#: library/stdtypes.rst:1589 msgid ":meth:`bytes.splitlines`" msgstr ":meth:`bytes.splitlines`" -#: library/stdtypes.rst:1586 +#: library/stdtypes.rst:1591 msgid ":meth:`str.partition`" msgstr ":meth:`str.partition`" -#: library/stdtypes.rst:1586 +#: library/stdtypes.rst:1591 msgid ":meth:`bytes.partition`" msgstr ":meth:`bytes.partition`" -#: library/stdtypes.rst:1588 +#: library/stdtypes.rst:1593 msgid ":meth:`str.rpartition`" msgstr ":meth:`str.rpartition`" -#: library/stdtypes.rst:1588 +#: library/stdtypes.rst:1593 msgid ":meth:`bytes.rpartition`" msgstr ":meth:`bytes.rpartition`" -#: library/stdtypes.rst:1590 +#: library/stdtypes.rst:1595 msgid ":meth:`str.join`" msgstr ":meth:`str.join`" -#: library/stdtypes.rst:1590 +#: library/stdtypes.rst:1595 msgid ":meth:`bytes.join`" msgstr ":meth:`bytes.join`" -#: library/stdtypes.rst:1592 +#: library/stdtypes.rst:1597 msgid "String Classification" msgstr "Ταξινόμηση Συμβολοσειρών" -#: library/stdtypes.rst:1592 +#: library/stdtypes.rst:1597 msgid ":meth:`str.isalpha`" msgstr ":meth:`str.isalpha`" -#: library/stdtypes.rst:1592 +#: library/stdtypes.rst:1597 msgid ":meth:`bytes.isalpha`" msgstr ":meth:`bytes.isalpha`" -#: library/stdtypes.rst:1594 +#: library/stdtypes.rst:1599 msgid ":meth:`str.isdecimal`" msgstr ":meth:`str.isdecimal`" -#: library/stdtypes.rst:1596 +#: library/stdtypes.rst:1601 msgid ":meth:`str.isdigit`" msgstr ":meth:`str.isdigit`" -#: library/stdtypes.rst:1596 +#: library/stdtypes.rst:1601 msgid ":meth:`bytes.isdigit`" msgstr ":meth:`bytes.isdigit`" -#: library/stdtypes.rst:1598 +#: library/stdtypes.rst:1603 msgid ":meth:`str.isnumeric`" msgstr ":meth:`str.isnumeric`" -#: library/stdtypes.rst:1600 +#: library/stdtypes.rst:1605 msgid ":meth:`str.isalnum`" msgstr ":meth:`str.isalnum`" -#: library/stdtypes.rst:1600 +#: library/stdtypes.rst:1605 msgid ":meth:`bytes.isalnum`" msgstr ":meth:`bytes.isalnum`" -#: library/stdtypes.rst:1602 +#: library/stdtypes.rst:1607 msgid ":meth:`str.isidentifier`" msgstr ":meth:`str.isidentifier`" -#: library/stdtypes.rst:1604 +#: library/stdtypes.rst:1609 msgid ":meth:`str.islower`" msgstr ":meth:`str.islower`" -#: library/stdtypes.rst:1604 +#: library/stdtypes.rst:1609 msgid ":meth:`bytes.islower`" msgstr ":meth:`bytes.islower`" -#: library/stdtypes.rst:1606 +#: library/stdtypes.rst:1611 msgid ":meth:`str.isupper`" msgstr ":meth:`str.isupper`" -#: library/stdtypes.rst:1606 +#: library/stdtypes.rst:1611 msgid ":meth:`bytes.isupper`" msgstr ":meth:`bytes.isupper`" -#: library/stdtypes.rst:1608 +#: library/stdtypes.rst:1613 msgid ":meth:`str.istitle`" msgstr ":meth:`str.istitle`" -#: library/stdtypes.rst:1608 +#: library/stdtypes.rst:1613 msgid ":meth:`bytes.istitle`" msgstr ":meth:`bytes.istitle`" -#: library/stdtypes.rst:1610 +#: library/stdtypes.rst:1615 msgid ":meth:`str.isspace`" msgstr ":meth:`str.isspace`" -#: library/stdtypes.rst:1610 +#: library/stdtypes.rst:1615 msgid ":meth:`bytes.isspace`" msgstr ":meth:`bytes.isspace`" -#: library/stdtypes.rst:1612 +#: library/stdtypes.rst:1617 msgid ":meth:`str.isprintable`" msgstr ":meth:`str.isprintable`" -#: library/stdtypes.rst:1614 +#: library/stdtypes.rst:1619 msgid "Case Manipulation" msgstr "Χειρισμός υποθέσεων" -#: library/stdtypes.rst:1614 +#: library/stdtypes.rst:1619 msgid ":meth:`str.lower`" msgstr ":meth:`str.lower`" -#: library/stdtypes.rst:1614 +#: library/stdtypes.rst:1619 msgid ":meth:`bytes.lower`" msgstr ":meth:`bytes.lower`" -#: library/stdtypes.rst:1616 +#: library/stdtypes.rst:1621 msgid ":meth:`str.upper`" msgstr ":meth:`str.upper`" -#: library/stdtypes.rst:1616 +#: library/stdtypes.rst:1621 msgid ":meth:`bytes.upper`" msgstr ":meth:`bytes.upper`" -#: library/stdtypes.rst:1618 +#: library/stdtypes.rst:1623 msgid ":meth:`str.casefold`" msgstr ":meth:`str.casefold`" -#: library/stdtypes.rst:1620 +#: library/stdtypes.rst:1625 msgid ":meth:`str.capitalize`" msgstr ":meth:`str.capitalize`" -#: library/stdtypes.rst:1620 +#: library/stdtypes.rst:1625 msgid ":meth:`bytes.capitalize`" msgstr ":meth:`bytes.capitalize`" -#: library/stdtypes.rst:1622 +#: library/stdtypes.rst:1627 msgid ":meth:`str.title`" msgstr ":meth:`str.title`" -#: library/stdtypes.rst:1622 +#: library/stdtypes.rst:1627 msgid ":meth:`bytes.title`" msgstr ":meth:`bytes.title`" -#: library/stdtypes.rst:1624 +#: library/stdtypes.rst:1629 msgid ":meth:`str.swapcase`" msgstr ":meth:`str.swapcase`" -#: library/stdtypes.rst:1624 +#: library/stdtypes.rst:1629 msgid ":meth:`bytes.swapcase`" msgstr ":meth:`bytes.swapcase`" -#: library/stdtypes.rst:1626 +#: library/stdtypes.rst:1631 msgid "Padding and Stripping" msgstr "Συμπλήρωση και Αφαίρεση" -#: library/stdtypes.rst:1626 +#: library/stdtypes.rst:1631 msgid ":meth:`str.ljust`" msgstr ":meth:`str.ljust`" -#: library/stdtypes.rst:1626 +#: library/stdtypes.rst:1631 msgid ":meth:`str.rjust`" msgstr ":meth:`str.rjust`" -#: library/stdtypes.rst:1626 +#: library/stdtypes.rst:1631 msgid ":meth:`bytes.ljust`" msgstr ":meth:`bytes.ljust`" -#: library/stdtypes.rst:1626 +#: library/stdtypes.rst:1631 msgid ":meth:`bytes.rjust`" msgstr ":meth:`bytes.rjust`" -#: library/stdtypes.rst:1628 +#: library/stdtypes.rst:1633 msgid ":meth:`str.center`" msgstr ":meth:`str.center`" -#: library/stdtypes.rst:1628 +#: library/stdtypes.rst:1633 msgid ":meth:`bytes.center`" msgstr ":meth:`bytes.center`" -#: library/stdtypes.rst:1630 +#: library/stdtypes.rst:1635 msgid ":meth:`str.expandtabs`" msgstr ":meth:`str.expandtabs`" -#: library/stdtypes.rst:1630 +#: library/stdtypes.rst:1635 msgid ":meth:`bytes.expandtabs`" msgstr ":meth:`bytes.expandtabs`" -#: library/stdtypes.rst:1632 +#: library/stdtypes.rst:1637 msgid ":meth:`str.strip`" msgstr ":meth:`str.strip`" -#: library/stdtypes.rst:1632 +#: library/stdtypes.rst:1637 msgid ":meth:`bytes.strip`" msgstr ":meth:`bytes.strip`" -#: library/stdtypes.rst:1634 +#: library/stdtypes.rst:1639 msgid ":meth:`str.lstrip`" msgstr ":meth:`str.lstrip`" -#: library/stdtypes.rst:1634 +#: library/stdtypes.rst:1639 msgid ":meth:`str.rstrip`" msgstr ":meth:`str.rstrip`" -#: library/stdtypes.rst:1634 +#: library/stdtypes.rst:1639 msgid ":meth:`bytes.lstrip`" msgstr ":meth:`bytes.lstrip`" -#: library/stdtypes.rst:1634 +#: library/stdtypes.rst:1639 msgid ":meth:`bytes.rstrip`" msgstr ":meth:`bytes.rstrip`" -#: library/stdtypes.rst:1636 +#: library/stdtypes.rst:1641 msgid "Translation and Encoding" msgstr "Μετάφραση και Κωδικοποίηση" -#: library/stdtypes.rst:1636 +#: library/stdtypes.rst:1641 msgid ":meth:`str.translate`" msgstr ":meth:`str.translate`" -#: library/stdtypes.rst:1636 +#: library/stdtypes.rst:1641 msgid ":meth:`bytes.translate`" msgstr ":meth:`bytes.translate`" -#: library/stdtypes.rst:1638 +#: library/stdtypes.rst:1643 msgid ":meth:`str.maketrans`" msgstr ":meth:`str.maketrans`" -#: library/stdtypes.rst:1638 +#: library/stdtypes.rst:1643 msgid ":meth:`bytes.maketrans`" msgstr ":meth:`bytes.maketrans`" -#: library/stdtypes.rst:1640 +#: library/stdtypes.rst:1645 msgid ":meth:`str.encode`" msgstr ":meth:`str.encode`" -#: library/stdtypes.rst:1642 +#: library/stdtypes.rst:1647 msgid ":meth:`bytes.decode`" msgstr ":meth:`bytes.decode`" -#: library/stdtypes.rst:1648 +#: library/stdtypes.rst:1653 msgid "Text Sequence Type --- :class:`str`" msgstr "Τύπος Ακολουθίας (Sequence) Κειμένου --- :class:`str`" -#: library/stdtypes.rst:1650 +#: library/stdtypes.rst:1655 msgid "" "Textual data in Python is handled with :class:`str` objects, or :dfn:" "`strings`. Strings are immutable :ref:`sequences ` of Unicode code " @@ -3334,15 +3353,15 @@ msgstr "" "`sequences ` των Unicode points. Τα αλφαριθμητικά γράφονται με " "διάφορους τρόπους:" -#: library/stdtypes.rst:1655 +#: library/stdtypes.rst:1660 msgid "Single quotes: ``'allows embedded \"double\" quotes'``" msgstr "Απλά εισαγωγικά: ``'allows embedded \"double\" quotes'``" -#: library/stdtypes.rst:1656 +#: library/stdtypes.rst:1661 msgid "Double quotes: ``\"allows embedded 'single' quotes\"``" msgstr "Διπλά εισαγωγικά: ``'allows embedded \"double\" quotes'``" -#: library/stdtypes.rst:1657 +#: library/stdtypes.rst:1662 msgid "" "Triple quoted: ``'''Three single quotes'''``, ``\"\"\"Three double " "quotes\"\"\"``" @@ -3350,7 +3369,7 @@ msgstr "" "Τριπλά εισαγωγικά: ``'''Three single quotes'''``, ``\"\"\"Three double " "quotes\"\"\"``" -#: library/stdtypes.rst:1659 +#: library/stdtypes.rst:1664 msgid "" "Triple quoted strings may span multiple lines - all associated whitespace " "will be included in the string literal." @@ -3358,7 +3377,7 @@ msgstr "" "Τα αλφαριθμητικά σε τριπλά εισαγωγικά μπορούν να καλύπτουν πολλές γραμμές - " "όλα τα σχετικά κενά θα συμπεριληφθούν στο αλφαριθμητικό." -#: library/stdtypes.rst:1662 +#: library/stdtypes.rst:1667 msgid "" "String literals that are part of a single expression and have only " "whitespace between them will be implicitly converted to a single string " @@ -3368,7 +3387,7 @@ msgstr "" "έχουν μόνο κενά μεταξύ τους, θα μετατραπούν σιωπηρά σε ένα ενιαίο " "αλφαριθμητικό literal. Δηλαδή, ``(\"spam \" \"eggs\") == \"spam eggs\"``." -#: library/stdtypes.rst:1666 +#: library/stdtypes.rst:1671 msgid "" "See :ref:`strings` for more about the various forms of string literal, " "including supported :ref:`escape sequences `, and the " @@ -3380,7 +3399,7 @@ msgstr "" "(\"raw\") πρόθεμα που απενεργοποιεί την επεξεργασία των περισσότερων " "ακολουθιών διαφυγής." -#: library/stdtypes.rst:1670 +#: library/stdtypes.rst:1675 msgid "" "Strings may also be created from other objects using the :class:`str` " "constructor." @@ -3388,7 +3407,7 @@ msgstr "" "Τα αλφαριθμητικά (strings) μπορούν επίσης να δημιουργηθούν από άλλα " "αντικείμενα χρησιμοποιώντας τον constructor :class:`str`." -#: library/stdtypes.rst:1673 +#: library/stdtypes.rst:1678 msgid "" "Since there is no separate \"character\" type, indexing a string produces " "strings of length 1. That is, for a non-empty string *s*, ``s[0] == s[0:1]``." @@ -3397,7 +3416,7 @@ msgstr "" "συμβολοσειράς (string) παράγει συμβολοσειρές μήκους 1. Δηλαδή, για μια μη " "κενή συμβολοσειρά *s*, ``s[0] == s[0:1]``." -#: library/stdtypes.rst:1679 +#: library/stdtypes.rst:1684 msgid "" "There is also no mutable string type, but :meth:`str.join` or :class:`io." "StringIO` can be used to efficiently construct strings from multiple " @@ -3407,7 +3426,7 @@ msgstr "" "`str.join` ή το :class:`io.StringIO` μπορεί να χρησιμοποιηθεί για την " "αποτελεσματική κατασκευή συμβολοσειρών από πολλαπλά μέρη." -#: library/stdtypes.rst:1683 +#: library/stdtypes.rst:1688 msgid "" "For backwards compatibility with the Python 2 series, the ``u`` prefix is " "once again permitted on string literals. It has no effect on the meaning of " @@ -3418,7 +3437,7 @@ msgstr "" "επίδραση στη σημασία των αλφαριθμητικών και δεν μπορεί να συνδυαστεί με το " "πρόθεμα ``r``." -#: library/stdtypes.rst:1695 +#: library/stdtypes.rst:1700 msgid "" "Return a :ref:`string ` version of *object*. If *object* is not " "provided, returns the empty string. Otherwise, the behavior of ``str()`` " @@ -3428,7 +3447,7 @@ msgstr "" "δεν παρέχεται, επιστρέφει κενό αλφαριθμητικό. Διαφορετικά, η συμπεριφορά " "της ``str()`` εξαρτάται από το αν δίνεται *encoding* ή *errors*, ως εξής." -#: library/stdtypes.rst:1699 +#: library/stdtypes.rst:1704 msgid "" "If neither *encoding* nor *errors* is given, ``str(object)`` returns :meth:" "`type(object).__str__(object) `, which is the \"informal\" " @@ -3444,7 +3463,7 @@ msgstr "" "Εάν το *object* δεν έχει την :meth:`~object.__str__`, τότε η :func:`str` " "επιστρέφει τη μέθοδο :func:`repr(object) `." -#: library/stdtypes.rst:1711 +#: library/stdtypes.rst:1716 msgid "" "If at least one of *encoding* or *errors* is given, *object* should be a :" "term:`bytes-like object` (e.g. :class:`bytes` or :class:`bytearray`). In " @@ -3465,7 +3484,7 @@ msgstr "" "`binaryseq` και :ref:`bufferobjects` για πληροφορίες σχετικά με τα " "αντικείμενα buffer." -#: library/stdtypes.rst:1720 +#: library/stdtypes.rst:1725 msgid "" "Passing a :class:`bytes` object to :func:`str` without the *encoding* or " "*errors* arguments falls under the first case of returning the informal " @@ -3477,7 +3496,7 @@ msgstr "" "αναπαράστασης συμβολοσειράς (string) (δείτε επίσης την επιλογή :option:`-b` " "της γραμμής εντολών για Python). Για παράδειγμα::" -#: library/stdtypes.rst:1725 +#: library/stdtypes.rst:1730 msgid "" ">>> str(b'Zoot!')\n" "\"b'Zoot!'\"" @@ -3485,7 +3504,7 @@ msgstr "" ">>> str(b'Zoot!')\n" "\"b'Zoot!'\"" -#: library/stdtypes.rst:1728 +#: library/stdtypes.rst:1733 msgid "" "For more information on the ``str`` class and its methods, see :ref:" "`textseq` and the :ref:`string-methods` section below. To output formatted " @@ -3498,11 +3517,11 @@ msgstr "" "ενότητες :ref:`f-strings` και :ref:`formatstrings`. Επιπλέον, δείτε την " "ενότητα :ref:`stringservices`." -#: library/stdtypes.rst:1740 +#: library/stdtypes.rst:1745 msgid "String Methods" msgstr "Μέθοδοι Συμβολοσειράς (String)" -#: library/stdtypes.rst:1745 +#: library/stdtypes.rst:1750 msgid "" "Strings implement all of the :ref:`common ` sequence " "operations, along with the additional methods described below." @@ -3511,7 +3530,7 @@ msgstr "" "` ακολουθιών, μαζί με τις πρόσθετες μεθόδους που " "περιγράφονται παρακάτω." -#: library/stdtypes.rst:1748 +#: library/stdtypes.rst:1753 msgid "" "Strings also support two styles of string formatting, one providing a large " "degree of flexibility and customization (see :meth:`str.format`, :ref:" @@ -3528,7 +3547,7 @@ msgstr "" "χρησιμοποιηθεί σωστά, αλλά είναι συχνά ταχύτερο για τις περιπτώσεις που " "μπορεί να χειριστεί (:ref:`old-string-formatting`)." -#: library/stdtypes.rst:1755 +#: library/stdtypes.rst:1760 msgid "" "The :ref:`textservices` section of the standard library covers a number of " "other modules that provide various text related utilities (including regular " @@ -3539,7 +3558,7 @@ msgstr "" "σχετίζονται με το κείμενο (συμπεριλαμβανομένης της υποστήριξης των κανονικών " "εκφράσεων στην ενότητα :mod:`re`)." -#: library/stdtypes.rst:1761 +#: library/stdtypes.rst:1766 msgid "" "Return a copy of the string with its first character capitalized and the " "rest lowercased." @@ -3547,7 +3566,7 @@ msgstr "" "Επιστρέφει ένα αντίγραφο της συμβολοσειράς (string) με τον πρώτο χαρακτήρα " "κεφαλαίο και τα υπόλοιπα με πεζά γράμματα." -#: library/stdtypes.rst:1764 +#: library/stdtypes.rst:1769 msgid "" "The first character is now put into titlecase rather than uppercase. This " "means that characters like digraphs will only have their first letter " @@ -3557,7 +3576,7 @@ msgstr "" "σημαίνει ότι χαρακτήρες όπως οι διγράφοι (digraphs) θα έχουν μόνο το πρώτο " "γράμμα τους με κεφαλαίο, αντί για όλους τους χαρακτήρες." -#: library/stdtypes.rst:1771 +#: library/stdtypes.rst:1776 msgid "" "Return a casefolded copy of the string. Casefolded strings may be used for " "caseless matching." @@ -3565,7 +3584,7 @@ msgstr "" "Επιστρέφει ένα αντίγραφο της συμβολοσειράς (string) σε casefolded μορφή. Οι " "casefolded συμβολοσειρές μπορούν να χρησιμοποιηθούν για caseless matching." -#: library/stdtypes.rst:1774 +#: library/stdtypes.rst:1779 msgid "" "Casefolding is similar to lowercasing but more aggressive because it is " "intended to remove all case distinctions in a string. For example, the " @@ -3579,7 +3598,7 @@ msgstr "" "ισοδυναμεί με ``\"ss\"``. Αφού είναι ήδη πεζό, η :meth:`lower` δεν θα έκανε " "τίποτα στο ``'ß'``· η :meth:`casefold` το μετατρέπει σε ``\"ss\"``." -#: library/stdtypes.rst:1780 +#: library/stdtypes.rst:1785 msgid "" "The casefolding algorithm is `described in section 3.13 'Default Case " "Folding' of the Unicode Standard `__." -#: library/stdtypes.rst:1789 +#: library/stdtypes.rst:1794 +#, fuzzy msgid "" "Return centered in a string of length *width*. Padding is done using the " "specified *fillchar* (default is an ASCII space). The original string is " -"returned if *width* is less than or equal to ``len(s)``." +"returned if *width* is less than or equal to ``len(s)``. For example::" msgstr "" "Επιστρέφει ένα κεντραρισμένο σε μια συμβολοσειρά (string) μήκους *πλάτος*. " "Το padding γίνεται με τη χρήση του καθορισμένου *fillchar* (το default είναι " "ένα κενό ASCII). Η αρχική συμβολοσειρά επιστρέφεται εάν το *width* είναι " "μικρότερο ή ίσο με το ``len(s)``." -#: library/stdtypes.rst:1797 +#: library/stdtypes.rst:1798 +msgid "" +">>> 'Python'.center(10)\n" +"' Python '\n" +">>> 'Python'.center(10, '-')\n" +"'--Python--'\n" +">>> 'Python'.center(4)\n" +"'Python'" +msgstr "" + +#: library/stdtypes.rst:1808 msgid "" "Return the number of non-overlapping occurrences of substring *sub* in the " "range [*start*, *end*]. Optional arguments *start* and *end* are " @@ -3610,19 +3640,34 @@ msgstr "" "της υποομάδας *sub* στο εύρος [*start*, *end*]. Τα προαιρετικά ορίσματα " "*start* και *end* ερμηνεύονται όπως στο slice notation." -#: library/stdtypes.rst:1801 +#: library/stdtypes.rst:1812 +#, fuzzy msgid "" "If *sub* is empty, returns the number of empty strings between characters " -"which is the length of the string plus one." +"which is the length of the string plus one. For example::" msgstr "" "Αν το *sub* είναι κενό, επιστρέφει τον αριθμό των κενών συμβολοσειρών " "(strings) μεταξύ των χαρακτήρων που είναι το μήκος της συμβολοσειράς συν ένα." -#: library/stdtypes.rst:1807 +#: library/stdtypes.rst:1815 +msgid "" +">>> 'spam, spam, spam'.count('spam')\n" +"3\n" +">>> 'spam, spam, spam'.count('spam', 5)\n" +"2\n" +">>> 'spam, spam, spam'.count('spam', 5, 10)\n" +"1\n" +">>> 'spam, spam, spam'.count('eggs')\n" +"0\n" +">>> 'spam, spam, spam'.count('')\n" +"17" +msgstr "" + +#: library/stdtypes.rst:1828 msgid "Return the string encoded to :class:`bytes`." msgstr "Επιστρέφει την συμβολοσειρά (string) κωδικοποιημένη σε :class:`bytes`." -#: library/stdtypes.rst:3146 +#: library/stdtypes.rst:3202 msgid "" "*encoding* defaults to ``'utf-8'``; see :ref:`standard-encodings` for " "possible values." @@ -3630,7 +3675,7 @@ msgstr "" "το *encoding* έχει default σε ``'utf-8'``- δείτε :ref:`standard-encodings` " "για πιθανές τιμές." -#: library/stdtypes.rst:1812 +#: library/stdtypes.rst:1833 msgid "" "*errors* controls how encoding errors are handled. If ``'strict'`` (the " "default), a :exc:`UnicodeError` exception is raised. Other possible values " @@ -3645,22 +3690,32 @@ msgstr "" "που έχει καταχωρηθεί μέσω του :func:`codecs.register_error`. Δείτε το :ref:" "`error-handlers` για λεπτομέρειες." -#: library/stdtypes.rst:1819 +#: library/stdtypes.rst:1840 +#, fuzzy msgid "" "For performance reasons, the value of *errors* is not checked for validity " "unless an encoding error actually occurs, :ref:`devmode` is enabled or a :" -"ref:`debug build ` is used." +"ref:`debug build ` is used. For example::" msgstr "" "Για λόγους απόδοσης, η τιμή των *errors* δεν ελέγχεται ως προς την " "εγκυρότητα εκτός αν όντως προκύψει σφάλμα κωδικοποίησης, αν το :ref:" "`devmode` είναι ενεργοποιημένο ή αν ένα :ref:`debug build ` " "χρησιμοποιείται." -#: library/stdtypes.rst:3165 +#: library/stdtypes.rst:1846 +msgid "" +">>> encoded_str_to_bytes = 'Python'.encode()\n" +">>> type(encoded_str_to_bytes)\n" +"\n" +">>> encoded_str_to_bytes\n" +"b'Python'" +msgstr "" + +#: library/stdtypes.rst:3221 msgid "Added support for keyword arguments." msgstr "Επιπρόσθετη υποστήριξη για keyword ορίσματα." -#: library/stdtypes.rst:3168 +#: library/stdtypes.rst:3224 msgid "" "The value of the *errors* argument is now checked in :ref:`devmode` and in :" "ref:`debug mode `." @@ -3668,12 +3723,14 @@ msgstr "" "Η τιμή του όρου *errors* ελέγχεται τώρα στο :ref:`devmode` και στο :ref:" "`debug mode `." -#: library/stdtypes.rst:1834 +#: library/stdtypes.rst:1863 +#, fuzzy msgid "" "Return ``True`` if the string ends with the specified *suffix*, otherwise " "return ``False``. *suffix* can also be a tuple of suffixes to look for. " "With optional *start*, test beginning at that position. With optional " -"*end*, stop comparing at that position." +"*end*, stop comparing at that position. Using *start* and *end* is " +"equivalent to ``str[start:end].endswith(suffix)``. For example::" msgstr "" "Επιστρέφει ``True`` αν η συμβολοσειρά (string) τελειώνει με το καθορισμένο " "*suffix*, αλλιώς επιστρέφει ``False``. Το *suffix* μπορεί επίσης να είναι " @@ -3681,7 +3738,24 @@ msgstr "" "προαιρετικό *start*, το τεστ αρχίζει από αυτή τη θέση. Με το προαιρετικό " "*end*, η σύγκριση σταματά σε αυτή τη θέση." -#: library/stdtypes.rst:1842 +#: library/stdtypes.rst:1869 +msgid "" +">>> 'Python'.endswith('on')\n" +"True\n" +">>> 'a tuple of suffixes'.endswith(('at', 'in'))\n" +"False\n" +">>> 'a tuple of suffixes'.endswith(('at', 'es'))\n" +"True\n" +">>> 'Python is amazing'.endswith('is', 0, 9)\n" +"True" +msgstr "" + +#: library/stdtypes.rst:1878 +msgid "See also :meth:`startswith` and :meth:`removesuffix`." +msgstr "" + +#: library/stdtypes.rst:1883 +#, fuzzy msgid "" "Return a copy of the string where all tab characters are replaced by one or " "more spaces, depending on the current column and the given tab size. Tab " @@ -3694,7 +3768,7 @@ msgid "" "(``\\n``) or return (``\\r``), it is copied and the current column is reset " "to zero. Any other character is copied unchanged and the current column is " "incremented by one regardless of how the character is represented when " -"printed." +"printed. For example::" msgstr "" "Επιστρέφει ένα αντίγραφο της συμβολοσειράς (string) όπου όλοι οι χαρακτήρες " "tab αντικαθίστανται από έναν ή περισσότερα κενά, ανάλογα με την τρέχουσα " @@ -3710,7 +3784,23 @@ msgstr "" "αμετάβλητος και η τρέχουσα στήλη αυξάνεται κατά ένα, ανεξάρτητα από τον " "τρόπο αναπαράστασης του χαρακτήρα όταν τυπώνεται." -#: library/stdtypes.rst:1863 +#: library/stdtypes.rst:1896 +#, fuzzy +msgid "" +">>> '01\\t012\\t0123\\t01234'.expandtabs()\n" +"'01 012 0123 01234'\n" +">>> '01\\t012\\t0123\\t01234'.expandtabs(4)\n" +"'01 012 0123 01234'\n" +">>> print('01\\t012\\n0123\\t01234'.expandtabs(4))\n" +"01 012\n" +"0123 01234" +msgstr "" +">>> b'01\\t012\\t0123\\t01234'.expandtabs()\n" +"b'01 012 0123 01234'\n" +">>> b'01\\t012\\t0123\\t01234'.expandtabs(4)\n" +"b'01 012 0123 01234'" + +#: library/stdtypes.rst:1907 msgid "" "Return the lowest index in the string where substring *sub* is found within " "the slice ``s[start:end]``. Optional arguments *start* and *end* are " @@ -3721,7 +3811,7 @@ msgstr "" "Τα προαιρετικά ορίσματα *start* και *end* ερμηνεύονται όπως στο notation του " "υποσυνόλου. Επιστρέφει ``-1`` αν δεν βρεθεί το *sub*." -#: library/stdtypes.rst:1869 +#: library/stdtypes.rst:1913 msgid "" "The :meth:`~str.find` method should be used only if you need to know the " "position of *sub*. To check if *sub* is a substring or not, use the :" @@ -3731,7 +3821,7 @@ msgstr "" "γνωρίζετε τη θέση του *sub*. Για να ελέγξετε αν το *sub* είναι υποσύνολο ή " "όχι, χρησιμοποιήστε τον τελεστή :keyword:`in`::" -#: library/stdtypes.rst:1873 +#: library/stdtypes.rst:1917 msgid "" ">>> 'Py' in 'Python'\n" "True" @@ -3739,7 +3829,7 @@ msgstr "" ">>> 'Py' in 'Python'\n" "True" -#: library/stdtypes.rst:1879 +#: library/stdtypes.rst:1923 msgid "" "Perform a string formatting operation. The string on which this method is " "called can contain literal text or replacement fields delimited by braces " @@ -3756,7 +3846,7 @@ msgstr "" "αντίγραφο της συμβολοσειράς όπου κάθε πεδίο αντικατάστασης αντικαθίσταται με " "την τιμή της συμβολοσειράς του αντίστοιχου ορίσματος." -#: library/stdtypes.rst:1889 +#: library/stdtypes.rst:1933 msgid "" "See :ref:`formatstrings` for a description of the various formatting options " "that can be specified in format strings." @@ -3765,7 +3855,7 @@ msgstr "" "μορφοποίησης που μπορούν να καθοριστούν στην μορφοποίηση συμβολοσειρών " "(format strings)." -#: library/stdtypes.rst:1893 +#: library/stdtypes.rst:1937 msgid "" "When formatting a number (:class:`int`, :class:`float`, :class:`complex`, :" "class:`decimal.Decimal` and subclasses) with the ``n`` type (ex: ``'{:n}'." @@ -3784,7 +3874,7 @@ msgstr "" "διαφορετικό από το locale ``LC_CTYPE``. Αυτή η προσωρινή αλλαγή επηρεάζει " "και άλλα νήματα (threads)." -#: library/stdtypes.rst:1902 +#: library/stdtypes.rst:1946 msgid "" "When formatting a number with the ``n`` type, the function sets temporarily " "the ``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale in some cases." @@ -3793,7 +3883,7 @@ msgstr "" "προσωρινά το locale ``LC_CTYPE`` στο locale ``LC_NUMERIC`` σε κάποιες " "περιπτώσεις." -#: library/stdtypes.rst:1910 +#: library/stdtypes.rst:1954 msgid "" "Similar to ``str.format(**mapping)``, except that ``mapping`` is used " "directly and not copied to a :class:`dict`. This is useful if for example " @@ -3803,7 +3893,7 @@ msgstr "" "το ``mapping`` απευθείας και δεν αντιγράφεται σε μια :class:`dict`. Αυτό " "είναι χρήσιμο αν για παράδειγμα το ``mapping`` είναι μια υποκλάση του dict:" -#: library/stdtypes.rst:1926 +#: library/stdtypes.rst:1970 msgid "" "Like :meth:`~str.find`, but raise :exc:`ValueError` when the substring is " "not found." @@ -3811,7 +3901,7 @@ msgstr "" "Όπως η :meth:`~str.find`, αλλά κάνει raise :exc:`ValueError` όταν η υπό-" "συμβολοσειρά (substring) δεν έχει βρεθεί." -#: library/stdtypes.rst:1932 +#: library/stdtypes.rst:1976 msgid "" "Return ``True`` if all characters in the string are alphanumeric and there " "is at least one character, ``False`` otherwise. A character ``c`` is " @@ -3824,7 +3914,7 @@ msgstr "" "ακόλουθα επιστρέφει ``True``: ``c.isalpha()``, ``c.isdecimal()``, ``c." "isdigit()``, ή ``c.isnumeric()``." -#: library/stdtypes.rst:1940 +#: library/stdtypes.rst:1984 msgid "" "Return ``True`` if all characters in the string are alphabetic and there is " "at least one character, ``False`` otherwise. Alphabetic characters are " @@ -3844,7 +3934,7 @@ msgstr "" "'Letters, Alphabetic, and Ideographic' του προτύπου Unicode `_." -#: library/stdtypes.rst:1951 +#: library/stdtypes.rst:1995 msgid "" "Return ``True`` if the string is empty or all characters in the string are " "ASCII, ``False`` otherwise. ASCII characters have code points in the range " @@ -3854,7 +3944,7 @@ msgstr "" "χαρακτήρες της συμβολοσειράς είναι ASCII, αλλιώς ``False``. Οι χαρακτήρες " "ASCII έχουν σημεία κωδικοποίησης στην περιοχή U+0000-U+007F." -#: library/stdtypes.rst:1960 +#: library/stdtypes.rst:2004 msgid "" "Return ``True`` if all characters in the string are decimal characters and " "there is at least one character, ``False`` otherwise. Decimal characters are " @@ -3869,7 +3959,7 @@ msgstr "" "INDIC DIGIT ZERO. Επίσημα ένας δεκαδικός χαρακτήρας είναι ένας χαρακτήρας " "του Unicode General Category \"Nd\"." -#: library/stdtypes.rst:1970 +#: library/stdtypes.rst:2014 msgid "" "Return ``True`` if all characters in the string are digits and there is at " "least one character, ``False`` otherwise. Digits include decimal characters " @@ -3886,7 +3976,7 @@ msgstr "" "όπως οι αριθμοί Kharosthi. Τυπικά, ένα ψηφίο είναι ένας χαρακτήρας που έχει " "την τιμή της ιδιότητας Numeric_Type=Digit ή Numeric_Type=Decimal." -#: library/stdtypes.rst:1980 +#: library/stdtypes.rst:2024 msgid "" "Return ``True`` if the string is a valid identifier according to the " "language definition, section :ref:`identifiers`." @@ -3894,7 +3984,7 @@ msgstr "" "Επιστρέφει ``True`` αν η συμβολοσειρά είναι έγκυρο αναγνωριστικό σύμφωνα με " "το ορισμό της γλώσσας, ενότητα :ref:`identifiers`." -#: library/stdtypes.rst:1983 +#: library/stdtypes.rst:2027 msgid "" ":func:`keyword.iskeyword` can be used to test whether string ``s`` is a " "reserved identifier, such as :keyword:`def` and :keyword:`class`." @@ -3903,11 +3993,11 @@ msgstr "" "συμβολοσειρά ``s`` είναι ένα δεσμευμένο αναγνωριστικό, όπως τα :keyword:" "`def` και :keyword:`class`." -#: library/stdtypes.rst:1986 +#: library/stdtypes.rst:2030 msgid "Example: ::" msgstr "Παράδειγμα ::" -#: library/stdtypes.rst:1989 +#: library/stdtypes.rst:2033 msgid "" ">>> from keyword import iskeyword\n" "\n" @@ -3923,7 +4013,7 @@ msgstr "" ">>> 'def'.isidentifier(), iskeyword('def')\n" "(True, True)" -#: library/stdtypes.rst:1999 +#: library/stdtypes.rst:2043 msgid "" "Return ``True`` if all cased characters [4]_ in the string are lowercase and " "there is at least one cased character, ``False`` otherwise." @@ -3931,7 +4021,7 @@ msgstr "" "Επιστρέφει ``True`` αν όλοι οι χαρακτήρες [4]_ στο αλφαριθμητικό (string) " "είναι πεζοί και υπάρχει τουλάχιστον ένας cased χαρακτήρας, αλλιώς ``False``." -#: library/stdtypes.rst:2005 +#: library/stdtypes.rst:2049 msgid "" "Return ``True`` if all characters in the string are numeric characters, and " "there is at least one character, ``False`` otherwise. Numeric characters " @@ -3948,7 +4038,7 @@ msgstr "" "τιμή της ιδιότητας Numeric_Type=Digit, Numeric_Type=Decimal ή " "Numeric_Type=Numeric." -#: library/stdtypes.rst:2015 +#: library/stdtypes.rst:2059 msgid "" "Return ``True`` if all characters in the string are printable, ``False`` if " "it contains at least one non-printable character." @@ -3956,7 +4046,7 @@ msgstr "" "Επιστρέφει ``True`` αν όλοι οι χαρακτήρες στη συμβολοσειρά μπορούν να " "εκτυπωθούν, ``False`` εάν περιέχει τουλάχιστον έναν μη εκτυπώσιμο χαρακτήρα." -#: library/stdtypes.rst:2018 +#: library/stdtypes.rst:2062 msgid "" "Here \"printable\" means the character is suitable for :func:`repr` to use " "in its output; \"non-printable\" means that :func:`repr` on built-in types " @@ -3969,7 +4059,7 @@ msgstr "" "εξαγωνικά από τον χαρακτήρα. Δεν έχει καμία σχέση με τον χειρισμό " "συμβολοσειρών που γράφονται σε :data:`sys.stdout` ή :data:`sys.stderr`." -#: library/stdtypes.rst:2023 +#: library/stdtypes.rst:2067 msgid "" "The printable characters are those which in the Unicode character database " "(see :mod:`unicodedata`) have a general category in group Letter, Mark, " @@ -3983,7 +4073,7 @@ msgstr "" "διάστημα ASCII 0x20. Οι μη εκτυπώσιμοι χαρακτήρες είναι αυτοί που βρίσκονται " "στο χώρο Διαχωρισμού ομάδας ή Άλλο (Z ή CII)." -#: library/stdtypes.rst:2032 +#: library/stdtypes.rst:2076 msgid "" "Return ``True`` if there are only whitespace characters in the string and " "there is at least one character, ``False`` otherwise." @@ -3992,7 +4082,7 @@ msgstr "" "αλφαριθμητικό (string) και υπάρχει τουλάχιστον ένας χαρακτήρας, διαφορετικά " "``False``." -#: library/stdtypes.rst:2035 +#: library/stdtypes.rst:2079 msgid "" "A character is *whitespace* if in the Unicode character database (see :mod:" "`unicodedata`), either its general category is ``Zs`` (\"Separator, " @@ -4003,7 +4093,7 @@ msgstr "" "(\"Separator, space\"), είτε η αμφίδρομη κατηγορία του είναι μία από τις " "κατηγορίες ``WS``, ``B``, ή ``S``." -#: library/stdtypes.rst:2043 +#: library/stdtypes.rst:2087 msgid "" "Return ``True`` if the string is a titlecased string and there is at least " "one character, for example uppercase characters may only follow uncased " @@ -4016,7 +4106,7 @@ msgstr "" "οι πεζοί χαρακτήρες μόνο cased χαρακτήρες. Διαφορετικά, επιστρέφει " "``False``." -#: library/stdtypes.rst:2050 +#: library/stdtypes.rst:2094 msgid "" "Return ``True`` if all cased characters [4]_ in the string are uppercase and " "there is at least one cased character, ``False`` otherwise." @@ -4025,7 +4115,7 @@ msgstr "" "κεφαλαίοι και υπάρχει τουλάχιστον ένας cased χαρακτήρας, διαφορετικά " "``False``." -#: library/stdtypes.rst:2068 +#: library/stdtypes.rst:2112 msgid "" "Return a string which is the concatenation of the strings in *iterable*. A :" "exc:`TypeError` will be raised if there are any non-string values in " @@ -4038,7 +4128,7 @@ msgstr "" "αντικειμένων :class:`bytes`. Το διαχωριστικό μεταξύ των στοιχείων είναι η " "συμβολοσειρά που παρέχει αυτή η μέθοδος." -#: library/stdtypes.rst:2076 +#: library/stdtypes.rst:2120 msgid "" "Return the string left justified in a string of length *width*. Padding is " "done using the specified *fillchar* (default is an ASCII space). The " @@ -4049,7 +4139,7 @@ msgstr "" "*fillchar* (το default είναι ένα κενό ASCII). Η αρχική συμβολοσειρά " "επιστρέφεται εάν το *width* είναι μικρότερο ή ίσο με το ``len(s)``." -#: library/stdtypes.rst:2083 +#: library/stdtypes.rst:2127 msgid "" "Return a copy of the string with all the cased characters [4]_ converted to " "lowercase." @@ -4057,7 +4147,7 @@ msgstr "" "Επιστρέφει ένα αντίγραφο της συμβολοσειράς (string) με όλους τους cased " "χαρακτήρες [4]_ να έχουν μετατραπεί σε πεζούς." -#: library/stdtypes.rst:2086 +#: library/stdtypes.rst:2130 msgid "" "The lowercasing algorithm used is `described in section 3.13 'Default Case " "Folding' of the Unicode Standard `__." -#: library/stdtypes.rst:2093 +#: library/stdtypes.rst:2137 msgid "" "Return a copy of the string with leading characters removed. The *chars* " "argument is a string specifying the set of characters to be removed. If " @@ -4082,7 +4172,7 @@ msgstr "" "χαρακτήρων. Το όρισμα *chars* δεν είναι ένα πρόθεμα· οπότε, όλοι οι " "συνδυασμοί των τιμών του αφαιρούνται::" -#: library/stdtypes.rst:2098 +#: library/stdtypes.rst:2142 msgid "" ">>> ' spacious '.lstrip()\n" "'spacious '\n" @@ -4094,7 +4184,7 @@ msgstr "" ">>> 'www.example.com'.lstrip('cmowz.')\n" "'example.com'" -#: library/stdtypes.rst:2103 +#: library/stdtypes.rst:2147 msgid "" "See :meth:`str.removeprefix` for a method that will remove a single prefix " "string rather than all of a set of characters. For example::" @@ -4103,7 +4193,7 @@ msgstr "" "πρόθεμα συμβολοσειράς (string) αντί για όλο το σύνολο των χαρακτήρων. Για " "παράδειγμα::" -#: library/stdtypes.rst:2106 +#: library/stdtypes.rst:2150 msgid "" ">>> 'Arthur: three!'.lstrip('Arthur: ')\n" "'ee!'\n" @@ -4115,7 +4205,7 @@ msgstr "" ">>> 'Arthur: three!'.removeprefix('Arthur: ')\n" "'three!'" -#: library/stdtypes.rst:2114 +#: library/stdtypes.rst:2158 msgid "" "This static method returns a translation table usable for :meth:`str." "translate`." @@ -4123,7 +4213,7 @@ msgstr "" "Αυτή η στατική μέθοδος επιστρέφει έναν πίνακα μεταφράσεων που μπορεί να " "χρησιμοποιηθεί για το :meth:`str.translate`." -#: library/stdtypes.rst:2116 +#: library/stdtypes.rst:2160 msgid "" "If there is only one argument, it must be a dictionary mapping Unicode " "ordinals (integers) or characters (strings of length 1) to Unicode ordinals, " @@ -4135,7 +4225,7 @@ msgstr "" "μήκους 1) σε ordinals Unicode, συμβολοσειρές (αυθαίρετου μήκους) ή " "``None``. Τα κλειδιά χαρακτήρων τότε θα μετατραπούν σε κανονικούς αριθμούς." -#: library/stdtypes.rst:2121 +#: library/stdtypes.rst:2165 msgid "" "If there are two arguments, they must be strings of equal length, and in the " "resulting dictionary, each character in x will be mapped to the character at " @@ -4148,7 +4238,7 @@ msgstr "" "πρέπει να είναι συμβολοσειρά, του οποίου οι χαρακτήρες θα αντιστοιχιστούν " "στο αποτέλεσμα σε ``None``." -#: library/stdtypes.rst:2129 +#: library/stdtypes.rst:2173 msgid "" "Split the string at the first occurrence of *sep*, and return a 3-tuple " "containing the part before the separator, the separator itself, and the part " @@ -4161,7 +4251,7 @@ msgstr "" "δεν βρεθεί, επιστρέφει ένα 3-σύνολο που περιέχει την ίδια τη συμβολοσειρά, " "ακολουθούμενη από δύο κενές συμβολοσειρές." -#: library/stdtypes.rst:2137 +#: library/stdtypes.rst:2181 msgid "" "If the string starts with the *prefix* string, return " "``string[len(prefix):]``. Otherwise, return a copy of the original string::" @@ -4170,7 +4260,7 @@ msgstr "" "``string[len(prefix):]``. Διαφορετικά, επιστρέφει ένα αντίγραφο της αρχικής " "συμβολοσειράς::" -#: library/stdtypes.rst:2141 +#: library/stdtypes.rst:2185 msgid "" ">>> 'TestHook'.removeprefix('Test')\n" "'Hook'\n" @@ -4182,7 +4272,7 @@ msgstr "" ">>> 'BaseTestCase'.removeprefix('Test')\n" "'BaseTestCase'" -#: library/stdtypes.rst:2151 +#: library/stdtypes.rst:2195 msgid "" "If the string ends with the *suffix* string and that *suffix* is not empty, " "return ``string[:-len(suffix)]``. Otherwise, return a copy of the original " @@ -4192,7 +4282,7 @@ msgstr "" "επιστρέφει ``string[:-len(suffix)]``. Διαφορετικά, επιστρέφει ένα αντίγραφο " "της αρχικής συμβολοσειράς::" -#: library/stdtypes.rst:2155 +#: library/stdtypes.rst:2199 msgid "" ">>> 'MiscTests'.removesuffix('Tests')\n" "'Misc'\n" @@ -4204,7 +4294,7 @@ msgstr "" ">>> 'TmpDirMixin'.removesuffix('Tests')\n" "'TmpDirMixin'" -#: library/stdtypes.rst:2165 +#: library/stdtypes.rst:2209 msgid "" "Return a copy of the string with all occurrences of substring *old* replaced " "by *new*. If *count* is given, only the first *count* occurrences are " @@ -4216,11 +4306,11 @@ msgstr "" "παράμετρος *count*, μόνο οι πρώτες *count* εμφανίσεις. Αν δεν έχει οριστεί ή " "είναι -1, τότε αντικαθίστανται όλες οι εμφανίσεις." -#: library/stdtypes.rst:2169 +#: library/stdtypes.rst:2213 msgid "*count* is now supported as a keyword argument." msgstr "Το *count* υποστηρίζεται πλέον ως όρισμα λέξης-κλειδιού." -#: library/stdtypes.rst:2175 +#: library/stdtypes.rst:2219 msgid "" "Return the highest index in the string where substring *sub* is found, such " "that *sub* is contained within ``s[start:end]``. Optional arguments *start* " @@ -4231,7 +4321,7 @@ msgstr "" "προαιρετικά ορίσματα *start* και *end* ερμηνεύονται ως slice notation. " "Επιστρέφει ``-1`` σε περίπτωση αποτυχίας." -#: library/stdtypes.rst:2182 +#: library/stdtypes.rst:2226 msgid "" "Like :meth:`rfind` but raises :exc:`ValueError` when the substring *sub* is " "not found." @@ -4239,7 +4329,7 @@ msgstr "" "Όπως η :meth:`rfind`, αλλά κάνει raise :exc:`ValueError` όταν η υπό-" "συμβολοσειρά (sub-string) *sub* δεν βρέθηκε." -#: library/stdtypes.rst:2188 +#: library/stdtypes.rst:2232 msgid "" "Return the string right justified in a string of length *width*. Padding is " "done using the specified *fillchar* (default is an ASCII space). The " @@ -4250,7 +4340,7 @@ msgstr "" "καθορισμένο *fillchar* (η προεπιλογή είναι ένα διάστημα ASCII). Η αρχική " "συμβολοσειρά επιστρέφεται εάν το *width* είναι μικρότερο ή ίσο με ``len(s)``." -#: library/stdtypes.rst:2195 +#: library/stdtypes.rst:2239 msgid "" "Split the string at the last occurrence of *sep*, and return a 3-tuple " "containing the part before the separator, the separator itself, and the part " @@ -4263,7 +4353,7 @@ msgstr "" "δεν βρεθεί, επιστρέφει ένα 3-tuple που περιέχει δύο κενές συμβολοσειρές, " "ακολουθούμενες από την ίδια τη συμβολοσειρά." -#: library/stdtypes.rst:2203 +#: library/stdtypes.rst:2247 msgid "" "Return a list of the words in the string, using *sep* as the delimiter " "string. If *maxsplit* is given, at most *maxsplit* splits are done, the " @@ -4278,7 +4368,7 @@ msgstr "" "Εκτός από το διαχωρισμό από τα δεξιά, η :meth:`rsplit` συμπεριφέρεται όπως " "η :meth:`split` που περιγράφεται λεπτομερώς παρακάτω." -#: library/stdtypes.rst:2212 +#: library/stdtypes.rst:2256 msgid "" "Return a copy of the string with trailing characters removed. The *chars* " "argument is a string specifying the set of characters to be removed. If " @@ -4293,7 +4383,7 @@ msgstr "" "διαστημάτων. Το όρισμα *chars* δεν είναι suffix, αλλά όλοι οι συνδυασμοί " "των τιμών του αφαιρούνται::" -#: library/stdtypes.rst:2217 +#: library/stdtypes.rst:2261 msgid "" ">>> ' spacious '.rstrip()\n" "' spacious'\n" @@ -4305,7 +4395,7 @@ msgstr "" ">>> 'mississippi'.rstrip('ipz')\n" "'mississ'" -#: library/stdtypes.rst:2222 +#: library/stdtypes.rst:2266 msgid "" "See :meth:`str.removesuffix` for a method that will remove a single suffix " "string rather than all of a set of characters. For example::" @@ -4313,7 +4403,7 @@ msgstr "" "Δείτε τη :meth:`str.removesuffix` για μια μέθοδο που θα αφαιρέσει ένα απλό " "suffix αντί για όλο το σύνολο των χαρακτήρων. Για παράδειγμα::" -#: library/stdtypes.rst:2225 +#: library/stdtypes.rst:2269 msgid "" ">>> 'Monty Python'.rstrip(' Python')\n" "'M'\n" @@ -4325,7 +4415,7 @@ msgstr "" ">>> 'Monty Python'.removesuffix(' Python')\n" "'Monty'" -#: library/stdtypes.rst:2232 +#: library/stdtypes.rst:2276 msgid "" "Return a list of the words in the string, using *sep* as the delimiter " "string. If *maxsplit* is given, at most *maxsplit* splits are done (thus, " @@ -4340,7 +4430,7 @@ msgstr "" "υπάρχει όριο στον αριθμό των διαχωρισμών (γίνονται όλες οι πιθανές " "διασπάσεις)." -#: library/stdtypes.rst:2238 +#: library/stdtypes.rst:2282 msgid "" "If *sep* is given, consecutive delimiters are not grouped together and are " "deemed to delimit empty strings (for example, ``'1,,2'.split(',')`` returns " @@ -4357,15 +4447,15 @@ msgstr "" "διαχωρισμός μιας κενής συμβολοσειράς με ένα καθορισμένο διαχωριστικό " "επιστρέφει το ``['']``." -#: library/stdtypes.rst:2263 library/stdtypes.rst:2383 -#: library/stdtypes.rst:3483 library/stdtypes.rst:3592 -#: library/stdtypes.rst:3633 library/stdtypes.rst:3675 -#: library/stdtypes.rst:3707 library/stdtypes.rst:3757 -#: library/stdtypes.rst:3826 library/stdtypes.rst:3850 +#: library/stdtypes.rst:2307 library/stdtypes.rst:2371 +#: library/stdtypes.rst:2507 library/stdtypes.rst:3557 +#: library/stdtypes.rst:3664 library/stdtypes.rst:3703 +#: library/stdtypes.rst:3745 library/stdtypes.rst:3790 +#: library/stdtypes.rst:3840 library/stdtypes.rst:3906 msgid "For example::" msgstr "Για παράδειγμα::" -#: library/stdtypes.rst:2247 +#: library/stdtypes.rst:2291 msgid "" ">>> '1,2,3'.split(',')\n" "['1', '2', '3']\n" @@ -4385,7 +4475,7 @@ msgstr "" ">>> '1<>2<>3<4'.split('<>')\n" "['1', '2', '3<4']" -#: library/stdtypes.rst:2256 +#: library/stdtypes.rst:2300 msgid "" "If *sep* is not specified or is ``None``, a different splitting algorithm is " "applied: runs of consecutive whitespace are regarded as a single separator, " @@ -4402,7 +4492,7 @@ msgstr "" "συμβολοσειράς που αποτελείται μόνο από κενά διαστήματα με ένα ``None`` ως " "διαχωριστικό επιστρέφει ``[]``." -#: library/stdtypes.rst:2265 +#: library/stdtypes.rst:2309 msgid "" ">>> '1 2 3'.split()\n" "['1', '2', '3']\n" @@ -4418,7 +4508,23 @@ msgstr "" ">>> ' 1 2 3 '.split()\n" "['1', '2', '3']" -#: library/stdtypes.rst:2278 +#: library/stdtypes.rst:2316 +msgid "" +"If *sep* is not specified or is ``None`` and *maxsplit* is ``0``, only " +"leading runs of consecutive whitespace are considered." +msgstr "" + +#: library/stdtypes.rst:2321 +msgid "" +">>> \"\".split(None, 0)\n" +"[]\n" +">>> \" \".split(None, 0)\n" +"[]\n" +">>> \" foo \".split(maxsplit=0)\n" +"['foo ']" +msgstr "" + +#: library/stdtypes.rst:2334 msgid "" "Return a list of the lines in the string, breaking at line boundaries. Line " "breaks are not included in the resulting list unless *keepends* is given and " @@ -4428,7 +4534,7 @@ msgstr "" "διαχωρίζοντας στα όρια των γραμμών. Τα διαχωριστικά των γραμμών δεν " "περιλαμβάνονται στην νέα λίστα, εκτός αν δοθεί το *keepends* και είναι true." -#: library/stdtypes.rst:2282 +#: library/stdtypes.rst:2338 msgid "" "This method splits on the following line boundaries. In particular, the " "boundaries are a superset of :term:`universal newlines`." @@ -4436,107 +4542,107 @@ msgstr "" "Αυτή η μέθοδος διαχωρίζει στα ακόλουθα όρια γραμμών. Πιο συγκεκριμένα, τα " "όρια είναι ένα υπερσύνολο του :term:`universal newlines`." -#: library/stdtypes.rst:2286 +#: library/stdtypes.rst:2342 msgid "Representation" msgstr "Αναπαράσταση" -#: library/stdtypes.rst:2286 +#: library/stdtypes.rst:2342 msgid "Description" msgstr "Περιγραφή" -#: library/stdtypes.rst:2288 +#: library/stdtypes.rst:2344 msgid "``\\n``" msgstr "``\\n``" -#: library/stdtypes.rst:2288 +#: library/stdtypes.rst:2344 msgid "Line Feed" msgstr "Line Feed" -#: library/stdtypes.rst:2290 +#: library/stdtypes.rst:2346 msgid "``\\r``" msgstr "``\\r``" -#: library/stdtypes.rst:2290 +#: library/stdtypes.rst:2346 msgid "Carriage Return" msgstr "Carriage Return" -#: library/stdtypes.rst:2292 +#: library/stdtypes.rst:2348 msgid "``\\r\\n``" msgstr "``\\r\\n``" -#: library/stdtypes.rst:2292 +#: library/stdtypes.rst:2348 msgid "Carriage Return + Line Feed" msgstr "Carriage Return + Line Feed" -#: library/stdtypes.rst:2294 +#: library/stdtypes.rst:2350 msgid "``\\v`` or ``\\x0b``" msgstr "``\\v`` or ``\\x0b``" -#: library/stdtypes.rst:2294 +#: library/stdtypes.rst:2350 msgid "Line Tabulation" msgstr "Line Tabulation" -#: library/stdtypes.rst:2296 +#: library/stdtypes.rst:2352 msgid "``\\f`` or ``\\x0c``" msgstr "``\\f`` or ``\\x0c``" -#: library/stdtypes.rst:2296 +#: library/stdtypes.rst:2352 msgid "Form Feed" msgstr "Form Feed" -#: library/stdtypes.rst:2298 +#: library/stdtypes.rst:2354 msgid "``\\x1c``" msgstr "``\\x1c``" -#: library/stdtypes.rst:2298 +#: library/stdtypes.rst:2354 msgid "File Separator" msgstr "Διαχωριστής Αρχείου" -#: library/stdtypes.rst:2300 +#: library/stdtypes.rst:2356 msgid "``\\x1d``" msgstr "``\\x1d``" -#: library/stdtypes.rst:2300 +#: library/stdtypes.rst:2356 msgid "Group Separator" msgstr "Διαχωριστής Group" -#: library/stdtypes.rst:2302 +#: library/stdtypes.rst:2358 msgid "``\\x1e``" msgstr "``\\x1e``" -#: library/stdtypes.rst:2302 +#: library/stdtypes.rst:2358 msgid "Record Separator" msgstr "Διαχωριστής Εγγραφών" -#: library/stdtypes.rst:2304 +#: library/stdtypes.rst:2360 msgid "``\\x85``" msgstr "``\\x85``" -#: library/stdtypes.rst:2304 +#: library/stdtypes.rst:2360 msgid "Next Line (C1 Control Code)" msgstr "Επόμενη Γραμμή (C1 Control Code)" -#: library/stdtypes.rst:2306 +#: library/stdtypes.rst:2362 msgid "``\\u2028``" msgstr "``\\u2028``" -#: library/stdtypes.rst:2306 +#: library/stdtypes.rst:2362 msgid "Line Separator" msgstr "Διαχωριστής Γραμμής" -#: library/stdtypes.rst:2308 +#: library/stdtypes.rst:2364 msgid "``\\u2029``" msgstr "``\\u2029``" -#: library/stdtypes.rst:2308 +#: library/stdtypes.rst:2364 msgid "Paragraph Separator" msgstr "Διαχωριστής Παραγράφου" -#: library/stdtypes.rst:2313 +#: library/stdtypes.rst:2369 msgid "``\\v`` and ``\\f`` added to list of line boundaries." msgstr "Τα ``\\v`` και ``\\f`` προστίθενται στην λίστα ορίων των γραμμών." -#: library/stdtypes.rst:2317 +#: library/stdtypes.rst:2373 msgid "" ">>> 'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines()\n" "['ab c', '', 'de fg', 'kl']\n" @@ -4548,7 +4654,7 @@ msgstr "" ">>> 'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines(keepends=True)\n" "['ab c\\n', '\\n', 'de fg\\r', 'kl\\r\\n']" -#: library/stdtypes.rst:2322 +#: library/stdtypes.rst:2378 msgid "" "Unlike :meth:`~str.split` when a delimiter string *sep* is given, this " "method returns an empty list for the empty string, and a terminal line break " @@ -4559,7 +4665,7 @@ msgstr "" "αλφαριθμητικό, και μια τερματικό break γραμμής δεν οδηγεί σε μια επιπλέον " "γραμμή::" -#: library/stdtypes.rst:2326 +#: library/stdtypes.rst:2382 msgid "" ">>> \"\".splitlines()\n" "[]\n" @@ -4571,11 +4677,11 @@ msgstr "" ">>> \"One line\\n\".splitlines()\n" "['One line']" -#: library/stdtypes.rst:2331 +#: library/stdtypes.rst:2387 msgid "For comparison, ``split('\\n')`` gives::" msgstr "Συγκριτικά, η ``split('\\n')`` δίνει::" -#: library/stdtypes.rst:2333 +#: library/stdtypes.rst:2389 msgid "" ">>> ''.split('\\n')\n" "['']\n" @@ -4587,7 +4693,7 @@ msgstr "" ">>> 'Two lines\\n'.split('\\n')\n" "['Two lines', '']" -#: library/stdtypes.rst:2341 +#: library/stdtypes.rst:2397 msgid "" "Return ``True`` if string starts with the *prefix*, otherwise return " "``False``. *prefix* can also be a tuple of prefixes to look for. With " @@ -4600,7 +4706,7 @@ msgstr "" "αλφαριθμητικό που αρχίζει από τη συγκεκριμένη θέση. Με το προαιρετικό " "*end*, σταματά η σύγκριση της συμβολοσειράς σε αυτή τη θέση." -#: library/stdtypes.rst:2349 +#: library/stdtypes.rst:2405 msgid "" "Return a copy of the string with the leading and trailing characters " "removed. The *chars* argument is a string specifying the set of characters " @@ -4615,7 +4721,7 @@ msgstr "" "default την αφαίρεση των κενών διαστημάτων. Το όρισμα *chars* δεν είναι " "prefix ή suffix· μάλλον, όλοι οι συνδυασμοί των τιμών του αφαιρούνται::" -#: library/stdtypes.rst:2355 +#: library/stdtypes.rst:2411 msgid "" ">>> ' spacious '.strip()\n" "'spacious'\n" @@ -4627,7 +4733,7 @@ msgstr "" ">>> 'www.example.com'.strip('cmowz.')\n" "'example'" -#: library/stdtypes.rst:2360 +#: library/stdtypes.rst:2416 msgid "" "The outermost leading and trailing *chars* argument values are stripped from " "the string. Characters are removed from the leading end until reaching a " @@ -4640,7 +4746,7 @@ msgstr "" "στο σύνολο χαρακτήρων του *chars*. Μια παρόμοια ενέργεια λαμβάνει χώρα στο " "τέλος της ουράς. Για παράδειγμα:" -#: library/stdtypes.rst:2366 +#: library/stdtypes.rst:2422 msgid "" ">>> comment_string = '#....... Section 3.2.1 Issue #32 .......'\n" ">>> comment_string.strip('.#! ')\n" @@ -4650,7 +4756,7 @@ msgstr "" ">>> comment_string.strip('.#! ')\n" "'Section 3.2.1 Issue #32'" -#: library/stdtypes.rst:2373 +#: library/stdtypes.rst:2429 msgid "" "Return a copy of the string with uppercase characters converted to lowercase " "and vice versa. Note that it is not necessarily true that ``s.swapcase()." @@ -4660,7 +4766,7 @@ msgstr "" "που έχουν μετατραπεί σε πεζούς και αντίστροφα. Σημειώστε ότι δεν είναι " "απαραίτητα αληθές ότι ``s.swapcase().swapcase() == s``." -#: library/stdtypes.rst:2380 +#: library/stdtypes.rst:2436 msgid "" "Return a titlecased version of the string where words start with an " "uppercase character and the remaining characters are lowercase." @@ -4668,7 +4774,7 @@ msgstr "" "Επιστρέφει μια titlecased έκδοση της συμβολοσειράς, όπου οι λέξεις ξεκινούν " "με ένα κεφαλαίο χαρακτήρα και οι υπόλοιποι χαρακτήρες είναι πεζοί." -#: library/stdtypes.rst:2385 +#: library/stdtypes.rst:2441 msgid "" ">>> 'Hello world'.title()\n" "'Hello World'" @@ -4676,7 +4782,7 @@ msgstr "" ">>> 'Hello world'.title()\n" "'Hello World'" -#: library/stdtypes.rst:3794 +#: library/stdtypes.rst:3850 msgid "" "The algorithm uses a simple language-independent definition of a word as " "groups of consecutive letters. The definition works in many contexts but it " @@ -4688,7 +4794,7 @@ msgstr "" "contexts, αλλά σημαίνει ότι οι απόστροφοι σε συναιρέσεις και κτητικές λέξεις " "αποτελούν όρια λέξεων, που μπορεί να μην είναι το επιθυμητό αποτέλεσμα::" -#: library/stdtypes.rst:2393 +#: library/stdtypes.rst:2449 msgid "" ">>> \"they're bill's friends from the UK\".title()\n" "\"They'Re Bill'S Friends From The Uk\"" @@ -4696,7 +4802,7 @@ msgstr "" ">>> \"they're bill's friends from the UK\".title()\n" "\"They'Re Bill'S Friends From The Uk\"" -#: library/stdtypes.rst:2396 +#: library/stdtypes.rst:2452 msgid "" "The :func:`string.capwords` function does not have this problem, as it " "splits words on spaces only." @@ -4704,7 +4810,7 @@ msgstr "" "Η συνάρτηση :func:`string.capwords` δεν έχει αυτό το πρόβλημα, καθώς χωρίζει " "τις λέξεις μόνο σε κενά." -#: library/stdtypes.rst:2399 +#: library/stdtypes.rst:2455 msgid "" "Alternatively, a workaround for apostrophes can be constructed using regular " "expressions::" @@ -4712,7 +4818,7 @@ msgstr "" "Εναλλακτικά, μπορεί να κατασκευαστεί μια λύση για τις αποστρόφους " "χρησιμοποιώντας κανονικές εκφράσεις::" -#: library/stdtypes.rst:2402 +#: library/stdtypes.rst:2458 msgid "" ">>> import re\n" ">>> def titlecase(s):\n" @@ -4732,7 +4838,7 @@ msgstr "" ">>> titlecase(\"they're bill's friends.\")\n" "\"They're Bill's Friends.\"" -#: library/stdtypes.rst:2414 +#: library/stdtypes.rst:2470 msgid "" "Return a copy of the string in which each character has been mapped through " "the given translation table. The table must be an object that implements " @@ -4755,7 +4861,7 @@ msgstr "" "επιστρέφεται· ή να κάνει raise ένα :exc:`LookupError`, για να αντιστοιχίσει " "τον χαρακτήρα στον εαυτό του." -#: library/stdtypes.rst:2423 +#: library/stdtypes.rst:2479 msgid "" "You can use :meth:`str.maketrans` to create a translation map from character-" "to-character mappings in different formats." @@ -4764,7 +4870,7 @@ msgstr "" "ένα χάρτη μετάφρασης αντιστοίχισης από χαρακτήρα-σε-χαρακτήρα σε " "διαφορετικές μορφές." -#: library/stdtypes.rst:2426 +#: library/stdtypes.rst:2482 msgid "" "See also the :mod:`codecs` module for a more flexible approach to custom " "character mappings." @@ -4772,7 +4878,7 @@ msgstr "" "Δείτε επίσης την ενότητα :mod:`codecs` για μια πιο ευέλικτη προσέγγιση σε " "προσαρμοσμένα mappings χαρακτήρων." -#: library/stdtypes.rst:2432 +#: library/stdtypes.rst:2488 msgid "" "Return a copy of the string with all the cased characters [4]_ converted to " "uppercase. Note that ``s.upper().isupper()`` might be ``False`` if ``s`` " @@ -4786,7 +4892,7 @@ msgstr "" "πεζά γράμματα ή αν η κατηγορία Unicode του προκύπτοντος χαρακτήρα(ων) δεν " "είναι \"Lu\" (Γράμμα, κεφαλαίο), αλλά π.χ. \"Lt\" (Γράμμα, titlecase)." -#: library/stdtypes.rst:2438 +#: library/stdtypes.rst:2494 msgid "" "The uppercasing algorithm used is `described in section 3.13 'Default Case " "Folding' of the Unicode Standard `__." -#: library/stdtypes.rst:2445 +#: library/stdtypes.rst:2501 msgid "" "Return a copy of the string left filled with ASCII ``'0'`` digits to make a " "string of length *width*. A leading sign prefix (``'+'``/``'-'``) is handled " @@ -4810,7 +4916,7 @@ msgstr "" "συμπλήρωση *μετά* τον χαρακτήρα sign αντί για πριν. Η αρχική συμβολοσειρά " "επιστρέφεται εάν το *width* είναι μικρότερο ή ίσο με ``len(s)``." -#: library/stdtypes.rst:2453 +#: library/stdtypes.rst:2509 msgid "" ">>> \"42\".zfill(5)\n" "'00042'\n" @@ -4822,11 +4928,11 @@ msgstr "" ">>> \"-42\".zfill(5)\n" "'-0042'" -#: library/stdtypes.rst:2474 +#: library/stdtypes.rst:2530 msgid "Formatted String Literals (f-strings)" msgstr "Διαμορφωμένες Κυριολεκτικές Συμβολοσειρές (f-strings)" -#: library/stdtypes.rst:2477 +#: library/stdtypes.rst:2533 msgid "" "The :keyword:`await` and :keyword:`async for` can be used in expressions " "within f-strings." @@ -4834,11 +4940,11 @@ msgstr "" "Τα :keyword:`await` και :keyword:`async for` μπορούν να χρησιμοποιηθούν σε " "εκφράσεις μέσα σε f-strings." -#: library/stdtypes.rst:2480 +#: library/stdtypes.rst:2536 msgid "Added the debugging operator (``=``)" msgstr "Προστέθηκε ο τελεστής αποσφαλμάτωσης (``=``)" -#: library/stdtypes.rst:2482 +#: library/stdtypes.rst:2538 msgid "" "Many restrictions on expressions within f-strings have been removed. " "Notably, nested strings, comments, and backslashes are now permitted." @@ -4847,7 +4953,7 @@ msgstr "" "Ιδιαίτερα, πλέον επιτρέπονται οι εμφωλευμένες συμβολοσειρές, τα σχόλια και " "οι κάθετοι." -#: library/stdtypes.rst:2486 +#: library/stdtypes.rst:2542 msgid "" "An :dfn:`f-string` (formally a :dfn:`formatted string literal`) is a string " "literal that is prefixed with ``f`` or ``F``. This type of string literal " @@ -4864,7 +4970,7 @@ msgstr "" "τρόπο όπως η μέθοδος :meth:`str.format`, και μετατρέπονται σε κανονικά " "αντικείμενα τύπου :class:`str`. Για παράδειγμα:" -#: library/stdtypes.rst:2494 +#: library/stdtypes.rst:2550 msgid "" ">>> who = 'nobody'\n" ">>> nationality = 'Spanish'\n" @@ -4876,11 +4982,11 @@ msgstr "" ">>> f'{who.title()} expects the {nationality} Inquisition!'\n" "'Nobody expects the Spanish Inquisition!'" -#: library/stdtypes.rst:2501 +#: library/stdtypes.rst:2557 msgid "It is also possible to use a multi line f-string:" msgstr "Είναι επίσης δυνατό να χρησιμοποιηθεί μια f-string πολλών γραμμών:" -#: library/stdtypes.rst:2503 +#: library/stdtypes.rst:2559 msgid "" ">>> f'''This is a string\n" "... on two lines'''\n" @@ -4890,7 +4996,7 @@ msgstr "" "... on two lines'''\n" "'This is a string\\non two lines'" -#: library/stdtypes.rst:2509 +#: library/stdtypes.rst:2565 msgid "" "A single opening curly bracket, ``'{'``, marks a *replacement field* that " "can contain any Python expression:" @@ -4898,7 +5004,7 @@ msgstr "" "Ένα μόνο άνοιγμα αγκύλης, ``'{'``, δηλώνει ένα *πεδίο αντικατάστασης* που " "μπορεί να περιέχει οποιαδήποτε έκφραση Python:" -#: library/stdtypes.rst:2512 +#: library/stdtypes.rst:2568 msgid "" ">>> nationality = 'Spanish'\n" ">>> f'The {nationality} Inquisition!'\n" @@ -4908,13 +5014,13 @@ msgstr "" ">>> f'The {nationality} Inquisition!'\n" "'The Spanish Inquisition!'" -#: library/stdtypes.rst:2518 +#: library/stdtypes.rst:2574 msgid "To include a literal ``{`` or ``}``, use a double bracket:" msgstr "" "Για να συμπεριλάβετε μια κυριολεξία ``{`` ή ``}``, χρησιμοποιήστε διπλή " "αγκύλη:" -#: library/stdtypes.rst:2520 +#: library/stdtypes.rst:2576 msgid "" ">>> x = 42\n" ">>> f'{{x}} is {x}'\n" @@ -4924,14 +5030,14 @@ msgstr "" ">>> f'{{x}} is {x}'\n" "'{x} is 42'" -#: library/stdtypes.rst:2526 +#: library/stdtypes.rst:2582 msgid "" "Functions can also be used, and :ref:`format specifiers `:" msgstr "" "Μπορούν επίσης να χρησιμοποιηθούν συναρτήσεις καθώς και :ref:`format " "specifiers `:" -#: library/stdtypes.rst:2528 +#: library/stdtypes.rst:2584 msgid "" ">>> from math import sqrt\n" ">>> f'√2 \\N{ALMOST EQUAL TO} {sqrt(2):.5f}'\n" @@ -4941,13 +5047,13 @@ msgstr "" ">>> f'√2 \\N{ALMOST EQUAL TO} {sqrt(2):.5f}'\n" "'√2 ≈ 1.41421'" -#: library/stdtypes.rst:2534 +#: library/stdtypes.rst:2590 msgid "Any non-string expression is converted using :func:`str`, by default:" msgstr "" "Κάθε έκφραση μη-συμβολοσειράς μετατρέπεται χρησιμοποιώντας τη :func:`str`, " "από προεπιλογή:" -#: library/stdtypes.rst:2536 +#: library/stdtypes.rst:2592 msgid "" ">>> from fractions import Fraction\n" ">>> f'{Fraction(1, 3)}'\n" @@ -4957,7 +5063,7 @@ msgstr "" ">>> f'{Fraction(1, 3)}'\n" "'1/3'" -#: library/stdtypes.rst:2542 +#: library/stdtypes.rst:2598 msgid "" "To use an explicit conversion, use the ``!`` (exclamation mark) operator, " "followed by any of the valid formats, which are:" @@ -4966,39 +5072,39 @@ msgstr "" "(θαυμαστικό), ακολουθούμενο από οποιεσδήποτε από τις έγκυρες μορφές, τα " "οποία είναι:" -#: library/stdtypes.rst:2714 library/stdtypes.rst:3973 +#: library/stdtypes.rst:2770 library/stdtypes.rst:4029 msgid "Conversion" msgstr "Μετατροπή" -#: library/stdtypes.rst:2548 +#: library/stdtypes.rst:2604 msgid "``!a``" msgstr "``!a``" -#: library/stdtypes.rst:2548 +#: library/stdtypes.rst:2604 msgid ":func:`ascii`" msgstr ":func:`ascii`" -#: library/stdtypes.rst:2549 +#: library/stdtypes.rst:2605 msgid "``!r``" msgstr "``!r``" -#: library/stdtypes.rst:2549 +#: library/stdtypes.rst:2605 msgid ":func:`repr`" msgstr ":func:`repr`" -#: library/stdtypes.rst:2550 +#: library/stdtypes.rst:2606 msgid "``!s``" msgstr "``!s``" -#: library/stdtypes.rst:2550 +#: library/stdtypes.rst:2606 msgid ":func:`str`" msgstr ":func:`str`" -#: library/stdtypes.rst:2553 +#: library/stdtypes.rst:2609 msgid "For example:" msgstr "Για παράδειγμα:" -#: library/stdtypes.rst:2555 +#: library/stdtypes.rst:2611 msgid "" ">>> from fractions import Fraction\n" ">>> f'{Fraction(1, 3)!s}'\n" @@ -5018,7 +5124,7 @@ msgstr "" ">>> print(f'{question!a}')\n" "'\\xbfD\\xf3nde est\\xe1 el Presidente?'" -#: library/stdtypes.rst:2566 +#: library/stdtypes.rst:2622 msgid "" "While debugging it may be helpful to see both the expression and its value, " "by using the equals sign (``=``) after the expression. This preserves spaces " @@ -5032,7 +5138,7 @@ msgstr "" "αποσφαλμάτωσης χρησιμοποιεί τη μετατροπή :func:`repr` (``!r``). Για " "παράδειγμα:" -#: library/stdtypes.rst:2572 +#: library/stdtypes.rst:2628 msgid "" ">>> from fractions import Fraction\n" ">>> calculation = Fraction(1, 3)\n" @@ -5052,7 +5158,7 @@ msgstr "" ">>> f'{calculation = !s}'\n" "'calculation = 1/3'" -#: library/stdtypes.rst:2583 +#: library/stdtypes.rst:2639 msgid "" "Once the output has been evaluated, it can be formatted using a :ref:`format " "specifier ` following a colon (``':'``). After the expression " @@ -5069,7 +5175,7 @@ msgstr "" "καθοριστής μορφοποίησης. Το μορφοποιημένο αποτέλεσμα χρησιμοποιείται στη " "συνέχεια ως η τελική τιμή για το πεδίο αντικατάστασης. Για παράδειγμα:" -#: library/stdtypes.rst:2591 +#: library/stdtypes.rst:2647 msgid "" ">>> from fractions import Fraction\n" ">>> f'{Fraction(1, 7):.6f}'\n" @@ -5083,11 +5189,11 @@ msgstr "" ">>> f'{Fraction(1, 7):_^+10}'\n" "'___+1/7___'" -#: library/stdtypes.rst:2603 +#: library/stdtypes.rst:2659 msgid "``printf``-style String Formatting" msgstr "``printf``-style String Formatting" -#: library/stdtypes.rst:2616 +#: library/stdtypes.rst:2672 msgid "" "The formatting operations described here exhibit a variety of quirks that " "lead to a number of common errors (such as failing to display tuples and " @@ -5106,7 +5212,7 @@ msgstr "" "τους δικούς τις συμβιβασμούς και τα οφέλη της απλότητας, ευελιξίας και/ή " "επεκτασιμότητας." -#: library/stdtypes.rst:2624 +#: library/stdtypes.rst:2680 msgid "" "String objects have one unique built-in operation: the ``%`` operator " "(modulo). This is also known as the string *formatting* or *interpolation* " @@ -5123,7 +5229,7 @@ msgstr "" "είναι παρόμοιο με τη χρήση του :c:func:`sprintf` στη γλώσσα C. Για " "παράδειγμα:" -#: library/stdtypes.rst:2631 +#: library/stdtypes.rst:2687 msgid "" ">>> print('%s has %d quote types.' % ('Python', 2))\n" "Python has 2 quote types." @@ -5131,7 +5237,7 @@ msgstr "" ">>> print('%s has %d quote types.' % ('Python', 2))\n" "Python has 2 quote types." -#: library/stdtypes.rst:2636 +#: library/stdtypes.rst:2692 msgid "" "If *format* requires a single argument, *values* may be a single non-tuple " "object. [5]_ Otherwise, *values* must be a tuple with exactly the number of " @@ -5144,7 +5250,7 @@ msgstr "" "από το format string ή ένα μεμονωμένο αντικείμενο αντιστοίχισης (για " "παράδειγμα, ένα λεξικό)." -#: library/stdtypes.rst:3905 +#: library/stdtypes.rst:3961 msgid "" "A conversion specifier contains two or more characters and has the following " "components, which must occur in this order:" @@ -5152,11 +5258,11 @@ msgstr "" "Ένας προσδιοριστής μετατροπής περιέχει δύο ή περισσότερους χαρακτήρες και " "έχει τους εξής components, οι οποίοι πρέπει να εμφανίζονται με αυτή τη σειρά:" -#: library/stdtypes.rst:3908 +#: library/stdtypes.rst:3964 msgid "The ``'%'`` character, which marks the start of the specifier." msgstr "Ο χαρακτήρας ```%''``, που σηματοδοτεί την αρχή του προσδιοριστή." -#: library/stdtypes.rst:3910 +#: library/stdtypes.rst:3966 msgid "" "Mapping key (optional), consisting of a parenthesised sequence of characters " "(for example, ``(somename)``)." @@ -5164,7 +5270,7 @@ msgstr "" "Κλειδί mapping (προαιρετικό), που αποτελείται από μια ακολουθία χαρακτήρων " "σε παρένθεση (για παράδειγμα, ``(somename)``)." -#: library/stdtypes.rst:3913 +#: library/stdtypes.rst:3969 msgid "" "Conversion flags (optional), which affect the result of some conversion " "types." @@ -5172,7 +5278,7 @@ msgstr "" "Δείκτες μετατροπής (προαιρετικό), που επηρεάζουν το αποτέλεσμα κάποιων τύπων " "μετατροπής." -#: library/stdtypes.rst:3916 +#: library/stdtypes.rst:3972 msgid "" "Minimum field width (optional). If specified as an ``'*'`` (asterisk), the " "actual width is read from the next element of the tuple in *values*, and the " @@ -5183,7 +5289,7 @@ msgstr "" "*values*, και το αντικείμενο προς μετατροπή έρχεται μετά από το ελάχιστο " "πλάτος πεδίου και το προαιρετικό precision." -#: library/stdtypes.rst:3920 +#: library/stdtypes.rst:3976 msgid "" "Precision (optional), given as a ``'.'`` (dot) followed by the precision. " "If specified as ``'*'`` (an asterisk), the actual precision is read from the " @@ -5195,15 +5301,15 @@ msgstr "" "διαβάζεται από το επόμενο στοιχείο του tuple στα *values*, και η τιμή προς " "μετατροπή έρχεται μετά το precision." -#: library/stdtypes.rst:3925 +#: library/stdtypes.rst:3981 msgid "Length modifier (optional)." msgstr "Μετατροπέας του length (προαιρετικό)." -#: library/stdtypes.rst:3927 +#: library/stdtypes.rst:3983 msgid "Conversion type." msgstr "Τύπος conversion." -#: library/stdtypes.rst:2670 +#: library/stdtypes.rst:2726 msgid "" "When the right argument is a dictionary (or other mapping type), then the " "formats in the string *must* include a parenthesised mapping key into that " @@ -5216,7 +5322,7 @@ msgstr "" "``'%'``. Το κλειδί αντιστοίχισης επιλέγει την τιμή που θα μορφοποιηθεί από " "την αντιστοίχιση. Για παράδειγμα:" -#: library/stdtypes.rst:3938 +#: library/stdtypes.rst:3994 msgid "" "In this case no ``*`` specifiers may occur in a format (since they require a " "sequential parameter list)." @@ -5224,38 +5330,38 @@ msgstr "" "Σε αυτήν την περίπτωση δεν μπορεί να υπάρχουν προσδιοριστές ``*`` σε μια " "μορφή (καθώς απαιτούν μια διαδοχική λίστα παραμέτρων)." -#: library/stdtypes.rst:3941 +#: library/stdtypes.rst:3997 msgid "The conversion flag characters are:" msgstr "Οι δείκτες μετατροπής είναι:" -#: library/stdtypes.rst:3950 +#: library/stdtypes.rst:4006 msgid "Flag" msgstr "Flag" -#: library/stdtypes.rst:3952 +#: library/stdtypes.rst:4008 msgid "``'#'``" msgstr "``'#'``" -#: library/stdtypes.rst:3952 +#: library/stdtypes.rst:4008 msgid "" "The value conversion will use the \"alternate form\" (where defined below)." msgstr "" "Οι μετατροπή τιμής θα χρησιμοποιήσει την \"εναλλακτική φόρμα\" (όπου " "ορίζεται παρακάτω)." -#: library/stdtypes.rst:3955 +#: library/stdtypes.rst:4011 msgid "``'0'``" msgstr "``'0'``" -#: library/stdtypes.rst:3955 +#: library/stdtypes.rst:4011 msgid "The conversion will be zero padded for numeric values." msgstr "Η μετατροπή θα έχει μηδενική συμπλήρωση για αριθμητικές τιμές." -#: library/stdtypes.rst:3957 +#: library/stdtypes.rst:4013 msgid "``'-'``" msgstr "``'-'``" -#: library/stdtypes.rst:3957 +#: library/stdtypes.rst:4013 msgid "" "The converted value is left adjusted (overrides the ``'0'`` conversion if " "both are given)." @@ -5263,11 +5369,11 @@ msgstr "" "Η τιμή μετατροπής αφήνεται προσαρμοσμένη (παρακάμπτει τη μετατροπή ``'0'`` " "εάν δίνονται και τα δύο)." -#: library/stdtypes.rst:3960 +#: library/stdtypes.rst:4016 msgid "``' '``" msgstr "``' '``" -#: library/stdtypes.rst:3960 +#: library/stdtypes.rst:4016 msgid "" "(a space) A blank should be left before a positive number (or empty string) " "produced by a signed conversion." @@ -5275,11 +5381,11 @@ msgstr "" "(ένα κενό) Πρέπει να προστεθεί ένα κενό πριν από έναν θετικό αριθμό (ή κενή " "συμβολοσειρά) που παράγεται από μια υπογεγραμμένη μετατροπή." -#: library/stdtypes.rst:3963 +#: library/stdtypes.rst:4019 msgid "``'+'``" msgstr "``'+'``" -#: library/stdtypes.rst:3963 +#: library/stdtypes.rst:4019 msgid "" "A sign character (``'+'`` or ``'-'``) will precede the conversion (overrides " "a \"space\" flag)." @@ -5287,7 +5393,7 @@ msgstr "" "Ένα χαρακτήρας προσήμου (``'+'`` ή ``'-'``) θα προηγείται της μετατροπής " "(παρακάμπτει ένα \"κενό\" δείκτη)." -#: library/stdtypes.rst:3967 +#: library/stdtypes.rst:4023 msgid "" "A length modifier (``h``, ``l``, or ``L``) may be present, but is ignored as " "it is not necessary for Python -- so e.g. ``%ld`` is identical to ``%d``." @@ -5296,87 +5402,87 @@ msgstr "" "αγνοείται καθώς δεν είναι απαραίτητος για την Python -- οπότε π.χ. ``%ld`` " "είναι πανομοιότυπο σε ``%d``." -#: library/stdtypes.rst:3970 +#: library/stdtypes.rst:4026 msgid "The conversion types are:" msgstr "Οι τύποι μετατροπής είναι:" -#: library/stdtypes.rst:3975 +#: library/stdtypes.rst:4031 msgid "``'d'``" msgstr "``'d'``" -#: library/stdtypes.rst:2718 library/stdtypes.rst:3977 +#: library/stdtypes.rst:2774 library/stdtypes.rst:4033 msgid "Signed integer decimal." msgstr "Υπογεγραμμένος δεκαδικός ακέραιος." -#: library/stdtypes.rst:3977 +#: library/stdtypes.rst:4033 msgid "``'i'``" msgstr "``'i'``" -#: library/stdtypes.rst:3979 +#: library/stdtypes.rst:4035 msgid "``'o'``" msgstr "``'o'``" -#: library/stdtypes.rst:3979 +#: library/stdtypes.rst:4035 msgid "Signed octal value." msgstr "Υπογεγραμμένη οκταδική τιμή." -#: library/stdtypes.rst:3981 +#: library/stdtypes.rst:4037 msgid "``'u'``" msgstr "``'u'``" -#: library/stdtypes.rst:3981 +#: library/stdtypes.rst:4037 msgid "Obsolete type -- it is identical to ``'d'``." msgstr "Απαρχαιωμένος τύπος -- είναι πανομοιότυπος με το ``'d'``." -#: library/stdtypes.rst:3983 +#: library/stdtypes.rst:4039 msgid "``'x'``" msgstr "``'x'``" -#: library/stdtypes.rst:3983 +#: library/stdtypes.rst:4039 msgid "Signed hexadecimal (lowercase)." msgstr "Υπογεγραμμένο δεκαεξαδικό (πεζά)." -#: library/stdtypes.rst:3985 +#: library/stdtypes.rst:4041 msgid "``'X'``" msgstr "``'X'``" -#: library/stdtypes.rst:3985 +#: library/stdtypes.rst:4041 msgid "Signed hexadecimal (uppercase)." msgstr "Υπογεγραμμένο δεκαεξαδικό (κεφαλαίο)." -#: library/stdtypes.rst:3987 +#: library/stdtypes.rst:4043 msgid "``'e'``" msgstr "``'e'``" -#: library/stdtypes.rst:3987 +#: library/stdtypes.rst:4043 msgid "Floating-point exponential format (lowercase)." msgstr "Εκθετική μορφή κινητής υποδιαστολής (πεζά)" -#: library/stdtypes.rst:3989 +#: library/stdtypes.rst:4045 msgid "``'E'``" msgstr "``'E'``" -#: library/stdtypes.rst:3989 +#: library/stdtypes.rst:4045 msgid "Floating-point exponential format (uppercase)." msgstr "Εκθετική μορφή κινητής υποδιαστολής (κεφαλαία)" -#: library/stdtypes.rst:3991 +#: library/stdtypes.rst:4047 msgid "``'f'``" msgstr "``'f'``" -#: library/stdtypes.rst:2734 library/stdtypes.rst:3993 +#: library/stdtypes.rst:2790 library/stdtypes.rst:4049 msgid "Floating-point decimal format." msgstr "Δεκαδική μορφή κινητής υποδιαστολής." -#: library/stdtypes.rst:3993 +#: library/stdtypes.rst:4049 msgid "``'F'``" msgstr "``'F'``" -#: library/stdtypes.rst:3995 +#: library/stdtypes.rst:4051 msgid "``'g'``" msgstr "``'g'``" -#: library/stdtypes.rst:3995 +#: library/stdtypes.rst:4051 msgid "" "Floating-point format. Uses lowercase exponential format if exponent is less " "than -4 or not less than precision, decimal format otherwise." @@ -5385,11 +5491,11 @@ msgstr "" "είναι μικρότερος από -4 ή όχι μικρότερος από την ακρίβεια, διαφορετικά " "χρησιμοποιεί δεκαδική μορφή." -#: library/stdtypes.rst:3999 +#: library/stdtypes.rst:4055 msgid "``'G'``" msgstr "``'G'``" -#: library/stdtypes.rst:3999 +#: library/stdtypes.rst:4055 msgid "" "Floating-point format. Uses uppercase exponential format if exponent is less " "than -4 or not less than precision, decimal format otherwise." @@ -5398,56 +5504,56 @@ msgstr "" "εκθέτης είναι μικρότερος από -4 ή όχι μικρότερος από την ακρίβεια, " "διαφορετικά χρησιμοποιεί δεκαδική μορφή." -#: library/stdtypes.rst:4003 +#: library/stdtypes.rst:4059 msgid "``'c'``" msgstr "``'c'``" -#: library/stdtypes.rst:2744 +#: library/stdtypes.rst:2800 msgid "Single character (accepts integer or single character string)." msgstr "" "Μεμονωμένος χαρακτήρας (δέχεται ακέραιο ή μονό χαρακτήρα συμβολοσειράς)." -#: library/stdtypes.rst:4016 +#: library/stdtypes.rst:4072 msgid "``'r'``" msgstr "``'r'``" -#: library/stdtypes.rst:2747 +#: library/stdtypes.rst:2803 msgid "String (converts any Python object using :func:`repr`)." msgstr "" "Συμβολοσειρά (μετατρέπει οποιοδήποτε αντικείμενο Python χρησιμοποιώντας :" "func:`repr`)." -#: library/stdtypes.rst:4010 +#: library/stdtypes.rst:4066 msgid "``'s'``" msgstr "``'s'``" -#: library/stdtypes.rst:2750 +#: library/stdtypes.rst:2806 msgid "String (converts any Python object using :func:`str`)." msgstr "" "Συμβολοσειρά (μετατρέπει οποιοδήποτε αντικείμενο Python χρησιμοποιώντας :" "func:`str`)." -#: library/stdtypes.rst:4013 +#: library/stdtypes.rst:4069 msgid "``'a'``" msgstr "``'a'``" -#: library/stdtypes.rst:2753 +#: library/stdtypes.rst:2809 msgid "String (converts any Python object using :func:`ascii`)." msgstr "" "Συμβολοσειρά (μετατρέπει οποιοδήποτε αντικείμενο Python χρησιμοποιώντας :" "func:`ascii`)." -#: library/stdtypes.rst:4019 +#: library/stdtypes.rst:4075 msgid "``'%'``" msgstr "``'%'``" -#: library/stdtypes.rst:4019 +#: library/stdtypes.rst:4075 msgid "No argument is converted, results in a ``'%'`` character in the result." msgstr "" "Κανένα όρισμα δεν μετατρέπεται, έχει ως αποτέλεσμα έναν χαρακτήρα ``'%'`` το " "αποτέλεσμα." -#: library/stdtypes.rst:4026 +#: library/stdtypes.rst:4082 msgid "" "The alternate form causes a leading octal specifier (``'0o'``) to be " "inserted before the first digit." @@ -5455,7 +5561,7 @@ msgstr "" "Η εναλλακτική μορφή προκαλεί την εισαγωγή ενός πρώτου οκταδικού προσδιοριστή " "(``'0o'``) πριν από το πρώτο ψηφίο." -#: library/stdtypes.rst:4030 +#: library/stdtypes.rst:4086 msgid "" "The alternate form causes a leading ``'0x'`` or ``'0X'`` (depending on " "whether the ``'x'`` or ``'X'`` format was used) to be inserted before the " @@ -5465,7 +5571,7 @@ msgstr "" "(ανάλογα με το εάν χρησιμοποιήθηκε η μορφή ``'x'`` ή ``'X'``) πριν το πρώτο " "ψηφίο." -#: library/stdtypes.rst:4034 +#: library/stdtypes.rst:4090 msgid "" "The alternate form causes the result to always contain a decimal point, even " "if no digits follow it." @@ -5473,7 +5579,7 @@ msgstr "" "Η εναλλακτική μορφή κάνει το αποτέλεσμα να περιέχει πάντα μια υποδιαστολή, " "ακόμα κι αν δεν ακολουθούν ψηφία." -#: library/stdtypes.rst:4037 +#: library/stdtypes.rst:4093 msgid "" "The precision determines the number of digits after the decimal point and " "defaults to 6." @@ -5481,7 +5587,7 @@ msgstr "" "Η ακρίβεια καθορίζει τον αριθμό των ψηφίων μετά την υποδιαστολή και ορίζεται " "από προεπιλογή ως 6." -#: library/stdtypes.rst:4041 +#: library/stdtypes.rst:4097 msgid "" "The alternate form causes the result to always contain a decimal point, and " "trailing zeroes are not removed as they would otherwise be." @@ -5489,7 +5595,7 @@ msgstr "" "Η εναλλακτική μορφή κάνει το αποτέλεσμα να περιέχει πάντα μια υποδιαστολή " "και τα μηδενικά στο τέλος δεν αφαιρούνται όπως θα ήταν διαφορετικά." -#: library/stdtypes.rst:4044 +#: library/stdtypes.rst:4100 msgid "" "The precision determines the number of significant digits before and after " "the decimal point and defaults to 6." @@ -5497,15 +5603,15 @@ msgstr "" "Η ακρίβεια καθορίζει τον αριθμό των σημαντικών ψηφίων πριν και μετά την " "υποδιαστολή και ορίζει το 6." -#: library/stdtypes.rst:4048 +#: library/stdtypes.rst:4104 msgid "If precision is ``N``, the output is truncated to ``N`` characters." msgstr "Εάν η ακρίβεια είναι``N``, η έξοδος περικόπτεται σε ``N`` χαρακτήρες." -#: library/stdtypes.rst:4057 +#: library/stdtypes.rst:4113 msgid "See :pep:`237`." msgstr "Βλέπε :pep:`237`." -#: library/stdtypes.rst:2790 +#: library/stdtypes.rst:2846 msgid "" "Since Python strings have an explicit length, ``%s`` conversions do not " "assume that ``'\\0'`` is the end of the string." @@ -5513,7 +5619,7 @@ msgstr "" "Δεδομένου ότι οι συμβολοσειρές Python έχουν ρητό μήκος, οι ``%s`` μετατροπές " "δεν υποθέτουν ότι το ``'\\0'`` είναι το τέλος της συμβολοσειράς." -#: library/stdtypes.rst:2795 +#: library/stdtypes.rst:2851 msgid "" "``%f`` conversions for numbers whose absolute value is over 1e50 are no " "longer replaced by ``%g`` conversions." @@ -5521,7 +5627,7 @@ msgstr "" "Οι μετατροπείς ``%f`` για αριθμούς των οποίων η απόλυτη τιμή είναι " "μεγαλύτερη από 1e50 δεν αντικαθίστανται πλέον από μετατροπές ``%g``." -#: library/stdtypes.rst:2806 +#: library/stdtypes.rst:2862 msgid "" "Binary Sequence Types --- :class:`bytes`, :class:`bytearray`, :class:" "`memoryview`" @@ -5529,7 +5635,7 @@ msgstr "" "Τύποι δυαδικής ακολουθίας --- :class:`bytes`, :class:`bytearray`, :class:" "`memoryview`" -#: library/stdtypes.rst:2814 +#: library/stdtypes.rst:2870 msgid "" "The core built-in types for manipulating binary data are :class:`bytes` and :" "class:`bytearray`. They are supported by :class:`memoryview` which uses the :" @@ -5542,7 +5648,7 @@ msgstr "" "` για την πρόσβαση στη μνήμη άλλων δυαδικών αντικειμένων " "χωρίς να χρειάζεται η δημιουργία αντιγράφου." -#: library/stdtypes.rst:2819 +#: library/stdtypes.rst:2875 msgid "" "The :mod:`array` module supports efficient storage of basic data types like " "32-bit integers and IEEE754 double-precision floating values." @@ -5551,11 +5657,11 @@ msgstr "" "δεδομένων όπως 32-bit ακέραιους και IEEE754 διπλής ακρίβειας κινητής " "υποδιαστολής τιμές." -#: library/stdtypes.rst:2825 +#: library/stdtypes.rst:2881 msgid "Bytes Objects" msgstr "Αντικείμενα Bytes" -#: library/stdtypes.rst:2829 +#: library/stdtypes.rst:2885 msgid "" "Bytes objects are immutable sequences of single bytes. Since many major " "binary protocols are based on the ASCII text encoding, bytes objects offer " @@ -5568,7 +5674,7 @@ msgstr "" "ισχύουν μόνο όταν εργάζονται με δεδομένα συμβατά με ASCII και σχετίζονται " "στενά με αντικείμενα συμβολοσειρών σε μια ποικιλία διαφόρων τρόπων." -#: library/stdtypes.rst:2836 +#: library/stdtypes.rst:2892 msgid "" "Firstly, the syntax for bytes literals is largely the same as that for " "string literals, except that a ``b`` prefix is added:" @@ -5577,25 +5683,25 @@ msgstr "" "για τα literals συμβολοσειρών, με τη διαφορά ότι προστίθεται ένα πρόθεμα " "``b``::" -#: library/stdtypes.rst:2839 +#: library/stdtypes.rst:2895 msgid "Single quotes: ``b'still allows embedded \"double\" quotes'``" msgstr "" "Μονά εισαγωγικά: ``b'ακόμα επιτρέπει ενσωματωμένα \"διπλά\" εισαγωγικά'``" -#: library/stdtypes.rst:2840 +#: library/stdtypes.rst:2896 msgid "Double quotes: ``b\"still allows embedded 'single' quotes\"``" msgstr "" "Διπλά εισαγωγικά: ``b\"εξακολουθεί να επιτρέπει ενσωματωμένα 'μονά' " "εισαγωγικά\"``" -#: library/stdtypes.rst:2841 +#: library/stdtypes.rst:2897 msgid "" "Triple quoted: ``b'''3 single quotes'''``, ``b\"\"\"3 double quotes\"\"\"``" msgstr "" "Τριπλά εισαγωγικά: ``b'''3 μονά εισαγωγικά'''``, ``b\"\"\"3 διπλά " "εισαγωγικά\"\"\"``" -#: library/stdtypes.rst:2843 +#: library/stdtypes.rst:2899 msgid "" "Only ASCII characters are permitted in bytes literals (regardless of the " "declared source code encoding). Any binary values over 127 must be entered " @@ -5606,7 +5712,7 @@ msgstr "" "127, πρέπει να εισαχθούν σε bytes literals χρησιμοποιώντας την κατάλληλη " "ακολουθία διαφυγής χαρακτήρων." -#: library/stdtypes.rst:2847 +#: library/stdtypes.rst:2903 msgid "" "As with string literals, bytes literals may also use a ``r`` prefix to " "disable processing of escape sequences. See :ref:`strings` for more about " @@ -5618,7 +5724,7 @@ msgstr "" "πληροφορίες σχετικά με τις διάφορες μορφές bytes literal, " "συμπεριλαμβανομένων των υποστηριζόμενων ακολουθιών διαφυγής χαρακτήρων." -#: library/stdtypes.rst:2851 +#: library/stdtypes.rst:2907 msgid "" "While bytes literals and representations are based on ASCII text, bytes " "objects actually behave like immutable sequences of integers, with each " @@ -5641,7 +5747,7 @@ msgstr "" "εφαρμογή αλγορίθμων επεξεργασίας κειμένου σε δυαδικές μορφές δεδομένων που " "δεν είναι συμβατές με ASCII συνήθως οδηγεί σε καταστροφή δεδομένων)." -#: library/stdtypes.rst:2861 +#: library/stdtypes.rst:2917 msgid "" "In addition to the literal forms, bytes objects can be created in a number " "of other ways:" @@ -5649,25 +5755,25 @@ msgstr "" "Εκτός από τις literal μορφές, τα αντικείμενα bytes μπορούν να δημιουργηθούν " "με πολλούς άλλους τρόπους:" -#: library/stdtypes.rst:2864 +#: library/stdtypes.rst:2920 msgid "A zero-filled bytes object of a specified length: ``bytes(10)``" msgstr "Ένα μηδενικό αντικείμενο bytes με καθορισμένο μήκος: ``bytes(10)``" -#: library/stdtypes.rst:2865 +#: library/stdtypes.rst:2921 msgid "From an iterable of integers: ``bytes(range(20))``" msgstr "Από ένα iterable ακεραίων αριθμών: ``bytes(range(20))``" -#: library/stdtypes.rst:2866 +#: library/stdtypes.rst:2922 msgid "Copying existing binary data via the buffer protocol: ``bytes(obj)``" msgstr "" "Αντιγραφή υπαρχόντων δυαδικών δεδομένων μέσω του πρωτοκόλλου buffer: " "``bytes(obj)``" -#: library/stdtypes.rst:2868 +#: library/stdtypes.rst:2924 msgid "Also see the :ref:`bytes ` built-in." msgstr "Δείτε επίσης το ενσωματωμένο :ref:`bytes `." -#: library/stdtypes.rst:2870 +#: library/stdtypes.rst:2926 msgid "" "Since 2 hexadecimal digits correspond precisely to a single byte, " "hexadecimal numbers are a commonly used format for describing binary data. " @@ -5679,7 +5785,7 @@ msgstr "" "περιγραφή δυαδικών δεδομένων. Συνεπώς, ο τύπος bytes έχει μια πρόσθετη " "μέθοδο κλάσης για την ανάγνωση δεδομένων σε αυτήν την μορφή:" -#: library/stdtypes.rst:2876 +#: library/stdtypes.rst:2932 msgid "" "This :class:`bytes` class method returns a bytes object, decoding the given " "string object. The string must contain two hexadecimal digits per byte, " @@ -5690,7 +5796,7 @@ msgstr "" "πρέπει να περιέχει δύο δεκαεξαδικά ψηφία ανά byte, με το κενό διάστημα ASCII " "να αγνοείται." -#: library/stdtypes.rst:2883 +#: library/stdtypes.rst:2939 msgid "" ":meth:`bytes.fromhex` now skips all ASCII whitespace in the string, not just " "spaces." @@ -5698,7 +5804,7 @@ msgstr "" "Το :meth:`bytes.fromhex` παρακάμπτει πλέον όλα τα κενά ASCII στη " "συμβολοσειρά, όχι μόνο τα κενά." -#: library/stdtypes.rst:2887 +#: library/stdtypes.rst:2943 msgid "" ":meth:`bytes.fromhex` now accepts ASCII :class:`bytes` and :term:`bytes-like " "objects ` as input." @@ -5706,7 +5812,7 @@ msgstr "" "Η :meth:`bytes.fromhex` δέχεται πλέον ASCII :class:`bytes` και :term:`bytes-" "like objects ` ως είσοδο." -#: library/stdtypes.rst:2891 +#: library/stdtypes.rst:2947 msgid "" "A reverse conversion function exists to transform a bytes object into its " "hexadecimal representation." @@ -5714,7 +5820,7 @@ msgstr "" "Υπάρχει μια συνάρτηση αντίστροφης μετατροπής για τη μετατροπή ενός " "αντικειμένου bytes στην δεκαεξαδική του αναπαράσταση." -#: library/stdtypes.rst:2985 +#: library/stdtypes.rst:3041 msgid "" "Return a string object containing two hexadecimal digits for each byte in " "the instance." @@ -5722,7 +5828,7 @@ msgstr "" "Επιστρέφετε ένα αντικείμενο συμβολοσειράς που περιέχει δύο δεκαεξαδικά ψηφία " "για κάθε byte στο στιγμιότυπο." -#: library/stdtypes.rst:2902 +#: library/stdtypes.rst:2958 msgid "" "If you want to make the hex string easier to read, you can specify a single " "character separator *sep* parameter to include in the output. By default, " @@ -5737,7 +5843,7 @@ msgstr "" "*bytes_per_sep* ελέγχει τα διαστήματα. Οι θετικές τιμές υπολογίζουν τη θέση " "του διαχωριστή από τα δεξιά, οι αρνητικές τιμές από τα αριστερά." -#: library/stdtypes.rst:2919 +#: library/stdtypes.rst:2975 msgid "" ":meth:`bytes.hex` now supports optional *sep* and *bytes_per_sep* parameters " "to insert separators between bytes in the hex output." @@ -5746,7 +5852,7 @@ msgstr "" "*bytes_per_sep* για την εισαγωγή διαχωριστικών μεταξύ των byte στην έξοδο " "δεκαεξαδικού." -#: library/stdtypes.rst:2923 +#: library/stdtypes.rst:2979 msgid "" "Since bytes objects are sequences of integers (akin to a tuple), for a bytes " "object *b*, ``b[0]`` will be an integer, while ``b[0:1]`` will be a bytes " @@ -5760,7 +5866,7 @@ msgstr "" "η λειτουργία πρόσβασης ως ευρετήριο όσο και η λειτουργία τμηματοποίησης θα " "παράγουν μια συμβολοσειρά μήκους 1)" -#: library/stdtypes.rst:2928 +#: library/stdtypes.rst:2984 msgid "" "The representation of bytes objects uses the literal format (``b'...'``) " "since it is often more useful than e.g. ``bytes([46, 46, 46])``. You can " @@ -5771,11 +5877,11 @@ msgstr "" "46])``. Μπορείτε πάντα να μετατρέψετε ένα αντικείμενο bytes σε μια λίστα " "ακέραιων αριθμών που χρησιμοποιούν ``list(b)``." -#: library/stdtypes.rst:2936 +#: library/stdtypes.rst:2992 msgid "Bytearray Objects" msgstr "Αντικείμενα Bytearray" -#: library/stdtypes.rst:2940 +#: library/stdtypes.rst:2996 msgid "" ":class:`bytearray` objects are a mutable counterpart to :class:`bytes` " "objects." @@ -5783,7 +5889,7 @@ msgstr "" "Τα αντικείμενα :class:`bytearray` είναι ένα μεταβλητό, αντίστοιχο, των " "αντικειμένων :class:`bytes`." -#: library/stdtypes.rst:2945 +#: library/stdtypes.rst:3001 msgid "" "There is no dedicated literal syntax for bytearray objects, instead they are " "always created by calling the constructor:" @@ -5791,26 +5897,26 @@ msgstr "" "Δεν υπάρχει αποκλειστική literal σύνταξη για αντικείμενα bytearray, αντίθετα " "δημιουργούνται πάντα καλώντας τον constructor:" -#: library/stdtypes.rst:2948 +#: library/stdtypes.rst:3004 msgid "Creating an empty instance: ``bytearray()``" msgstr "Δημιουργία ενός κενού στιγμιοτύπου: ``bytearray()``" -#: library/stdtypes.rst:2949 +#: library/stdtypes.rst:3005 msgid "Creating a zero-filled instance with a given length: ``bytearray(10)``" msgstr "Δημιουργία μηδενικού στιγμιοτύπου με δεδομένο μήκος: ``bytearray(10)``" -#: library/stdtypes.rst:2950 +#: library/stdtypes.rst:3006 msgid "From an iterable of integers: ``bytearray(range(20))``" msgstr "Από έναν iterable αριθμό ακεραίων: ``bytearray(range(20))``" -#: library/stdtypes.rst:2951 +#: library/stdtypes.rst:3007 msgid "" "Copying existing binary data via the buffer protocol: ``bytearray(b'Hi!')``" msgstr "" "Αντιγραφή υπαρχόντων δυαδικών δεδομένων μέσω του πρωτοκόλλου buffer: " "``bytearray(b'Hi!')``" -#: library/stdtypes.rst:2953 +#: library/stdtypes.rst:3009 msgid "" "As bytearray objects are mutable, they support the :ref:`mutable ` sequence operations in addition to the common bytes and bytearray " @@ -5821,11 +5927,11 @@ msgstr "" "κοινών λειτουργιών bytes και bytearray που περιγράφονται στο :ref:`bytes-" "methods`." -#: library/stdtypes.rst:2957 +#: library/stdtypes.rst:3013 msgid "Also see the :ref:`bytearray ` built-in." msgstr "Δείτε επίσης το ενσωματωμένο :ref:`bytearray `." -#: library/stdtypes.rst:2959 +#: library/stdtypes.rst:3015 msgid "" "Since 2 hexadecimal digits correspond precisely to a single byte, " "hexadecimal numbers are a commonly used format for describing binary data. " @@ -5837,7 +5943,7 @@ msgstr "" "δυαδικών δεδομένων. Συνεπώς, ο τύπος bytearray έχει μια πρόσθετη μέθοδο " "κλάσης για την ανάγνωση δεδομένων σε αυτήν την μορφή:" -#: library/stdtypes.rst:2965 +#: library/stdtypes.rst:3021 msgid "" "This :class:`bytearray` class method returns bytearray object, decoding the " "given string object. The string must contain two hexadecimal digits per " @@ -5848,7 +5954,7 @@ msgstr "" "πρέπει να περιέχει δύο δεκαεξαδικά ψηφία ανά byte, με το κενό διάστημα ASCII " "να αγνοείται." -#: library/stdtypes.rst:2972 +#: library/stdtypes.rst:3028 msgid "" ":meth:`bytearray.fromhex` now skips all ASCII whitespace in the string, not " "just spaces." @@ -5856,7 +5962,7 @@ msgstr "" "Το :meth:`bytearray.fromhex` παρακάμπτει τώρα όλα τα κενά ASCII στη " "συμβολοσειρά, όχι μόνο τα κενά." -#: library/stdtypes.rst:2976 +#: library/stdtypes.rst:3032 msgid "" ":meth:`bytearray.fromhex` now accepts ASCII :class:`bytes` and :term:`bytes-" "like objects ` as input." @@ -5864,7 +5970,7 @@ msgstr "" "Η :meth:`bytearray.fromhex` δέχεται πλέον το ASCII :class:`bytes` και :term:" "`bytes-like objects ` ως είσοδο." -#: library/stdtypes.rst:2980 +#: library/stdtypes.rst:3036 msgid "" "A reverse conversion function exists to transform a bytearray object into " "its hexadecimal representation." @@ -5872,7 +5978,7 @@ msgstr "" "Υπάρχει μια συνάρτηση αντίστροφης μετατροπής για να μετατρέψει ένα " "αντικείμενο bytearray στη δεκαεξαδική αναπαράσταση του." -#: library/stdtypes.rst:2993 +#: library/stdtypes.rst:3049 msgid "" "Similar to :meth:`bytes.hex`, :meth:`bytearray.hex` now supports optional " "*sep* and *bytes_per_sep* parameters to insert separators between bytes in " @@ -5882,7 +5988,7 @@ msgstr "" "προαιρετικές παραμέτρους *sep* και *bytes_per_sep* για την εισαγωγή " "διαχωριστικών μεταξύ των byte στην δεκαεξαδική έξοδο." -#: library/stdtypes.rst:3000 +#: library/stdtypes.rst:3056 msgid "" "Resize the :class:`bytearray` to contain *size* bytes. *size* must be " "greater than or equal to 0." @@ -5890,14 +5996,14 @@ msgstr "" "Αλλάζει το μέγεθος του :class:`bytearray` ώστε αν περιέχει *size* bytes. Το " "*size* πρέπει να είναι μεγαλύτερο ή ίσο με το 0." -#: library/stdtypes.rst:3003 +#: library/stdtypes.rst:3059 msgid "" "If the :class:`bytearray` needs to shrink, bytes beyond *size* are truncated." msgstr "" "Εάν η :class:`bytearray` χρειάζεται να συρρικνωθεί, τα bytes πέραν του " "*size* περικόπτονται." -#: library/stdtypes.rst:3005 +#: library/stdtypes.rst:3061 msgid "" "If the :class:`bytearray` needs to grow, all new bytes, those beyond *size*, " "will be set to null bytes." @@ -5905,15 +6011,15 @@ msgstr "" "Εάν η :class:`bytearray` χρειάζεται να αυξηθεί, όλα τα νέα bytes, αυτά που " "είναι πέρα από το *size*, θα οριστούν σε null bytes." -#: library/stdtypes.rst:3009 +#: library/stdtypes.rst:3065 msgid "This is equivalent to:" msgstr "Ισοδύναμο με:" -#: library/stdtypes.rst:3017 +#: library/stdtypes.rst:3073 msgid "Examples:" msgstr "Παραδείγματα:" -#: library/stdtypes.rst:3030 +#: library/stdtypes.rst:3086 msgid "" "Since bytearray objects are sequences of integers (akin to a list), for a " "bytearray object *b*, ``b[0]`` will be an integer, while ``b[0:1]`` will be " @@ -5927,7 +6033,7 @@ msgstr "" "κειμένου, όπου τόσο το indexing και το slicing θα παράγουν μια συμβολοσειρά " "μήκους 1)" -#: library/stdtypes.rst:3035 +#: library/stdtypes.rst:3091 msgid "" "The representation of bytearray objects uses the bytes literal format " "(``bytearray(b'...')``) since it is often more useful than e.g. " @@ -5939,11 +6045,11 @@ msgstr "" "``bytearray([46, 46, 46])``. Μπορείτε πάντα να μετατρέψετε ένα αντικείμενο " "bytearray σε λίστα ακεραίων χρησιμοποιώντας το ``list(b)``." -#: library/stdtypes.rst:3044 +#: library/stdtypes.rst:3100 msgid "Bytes and Bytearray Operations" msgstr "Λειτουργίες Bytes και Bytearray" -#: library/stdtypes.rst:3049 +#: library/stdtypes.rst:3105 msgid "" "Both bytes and bytearray objects support the :ref:`common ` " "sequence operations. They interoperate not just with operands of the same " @@ -5958,7 +6064,7 @@ msgstr "" "ελεύθερα σε λειτουργίες χωρίς να προκαλούνται σφάλματα. Ωστόσο, ο τύπος " "επιστροφής του αποτελέσματος μπορεί να εξαρτάται από τη σειρά των τελεστών." -#: library/stdtypes.rst:3057 +#: library/stdtypes.rst:3113 msgid "" "The methods on bytes and bytearray objects don't accept strings as their " "arguments, just as the methods on strings don't accept bytes as their " @@ -5968,7 +6074,7 @@ msgstr "" "ως ορίσματά τους, όπως και οι μέθοδοι σε συμβολοσειρές δεν δέχονται bytes ως " "ορίσματα. Για παράδειγμα, πρέπει να γράψετε::" -#: library/stdtypes.rst:3061 +#: library/stdtypes.rst:3117 msgid "" "a = \"abc\"\n" "b = a.replace(\"a\", \"f\")" @@ -5976,11 +6082,11 @@ msgstr "" "a = \"abc\"\n" "b = a.replace(\"a\", \"f\")" -#: library/stdtypes.rst:3064 +#: library/stdtypes.rst:3120 msgid "and::" msgstr "και::" -#: library/stdtypes.rst:3066 +#: library/stdtypes.rst:3122 msgid "" "a = b\"abc\"\n" "b = a.replace(b\"a\", b\"f\")" @@ -5988,7 +6094,7 @@ msgstr "" "a = b\"abc\"\n" "b = a.replace(b\"a\", b\"f\")" -#: library/stdtypes.rst:3069 +#: library/stdtypes.rst:3125 msgid "" "Some bytes and bytearray operations assume the use of ASCII compatible " "binary formats, and hence should be avoided when working with arbitrary " @@ -5999,7 +6105,7 @@ msgstr "" "εργάζεστε με αυθαίρετα δυαδικά δεδομένα. Αυτοί οι περιορισμοί καλύπτονται " "παρακάτω." -#: library/stdtypes.rst:3074 +#: library/stdtypes.rst:3130 msgid "" "Using these ASCII based operations to manipulate binary data that is not " "stored in an ASCII based format may lead to data corruption." @@ -6008,7 +6114,7 @@ msgstr "" "δεδομένων που δεν είναι αποθηκευμένα σε μορφή που βασίζεται σε ASCII μπορεί " "να οδηγήσει σε καταστροφή δεδομένων." -#: library/stdtypes.rst:3077 +#: library/stdtypes.rst:3133 msgid "" "The following methods on bytes and bytearray objects can be used with " "arbitrary binary data." @@ -6016,7 +6122,7 @@ msgstr "" "Οι ακόλουθες μέθοδοι σε byte και αντικείμενα bytearray μπορούν να " "χρησιμοποιηθούν με αυθαίρετα δυαδικά δεδομένα." -#: library/stdtypes.rst:3083 +#: library/stdtypes.rst:3139 msgid "" "Return the number of non-overlapping occurrences of subsequence *sub* in the " "range [*start*, *end*]. Optional arguments *start* and *end* are " @@ -6026,8 +6132,8 @@ msgstr "" "ακολουθίας *sub* στο εύρος [*start*, *end*]. Τα προαιρετικά ορίσματα *start* " "και *end* ερμηνεύονται όπως στη σημειογραφία τμηματοποίησης." -#: library/stdtypes.rst:3192 library/stdtypes.rst:3280 -#: library/stdtypes.rst:3293 +#: library/stdtypes.rst:3248 library/stdtypes.rst:3336 +#: library/stdtypes.rst:3349 msgid "" "The subsequence to search for may be any :term:`bytes-like object` or an " "integer in the range 0 to 255." @@ -6035,7 +6141,7 @@ msgstr "" "Η υποακολουθία για αναζήτηση μπορεί να είναι οποιοδήποτε :term:`bytes-like " "object` ή ένας ακέραιος αριθμός στην περιοχή από 0 έως 255." -#: library/stdtypes.rst:3090 +#: library/stdtypes.rst:3146 msgid "" "If *sub* is empty, returns the number of empty slices between characters " "which is the length of the bytes object plus one." @@ -6043,13 +6149,13 @@ msgstr "" "Εάν το *sub* είναι κενό, επιστρέφει τον αριθμό των κενών τμημάτων μεταξύ των " "χαρακτήρων που είναι το μήκος του αντικειμένου bytes συν ένα." -#: library/stdtypes.rst:3204 library/stdtypes.rst:3283 -#: library/stdtypes.rst:3296 +#: library/stdtypes.rst:3260 library/stdtypes.rst:3339 +#: library/stdtypes.rst:3352 msgid "Also accept an integer in the range 0 to 255 as the subsequence." msgstr "" "Επίσης αποδέχεται έναν ακέραιο αριθμό στο εύρος 0 έως 255 ως υποακολουθία." -#: library/stdtypes.rst:3100 +#: library/stdtypes.rst:3156 msgid "" "If the binary data starts with the *prefix* string, return " "``bytes[len(prefix):]``. Otherwise, return a copy of the original binary " @@ -6059,7 +6165,7 @@ msgstr "" "``bytes[len(prefix):]``. Διαφορετικά επιστρέψτε ένα αντίγραφο των αρχικών " "δυαδικών δεδομένων::" -#: library/stdtypes.rst:3104 +#: library/stdtypes.rst:3160 msgid "" ">>> b'TestHook'.removeprefix(b'Test')\n" "b'Hook'\n" @@ -6071,15 +6177,15 @@ msgstr "" ">>> b'BaseTestCase'.removeprefix(b'Test')\n" "b'BaseTestCase'" -#: library/stdtypes.rst:3109 +#: library/stdtypes.rst:3165 msgid "The *prefix* may be any :term:`bytes-like object`." msgstr "Το *prefix* μπορεί να είναι οποιοδήποτε :term:`bytes-like object`." -#: library/stdtypes.rst:3135 library/stdtypes.rst:3361 -#: library/stdtypes.rst:3406 library/stdtypes.rst:3462 -#: library/stdtypes.rst:3551 library/stdtypes.rst:3718 -#: library/stdtypes.rst:3816 library/stdtypes.rst:3859 -#: library/stdtypes.rst:4061 +#: library/stdtypes.rst:3191 library/stdtypes.rst:3417 +#: library/stdtypes.rst:3462 library/stdtypes.rst:3518 +#: library/stdtypes.rst:3607 library/stdtypes.rst:3774 +#: library/stdtypes.rst:3872 library/stdtypes.rst:3915 +#: library/stdtypes.rst:4117 msgid "" "The bytearray version of this method does *not* operate in place - it always " "produces a new object, even if no changes were made." @@ -6087,7 +6193,7 @@ msgstr "" "Η έκδοση bytearray αυτής της μεθόδου *δεν* λειτουργεί στη θέση της - παράγει " "πάντα ένα νέο αντικείμενο, ακόμα και αν δεν έγιναν αλλαγές." -#: library/stdtypes.rst:3122 +#: library/stdtypes.rst:3178 msgid "" "If the binary data ends with the *suffix* string and that *suffix* is not " "empty, return ``bytes[:-len(suffix)]``. Otherwise, return a copy of the " @@ -6097,7 +6203,7 @@ msgstr "" "*suffix* δεν είναι κενό, επιστρέφει ``bytes[:-len(suffix)]``. Διαφορετικά, " "επιστρέφει ένα αντίγραφο των αρχικών δυαδικών δεδομένων::" -#: library/stdtypes.rst:3126 +#: library/stdtypes.rst:3182 msgid "" ">>> b'MiscTests'.removesuffix(b'Tests')\n" "b'Misc'\n" @@ -6109,15 +6215,15 @@ msgstr "" ">>> b'TmpDirMixin'.removesuffix(b'Tests')\n" "b'TmpDirMixin'" -#: library/stdtypes.rst:3131 +#: library/stdtypes.rst:3187 msgid "The *suffix* may be any :term:`bytes-like object`." msgstr "Το *suffix* μπορεί να είναι οποιοδήποτε :term:`bytes-like object`." -#: library/stdtypes.rst:3144 +#: library/stdtypes.rst:3200 msgid "Return the bytes decoded to a :class:`str`." msgstr "Επιστρέφει τα bytes που έχουν αποκωδικοποιηθεί σε μια :class:`str`." -#: library/stdtypes.rst:3149 +#: library/stdtypes.rst:3205 msgid "" "*errors* controls how decoding errors are handled. If ``'strict'`` (the " "default), a :exc:`UnicodeError` exception is raised. Other possible values " @@ -6130,7 +6236,7 @@ msgstr "" "άλλο όνομα που έχει καταχωρηθεί από την :func:`codecs.register_error`. " "Βλέπε :ref:`error-handlers` για λεπτομέρειες." -#: library/stdtypes.rst:3155 +#: library/stdtypes.rst:3211 msgid "" "For performance reasons, the value of *errors* is not checked for validity " "unless a decoding error actually occurs, :ref:`devmode` is enabled or a :ref:" @@ -6141,7 +6247,7 @@ msgstr "" "ενεργοποιημένο το :ref:`devmode` ή χρησιμοποιείται ένα :ref:`debug build " "`." -#: library/stdtypes.rst:3161 +#: library/stdtypes.rst:3217 msgid "" "Passing the *encoding* argument to :class:`str` allows decoding any :term:" "`bytes-like object` directly, without needing to make a temporary :class:`!" @@ -6152,7 +6258,7 @@ msgstr "" "χρειάζεται να δημιουργήσετε ένα προσωρινό αντικείμενο :class:`!bytes` ή :" "class:`!bytearray`." -#: library/stdtypes.rst:3176 +#: library/stdtypes.rst:3232 msgid "" "Return ``True`` if the binary data ends with the specified *suffix*, " "otherwise return ``False``. *suffix* can also be a tuple of suffixes to " @@ -6165,13 +6271,13 @@ msgstr "" "προαιρετικό *start*, η δοκιμή ξεκινά από αυτή τη θέση. Με το προαιρετικό " "*end*, σταματήστε να συγκρίνετε σε αυτή τη θέση." -#: library/stdtypes.rst:3181 +#: library/stdtypes.rst:3237 msgid "The suffix(es) to search for may be any :term:`bytes-like object`." msgstr "" "Το(α) επίθεμα(τα) για αναζήτηση μπορεί να είναι οποιοδήποτε :term:`bytes-" "like object`." -#: library/stdtypes.rst:3187 +#: library/stdtypes.rst:3243 msgid "" "Return the lowest index in the data where the subsequence *sub* is found, " "such that *sub* is contained in the slice ``s[start:end]``. Optional " @@ -6183,7 +6289,7 @@ msgstr "" "προαιρετικά ορίσματα *start* και *end* ερμηνεύονται ως συμβολισμό " "τμηματοποίησης. Επιστρέφει ``-1`` εάν το *sub* δεν βρεθεί." -#: library/stdtypes.rst:3197 +#: library/stdtypes.rst:3253 msgid "" "The :meth:`~bytes.find` method should be used only if you need to know the " "position of *sub*. To check if *sub* is a substring or not, use the :" @@ -6193,7 +6299,7 @@ msgstr "" "χρειάζεται να γνωρίζετε τη θέση του *sub*. Για να ελέγξετε εάν το *sub* " "είναι υποσυμβολοσειρά ή όχι, χρησιμοποιήστε τον τελεστή :keyword:`in`::" -#: library/stdtypes.rst:3201 +#: library/stdtypes.rst:3257 msgid "" ">>> b'Py' in b'Python'\n" "True" @@ -6201,7 +6307,7 @@ msgstr "" ">>> b'Py' in b'Python'\n" "True" -#: library/stdtypes.rst:3211 +#: library/stdtypes.rst:3267 msgid "" "Like :meth:`~bytes.find`, but raise :exc:`ValueError` when the subsequence " "is not found." @@ -6209,7 +6315,7 @@ msgstr "" "Όπως η :meth:`~bytes.find`, αλλά κάνει raise μια :exc:`ValueError` όταν δεν " "βρεθεί η δευτερεύουσα ακολουθία." -#: library/stdtypes.rst:3224 +#: library/stdtypes.rst:3280 msgid "" "Return a bytes or bytearray object which is the concatenation of the binary " "data sequences in *iterable*. A :exc:`TypeError` will be raised if there " @@ -6225,7 +6331,7 @@ msgstr "" "`str`. Το διαχωριστικό μεταξύ των στοιχειών είναι τα περιεχόμενα των byte ή " "του αντικειμένου bytearray που παρέχει αυτή τη μέθοδο." -#: library/stdtypes.rst:3235 +#: library/stdtypes.rst:3291 msgid "" "This static method returns a translation table usable for :meth:`bytes." "translate` that will map each character in *from* into the character at the " @@ -6238,7 +6344,7 @@ msgstr "" "*to* πρέπει να είναι και τα δύο :term:`bytes-like objects ` και να έχουν το ίδιο μήκος." -#: library/stdtypes.rst:3246 +#: library/stdtypes.rst:3302 msgid "" "Split the sequence at the first occurrence of *sep*, and return a 3-tuple " "containing the part before the separator, the separator itself or its " @@ -6252,13 +6358,13 @@ msgstr "" "διαχωριστικό, επιστρέφει μια 3-πλειάδα που περιέχει ένα αντίγραφο της " "αρχικής ακολουθίας, ακολουθούμενη από δύο κενά byte ή αντικείμενα bytearray." -#: library/stdtypes.rst:3310 +#: library/stdtypes.rst:3366 msgid "The separator to search for may be any :term:`bytes-like object`." msgstr "" "Το διαχωριστικό για αναζήτηση μπορεί να είναι οποιοδήποτε :term:`bytes-like " "object`." -#: library/stdtypes.rst:3259 +#: library/stdtypes.rst:3315 msgid "" "Return a copy of the sequence with all occurrences of subsequence *old* " "replaced by *new*. If the optional argument *count* is given, only the " @@ -6269,7 +6375,7 @@ msgstr "" "προαιρετικό όρισμα *count*, αντικαθίστανται μόνο οι πρώτες εμφανίσεις " "*count*." -#: library/stdtypes.rst:3263 +#: library/stdtypes.rst:3319 msgid "" "The subsequence to search for and its replacement may be any :term:`bytes-" "like object`." @@ -6277,7 +6383,7 @@ msgstr "" "Η ακολουθία για αναζήτηση και αντικατάσταση της μπορεί να είναι οποιοδήποτε :" "term:`bytes-like object`." -#: library/stdtypes.rst:3275 +#: library/stdtypes.rst:3331 msgid "" "Return the highest index in the sequence where the subsequence *sub* is " "found, such that *sub* is contained within ``s[start:end]``. Optional " @@ -6289,7 +6395,7 @@ msgstr "" "προαιρετικά ορίσματα *start* και *end* ερμηνεύονται με συμβολισμό " "τμηματοποίησης. Επιστρέφει ``-1`` σε περίπτωση αποτυχίας." -#: library/stdtypes.rst:3290 +#: library/stdtypes.rst:3346 msgid "" "Like :meth:`~bytes.rfind` but raises :exc:`ValueError` when the subsequence " "*sub* is not found." @@ -6297,7 +6403,7 @@ msgstr "" "Όπως η :meth:`~bytes.rfind` αλλά κάνει raise μια :exc:`ValueError` όταν δεν " "βρεθεί η υποακολουθία *sub*." -#: library/stdtypes.rst:3303 +#: library/stdtypes.rst:3359 msgid "" "Split the sequence at the last occurrence of *sep*, and return a 3-tuple " "containing the part before the separator, the separator itself or its " @@ -6312,7 +6418,7 @@ msgstr "" "κενά byte ή αντικείμενα bytearray, ακολουθούμενα από ένα αντίγραφο της " "αρχικής ακολουθίας." -#: library/stdtypes.rst:3316 +#: library/stdtypes.rst:3372 msgid "" "Return ``True`` if the binary data starts with the specified *prefix*, " "otherwise return ``False``. *prefix* can also be a tuple of prefixes to " @@ -6325,13 +6431,13 @@ msgstr "" "η δοκιμή ξεκινά από αυτή τη θέση. Με το προαιρετικό *end*, σταματάει να " "συγκρίνει σε αυτή τη θέση." -#: library/stdtypes.rst:3321 +#: library/stdtypes.rst:3377 msgid "The prefix(es) to search for may be any :term:`bytes-like object`." msgstr "" "Το(α) πρόθεμα(τα) για αναζήτηση μπορεί να είναι οποιοδήποτε :term:`bytes-" "like object`." -#: library/stdtypes.rst:3327 +#: library/stdtypes.rst:3383 msgid "" "Return a copy of the bytes or bytearray object where all bytes occurring in " "the optional argument *delete* are removed, and the remaining bytes have " @@ -6343,14 +6449,14 @@ msgstr "" "τα υπόλοιπα byte έχουν αντιστοιχιστεί μέσω του δεδομένου πίνακα μετάφρασης, " "ο οποίος πρέπει να είναι ένα αντικείμενο bytes μήκους 256." -#: library/stdtypes.rst:3332 +#: library/stdtypes.rst:3388 msgid "" "You can use the :func:`bytes.maketrans` method to create a translation table." msgstr "" "Μπορείτε να χρησιμοποιήσετε τη μέθοδο :func:`bytes.maketrans` για να " "δημιουργήσετε έναν πίνακα μετάφρασης." -#: library/stdtypes.rst:3335 +#: library/stdtypes.rst:3391 msgid "" "Set the *table* argument to ``None`` for translations that only delete " "characters::" @@ -6358,7 +6464,7 @@ msgstr "" "Ορίζει το όρισμα *table* σε ``None`` για μεταφράσεις που διαγράφουν μόνο " "χαρακτήρες::" -#: library/stdtypes.rst:3338 +#: library/stdtypes.rst:3394 msgid "" ">>> b'read this short text'.translate(None, b'aeiou')\n" "b'rd ths shrt txt'" @@ -6366,11 +6472,11 @@ msgstr "" ">>> b'read this short text'.translate(None, b'aeiou')\n" "b'rd ths shrt txt'" -#: library/stdtypes.rst:3341 +#: library/stdtypes.rst:3397 msgid "*delete* is now supported as a keyword argument." msgstr "Το *delete* υποστηρίζεται πλέον ως όρισμα λέξης-κλειδιού." -#: library/stdtypes.rst:3345 +#: library/stdtypes.rst:3401 msgid "" "The following methods on bytes and bytearray objects have default behaviours " "that assume the use of ASCII compatible binary formats, but can still be " @@ -6384,7 +6490,7 @@ msgstr "" "κατάλληλα ορίσματα. Σημειώστε ότι όλες οι μέθοδοι bytearray σε αυτήν την " "ενότητα *δεν* λειτουργούν στη θέση τους και όμως παράγουν νέα αντικείμενα." -#: library/stdtypes.rst:3354 +#: library/stdtypes.rst:3410 msgid "" "Return a copy of the object centered in a sequence of length *width*. " "Padding is done using the specified *fillbyte* (default is an ASCII space). " @@ -6397,7 +6503,7 @@ msgstr "" "`bytes, η αρχική ακολουθία επιστρέφεται εάν το *width* είναι μικρότερο ή ίσο " "με ``len(s)``." -#: library/stdtypes.rst:3368 +#: library/stdtypes.rst:3424 msgid "" "Return a copy of the object left justified in a sequence of length *width*. " "Padding is done using the specified *fillbyte* (default is an ASCII space). " @@ -6410,7 +6516,7 @@ msgstr "" "αντικείμενα :class:`bytes, η αρχική ακολουθία επιστρέφεται εάν το *width* " "είναι μικρότερο ή ίσο με ``len(s)``." -#: library/stdtypes.rst:3382 +#: library/stdtypes.rst:3438 msgid "" "Return a copy of the sequence with specified leading bytes removed. The " "*chars* argument is a binary sequence specifying the set of byte values to " @@ -6427,7 +6533,7 @@ msgstr "" "αφαίρεση του κενού διαστήματος ASCII. Το όρισμα *chars* δεν είναι " "πρόθεμα, αλλά οι συνδυασμοί των τιμών του αφαιρούνται:" -#: library/stdtypes.rst:3389 +#: library/stdtypes.rst:3445 msgid "" ">>> b' spacious '.lstrip()\n" "b'spacious '\n" @@ -6439,7 +6545,7 @@ msgstr "" ">>> b'www.example.com'.lstrip(b'cmowz.')\n" "b'example.com'" -#: library/stdtypes.rst:3394 +#: library/stdtypes.rst:3450 msgid "" "The binary sequence of byte values to remove may be any :term:`bytes-like " "object`. See :meth:`~bytes.removeprefix` for a method that will remove a " @@ -6450,7 +6556,7 @@ msgstr "" "που θα αφαιρέσει μια μεμονωμένη συμβολοσειρά προθέματος αντί όλο το σύνολο " "χαρακτήρων. Για παράδειγμα::" -#: library/stdtypes.rst:3399 +#: library/stdtypes.rst:3455 msgid "" ">>> b'Arthur: three!'.lstrip(b'Arthur: ')\n" "b'ee!'\n" @@ -6462,7 +6568,7 @@ msgstr "" ">>> b'Arthur: three!'.removeprefix(b'Arthur: ')\n" "b'three!'" -#: library/stdtypes.rst:3413 +#: library/stdtypes.rst:3469 msgid "" "Return a copy of the object right justified in a sequence of length *width*. " "Padding is done using the specified *fillbyte* (default is an ASCII space). " @@ -6475,7 +6581,7 @@ msgstr "" "είναι ένα διάστημα ASCII). Για αντικείμενα :class:`bytes`, η αρχική " "ακολουθία επιστρέφεται εάν το *width* είναι μικρότερο ή ίσο με ``len(s)``." -#: library/stdtypes.rst:3427 +#: library/stdtypes.rst:3483 msgid "" "Split the binary sequence into subsequences of the same type, using *sep* as " "the delimiter string. If *maxsplit* is given, at most *maxsplit* splits are " @@ -6492,7 +6598,7 @@ msgstr "" "διαχωρισμό από τα δεξιά, η :meth:`rsplit` συμπεριφέρεται όπως :meth:`split` " "που περιγράφεται λεπτομερώς παρακάτω." -#: library/stdtypes.rst:3438 +#: library/stdtypes.rst:3494 msgid "" "Return a copy of the sequence with specified trailing bytes removed. The " "*chars* argument is a binary sequence specifying the set of byte values to " @@ -6509,7 +6615,7 @@ msgstr "" "ως προεπιλογή την αφαίρεση του κενού διαστήματος ASCII. Το όρισμα *chars* " "δεν είναι επίθημα, αλλά αφαιρούνται όλοι οι συνδυασμοί των τιμών του::" -#: library/stdtypes.rst:3445 +#: library/stdtypes.rst:3501 msgid "" ">>> b' spacious '.rstrip()\n" "b' spacious'\n" @@ -6521,7 +6627,7 @@ msgstr "" ">>> b'mississippi'.rstrip(b'ipz')\n" "b'mississ'" -#: library/stdtypes.rst:3450 +#: library/stdtypes.rst:3506 msgid "" "The binary sequence of byte values to remove may be any :term:`bytes-like " "object`. See :meth:`~bytes.removesuffix` for a method that will remove a " @@ -6532,7 +6638,7 @@ msgstr "" "μέθοδο που θα αφαιρέσει μια συμβολοσειρά επιθέματος και όχι όλο το σύνολο " "χαρακτήρων. Για παράδειγμα:" -#: library/stdtypes.rst:3455 +#: library/stdtypes.rst:3511 msgid "" ">>> b'Monty Python'.rstrip(b' Python')\n" "b'M'\n" @@ -6544,7 +6650,7 @@ msgstr "" ">>> b'Monty Python'.removesuffix(b' Python')\n" "b'Monty'" -#: library/stdtypes.rst:3469 +#: library/stdtypes.rst:3525 msgid "" "Split the binary sequence into subsequences of the same type, using *sep* as " "the delimiter string. If *maxsplit* is given and non-negative, at most " @@ -6559,7 +6665,7 @@ msgstr "" "ή είναι ``-1``, τότε δεν υπάρχει όριο στον αριθμό των διαχωρισμών (όλες οι " "πιθανές διασπάσεις γίνονται)." -#: library/stdtypes.rst:3475 +#: library/stdtypes.rst:3531 msgid "" "If *sep* is given, consecutive delimiters are not grouped together and are " "deemed to delimit empty subsequences (for example, ``b'1,,2'.split(b',')`` " @@ -6577,7 +6683,7 @@ msgstr "" "το ``[bytearray(b'')]`` ανάλογα με τον τύπο του αντικειμένου που χωρίζεται. " "Το όρισμα *sep* μπορεί να είναι οποιοδήποτε :term:`bytes-like object`." -#: library/stdtypes.rst:3485 +#: library/stdtypes.rst:3541 msgid "" ">>> b'1,2,3'.split(b',')\n" "[b'1', b'2', b'3']\n" @@ -6597,7 +6703,7 @@ msgstr "" ">>> b'1<>2<>3<4'.split(b'<>')\n" "[b'1', b'2', b'3<4']" -#: library/stdtypes.rst:3494 +#: library/stdtypes.rst:3550 msgid "" "If *sep* is not specified or is ``None``, a different splitting algorithm is " "applied: runs of consecutive ASCII whitespace are regarded as a single " @@ -6614,7 +6720,7 @@ msgstr "" "ακολουθίας ή μιας ακολουθίας που αποτελείται αποκλειστικά από κενό διάστημα " "ASCII χωρίς καθορισμένο διαχωριστικό επιστρέφει το ``[]``." -#: library/stdtypes.rst:3504 +#: library/stdtypes.rst:3560 msgid "" ">>> b'1 2 3'.split()\n" "[b'1', b'2', b'3']\n" @@ -6630,7 +6736,7 @@ msgstr "" ">>> b' 1 2 3 '.split()\n" "[b'1', b'2', b'3']" -#: library/stdtypes.rst:3515 +#: library/stdtypes.rst:3571 msgid "" "Return a copy of the sequence with specified leading and trailing bytes " "removed. The *chars* argument is a binary sequence specifying the set of " @@ -6647,7 +6753,7 @@ msgstr "" "από προεπιλογή αφαιρεί το ASCII λευκό διάστημα. To όρισμα *chars* δεν είναι " "πρόθεμα ή επίθημα, αλλά αφαιρούνται όλοι οι συνδυασμοί των τιμών του:" -#: library/stdtypes.rst:3523 +#: library/stdtypes.rst:3579 msgid "" ">>> b' spacious '.strip()\n" "b'spacious'\n" @@ -6659,7 +6765,7 @@ msgstr "" ">>> b'www.example.com'.strip(b'cmowz.')\n" "b'example'" -#: library/stdtypes.rst:3528 +#: library/stdtypes.rst:3584 msgid "" "The binary sequence of byte values to remove may be any :term:`bytes-like " "object`." @@ -6667,7 +6773,7 @@ msgstr "" "Η δυαδική ακολουθία τιμών byte προς αφαίρεση μπορεί να είναι οποιοδήποτε :" "term:`bytes-like object`." -#: library/stdtypes.rst:3537 +#: library/stdtypes.rst:3593 msgid "" "The following methods on bytes and bytearray objects assume the use of ASCII " "compatible binary formats and should not be applied to arbitrary binary " @@ -6680,7 +6786,7 @@ msgstr "" "την ενότητα *δεν* λειτουργούν στη θέση τους και αντ' αυτού παράγουν νέα " "αντικείμενα." -#: library/stdtypes.rst:3545 +#: library/stdtypes.rst:3601 msgid "" "Return a copy of the sequence with each byte interpreted as an ASCII " "character, and the first byte capitalized and the rest lowercased. Non-ASCII " @@ -6690,7 +6796,7 @@ msgstr "" "χαρακτήρας ASCII, και το πρώτο byte γραμμένο με κεφαλαία και το υπόλοιπο με " "πεζά. Οι τιμές των byte που δεν είναι ASCII μεταβιβάζονται αμετάβλητες." -#: library/stdtypes.rst:3558 +#: library/stdtypes.rst:3614 msgid "" "Return a copy of the sequence where all ASCII tab characters are replaced by " "one or more ASCII spaces, depending on the current column and the given tab " @@ -6719,7 +6825,7 @@ msgstr "" "αντιγράφεται αμετάβλητη και η τρέχουσα στήλη προσαυξάνεται κατά ένα, " "ανεξάρτητα από το πώς αναπαρίσταται η τιμή byte όταν εκτυπώνεται::" -#: library/stdtypes.rst:3572 +#: library/stdtypes.rst:3628 msgid "" ">>> b'01\\t012\\t0123\\t01234'.expandtabs()\n" "b'01 012 0123 01234'\n" @@ -6731,7 +6837,7 @@ msgstr "" ">>> b'01\\t012\\t0123\\t01234'.expandtabs(4)\n" "b'01 012 0123 01234'" -#: library/stdtypes.rst:3586 +#: library/stdtypes.rst:3642 msgid "" "Return ``True`` if all bytes in the sequence are alphabetical ASCII " "characters or ASCII decimal digits and the sequence is not empty, ``False`` " @@ -6746,7 +6852,7 @@ msgstr "" "``b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'``. Τα δεκαδικά " "ψηφία ASCII είναι αυτές οι τιμές byte στην ακολουθία ``b'0123456789'``." -#: library/stdtypes.rst:3594 +#: library/stdtypes.rst:3650 msgid "" ">>> b'ABCabc1'.isalnum()\n" "True\n" @@ -6758,7 +6864,7 @@ msgstr "" ">>> b'ABC abc1'.isalnum()\n" "False" -#: library/stdtypes.rst:3603 +#: library/stdtypes.rst:3659 msgid "" "Return ``True`` if all bytes in the sequence are alphabetic ASCII characters " "and the sequence is not empty, ``False`` otherwise. Alphabetic ASCII " @@ -6770,7 +6876,7 @@ msgstr "" "αλφαβητικοί χαρακτήρες ASCII είναι εκείνες οι τιμές bytes στην ακολουθία " "``b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'``." -#: library/stdtypes.rst:3610 +#: library/stdtypes.rst:3666 msgid "" ">>> b'ABCabc'.isalpha()\n" "True\n" @@ -6782,7 +6888,7 @@ msgstr "" ">>> b'ABCabc1'.isalpha()\n" "False" -#: library/stdtypes.rst:3619 +#: library/stdtypes.rst:3675 msgid "" "Return ``True`` if the sequence is empty or all bytes in the sequence are " "ASCII, ``False`` otherwise. ASCII bytes are in the range 0-0x7F." @@ -6791,7 +6897,7 @@ msgstr "" "είναι ASCII, ``False`` διαφορετικά. Τα bytes ASCII βρίσκονται στο εύρος " "0-0x7F." -#: library/stdtypes.rst:3629 +#: library/stdtypes.rst:3685 msgid "" "Return ``True`` if all bytes in the sequence are ASCII decimal digits and " "the sequence is not empty, ``False`` otherwise. ASCII decimal digits are " @@ -6801,7 +6907,7 @@ msgstr "" "ASCII και η ακολουθία δεν είναι κενή, ``False`` διαφορετικά. Τα δεκαδικά " "ψηφία ASCII είναι αυτές οι τιμές byte στην ακολουθία ``b'0123456789'``." -#: library/stdtypes.rst:3635 +#: library/stdtypes.rst:3691 msgid "" ">>> b'1234'.isdigit()\n" "True\n" @@ -6813,7 +6919,7 @@ msgstr "" ">>> b'1.23'.isdigit()\n" "False" -#: library/stdtypes.rst:3644 +#: library/stdtypes.rst:3700 msgid "" "Return ``True`` if there is at least one lowercase ASCII character in the " "sequence and no uppercase ASCII characters, ``False`` otherwise." @@ -6821,7 +6927,7 @@ msgstr "" "Επιστρέφει ``True`` εάν υπάρχει τουλάχιστον ένας πεζός χαρακτήρας ASCII στην " "ακολουθία και κανένας κεφαλαίος χαρακτήρας ASCII, ``False`` διαφορετικά." -#: library/stdtypes.rst:3649 +#: library/stdtypes.rst:3705 msgid "" ">>> b'hello world'.islower()\n" "True\n" @@ -6833,8 +6939,8 @@ msgstr "" ">>> b'Hello world'.islower()\n" "False" -#: library/stdtypes.rst:3696 library/stdtypes.rst:3762 -#: library/stdtypes.rst:3831 +#: library/stdtypes.rst:3752 library/stdtypes.rst:3818 +#: library/stdtypes.rst:3887 msgid "" "Lowercase ASCII characters are those byte values in the sequence " "``b'abcdefghijklmnopqrstuvwxyz'``. Uppercase ASCII characters are those byte " @@ -6844,7 +6950,7 @@ msgstr "" "``b'abcdefghijklmnopqrstuvwxyz'``. Οι κεφαλαίοι χαρακτήρες ASCII είναι αυτές " "οι τιμές byte στην ακολουθία ``b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'``." -#: library/stdtypes.rst:3662 +#: library/stdtypes.rst:3718 msgid "" "Return ``True`` if all bytes in the sequence are ASCII whitespace and the " "sequence is not empty, ``False`` otherwise. ASCII whitespace characters are " @@ -6857,7 +6963,7 @@ msgstr "" "\\t\\n\\r\\x0b\\f'`` (κενό, tab, νέα γραμμή, επιστροφή μεταφοράς, κάθετο " "tab, μορφή ροής)." -#: library/stdtypes.rst:3671 +#: library/stdtypes.rst:3727 msgid "" "Return ``True`` if the sequence is ASCII titlecase and the sequence is not " "empty, ``False`` otherwise. See :meth:`bytes.title` for more details on the " @@ -6868,7 +6974,7 @@ msgstr "" "``False`` διαφορετικά. Δείτε :meth:`bytes.title` για περισσότερες " "λεπτομέρειες σχετικά με τον ορισμό του \"titlecase\"." -#: library/stdtypes.rst:3677 +#: library/stdtypes.rst:3733 msgid "" ">>> b'Hello World'.istitle()\n" "True\n" @@ -6880,7 +6986,7 @@ msgstr "" ">>> b'Hello world'.istitle()\n" "False" -#: library/stdtypes.rst:3686 +#: library/stdtypes.rst:3742 msgid "" "Return ``True`` if there is at least one uppercase alphabetic ASCII " "character in the sequence and no lowercase ASCII characters, ``False`` " @@ -6890,7 +6996,7 @@ msgstr "" "χαρακτήρας ASCII στην ακολουθία και κανένας πεζός χαρακτήρας ASCII, " "διαφορετικά ``False``." -#: library/stdtypes.rst:3691 +#: library/stdtypes.rst:3747 msgid "" ">>> b'HELLO WORLD'.isupper()\n" "True\n" @@ -6902,7 +7008,7 @@ msgstr "" ">>> b'Hello world'.isupper()\n" "False" -#: library/stdtypes.rst:3704 +#: library/stdtypes.rst:3760 msgid "" "Return a copy of the sequence with all the uppercase ASCII characters " "converted to their corresponding lowercase counterpart." @@ -6910,7 +7016,7 @@ msgstr "" "Επιστρέφει ένα αντίγραφο της ακολουθίας με όλους τους κεφαλαίους χαρακτήρες " "ASCII να έχουν μετατραπεί στα ισοδύναμα πεζά." -#: library/stdtypes.rst:3709 +#: library/stdtypes.rst:3765 msgid "" ">>> b'Hello World'.lower()\n" "b'hello world'" @@ -6918,7 +7024,7 @@ msgstr "" ">>> b'Hello World'.lower()\n" "b'hello world'" -#: library/stdtypes.rst:3729 +#: library/stdtypes.rst:3785 msgid "" "Return a list of the lines in the binary sequence, breaking at ASCII line " "boundaries. This method uses the :term:`universal newlines` approach to " @@ -6931,7 +7037,7 @@ msgstr "" "περιλαμβάνονται στη λίστα που προκύπτει εκτός εάν δοθεί *keepends* και είναι " "αληθής." -#: library/stdtypes.rst:3736 +#: library/stdtypes.rst:3792 msgid "" ">>> b'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines()\n" "[b'ab c', b'', b'de fg', b'kl']\n" @@ -6943,7 +7049,7 @@ msgstr "" ">>> b'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines(keepends=True)\n" "[b'ab c\\n', b'\\n', b'de fg\\r', b'kl\\r\\n']" -#: library/stdtypes.rst:3741 +#: library/stdtypes.rst:3797 msgid "" "Unlike :meth:`~bytes.split` when a delimiter string *sep* is given, this " "method returns an empty list for the empty string, and a terminal line break " @@ -6954,7 +7060,7 @@ msgstr "" "συμβολοσειρά και μια αλλαγή γραμμής τερματικού δεν οδηγεί σε μια επιπλέον " "γραμμή::" -#: library/stdtypes.rst:3745 +#: library/stdtypes.rst:3801 msgid "" ">>> b\"\".split(b'\\n'), b\"Two lines\\n\".split(b'\\n')\n" "([b''], [b'Two lines', b''])\n" @@ -6966,7 +7072,7 @@ msgstr "" ">>> b\"\".splitlines(), b\"One line\\n\".splitlines()\n" "([], [b'One line'])" -#: library/stdtypes.rst:3754 +#: library/stdtypes.rst:3810 msgid "" "Return a copy of the sequence with all the lowercase ASCII characters " "converted to their corresponding uppercase counterpart and vice-versa." @@ -6974,7 +7080,7 @@ msgstr "" "Επιστρέφει ένα αντίγραφο της ακολουθίας με όλους τους πεζούς χαρακτήρες " "ASCII να έχουν μετατραπεί στο αντίστοιχο ισοδύναμο κεφαλαίο και αντίστροφα." -#: library/stdtypes.rst:3759 +#: library/stdtypes.rst:3815 msgid "" ">>> b'Hello World'.swapcase()\n" "b'hELLO wORLD'" @@ -6982,7 +7088,7 @@ msgstr "" ">>> b'Hello World'.swapcase()\n" "b'hELLO wORLD'" -#: library/stdtypes.rst:3766 +#: library/stdtypes.rst:3822 msgid "" "Unlike :func:`str.swapcase`, it is always the case that ``bin.swapcase()." "swapcase() == bin`` for the binary versions. Case conversions are " @@ -6994,7 +7100,7 @@ msgstr "" "συμμετρικές στο ASCII, παρόλο που αυτό δεν ισχύει γενικά για αυθαίρετα " "σημεία Unicode κώδικα." -#: library/stdtypes.rst:3780 +#: library/stdtypes.rst:3836 msgid "" "Return a titlecased version of the binary sequence where words start with an " "uppercase ASCII character and the remaining characters are lowercase. " @@ -7005,7 +7111,7 @@ msgstr "" "χαρακτήρα ASCII και οι υπόλοιποι χαρακτήρες είναι πεζοί. Οι τιμές byte χωρίς " "κεφαλαία γράμματα παραμένουν χωρίς τροποποίηση." -#: library/stdtypes.rst:3786 +#: library/stdtypes.rst:3842 msgid "" ">>> b'Hello world'.title()\n" "b'Hello World'" @@ -7013,7 +7119,7 @@ msgstr "" ">>> b'Hello world'.title()\n" "b'Hello World'" -#: library/stdtypes.rst:3789 +#: library/stdtypes.rst:3845 msgid "" "Lowercase ASCII characters are those byte values in the sequence " "``b'abcdefghijklmnopqrstuvwxyz'``. Uppercase ASCII characters are those byte " @@ -7025,7 +7131,7 @@ msgstr "" "εκείνες οι τιμές byte στην ακολουθία ``b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'``. Όλες " "οι άλλες τιμές byte είναι χωρίς κεφαλαία." -#: library/stdtypes.rst:3799 +#: library/stdtypes.rst:3855 msgid "" ">>> b\"they're bill's friends from the UK\".title()\n" "b\"They'Re Bill'S Friends From The Uk\"" @@ -7033,14 +7139,14 @@ msgstr "" ">>> b\"they're bill's friends from the UK\".title()\n" "b\"They'Re Bill'S Friends From The Uk\"" -#: library/stdtypes.rst:3802 +#: library/stdtypes.rst:3858 msgid "" "A workaround for apostrophes can be constructed using regular expressions::" msgstr "" "Μια λύση για αποστρόφους μπορεί να δημιουργηθεί χρησιμοποιώντας κανονικές " "εκφράσεις::" -#: library/stdtypes.rst:3804 +#: library/stdtypes.rst:3860 msgid "" ">>> import re\n" ">>> def titlecase(s):\n" @@ -7062,7 +7168,7 @@ msgstr "" ">>> titlecase(b\"they're bill's friends.\")\n" "b\"They're Bill's Friends.\"" -#: library/stdtypes.rst:3823 +#: library/stdtypes.rst:3879 msgid "" "Return a copy of the sequence with all the lowercase ASCII characters " "converted to their corresponding uppercase counterpart." @@ -7070,7 +7176,7 @@ msgstr "" "Επιστρέφει ένα αντίγραφο της ακολουθίας με όλους τους πεζούς χαρακτήρες " "ASCII να έχουν μετατραπεί στο αντίστοιχο ισοδύναμο κεφαλαίο." -#: library/stdtypes.rst:3828 +#: library/stdtypes.rst:3884 msgid "" ">>> b'Hello World'.upper()\n" "b'HELLO WORLD'" @@ -7078,7 +7184,7 @@ msgstr "" ">>> b'Hello World'.upper()\n" "b'HELLO WORLD'" -#: library/stdtypes.rst:3844 +#: library/stdtypes.rst:3900 msgid "" "Return a copy of the sequence left filled with ASCII ``b'0'`` digits to make " "a sequence of length *width*. A leading sign prefix (``b'+'``/ ``b'-'``) is " @@ -7093,7 +7199,7 @@ msgstr "" "αντικείμενα :class:`bytes`, η αρχική ακολουθία επιστρέφεται εάν το *width* " "είναι μικρότερο ή ίσο με ``len(seq)``." -#: library/stdtypes.rst:3852 +#: library/stdtypes.rst:3908 msgid "" ">>> b\"42\".zfill(5)\n" "b'00042'\n" @@ -7105,11 +7211,11 @@ msgstr "" ">>> b\"-42\".zfill(5)\n" "b'-0042'" -#: library/stdtypes.rst:3866 +#: library/stdtypes.rst:3922 msgid "``printf``-style Bytes Formatting" msgstr "Μορφοποίηση Bytes τύπου ``printf``" -#: library/stdtypes.rst:3883 +#: library/stdtypes.rst:3939 msgid "" "The formatting operations described here exhibit a variety of quirks that " "lead to a number of common errors (such as failing to display tuples and " @@ -7121,7 +7227,7 @@ msgstr "" "εμφάνισης των πλειάδων και των λεξικών σωστά). Εάν η τιμή που εκτυπώνεται " "μπορεί να είναι πλειάδα ή λεξικό, κάντε το wrap σε μια πλειάδα." -#: library/stdtypes.rst:3888 +#: library/stdtypes.rst:3944 msgid "" "Bytes objects (``bytes``/``bytearray``) have one unique built-in operation: " "the ``%`` operator (modulo). This is also known as the bytes *formatting* or " @@ -7138,7 +7244,7 @@ msgstr "" "στοιχεία *values*. Το αποτέλεσμα είναι παρόμοιο με τη χρήση του :c:func:" "`sprintf` στη γλώσσας C." -#: library/stdtypes.rst:3895 +#: library/stdtypes.rst:3951 msgid "" "If *format* requires a single argument, *values* may be a single non-tuple " "object. [5]_ Otherwise, *values* must be a tuple with exactly the number of " @@ -7151,7 +7257,7 @@ msgstr "" "αντικείμενο μορφής bytes ή μεμονωμένο mapping αντικείμενο (για παράδειγμα, " "ένα λεξικό)." -#: library/stdtypes.rst:3929 +#: library/stdtypes.rst:3985 msgid "" "When the right argument is a dictionary (or other mapping type), then the " "formats in the bytes object *must* include a parenthesised mapping key into " @@ -7164,15 +7270,15 @@ msgstr "" "τον χαρακτήρα ``'%'``. Το κλειδί αντιστοίχισης επιλέγει την τιμή που θα " "μορφοποιηθεί από την αντιστοίχιση. Για παράδειγμα:" -#: library/stdtypes.rst:4003 +#: library/stdtypes.rst:4059 msgid "Single byte (accepts integer or single byte objects)." msgstr "Μονό byte (δέχεται ακέραια ή μεμονωμένα byte αντικείμενα)." -#: library/stdtypes.rst:4006 +#: library/stdtypes.rst:4062 msgid "``'b'``" msgstr "``'b'``" -#: library/stdtypes.rst:4006 +#: library/stdtypes.rst:4062 msgid "" "Bytes (any object that follows the :ref:`buffer protocol ` or " "has :meth:`~object.__bytes__`)." @@ -7180,7 +7286,7 @@ msgstr "" "Bytes (κάθε αντικείμενο που ακολουθεί το :ref:`buffer protocol " "` ή έχει :meth:`~object.__bytes__`)." -#: library/stdtypes.rst:4010 +#: library/stdtypes.rst:4066 msgid "" "``'s'`` is an alias for ``'b'`` and should only be used for Python2/3 code " "bases." @@ -7188,7 +7294,7 @@ msgstr "" "Το ``'s'`` είναι ένα ψευδώνυμο για το ``'b'`` και θα πρέπει να " "χρησιμοποιείται μόνο για κώδικα βάσει Python2/3." -#: library/stdtypes.rst:4013 +#: library/stdtypes.rst:4069 msgid "" "Bytes (converts any Python object using ``repr(obj).encode('ascii', " "'backslashreplace')``)." @@ -7196,7 +7302,7 @@ msgstr "" "Bytes (μετατρέπει οποιοδήποτε αντικείμενο Python χρησιμοποιώντας ``repr(obj)." "encode('ascii', 'backslashreplace')``)." -#: library/stdtypes.rst:4016 +#: library/stdtypes.rst:4072 msgid "" "``'r'`` is an alias for ``'a'`` and should only be used for Python2/3 code " "bases." @@ -7204,31 +7310,31 @@ msgstr "" "Το ``'r'`` είναι ένα ψευδώνυμο για ``'a'`` και θα πρέπει να χρησιμοποιείται " "μόνο για βάσεις κώδικα Python2/3." -#: library/stdtypes.rst:4016 +#: library/stdtypes.rst:4072 msgid "\\(7)" msgstr "\\(7)" -#: library/stdtypes.rst:4051 +#: library/stdtypes.rst:4107 msgid "``b'%s'`` is deprecated, but will not be removed during the 3.x series." msgstr "" "Το ``b'%s'`` έχει καταργηθεί, αλλά δεν θα αφαιρεθεί κατά τη διάρκεια της " "σειράς 3.x." -#: library/stdtypes.rst:4054 +#: library/stdtypes.rst:4110 msgid "``b'%r'`` is deprecated, but will not be removed during the 3.x series." msgstr "" "Το ``b'%r'`` έχει καταργηθεί, αλλά δεν θα αφαιρεθεί κατά τη διάρκεια της " "σειράς 3.x." -#: library/stdtypes.rst:4066 +#: library/stdtypes.rst:4122 msgid ":pep:`461` - Adding % formatting to bytes and bytearray" msgstr ":pep:`461` - Προσθήκη % για μορφοποίηση σε bytes και bytearray" -#: library/stdtypes.rst:4073 +#: library/stdtypes.rst:4129 msgid "Memory Views" msgstr "Όψεις Μνήμης" -#: library/stdtypes.rst:4075 +#: library/stdtypes.rst:4131 msgid "" ":class:`memoryview` objects allow Python code to access the internal data of " "an object that supports the :ref:`buffer protocol ` without " @@ -7238,7 +7344,7 @@ msgstr "" "πρόσβαση στα εσωτερικά δεδομένα ενός αντικειμένου που υποστηρίζει το " "πρωτόκολλο :ref:`buffer protocol ` χωρίς αντιγραφή." -#: library/stdtypes.rst:4081 +#: library/stdtypes.rst:4137 msgid "" "Create a :class:`memoryview` that references *object*. *object* must " "support the buffer protocol. Built-in objects that support the buffer " @@ -7249,7 +7355,7 @@ msgstr "" "υποστηρίζουν το πρωτόκολλο buffer περιλαμβάνουν :class:`bytes` και :class:" "`bytearray`." -#: library/stdtypes.rst:4085 +#: library/stdtypes.rst:4141 msgid "" "A :class:`memoryview` has the notion of an *element*, which is the atomic " "memory unit handled by the originating *object*. For many simple types such " @@ -7262,7 +7368,7 @@ msgstr "" "ένα μεμονωμένο byte, αλλά άλλοι τύποι όπως :class:`array.array` μπορεί να " "έχουν μεγαλύτερα στοιχεία." -#: library/stdtypes.rst:4090 +#: library/stdtypes.rst:4146 msgid "" "``len(view)`` is equal to the length of :class:`~memoryview.tolist`, which " "is the nested list representation of the view. If ``view.ndim = 1``, this is " @@ -7272,7 +7378,7 @@ msgstr "" "οποίο είναι η ένθετη αναπαράσταση κατά την προβολή της λίστας. Εάν ``view." "ndim = 1``, αυτό ισούται με τον αριθμό των στοιχείων για την προβολή." -#: library/stdtypes.rst:4094 +#: library/stdtypes.rst:4150 msgid "" "If ``view.ndim == 0``, ``len(view)`` now raises :exc:`TypeError` instead of " "returning 1." @@ -7280,7 +7386,7 @@ msgstr "" "Εάν ``view.ndim == 0``, το ``len(view)`` τώρα κάνει raise μια :exc:" "`TypeError` αντί να επιστρέψει 1." -#: library/stdtypes.rst:4097 +#: library/stdtypes.rst:4153 msgid "" "The :class:`~memoryview.itemsize` attribute will give you the number of " "bytes in a single element." @@ -7288,7 +7394,7 @@ msgstr "" "Το χαρακτηριστικό :class:`~memoryview.itemsize` θα σας δώσει τον αριθμό των " "byte σε ένα μόνο στοιχείο." -#: library/stdtypes.rst:4100 +#: library/stdtypes.rst:4156 msgid "" "A :class:`memoryview` supports slicing and indexing to expose its data. One-" "dimensional slicing will result in a subview::" @@ -7297,7 +7403,7 @@ msgstr "" "μέσω ευρετηρίου στα δεδομένα του. Μια μονοδιάστατη τμηματοποίηση θα έχει ως " "αποτέλεσμα μια δευτερεύουσα προβολή::" -#: library/stdtypes.rst:4103 +#: library/stdtypes.rst:4159 msgid "" ">>> v = memoryview(b'abcefg')\n" ">>> v[1]\n" @@ -7319,7 +7425,7 @@ msgstr "" ">>> bytes(v[1:4])\n" "b'bce'" -#: library/stdtypes.rst:4113 +#: library/stdtypes.rst:4169 msgid "" "If :class:`~memoryview.format` is one of the native format specifiers from " "the :mod:`struct` module, indexing with an integer or a tuple of integers is " @@ -7339,11 +7445,11 @@ msgstr "" "διαστάσεων. Τα μηδενικών διαστάσεων memoryviews μπορούν να γίνουν indexed " "με την κενή πλειάδα (tuple)." -#: library/stdtypes.rst:4122 +#: library/stdtypes.rst:4178 msgid "Here is an example with a non-byte format::" msgstr "Ακολουθεί ένα παράδειγμα με μη-byte μορφή::" -#: library/stdtypes.rst:4124 +#: library/stdtypes.rst:4180 msgid "" ">>> import array\n" ">>> a = array.array('l', [-11111111, 22222222, -33333333, 44444444])\n" @@ -7365,7 +7471,7 @@ msgstr "" ">>> m[::2].tolist()\n" "[-11111111, -33333333]" -#: library/stdtypes.rst:4134 +#: library/stdtypes.rst:4190 msgid "" "If the underlying object is writable, the memoryview supports one-" "dimensional slice assignment. Resizing is not allowed::" @@ -7373,7 +7479,7 @@ msgstr "" "Εάν το βασικό αντικείμενο είναι εγγράψιμο, το memoryview υποστηρίζει " "μονοδιάστατη εκχώρηση τμηματοποίησης. Δεν επιτρέπεται η αλλαγή μεγέθους::" -#: library/stdtypes.rst:4137 +#: library/stdtypes.rst:4193 msgid "" ">>> data = bytearray(b'abcefg')\n" ">>> v = memoryview(data)\n" @@ -7413,7 +7519,7 @@ msgstr "" ">>> data\n" "bytearray(b'z1spam')" -#: library/stdtypes.rst:4155 +#: library/stdtypes.rst:4211 msgid "" "One-dimensional memoryviews of :term:`hashable` (read-only) types with " "formats 'B', 'b' or 'c' are also hashable. The hash is defined as ``hash(m) " @@ -7423,7 +7529,7 @@ msgstr "" "με μορφές 'B', 'b' ή 'c' μπορούν επίσης να κατακερματιστούν. Ο " "κατακερματισμός ορίζεται ως ``hash(m) == hash(m.tobytes())``::" -#: library/stdtypes.rst:4159 +#: library/stdtypes.rst:4215 msgid "" ">>> v = memoryview(b'abcefg')\n" ">>> hash(v) == hash(b'abcefg')\n" @@ -7441,7 +7547,7 @@ msgstr "" ">>> hash(v[::-2]) == hash(b'abcefg'[::-2])\n" "True" -#: library/stdtypes.rst:4167 +#: library/stdtypes.rst:4223 msgid "" "One-dimensional memoryviews can now be sliced. One-dimensional memoryviews " "with formats 'B', 'b' or 'c' are now :term:`hashable`." @@ -7450,28 +7556,28 @@ msgstr "" "μονοδιάστατα memoryviews με μορφές 'B', 'b' ή 'c' είναι πλέον :term:" "`hashable`." -#: library/stdtypes.rst:4171 +#: library/stdtypes.rst:4227 msgid "" "memoryview is now registered automatically with :class:`collections.abc." "Sequence`" msgstr "" "το memoryview εγγράφεται πλέον αυτόματα με :class:`collections.abc.Sequence`" -#: library/stdtypes.rst:4175 +#: library/stdtypes.rst:4231 msgid "memoryviews can now be indexed with tuple of integers." msgstr "" "τα memoryviews μπορούν τώρα να γίνουν ευρετηριοποίηση με πλειάδα (tuple) " "ακεραίων." -#: library/stdtypes.rst:4178 +#: library/stdtypes.rst:4234 msgid "memoryview is now a :term:`generic type`." msgstr "Το memoryview είναι πλέον ένα :term:`generic type`." -#: library/stdtypes.rst:4181 +#: library/stdtypes.rst:4237 msgid ":class:`memoryview` has several methods:" msgstr "το :class:`memoryview` έχει διάφορες μεθόδους:" -#: library/stdtypes.rst:4185 +#: library/stdtypes.rst:4241 msgid "" "A memoryview and a :pep:`3118` exporter are equal if their shapes are " "equivalent and if all corresponding values are equal when the operands' " @@ -7482,7 +7588,7 @@ msgstr "" "αντίστοιχοι κωδικοί μορφής των τελεστών ερμηνεύονται χρησιμοποιώντας τη " "σύνταξη :mod:`struct`." -#: library/stdtypes.rst:4189 +#: library/stdtypes.rst:4245 msgid "" "For the subset of :mod:`struct` format strings currently supported by :meth:" "`tolist`, ``v`` and ``w`` are equal if ``v.tolist() == w.tolist()``::" @@ -7491,7 +7597,7 @@ msgstr "" "υποστηρίζονται αυτή τη στιγμή από το :meth:`tolist`, ``v`` και ``w`` είναι " "ίσες εάν ``v.tolist() == w.tolist()``::" -#: library/stdtypes.rst:4192 +#: library/stdtypes.rst:4248 msgid "" ">>> import array\n" ">>> a = array.array('I', [1, 2, 3, 4, 5])\n" @@ -7525,7 +7631,7 @@ msgstr "" ">>> z.tolist() == c.tolist()\n" "True" -#: library/stdtypes.rst:4208 +#: library/stdtypes.rst:4264 msgid "" "If either format string is not supported by the :mod:`struct` module, then " "the objects will always compare as unequal (even if the format strings and " @@ -7536,7 +7642,7 @@ msgstr "" "συμβολοσειρές μορφοποίησης και τα περιεχόμενα της προσωρινής μνήμης είναι " "πανομοιότυπα)::" -#: library/stdtypes.rst:4212 +#: library/stdtypes.rst:4268 msgid "" ">>> from ctypes import BigEndianStructure, c_long\n" ">>> class BEPoint(BigEndianStructure):\n" @@ -7562,7 +7668,7 @@ msgstr "" ">>> a == b\n" "False" -#: library/stdtypes.rst:4224 +#: library/stdtypes.rst:4280 msgid "" "Note that, as with floating-point numbers, ``v is w`` does *not* imply ``v " "== w`` for memoryview objects." @@ -7570,7 +7676,7 @@ msgstr "" "Λάβετε υπόψη ότι, όπως και με τους αριθμούς κινητής υποδιαστολής, ``v is w`` " "*δεν* σημαίνει ``v == w`` για αντικείμενα memoryview." -#: library/stdtypes.rst:4227 +#: library/stdtypes.rst:4283 msgid "" "Previous versions compared the raw memory disregarding the item format and " "the logical array structure." @@ -7578,7 +7684,7 @@ msgstr "" "Οι προηγούμενες εκδόσεις συνέκριναν την ακατέργαστη μνήμη αγνοώντας τη μορφή " "του στοιχείου και τη δομή του λογικού πίνακα." -#: library/stdtypes.rst:4233 +#: library/stdtypes.rst:4289 msgid "" "Return the data in the buffer as a bytestring. This is equivalent to " "calling the :class:`bytes` constructor on the memoryview. ::" @@ -7586,7 +7692,7 @@ msgstr "" "Επιστρέφει τα δεδομένα στο buffer ως ένα bytestring. Αυτό ισοδυναμεί με την " "κλήση του κατασκευαστή :class:`bytes` στο memoryview. ::" -#: library/stdtypes.rst:4236 +#: library/stdtypes.rst:4292 msgid "" ">>> m = memoryview(b\"abc\")\n" ">>> m.tobytes()\n" @@ -7600,7 +7706,7 @@ msgstr "" ">>> bytes(m)\n" "b'abc'" -#: library/stdtypes.rst:4242 +#: library/stdtypes.rst:4298 msgid "" "For non-contiguous arrays the result is equal to the flattened list " "representation with all elements converted to bytes. :meth:`tobytes` " @@ -7612,7 +7718,7 @@ msgstr "" "`tobytes` υποστηρίζει όλες τις συμβολοσειρές μορφής, συμπεριλαμβανομένων " "εκείνων που δεν είναι στη σύνταξη του module :mod:`struct`." -#: library/stdtypes.rst:4247 +#: library/stdtypes.rst:4303 msgid "" "*order* can be {'C', 'F', 'A'}. When *order* is 'C' or 'F', the data of the " "original array is converted to C or Fortran order. For contiguous views, 'A' " @@ -7627,7 +7733,7 @@ msgstr "" "συνεχόμενες προβολές, τα δεδομένα μετατρέπονται πρώτα σε C. Το *order=None* " "είναι το ίδιο με το *order='C'*." -#: library/stdtypes.rst:4256 +#: library/stdtypes.rst:4312 msgid "" "Return a string object containing two hexadecimal digits for each byte in " "the buffer. ::" @@ -7635,7 +7741,7 @@ msgstr "" "Επιστρέφει ένα αντικείμενο συμβολοσειράς που περιέχει δύο δεκαεξαδικά ψηφία " "για κάθε byte στο buffer. ::" -#: library/stdtypes.rst:4259 +#: library/stdtypes.rst:4315 msgid "" ">>> m = memoryview(b\"abc\")\n" ">>> m.hex()\n" @@ -7645,7 +7751,7 @@ msgstr "" ">>> m.hex()\n" "'616263'" -#: library/stdtypes.rst:4265 +#: library/stdtypes.rst:4321 msgid "" "Similar to :meth:`bytes.hex`, :meth:`memoryview.hex` now supports optional " "*sep* and *bytes_per_sep* parameters to insert separators between bytes in " @@ -7655,11 +7761,11 @@ msgstr "" "προαιρετικές παραμέτρους *sep* και *bytes_per_sep* για να εισάγετε " "διαχωριστικά μεταξύ των byte στην εξαγωγή δεκαεξαδικού." -#: library/stdtypes.rst:4272 +#: library/stdtypes.rst:4328 msgid "Return the data in the buffer as a list of elements. ::" msgstr "Επιστρέψτε τα δεδομένα στο buffer ως λίστα στοιχείων. ::" -#: library/stdtypes.rst:4274 +#: library/stdtypes.rst:4330 msgid "" ">>> memoryview(b'abc').tolist()\n" "[97, 98, 99]\n" @@ -7677,7 +7783,7 @@ msgstr "" ">>> m.tolist()\n" "[1.1, 2.2, 3.3]" -#: library/stdtypes.rst:4282 +#: library/stdtypes.rst:4338 msgid "" ":meth:`tolist` now supports all single character native formats in :mod:" "`struct` module syntax as well as multi-dimensional representations." @@ -7686,7 +7792,7 @@ msgstr "" "χαρακτήρων στη σύνταξη του :mod:`struct`, καθώς και πολυδιάστατες " "αναπαραστάσεις." -#: library/stdtypes.rst:4289 +#: library/stdtypes.rst:4345 msgid "" "Return a readonly version of the memoryview object. The original memoryview " "object is unchanged. ::" @@ -7694,7 +7800,7 @@ msgstr "" "Επιστρέφει μια έκδοση μόνο για ανάγνωση του αντικειμένου memoryview. Το " "αρχικό αντικείμενο memoryview είναι αμετάβλητο. ::" -#: library/stdtypes.rst:4292 +#: library/stdtypes.rst:4348 msgid "" ">>> m = memoryview(bytearray(b'abc'))\n" ">>> mm = m.toreadonly()\n" @@ -7720,7 +7826,7 @@ msgstr "" ">>> mm.tolist()\n" "[43, 98, 99]" -#: library/stdtypes.rst:4308 +#: library/stdtypes.rst:4364 msgid "" "Release the underlying buffer exposed by the memoryview object. Many " "objects take special actions when a view is held on them (for example, a :" @@ -7735,7 +7841,7 @@ msgstr "" "είναι βολική για την κατάργηση αυτών των περιορισμών (και απελευθερώνει " "οποιουσδήποτε αιωρούμενους πόρους) το συντομότερο δυνατό." -#: library/stdtypes.rst:4314 +#: library/stdtypes.rst:4370 msgid "" "After this method has been called, any further operation on the view raises " "a :class:`ValueError` (except :meth:`release` itself which can be called " @@ -7745,7 +7851,7 @@ msgstr "" "προβολή δημιουργεί μια :class:`ValueError` (εκτός από την ίδια την :meth:" "`release` που μπορεί να κληθεί πολλές φορές)::" -#: library/stdtypes.rst:4318 +#: library/stdtypes.rst:4374 msgid "" ">>> m = memoryview(b'abc')\n" ">>> m.release()\n" @@ -7761,7 +7867,7 @@ msgstr "" " File \"\", line 1, in \n" "ValueError: operation forbidden on released memoryview object" -#: library/stdtypes.rst:4325 +#: library/stdtypes.rst:4381 msgid "" "The context management protocol can be used for a similar effect, using the " "``with`` statement::" @@ -7769,7 +7875,7 @@ msgstr "" "Το πρωτόκολλο διαχείρισης περιεχομένου μπορεί να χρησιμοποιηθεί για παρόμοιο " "αποτέλεσμα, χρησιμοποιώντας τη δήλωση ``with``::" -#: library/stdtypes.rst:4328 +#: library/stdtypes.rst:4384 msgid "" ">>> with memoryview(b'abc') as m:\n" "... m[0]\n" @@ -7789,7 +7895,7 @@ msgstr "" " File \"\", line 1, in \n" "ValueError: operation forbidden on released memoryview object" -#: library/stdtypes.rst:4341 +#: library/stdtypes.rst:4397 msgid "" "Cast a memoryview to a new format or shape. *shape* defaults to " "``[byte_length//new_itemsize]``, which means that the result view will be " @@ -7803,7 +7909,7 @@ msgstr "" "memoryview, αλλά το ίδιο το buffer δεν αντιγράφεται. Οι υποστηριζόμενες " "μετατροπές είναι 1D -> C-:term:`contiguous` και C-contiguous -> 1D." -#: library/stdtypes.rst:4347 +#: library/stdtypes.rst:4403 msgid "" "The destination format is restricted to a single element native format in :" "mod:`struct` syntax. One of the formats must be a byte format ('B', 'b' or " @@ -7816,11 +7922,11 @@ msgstr "" "το αρχικό μήκος. Σημειώστε ότι όλα τα μήκη byte μπορεί να εξαρτώνται από το " "λειτουργικό σύστημα." -#: library/stdtypes.rst:4353 +#: library/stdtypes.rst:4409 msgid "Cast 1D/long to 1D/unsigned bytes::" msgstr "Μορφοποίηση από 1D/long σε 1D/unsigned bytes::" -#: library/stdtypes.rst:4355 +#: library/stdtypes.rst:4411 msgid "" ">>> import array\n" ">>> a = array.array('l', [1,2,3])\n" @@ -7864,11 +7970,11 @@ msgstr "" ">>> y.nbytes\n" "24" -#: library/stdtypes.rst:4376 +#: library/stdtypes.rst:4432 msgid "Cast 1D/unsigned bytes to 1D/char::" msgstr "Μορφοποίηση από 1D/unsigned bytes σε 1D/char::" -#: library/stdtypes.rst:4378 +#: library/stdtypes.rst:4434 msgid "" ">>> b = bytearray(b'zyz')\n" ">>> x = memoryview(b)\n" @@ -7892,11 +7998,11 @@ msgstr "" ">>> b\n" "bytearray(b'ayz')" -#: library/stdtypes.rst:4389 +#: library/stdtypes.rst:4445 msgid "Cast 1D/bytes to 3D/ints to 1D/signed char::" msgstr "Μορφοποίηση από 1D/bytes σε 3D/ints σε 1D/signed char::" -#: library/stdtypes.rst:4391 +#: library/stdtypes.rst:4447 msgid "" ">>> import struct\n" ">>> buf = struct.pack(\"i\"*12, *list(range(12)))\n" @@ -7946,11 +8052,11 @@ msgstr "" ">>> z.nbytes\n" "48" -#: library/stdtypes.rst:4415 +#: library/stdtypes.rst:4471 msgid "Cast 1D/unsigned long to 2D/unsigned long::" msgstr "Μορφοποίηση από 1D/unsigned long σε 2D/unsigned long::" -#: library/stdtypes.rst:4417 +#: library/stdtypes.rst:4473 msgid "" ">>> buf = struct.pack(\"L\"*6, *list(range(6)))\n" ">>> x = memoryview(buf)\n" @@ -7972,17 +8078,17 @@ msgstr "" ">>> y.tolist()\n" "[[0, 1, 2], [3, 4, 5]]" -#: library/stdtypes.rst:4429 +#: library/stdtypes.rst:4485 msgid "The source format is no longer restricted when casting to a byte view." msgstr "" "Η πηγαία μορφή δεν είναι πλέον περιορισμένη κατά τη μορφοποίηση σε μια όψη " "byte." -#: library/stdtypes.rst:4434 +#: library/stdtypes.rst:4490 msgid "Count the number of occurrences of *value*." msgstr "Μετράει τον αριθμό των εμφανίσεων του *value*." -#: library/stdtypes.rst:4440 +#: library/stdtypes.rst:4496 msgid "" "Return the index of the first occurrence of *value* (at or after index " "*start* and before index *stop*)." @@ -7990,20 +8096,20 @@ msgstr "" "Επιστρέφει τον δείκτη της πρώτης εμφάνισης του *value* (στην ή μετά τον " "δείκτη *start* και πριν από τον δείκτη *stop*)." -#: library/stdtypes.rst:4443 +#: library/stdtypes.rst:4499 msgid "Raises a :exc:`ValueError` if *value* cannot be found." msgstr "" "Κάνει raise μια :exc:`ValueError` αν δεν μπορεί να βρεθεί η τιμή *value*." -#: library/stdtypes.rst:4447 +#: library/stdtypes.rst:4503 msgid "There are also several readonly attributes available:" msgstr "Υπάρχουν επίσης αρκετά διαθέσιμα χαρακτηριστικά μόνο για ανάγνωση:" -#: library/stdtypes.rst:4451 +#: library/stdtypes.rst:4507 msgid "The underlying object of the memoryview::" msgstr "Το βασικό αντικείμενο του memoryview::" -#: library/stdtypes.rst:4453 +#: library/stdtypes.rst:4509 msgid "" ">>> b = bytearray(b'xyz')\n" ">>> m = memoryview(b)\n" @@ -8015,7 +8121,7 @@ msgstr "" ">>> m.obj is b\n" "True" -#: library/stdtypes.rst:4462 +#: library/stdtypes.rst:4518 msgid "" "``nbytes == product(shape) * itemsize == len(m.tobytes())``. This is the " "amount of space in bytes that the array would use in a contiguous " @@ -8025,7 +8131,7 @@ msgstr "" "ποσότητα χώρου σε byte που θα χρησιμοποιούσε ο πίνακας σε μια συνεχόμενη " "αναπαράσταση. Δεν ισούται απαραίτητα με ``len(m)``::" -#: library/stdtypes.rst:4466 +#: library/stdtypes.rst:4522 msgid "" ">>> import array\n" ">>> a = array.array('i', [1,2,3,4,5])\n" @@ -8057,11 +8163,11 @@ msgstr "" ">>> len(y.tobytes())\n" "12" -#: library/stdtypes.rst:4481 +#: library/stdtypes.rst:4537 msgid "Multi-dimensional arrays::" msgstr "Πολυδιάστατοι πίνακες::" -#: library/stdtypes.rst:4483 +#: library/stdtypes.rst:4539 msgid "" ">>> import struct\n" ">>> buf = struct.pack(\"d\"*12, *[1.5*x for x in range(12)])\n" @@ -8085,11 +8191,11 @@ msgstr "" ">>> y.nbytes\n" "96" -#: library/stdtypes.rst:4498 +#: library/stdtypes.rst:4554 msgid "A bool indicating whether the memory is read only." msgstr "Ένα bool που υποδεικνύει εάν η μνήμη είναι μόνο για ανάγνωση." -#: library/stdtypes.rst:4502 +#: library/stdtypes.rst:4558 msgid "" "A string containing the format (in :mod:`struct` module style) for each " "element in the view. A memoryview can be created from exporters with " @@ -8101,7 +8207,7 @@ msgstr "" "εξαγωγείς με συμβολοσειρές αυθαίρετης μορφής, αλλά ορισμένες μέθοδοι (π.χ. :" "meth:`tolist`) είναι περιορισμένες σε εγγενείς μορφές ενός στοιχείου." -#: library/stdtypes.rst:4507 +#: library/stdtypes.rst:4563 msgid "" "format ``'B'`` is now handled according to the struct module syntax. This " "means that ``memoryview(b'abc')[0] == b'abc'[0] == 97``." @@ -8109,11 +8215,11 @@ msgstr "" "η μορφή ``'B'`` αντιμετωπίζεται πλέον σύμφωνα με τη σύνταξη ενός struct " "module. Αυτό σημαίνει ότι ``memoryview(b'abc')[0] == b'abc'[0] == 97``." -#: library/stdtypes.rst:4513 +#: library/stdtypes.rst:4569 msgid "The size in bytes of each element of the memoryview::" msgstr "Το μέγεθος σε bytes κάθε στοιχείου στο memoryview::" -#: library/stdtypes.rst:4515 +#: library/stdtypes.rst:4571 msgid "" ">>> import array, struct\n" ">>> m = memoryview(array.array('H', [32000, 32001, 32002]))\n" @@ -8133,7 +8239,7 @@ msgstr "" ">>> struct.calcsize('H') == m.itemsize\n" "True" -#: library/stdtypes.rst:4526 +#: library/stdtypes.rst:4582 msgid "" "An integer indicating how many dimensions of a multi-dimensional array the " "memory represents." @@ -8141,7 +8247,7 @@ msgstr "" "Ένα ακέραιος αριθμός που δείχνει πόσες διαστάσεις ενός πολυδιάστατου πίνακα " "αντιπροσωπεύει η μνήμη." -#: library/stdtypes.rst:4531 +#: library/stdtypes.rst:4587 msgid "" "A tuple of integers the length of :attr:`ndim` giving the shape of the " "memory as an N-dimensional array." @@ -8149,11 +8255,11 @@ msgstr "" "Μια πλειάδα (tuple) ακεραίων με μήκος :attr:`ndim` δίνοντας το σχήμα της " "μνήμης ως πίνακα N-διαστάσεων." -#: library/stdtypes.rst:4542 +#: library/stdtypes.rst:4598 msgid "An empty tuple instead of ``None`` when ndim = 0." msgstr "Μια κενή πλειάδα (tuple) αντί για ``None`` όταν ndim = 0." -#: library/stdtypes.rst:4539 +#: library/stdtypes.rst:4595 msgid "" "A tuple of integers the length of :attr:`ndim` giving the size in bytes to " "access each element for each dimension of the array." @@ -8161,29 +8267,29 @@ msgstr "" "Μια πλειάδα ακεραίων με μήκος :attr:`ndim` που δίνει το μέγεθος σε bytes για " "την πρόσβαση σε κάθε στοιχείο για κάθε διάσταση του πίνακα." -#: library/stdtypes.rst:4547 +#: library/stdtypes.rst:4603 msgid "Used internally for PIL-style arrays. The value is informational only." msgstr "" "Χρησιμοποιείται εσωτερικά για συστοιχίες τύπου PIL. Η τιμή είναι μόνο " "ενημερωτική." -#: library/stdtypes.rst:4551 +#: library/stdtypes.rst:4607 msgid "A bool indicating whether the memory is C-:term:`contiguous`." msgstr "Ένα bool που υποδεικνύει εάν η μνήμη είναι C-:term:`contiguous`." -#: library/stdtypes.rst:4557 +#: library/stdtypes.rst:4613 msgid "A bool indicating whether the memory is Fortran :term:`contiguous`." msgstr "Ένα bool που υποδεικνύει εάν η μνήμη είναι Fortran :term:`contiguous`." -#: library/stdtypes.rst:4563 +#: library/stdtypes.rst:4619 msgid "A bool indicating whether the memory is :term:`contiguous`." msgstr "Ένα bool που υποδεικνύει εάν η μνήμη είναι :term:`contiguous`." -#: library/stdtypes.rst:4571 +#: library/stdtypes.rst:4627 msgid "Set Types --- :class:`set`, :class:`frozenset`" msgstr "Τύποι Συνόλου (Set) --- :class:`set`, :class:`frozenset`" -#: library/stdtypes.rst:4575 +#: library/stdtypes.rst:4631 msgid "" "A :dfn:`set` object is an unordered collection of distinct :term:`hashable` " "objects. Common uses include membership testing, removing duplicates from a " @@ -8199,7 +8305,7 @@ msgstr "" "διαφορά. (Για άλλα containers, δείτε τις ενσωματωμένες κλάσεις :class:" "`dict`, :class:`list`, και :class:`tuple` και το module :mod:`collections`)." -#: library/stdtypes.rst:4582 +#: library/stdtypes.rst:4638 msgid "" "Like other collections, sets support ``x in set``, ``len(set)``, and ``for x " "in set``. Being an unordered collection, sets do not record element " @@ -8212,7 +8318,7 @@ msgstr "" "τα σύνολα (sets) δεν υποστηρίζουν λειτουργίες ευρετηριοποίησης, " "τμηματοποίησης ή άλλη συμπεριφορά ακολουθίας." -#: library/stdtypes.rst:4587 +#: library/stdtypes.rst:4643 msgid "" "There are currently two built-in set types, :class:`set` and :class:" "`frozenset`. The :class:`set` type is mutable --- the contents can be " @@ -8233,7 +8339,7 @@ msgstr "" "δεν μπορεί να αλλάξει μετά τη δημιουργία του· μπορεί επομένως να " "χρησιμοποιηθεί ως κλειδί λεξικού ή ως στοιχείο άλλου συνόλου (set)." -#: library/stdtypes.rst:4595 +#: library/stdtypes.rst:4651 msgid "" "Non-empty sets (not frozensets) can be created by placing a comma-separated " "list of elements within braces, for example: ``{'jack', 'sjoerd'}``, in " @@ -8244,11 +8350,11 @@ msgstr "" "παράδειγμα: ``{'jack', 'sjoerd'}``, επιπλέον με τη χρήση του constructor " "του :class:`set`." -#: library/stdtypes.rst:4599 +#: library/stdtypes.rst:4655 msgid "The constructors for both classes work the same:" msgstr "Οι constructors και για τις δύο κλάσεις λειτουργούν το ίδιο:" -#: library/stdtypes.rst:4604 +#: library/stdtypes.rst:4660 msgid "" "Return a new set or frozenset object whose elements are taken from " "*iterable*. The elements of a set must be :term:`hashable`. To represent " @@ -8261,25 +8367,25 @@ msgstr "" "εσωτερικά σύνολα πρέπει να είναι :class:`frozenset` αντικείμενα. Εάν δεν " "έχει καθοριστεί το *iterable*, επιστρέφεται ένα νέο κενό σύνολο." -#: library/stdtypes.rst:4610 +#: library/stdtypes.rst:4666 msgid "Sets can be created by several means:" msgstr "Τα σύνολα μπορούν να δημιουργηθούν με διάφορους τρόπους:" -#: library/stdtypes.rst:4612 +#: library/stdtypes.rst:4668 msgid "" "Use a comma-separated list of elements within braces: ``{'jack', 'sjoerd'}``" msgstr "" "Χρησιμοποιώντας μια λίστα στοιχείων διαχωρισμένη με κόμματα: ``{'jack', " "'sjoerd'}``" -#: library/stdtypes.rst:4613 +#: library/stdtypes.rst:4669 msgid "" "Use a set comprehension: ``{c for c in 'abracadabra' if c not in 'abc'}``" msgstr "" "Χρησιμοποιώντας ένα set comprehension: ``{c for c in 'abracadabra' if c not " "in 'abc'}``" -#: library/stdtypes.rst:4614 +#: library/stdtypes.rst:4670 msgid "" "Use the type constructor: ``set()``, ``set('foobar')``, ``set(['a', 'b', " "'foo'])``" @@ -8287,7 +8393,7 @@ msgstr "" "Χρησιμοποιώντας τον τύπο constructor: ``set()``, ``set('foobar')``, " "``set(['a', 'b', 'foo'])``" -#: library/stdtypes.rst:4616 +#: library/stdtypes.rst:4672 msgid "" "Instances of :class:`set` and :class:`frozenset` provide the following " "operations:" @@ -8295,20 +8401,20 @@ msgstr "" "Τα στιγμιότυπα των :class:`set` και :class:`frozenset` παρέχουν τις " "ακόλουθες λειτουργίες:" -#: library/stdtypes.rst:4621 +#: library/stdtypes.rst:4677 msgid "Return the number of elements in set *s* (cardinality of *s*)." msgstr "" "Επιστρέφει τον αριθμό των στοιχείων στο σύνολο *s* (πληθικότητα του *s*)." -#: library/stdtypes.rst:4625 +#: library/stdtypes.rst:4681 msgid "Test *x* for membership in *s*." msgstr "Ελέγχει αν το *x* είναι μέρος στο *s*." -#: library/stdtypes.rst:4629 +#: library/stdtypes.rst:4685 msgid "Test *x* for non-membership in *s*." msgstr "Ελέγχει αν το *x* δεν είναι μέρος στο *s*." -#: library/stdtypes.rst:4633 +#: library/stdtypes.rst:4689 msgid "" "Return ``True`` if the set has no elements in common with *other*. Sets are " "disjoint if and only if their intersection is the empty set." @@ -8316,11 +8422,11 @@ msgstr "" "Επιστρέφει ``True`` εάν το σύνολο δεν έχει κοινά στοιχεία με το *other*. Τα " "σύνολα είναι ασύνδετα εάν και μόνο εάν η τομή τους είναι το κενό σύνολο." -#: library/stdtypes.rst:4639 +#: library/stdtypes.rst:4695 msgid "Test whether every element in the set is in *other*." msgstr "Ελέγχει εάν κάθε στοιχείο στο σύνολο βρίσκεται στο *other*." -#: library/stdtypes.rst:4643 +#: library/stdtypes.rst:4699 msgid "" "Test whether the set is a proper subset of *other*, that is, ``set <= other " "and set != other``." @@ -8328,11 +8434,11 @@ msgstr "" "Ελέγχει εάν το σύνολο είναι σωστό υποσύνολο του *other*, δηλαδή, ``set <= " "other and set != other``." -#: library/stdtypes.rst:4649 +#: library/stdtypes.rst:4705 msgid "Test whether every element in *other* is in the set." msgstr "Ελέγχει αν κάθε στοιχείο του *other* είναι στο σύνολο." -#: library/stdtypes.rst:4653 +#: library/stdtypes.rst:4709 msgid "" "Test whether the set is a proper superset of *other*, that is, ``set >= " "other and set != other``." @@ -8340,32 +8446,32 @@ msgstr "" "Ελέγχει αν το σύνολο είναι σωστό υπερσύνολο του *other*, δηλαδή, ``set >= " "other and set != other``." -#: library/stdtypes.rst:4659 +#: library/stdtypes.rst:4715 msgid "Return a new set with elements from the set and all others." msgstr "Επιστρέφει ένα νέο σύνολο με στοιχεία από το σύνολο και όλα τα άλλα." -#: library/stdtypes.rst:4664 +#: library/stdtypes.rst:4720 msgid "Return a new set with elements common to the set and all others." msgstr "" "Επιστρέφει ένα νέο σύνολο με στοιχεία κοινά στο σύνολο και σε όλα τα άλλα." -#: library/stdtypes.rst:4669 +#: library/stdtypes.rst:4725 msgid "Return a new set with elements in the set that are not in the others." msgstr "" "Επιστρέφει ένα νέο σύνολο με στοιχεία στο σύνολο που δεν υπάρχουν στα άλλα." -#: library/stdtypes.rst:4674 +#: library/stdtypes.rst:4730 msgid "" "Return a new set with elements in either the set or *other* but not both." msgstr "" "Επιστρέφει ένα νέο σύνολο με στοιχεία είτε στο σύνολο είτε στο *other* αλλά " "όχι και στα δύο." -#: library/stdtypes.rst:4678 +#: library/stdtypes.rst:4734 msgid "Return a shallow copy of the set." msgstr "Επιστρέφει ένα ρηχό αντίγραφο του συνόλου." -#: library/stdtypes.rst:4681 +#: library/stdtypes.rst:4737 msgid "" "Note, the non-operator versions of :meth:`union`, :meth:`intersection`, :" "meth:`difference`, :meth:`symmetric_difference`, :meth:`issubset`, and :meth:" @@ -8382,7 +8488,7 @@ msgstr "" "σφάλματα όπως ``set('abc') & 'cbs'`` υπέρ του πιο ευανάγνωστου ``set('abc')." "intersection('cbs')``." -#: library/stdtypes.rst:4688 +#: library/stdtypes.rst:4744 msgid "" "Both :class:`set` and :class:`frozenset` support set to set comparisons. Two " "sets are equal if and only if every element of each set is contained in the " @@ -8400,7 +8506,7 @@ msgstr "" "είναι σωστό υπερσύνολο του δεύτερου συνόλου (είναι υπερσύνολο αλλά δεν είναι " "ίσο)." -#: library/stdtypes.rst:4695 +#: library/stdtypes.rst:4751 msgid "" "Instances of :class:`set` are compared to instances of :class:`frozenset` " "based on their members. For example, ``set('abc') == frozenset('abc')`` " @@ -8411,7 +8517,7 @@ msgstr "" "frozenset('abc')`` επιστρέφει ``True`` και το ίδιο συμβαίνει και με το " "``set('abc') in set([frozenset('abc')])``." -#: library/stdtypes.rst:4699 +#: library/stdtypes.rst:4755 msgid "" "The subset and equality comparisons do not generalize to a total ordering " "function. For example, any two nonempty disjoint sets are not equal and are " @@ -8423,7 +8529,7 @@ msgstr "" "δεν είναι ίσα και δεν είναι υποσύνολα το ένα του άλλου, επομένως *όλα* τα " "ακόλουθα επιστρέφουν ``False``: ``ab``." -#: library/stdtypes.rst:4704 +#: library/stdtypes.rst:4760 msgid "" "Since sets only define partial ordering (subset relationships), the output " "of the :meth:`list.sort` method is undefined for lists of sets." @@ -8431,13 +8537,13 @@ msgstr "" "Δεδομένου ότι τα σύνολα ορίζουν μόνο μερική σειρά (σχέσεις υποσυνόλων), η " "έξοδος της μεθόδου :meth:`list.sort` δεν έχει οριστεί για λίστες συνόλων." -#: library/stdtypes.rst:4707 +#: library/stdtypes.rst:4763 msgid "Set elements, like dictionary keys, must be :term:`hashable`." msgstr "" "Τα στοιχεία συνόλου, όπως τα κλειδιά λεξικού, πρέπει να είναι :term:" "`hashable`." -#: library/stdtypes.rst:4709 +#: library/stdtypes.rst:4765 msgid "" "Binary operations that mix :class:`set` instances with :class:`frozenset` " "return the type of the first operand. For example: ``frozenset('ab') | " @@ -8448,7 +8554,7 @@ msgstr "" "``frozenset('ab') | set('bc')`` επιστρέφει ένα στιγμιότυπο του :class:" "`frozenset`." -#: library/stdtypes.rst:4713 +#: library/stdtypes.rst:4769 msgid "" "The following table lists operations available for :class:`set` that do not " "apply to immutable instances of :class:`frozenset`:" @@ -8456,32 +8562,32 @@ msgstr "" "Ο παρακάτω πίνακας παραθέτει λειτουργίες που είναι διαθέσιμες για :class:" "`set` που δεν ισχύουν για αμετάβλητα στιγμιότυπα της :class:`frozenset`:" -#: library/stdtypes.rst:4719 +#: library/stdtypes.rst:4775 msgid "Update the set, adding elements from all others." msgstr "Ενημερώνει το σύνολο (set), προσθέτοντας στοιχεία από όλα τα άλλα." -#: library/stdtypes.rst:4724 +#: library/stdtypes.rst:4780 msgid "Update the set, keeping only elements found in it and all others." msgstr "" "Ενημερώνει το σύνολο, διατηρώντας μόνο τα στοιχεία που βρίσκονται σε αυτό " "και όλα τα άλλα." -#: library/stdtypes.rst:4729 +#: library/stdtypes.rst:4785 msgid "Update the set, removing elements found in others." msgstr "Ενημερώνει το σύνολο, αφαιρώντας στοιχεία που βρίσκονται σε άλλα." -#: library/stdtypes.rst:4734 +#: library/stdtypes.rst:4790 msgid "" "Update the set, keeping only elements found in either set, but not in both." msgstr "" "Ενημερώνει το σύνολο, διατηρώντας μόνο τα στοιχεία που βρίσκονται σε κάθε " "σύνολο, αλλά όχι και στα δύο." -#: library/stdtypes.rst:4738 +#: library/stdtypes.rst:4794 msgid "Add element *elem* to the set." msgstr "Προσθέτει το στοιχείο *elem* στο σύνολο." -#: library/stdtypes.rst:4742 +#: library/stdtypes.rst:4798 msgid "" "Remove element *elem* from the set. Raises :exc:`KeyError` if *elem* is not " "contained in the set." @@ -8489,11 +8595,11 @@ msgstr "" "Αφαιρεί το στοιχείο *elem* από το σύνολο. Κάνει raise τη :exc:`KeyError` " "εάν το *elem* δεν περιέχεται στο σύνολο." -#: library/stdtypes.rst:4747 +#: library/stdtypes.rst:4803 msgid "Remove element *elem* from the set if it is present." msgstr "Αφαιρεί το στοιχείο *elem* από το σύνολο εάν υπάρχει." -#: library/stdtypes.rst:4751 +#: library/stdtypes.rst:4807 msgid "" "Remove and return an arbitrary element from the set. Raises :exc:`KeyError` " "if the set is empty." @@ -8501,11 +8607,11 @@ msgstr "" "Αφαιρεί και επιστρέφει ένα αυθαίρετο στοιχείο από το σύνολο. Κάνει raise " "μια :exc:`KeyError` εάν το σύνολο είναι κενό." -#: library/stdtypes.rst:4756 +#: library/stdtypes.rst:4812 msgid "Remove all elements from the set." msgstr "Αφαιρεί όλα τα στοιχεία από το σύνολο (set)." -#: library/stdtypes.rst:4759 +#: library/stdtypes.rst:4815 msgid "" "Note, the non-operator versions of the :meth:`update`, :meth:" "`intersection_update`, :meth:`difference_update`, and :meth:" @@ -8517,7 +8623,7 @@ msgstr "" "`symmetric_difference_update` θα δέχονται οποιοδήποτε επαναλαμβανόμενο " "στοιχείο ως όρισμα." -#: library/stdtypes.rst:4764 +#: library/stdtypes.rst:4820 msgid "" "Note, the *elem* argument to the :meth:`~object.__contains__`, :meth:" "`remove`, and :meth:`discard` methods may be a set. To support searching " @@ -8528,11 +8634,11 @@ msgstr "" "υποστήριξη της αναζήτησης για ένα ισοδύναμο παγωμένο σύνολο (frozenset), ένα " "προσωρινό δημιουργείται από το *elem*." -#: library/stdtypes.rst:4773 +#: library/stdtypes.rst:4829 msgid "Mapping Types --- :class:`dict`" msgstr "Τύποι αντιστοίχισης --- :class:`dict`" -#: library/stdtypes.rst:4783 +#: library/stdtypes.rst:4839 msgid "" "A :term:`mapping` object maps :term:`hashable` values to arbitrary objects. " "Mappings are mutable objects. There is currently only one standard mapping " @@ -8547,7 +8653,7 @@ msgstr "" "class:`list`, :class:`set`, και :class:`tuple` κλάσεις, και το module :mod:" "`collections`.)" -#: library/stdtypes.rst:4789 +#: library/stdtypes.rst:4845 msgid "" "A dictionary's keys are *almost* arbitrary values. Values that are not :" "term:`hashable`, that is, values containing lists, dictionaries or other " @@ -8562,7 +8668,7 @@ msgstr "" "συγκρίνονται ίσες (όπως ``1``, ``1.0``, και ``True``) μπορούν να " "χρησιμοποιηθούν εναλλακτικά για το index της ίδιας καταχώρισης λεξικού." -#: library/stdtypes.rst:4800 +#: library/stdtypes.rst:4856 msgid "" "Return a new dictionary initialized from an optional positional argument and " "a possibly empty set of keyword arguments." @@ -8570,11 +8676,11 @@ msgstr "" "Επιστρέφει ένα νέο λεξικό που έχει αρχικοποιηθεί από ένα προαιρετικό όρισμα " "θέσης και ένα πιθανό κενό σύνολο ορισμάτων λέξεων-κλειδιών." -#: library/stdtypes.rst:4803 +#: library/stdtypes.rst:4859 msgid "Dictionaries can be created by several means:" msgstr "Τα λεξικά μπορούν να δημιουργηθούν με διάφορους τρόπους:" -#: library/stdtypes.rst:4805 +#: library/stdtypes.rst:4861 msgid "" "Use a comma-separated list of ``key: value`` pairs within braces: ``{'jack': " "4098, 'sjoerd': 4127}`` or ``{4098: 'jack', 4127: 'sjoerd'}``" @@ -8583,13 +8689,13 @@ msgstr "" "σε αγκύλες: ``{'jack': 4098, 'sjoerd': 4127}`` or ``{4098: 'jack', 4127: " "'sjoerd'}``" -#: library/stdtypes.rst:4807 +#: library/stdtypes.rst:4863 msgid "Use a dict comprehension: ``{}``, ``{x: x ** 2 for x in range(10)}``" msgstr "" "Χρησιμοποιήστε ένα comprehension λεξικού: ``{}``, ``{x: x ** 2 for x in " "range(10)}``" -#: library/stdtypes.rst:4808 +#: library/stdtypes.rst:4864 msgid "" "Use the type constructor: ``dict()``, ``dict([('foo', 100), ('bar', " "200)])``, ``dict(foo=100, bar=200)``" @@ -8597,7 +8703,7 @@ msgstr "" "Χρησιμοποιήστε τον κατασκευαστή τύπου: ``dict()``, ``dict([('foo', 100), " "('bar', 200)])``, ``dict(foo=100, bar=200)``" -#: library/stdtypes.rst:4811 +#: library/stdtypes.rst:4867 msgid "" "If no positional argument is given, an empty dictionary is created. If a " "positional argument is given and it defines a ``keys()`` method, a " @@ -8619,7 +8725,7 @@ msgstr "" "τιμή. Εάν ένα κλειδί εμφανίζεται περισσότερες από μία φορές, η τελευταία " "τιμή για αυτό το κλειδί γίνεται η αντίστοιχη τιμή στο νέο λεξικό." -#: library/stdtypes.rst:4821 +#: library/stdtypes.rst:4877 msgid "" "If keyword arguments are given, the keyword arguments and their values are " "added to the dictionary created from the positional argument. If a key " @@ -8631,7 +8737,7 @@ msgstr "" "Εάν υπάρχει ήδη ένα κλειδί που προστίθεται, η τιμή από το όρισμα λέξης-" "κλειδιού αντικαθιστά την τιμή από το όρισμα θέσης." -#: library/stdtypes.rst:4844 +#: library/stdtypes.rst:4900 msgid "" "Providing keyword arguments as in the first example only works for keys that " "are valid Python identifiers. Otherwise, any valid keys can be used." @@ -8640,7 +8746,7 @@ msgstr "" "για κλειδιά που είναι έγκυρα αναγνωριστικά Python. Διαφορετικά, μπορούν να " "χρησιμοποιηθούν οποιαδήποτε έγκυρα κλειδιά." -#: library/stdtypes.rst:4829 +#: library/stdtypes.rst:4885 msgid "" "Dictionaries compare equal if and only if they have the same ``(key, " "value)`` pairs (regardless of ordering). Order comparisons ('<', '<=', '>=', " @@ -8654,7 +8760,7 @@ msgstr "" "λεξικού και η ισότητα, τα ακόλουθα παραδείγματα επιστρέφουν όλα ένα λεξικό " "ίσο με ``{\"one\": 1, \"two\": 2, \"three\": 3}``::" -#: library/stdtypes.rst:4835 +#: library/stdtypes.rst:4891 msgid "" ">>> a = dict(one=1, two=2, three=3)\n" ">>> b = {'one': 1, 'two': 2, 'three': 3}\n" @@ -8674,7 +8780,7 @@ msgstr "" ">>> a == b == c == d == e == f\n" "True" -#: library/stdtypes.rst:4847 +#: library/stdtypes.rst:4903 msgid "" "Dictionaries preserve insertion order. Note that updating a key does not " "affect the order. Keys added after deletion are inserted at the end. ::" @@ -8683,7 +8789,7 @@ msgstr "" "κλειδιού δεν επηρεάζει τη σειρά. Τα κλειδιά που προστέθηκαν μετά τη " "διαγραφή εισάγονται στο τέλος. ::" -#: library/stdtypes.rst:4850 +#: library/stdtypes.rst:4906 msgid "" ">>> d = {\"one\": 1, \"two\": 2, \"three\": 3, \"four\": 4}\n" ">>> d\n" @@ -8715,7 +8821,7 @@ msgstr "" ">>> d\n" "{'one': 42, 'three': 3, 'four': 4, 'two': None}" -#: library/stdtypes.rst:4865 +#: library/stdtypes.rst:4921 msgid "" "Dictionary order is guaranteed to be insertion order. This behavior was an " "implementation detail of CPython from 3.6." @@ -8723,7 +8829,7 @@ msgstr "" "Η σειρά λεξικού είναι εγγυημένη ότι είναι η σειρά εισαγωγής. Αυτή η " "συμπεριφορά ήταν μια λεπτομέρεια υλοποίηση της CPython από την έκδοση 3.6." -#: library/stdtypes.rst:4869 +#: library/stdtypes.rst:4925 msgid "" "These are the operations that dictionaries support (and therefore, custom " "mapping types should support too):" @@ -8731,16 +8837,16 @@ msgstr "" "Αυτές είναι οι λειτουργίες που υποστηρίζουν τα λεξικά (και επομένως, θα " "πρέπει να υποστηρίζουν και προσαρμοσμένους τύπους αντιστοίχισης επίσης):" -#: library/stdtypes.rst:4874 +#: library/stdtypes.rst:4930 msgid "Return a list of all the keys used in the dictionary *d*." msgstr "" "Επιστρέφει μια λίστα με όλα τα κλειδιά που χρησιμοποιούνται στο λεξικό *d*." -#: library/stdtypes.rst:4878 +#: library/stdtypes.rst:4934 msgid "Return the number of items in the dictionary *d*." msgstr "Επιστρέφει τον αριθμό των στοιχείων στο λεξικό *d*." -#: library/stdtypes.rst:4882 +#: library/stdtypes.rst:4938 msgid "" "Return the item of *d* with key *key*. Raises a :exc:`KeyError` if *key* is " "not in the map." @@ -8748,7 +8854,7 @@ msgstr "" "Επιστρέφει το στοιχείο του *d* με το κλειδί *key*. Κάνει raise μια :exc:" "`KeyError` εάν το *key* δεν υπάρχει για να αντιστοιχηθεί." -#: library/stdtypes.rst:4887 +#: library/stdtypes.rst:4943 msgid "" "If a subclass of dict defines a method :meth:`__missing__` and *key* is not " "present, the ``d[key]`` operation calls that method with the key *key* as " @@ -8767,7 +8873,7 @@ msgstr "" "exc:`KeyError`. To :meth:`__missing__` πρέπει να είναι μέθοδος∙ δεν μπορεί " "να είναι ένα στιγμιότυπο μεταβλητής::" -#: library/stdtypes.rst:4895 +#: library/stdtypes.rst:4951 msgid "" ">>> class Counter(dict):\n" "... def __missing__(self, key):\n" @@ -8791,7 +8897,7 @@ msgstr "" ">>> c['red']\n" "1" -#: library/stdtypes.rst:4906 +#: library/stdtypes.rst:4962 msgid "" "The example above shows part of the implementation of :class:`collections." "Counter`. A different ``__missing__`` method is used by :class:`collections." @@ -8801,11 +8907,11 @@ msgstr "" "Counter`. Μια διαφορετική μέθοδος ``__missing__`` χρησιμοποιείται από την :" "class:`collections.defaultdict`." -#: library/stdtypes.rst:4912 +#: library/stdtypes.rst:4968 msgid "Set ``d[key]`` to *value*." msgstr "Ορίζει το ``d[key]`` στο *value*." -#: library/stdtypes.rst:4916 +#: library/stdtypes.rst:4972 msgid "" "Remove ``d[key]`` from *d*. Raises a :exc:`KeyError` if *key* is not in the " "map." @@ -8813,16 +8919,16 @@ msgstr "" "Αφαιρεί το ``d[key]`` από το *d*. Κάνει raise ένα :exc:`KeyError` εάν το " "*key* δεν υπάρχει για αντιστοίχιση." -#: library/stdtypes.rst:4921 +#: library/stdtypes.rst:4977 msgid "Return ``True`` if *d* has a key *key*, else ``False``." msgstr "" "Επιστρέφει ``True`` εάν το *d* έχει ένα κλειδί *key*, διαφορετικά ``False``." -#: library/stdtypes.rst:4925 +#: library/stdtypes.rst:4981 msgid "Equivalent to ``not key in d``." msgstr "Ισοδυναμεί με ``not key in d``." -#: library/stdtypes.rst:4929 +#: library/stdtypes.rst:4985 msgid "" "Return an iterator over the keys of the dictionary. This is a shortcut for " "``iter(d.keys())``." @@ -8830,21 +8936,21 @@ msgstr "" "Επιστρέφει έναν iterator πάνω από τα κλειδιά του λεξικού. Αυτή είναι μια " "συντόμευση για ``iter(d.keys())``." -#: library/stdtypes.rst:4934 +#: library/stdtypes.rst:4990 msgid "Remove all items from the dictionary." msgstr "Αφαιρεί όλα τα στοιχεία από το λεξικό." -#: library/stdtypes.rst:4938 +#: library/stdtypes.rst:4994 msgid "Return a shallow copy of the dictionary." msgstr "Επιστρέφει ένα ρηχό αντίγραφο του λεξικού." -#: library/stdtypes.rst:4942 +#: library/stdtypes.rst:4998 msgid "" "Create a new dictionary with keys from *iterable* and values set to *value*." msgstr "" "Δημιουργεί ένα νέο λεξικό με κλειδιά από το *iterable* και τιμές ως *value*." -#: library/stdtypes.rst:4944 +#: library/stdtypes.rst:5000 msgid "" ":meth:`fromkeys` is a class method that returns a new dictionary. *value* " "defaults to ``None``. All of the values refer to just a single instance, so " @@ -8859,7 +8965,7 @@ msgstr "" "διαφορετικές τιμές, χρησιμοποιήστε αντ' αυτού ένα :ref:`dict comprehension " "`." -#: library/stdtypes.rst:4952 +#: library/stdtypes.rst:5008 msgid "" "Return the value for *key* if *key* is in the dictionary, else *default*. If " "*default* is not given, it defaults to ``None``, so that this method never " @@ -8869,7 +8975,7 @@ msgstr "" "*default*. Εάν το *default* δεν δίνεται, ορίζεται από προεπιλογή σε " "``None``, έτσι ώστε αυτή η μέθοδος να μην κάνει raise μια :exc:`KeyError`." -#: library/stdtypes.rst:4958 +#: library/stdtypes.rst:5014 msgid "" "Return a new view of the dictionary's items (``(key, value)`` pairs). See " "the :ref:`documentation of view objects `." @@ -8877,7 +8983,7 @@ msgstr "" "Επιστρέφει μια νέα όψη των στοιχείων του λεξικού (``(key, value)`` ζεύγη). " "Δείτε την :ref:`documentation of view objects `." -#: library/stdtypes.rst:4963 +#: library/stdtypes.rst:5019 msgid "" "Return a new view of the dictionary's keys. See the :ref:`documentation of " "view objects `." @@ -8885,7 +8991,7 @@ msgstr "" "Επιστρέφει μια νέα όψη των κλειδιών του λεξικού. Δείτε το :ref:" "`documentation of view objects `." -#: library/stdtypes.rst:4968 +#: library/stdtypes.rst:5024 msgid "" "If *key* is in the dictionary, remove it and return its value, else return " "*default*. If *default* is not given and *key* is not in the dictionary, a :" @@ -8895,7 +9001,7 @@ msgstr "" "διαφορετικά επιστρέφει *default*. Εάν *default* δεν δίνεται και το *key* " "δεν είναι στο λεξικό, γίνεται raise ένα :exc:`KeyError`." -#: library/stdtypes.rst:4974 +#: library/stdtypes.rst:5030 msgid "" "Remove and return a ``(key, value)`` pair from the dictionary. Pairs are " "returned in :abbr:`LIFO (last-in, first-out)` order." @@ -8903,7 +9009,7 @@ msgstr "" "Αφαιρεί και επιστρέφει ένα ζεύγος ``(key, value)`` από το λεξικό. Τα ζεύγη " "επιστρέφονται με τη σειρά :abbr:`LIFO (last-in, first-out)`." -#: library/stdtypes.rst:4977 +#: library/stdtypes.rst:5033 msgid "" ":meth:`popitem` is useful to destructively iterate over a dictionary, as " "often used in set algorithms. If the dictionary is empty, calling :meth:" @@ -8913,7 +9019,7 @@ msgstr "" "λεξικό, όπως χρησιμοποιείται συχνά σε αλγόριθμους συνόλου. Εάν το λεξικό " "είναι κενό, η κλήση της :meth:`popitem` κάνει raise ένα :exc:`KeyError`." -#: library/stdtypes.rst:4981 +#: library/stdtypes.rst:5037 msgid "" "LIFO order is now guaranteed. In prior versions, :meth:`popitem` would " "return an arbitrary key/value pair." @@ -8921,7 +9027,7 @@ msgstr "" "Η σειρά LIFO είναι πλέον εγγυημένη. Σε προηγούμενες εκδόσεις, η :meth:" "`popitem` επιστρέφει ένα αυθαίρετο ζεύγος κλειδιού/τιμής." -#: library/stdtypes.rst:4987 +#: library/stdtypes.rst:5043 msgid "" "Return a reverse iterator over the keys of the dictionary. This is a " "shortcut for ``reversed(d.keys())``." @@ -8929,7 +9035,7 @@ msgstr "" "Επιστρέφει έναν αντίστροφο iterator πάνω από τα κλειδιά του λεξικού. Αυτή " "είναι μια συντόμευση για ``reversed(d.keys())``." -#: library/stdtypes.rst:4994 +#: library/stdtypes.rst:5050 msgid "" "If *key* is in the dictionary, return its value. If not, insert *key* with " "a value of *default* and return *default*. *default* defaults to ``None``." @@ -8938,7 +9044,7 @@ msgstr "" "εισάγετε το *key* με τιμή *default* και επιστρέφει *default*. Το *default* " "από προεπιλογή είναι ``None``." -#: library/stdtypes.rst:5000 +#: library/stdtypes.rst:5056 msgid "" "Update the dictionary with the key/value pairs from *other*, overwriting " "existing keys. Return ``None``." @@ -8946,7 +9052,7 @@ msgstr "" "Ενημερώνει το λεξικό με τα ζεύγη κλειδιών/τιμών από το *other*, " "αντικαθιστώντας τα υπάρχοντα κλειδιά. Επιστρέφει ``None``." -#: library/stdtypes.rst:5003 +#: library/stdtypes.rst:5059 msgid "" ":meth:`update` accepts either another object with a ``keys()`` method (in " "which case :meth:`~object.__getitem__` is called with every key returned " @@ -8961,7 +9067,7 @@ msgstr "" "κλειδιών, το λεξικό ενημερώνεται στη συνέχεια με αυτά τα ζεύγη κλειδιών/" "τιμών: ``d.update(red=1, blue=2)``." -#: library/stdtypes.rst:5011 +#: library/stdtypes.rst:5067 msgid "" "Return a new view of the dictionary's values. See the :ref:`documentation " "of view objects `." @@ -8969,7 +9075,7 @@ msgstr "" "Επιστρέφει μια νέα όψη των τιμών του λεξικού. Δείτε την :ref:`documentation " "of view objects `." -#: library/stdtypes.rst:5014 +#: library/stdtypes.rst:5070 msgid "" "An equality comparison between one ``dict.values()`` view and another will " "always return ``False``. This also applies when comparing ``dict.values()`` " @@ -8979,7 +9085,7 @@ msgstr "" "επιστρέφει πάντα ``False``. Αυτό ισχύει επίσης όταν συγκρίνετε το ``dict." "values()`` με τον εαυτό της::" -#: library/stdtypes.rst:5018 +#: library/stdtypes.rst:5074 msgid "" ">>> d = {'a': 1}\n" ">>> d.values() == d.values()\n" @@ -8989,7 +9095,7 @@ msgstr "" ">>> d.values() == d.values()\n" "False" -#: library/stdtypes.rst:5024 +#: library/stdtypes.rst:5080 msgid "" "Create a new dictionary with the merged keys and values of *d* and *other*, " "which must both be dictionaries. The values of *other* take priority when " @@ -8999,7 +9105,7 @@ msgstr "" "και *other*, τα οποία πρέπει να είναι και τα δύο λεξικά. Οι τιμές του " "*other* έχουν προτεραιότητα όταν τα κλειδιά των *d* και *other* είναι κοινά." -#: library/stdtypes.rst:5032 +#: library/stdtypes.rst:5088 msgid "" "Update the dictionary *d* with keys and values from *other*, which may be " "either a :term:`mapping` or an :term:`iterable` of key/value pairs. The " @@ -9010,11 +9116,11 @@ msgstr "" "τιμές του *other* έχουν προτεραιότητα όταν τα κλειδιά των το *d* και *other* " "είναι κοινά." -#: library/stdtypes.rst:5038 +#: library/stdtypes.rst:5094 msgid "Dictionaries and dictionary views are reversible. ::" msgstr "Τα λεξικά και οι όψεις λεξικών είναι αναστρέψιμες. ::" -#: library/stdtypes.rst:5040 +#: library/stdtypes.rst:5096 msgid "" ">>> d = {\"one\": 1, \"two\": 2, \"three\": 3, \"four\": 4}\n" ">>> d\n" @@ -9036,11 +9142,11 @@ msgstr "" ">>> list(reversed(d.items()))\n" "[('four', 4), ('three', 3), ('two', 2), ('one', 1)]" -#: library/stdtypes.rst:5050 +#: library/stdtypes.rst:5106 msgid "Dictionaries are now reversible." msgstr "Τα λεξικά είναι πλέον αναστρέψιμα." -#: library/stdtypes.rst:5055 +#: library/stdtypes.rst:5111 msgid "" ":class:`types.MappingProxyType` can be used to create a read-only view of a :" "class:`dict`." @@ -9048,11 +9154,11 @@ msgstr "" "Η :class:`types.MappingProxyType` μπορεί να χρησιμοποιηθεί για τη δημιουργία " "μιας όψης μόνο για ανάγνωση μιας :class:`dict`." -#: library/stdtypes.rst:5062 +#: library/stdtypes.rst:5118 msgid "Dictionary view objects" msgstr "Αντικείμενα όψης λεξικού" -#: library/stdtypes.rst:5064 +#: library/stdtypes.rst:5120 msgid "" "The objects returned by :meth:`dict.keys`, :meth:`dict.values` and :meth:" "`dict.items` are *view objects*. They provide a dynamic view on the " @@ -9064,7 +9170,7 @@ msgstr "" "Παρέχουν μια δυναμική όψη στις εγγραφές του λεξικού, που σημαίνει ότι όταν " "αλλάζει το λεξικό, η όψη αντικατοπτρίζει αυτές τις αλλαγές." -#: library/stdtypes.rst:5069 +#: library/stdtypes.rst:5125 msgid "" "Dictionary views can be iterated over to yield their respective data, and " "support membership tests:" @@ -9072,11 +9178,11 @@ msgstr "" "Οι όψεις λεξικού μπορούν να γίνουν iterate για την απόδοση των αντίστοιχων " "δεδομένων τους και την υποστήριξη ελέγχων για το αν είναι μέρος του:" -#: library/stdtypes.rst:5074 +#: library/stdtypes.rst:5130 msgid "Return the number of entries in the dictionary." msgstr "Επιστρέφει τον αριθμό των καταχωρήσεων στο λεξικό." -#: library/stdtypes.rst:5078 +#: library/stdtypes.rst:5134 msgid "" "Return an iterator over the keys, values or items (represented as tuples of " "``(key, value)``) in the dictionary." @@ -9084,7 +9190,7 @@ msgstr "" "Επιστρέφει έναν iterator πάνω στα κλειδιά, τις τιμές ή τα στοιχεία (που " "αντιπροσωπεύονται ως πλειάδες (tuples) του ``(key, value)`` στο λεξικό." -#: library/stdtypes.rst:5081 +#: library/stdtypes.rst:5137 msgid "" "Keys and values are iterated over in insertion order. This allows the " "creation of ``(value, key)`` pairs using :func:`zip`: ``pairs = zip(d." @@ -9097,7 +9203,7 @@ msgstr "" "δημιουργήσετε την ίδια λίστα είναι ``pairs = [(v, k) for (k, v) in d." "items()]``." -#: library/stdtypes.rst:5086 +#: library/stdtypes.rst:5142 msgid "" "Iterating views while adding or deleting entries in the dictionary may raise " "a :exc:`RuntimeError` or fail to iterate over all entries." @@ -9106,11 +9212,11 @@ msgstr "" "μπορεί να κάνει raise μια :exc:`RuntimeError` ή να αποτύχει το iterate σε " "όλες τις καταχωρήσεις." -#: library/stdtypes.rst:5089 +#: library/stdtypes.rst:5145 msgid "Dictionary order is guaranteed to be insertion order." msgstr "Η σειρά λεξικού είναι εγγυημένη σειρά εισαγωγής." -#: library/stdtypes.rst:5094 +#: library/stdtypes.rst:5150 msgid "" "Return ``True`` if *x* is in the underlying dictionary's keys, values or " "items (in the latter case, *x* should be a ``(key, value)`` tuple)." @@ -9119,7 +9225,7 @@ msgstr "" "ή τα στοιχεία του υποκείμενου λεξικού (στην τελευταία περίπτωση, το *x* θα " "πρέπει να είναι μια ``(key, value)`` πλειάδα (tuple))." -#: library/stdtypes.rst:5099 +#: library/stdtypes.rst:5155 msgid "" "Return a reverse iterator over the keys, values or items of the dictionary. " "The view will be iterated in reverse order of the insertion." @@ -9128,11 +9234,11 @@ msgstr "" "στοιχεία του λεξικού. Η όψη θα γίνει iterate με την αντίστροφη σειρά από την " "εισαγωγή." -#: library/stdtypes.rst:5102 +#: library/stdtypes.rst:5158 msgid "Dictionary views are now reversible." msgstr "Οι όψεις λεξικού είναι πλέον αναστρέψιμες." -#: library/stdtypes.rst:5107 +#: library/stdtypes.rst:5163 msgid "" "Return a :class:`types.MappingProxyType` that wraps the original dictionary " "to which the view refers." @@ -9140,7 +9246,7 @@ msgstr "" "Επιστρέφει μια :class:`types.MappingProxyType` που αναδιπλώνει το αρχικό " "λεξικό στο οποίο αναφέρεται η όψη." -#: library/stdtypes.rst:5112 +#: library/stdtypes.rst:5168 msgid "" "Keys views are set-like since their entries are unique and :term:`hashable`. " "Items views also have set-like operations since the (key, value) pairs are " @@ -9166,11 +9272,11 @@ msgstr "" "όψεις που μοιάζουν με σύνολο δέχονται οποιοδήποτε iterable ως άλλο τελεστή, " "σε αντίθεση με τα σύνολα που δέχονται μόνο σύνολα ως είσοδο." -#: library/stdtypes.rst:5124 +#: library/stdtypes.rst:5180 msgid "An example of dictionary view usage::" msgstr "Ένα παράδειγμα χρήσης όψης λεξικού::" -#: library/stdtypes.rst:5126 +#: library/stdtypes.rst:5182 msgid "" ">>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}\n" ">>> keys = dishes.keys()\n" @@ -9248,11 +9354,11 @@ msgstr "" ">>> values.mapping['spam']\n" "500" -#: library/stdtypes.rst:5168 +#: library/stdtypes.rst:5224 msgid "Context Manager Types" msgstr "Τύποι Διαχείρισης Περιεχομένου" -#: library/stdtypes.rst:5175 +#: library/stdtypes.rst:5231 msgid "" "Python's :keyword:`with` statement supports the concept of a runtime context " "defined by a context manager. This is implemented using a pair of methods " @@ -9266,7 +9372,7 @@ msgstr "" "εισάγεται πριν από την εκτέλεση του σώματος της δήλωσης και να κάνει έξοδο " "όταν τερματιστεί η δήλωση:" -#: library/stdtypes.rst:5183 +#: library/stdtypes.rst:5239 msgid "" "Enter the runtime context and return either this object or another object " "related to the runtime context. The value returned by this method is bound " @@ -9278,7 +9384,7 @@ msgstr "" "επιστρέφεται από αυτήν την μέθοδο είναι δεσμευμένη στο αναγνωριστικό στην " "πρόταση :keyword:`!as` των δηλώσεων :keyword:`with` διαχείρισης περιεχομένου." -#: library/stdtypes.rst:5188 +#: library/stdtypes.rst:5244 msgid "" "An example of a context manager that returns itself is a :term:`file " "object`. File objects return themselves from __enter__() to allow :func:" @@ -9289,7 +9395,7 @@ msgstr "" "__enter__() για να επιτρέψουν στο :func:`open` να χρησιμοποιηθεί ως έκφραση " "περιεχομένου σε μια δήλωση :keyword:`with`." -#: library/stdtypes.rst:5192 +#: library/stdtypes.rst:5248 msgid "" "An example of a context manager that returns a related object is the one " "returned by :func:`decimal.localcontext`. These managers set the active " @@ -9306,7 +9412,7 @@ msgstr "" "πλαίσιο στο σώμα της δήλωσης :keyword:`with`, χωρίς να επηρεάζεται ο κώδικας " "εκτός της δήλωσης :keyword:`!with`." -#: library/stdtypes.rst:5202 +#: library/stdtypes.rst:5258 msgid "" "Exit the runtime context and return a Boolean flag indicating if any " "exception that occurred should be suppressed. If an exception occurred while " @@ -9321,7 +9427,7 @@ msgstr "" "και τις πληροφορίες ανίχνευσης. Διαφορετικά, και τα τρία ορίσματα είναι " "``None``." -#: library/stdtypes.rst:5207 +#: library/stdtypes.rst:5263 msgid "" "Returning a true value from this method will cause the :keyword:`with` " "statement to suppress the exception and continue execution with the " @@ -9339,7 +9445,7 @@ msgstr "" "μεθόδου θα αντικαταστήσουν κάθε εξαίρεση που προέκυψε στο σώμα της δήλωσης :" "keyword:`!with`." -#: library/stdtypes.rst:5214 +#: library/stdtypes.rst:5270 msgid "" "The exception passed in should never be reraised explicitly - instead, this " "method should return a false value to indicate that the method completed " @@ -9354,7 +9460,7 @@ msgstr "" "περιεχομένου να εντοπίζει εύκολα εάν μια μέθοδος :meth:`~object.__exit__` " "έχει πράγματι αποτύχει." -#: library/stdtypes.rst:5220 +#: library/stdtypes.rst:5276 msgid "" "Python defines several context managers to support easy thread " "synchronisation, prompt closure of files or other objects, and simpler " @@ -9369,7 +9475,7 @@ msgstr "" "τους πρωτοκόλλου διαχείρισης περιεχομένου. Δείτε το module :mod:`contextlib` " "για μερικά παραδείγματα." -#: library/stdtypes.rst:5226 +#: library/stdtypes.rst:5282 msgid "" "Python's :term:`generator`\\s and the :class:`contextlib.contextmanager` " "decorator provide a convenient way to implement these protocols. If a " @@ -9386,7 +9492,7 @@ msgstr "" "__enter__` και :meth:`~contextmanager.__exit__`, αντί του iterator που " "παράγεται από μια undecorated συνάρτηση γεννήτριας." -#: library/stdtypes.rst:5233 +#: library/stdtypes.rst:5289 msgid "" "Note that there is no specific slot for any of these methods in the type " "structure for Python objects in the Python/C API. Extension types wanting to " @@ -9401,7 +9507,7 @@ msgstr "" "της ρύθμισης στο πλαίσιο του χρόνου εκτέλεσης, η επιβάρυνση μιας απλής " "αναζήτησης κλάσης λεξικού είναι αμελητέα." -#: library/stdtypes.rst:5241 +#: library/stdtypes.rst:5297 msgid "" "Type Annotation Types --- :ref:`Generic Alias `, :ref:" "`Union `" @@ -9409,7 +9515,7 @@ msgstr "" "Τύποι Annotation τύπου --- :ref:`Generic Alias `, :ref:" "`Union `" -#: library/stdtypes.rst:5246 +#: library/stdtypes.rst:5302 msgid "" "The core built-in types for :term:`type annotations ` are :ref:" "`Generic Alias ` and :ref:`Union `." @@ -9418,11 +9524,11 @@ msgstr "" "είναι :ref:`Generic Alias ` και :ref:`Union `." -#: library/stdtypes.rst:5253 +#: library/stdtypes.rst:5309 msgid "Generic Alias Type" msgstr "Τύπος Generic Alias" -#: library/stdtypes.rst:5259 +#: library/stdtypes.rst:5315 msgid "" "``GenericAlias`` objects are generally created by :ref:`subscripting " "` a class. They are most often used with :ref:`container " @@ -9439,7 +9545,7 @@ msgstr "" "Τα αντικείμενα ``GenericAlias`` προορίζονται κυρίως για χρήση με :term:`type " "annotations `." -#: library/stdtypes.rst:5269 +#: library/stdtypes.rst:5325 msgid "" "It is generally only possible to subscript a class if the class implements " "the special method :meth:`~object.__class_getitem__`." @@ -9447,7 +9553,7 @@ msgstr "" "Γενικά είναι δυνατή η εγγραφή μιας κλάσης μόνο εάν η κλάση εφαρμόζει την " "ειδική μέθοδο :meth:`~object.__class_getitem__`." -#: library/stdtypes.rst:5272 +#: library/stdtypes.rst:5328 msgid "" "A ``GenericAlias`` object acts as a proxy for a :term:`generic type`, " "implementing *parameterized generics*." @@ -9455,7 +9561,7 @@ msgstr "" "Ένα αντικείμενο ``GenericAlias`` λειτουργεί ως διακομιστής μεσολάβησης " "(proxy) για έναν :term:`generic type`, υλοποιώντας *parameterized generics*." -#: library/stdtypes.rst:5275 +#: library/stdtypes.rst:5331 msgid "" "For a container class, the argument(s) supplied to a :ref:`subscription " "` of the class may indicate the type(s) of the elements an " @@ -9470,7 +9576,7 @@ msgstr "" "υποδηλώσει ένα :class:`set` στο οποίο όλα τα στοιχεία είναι τύπου :class:" "`bytes`." -#: library/stdtypes.rst:5281 +#: library/stdtypes.rst:5337 msgid "" "For a class which defines :meth:`~object.__class_getitem__` but is not a " "container, the argument(s) supplied to a subscription of the class will " @@ -9485,7 +9591,7 @@ msgstr "" "expressions ` μπορούν να χρησιμοποιηθούν τόσο στον τύπο δεδομένων :class:" "`str` όσο και στον τύπο δεδομένων :class:`bytes`:" -#: library/stdtypes.rst:5287 +#: library/stdtypes.rst:5343 msgid "" "If ``x = re.search('foo', 'foo')``, ``x`` will be a :ref:`re.Match ` object where the return values of ``x.group(0)`` and ``x[0]`` will " @@ -9498,7 +9604,7 @@ msgstr "" "αναπαραστήσουμε αυτό το είδος αντικειμένου σε σχολιασμούς τύπου με το " "``GenericAlias`` ``re.Match[str]``." -#: library/stdtypes.rst:5293 +#: library/stdtypes.rst:5349 msgid "" "If ``y = re.search(b'bar', b'bar')``, (note the ``b`` for :class:`bytes`), " "``y`` will also be an instance of ``re.Match``, but the return values of ``y." @@ -9513,7 +9619,7 @@ msgstr "" "ποικιλία αντικειμένων :ref:`re.Match ` με το ``re." "Match[bytes]``." -#: library/stdtypes.rst:5299 +#: library/stdtypes.rst:5355 msgid "" "``GenericAlias`` objects are instances of the class :class:`types." "GenericAlias`, which can also be used to create ``GenericAlias`` objects " @@ -9523,7 +9629,7 @@ msgstr "" "GenericAlias`, τα οποία μπορούν επίσης να χρησιμοποιηθούν για την δημιουργία " "αντικειμένων ``GenericAlias`` απευθείας." -#: library/stdtypes.rst:5305 +#: library/stdtypes.rst:5361 msgid "" "Creates a ``GenericAlias`` representing a type ``T`` parameterized by types " "*X*, *Y*, and more depending on the ``T`` used. For example, a function " @@ -9534,7 +9640,7 @@ msgstr "" "χρησιμοποιείται. Για παράδειγμα, μια συνάρτηση που αναμένει μια :class:" "`list` που περιέχει στοιχεία της :class:`float`::" -#: library/stdtypes.rst:5310 +#: library/stdtypes.rst:5366 msgid "" "def average(values: list[float]) -> float:\n" " return sum(values) / len(values)" @@ -9542,7 +9648,7 @@ msgstr "" "def average(values: list[float]) -> float:\n" " return sum(values) / len(values)" -#: library/stdtypes.rst:5313 +#: library/stdtypes.rst:5369 msgid "" "Another example for :term:`mapping` objects, using a :class:`dict`, which is " "a generic type expecting two type parameters representing the key type and " @@ -9555,7 +9661,7 @@ msgstr "" "παράδειγμα, η συνάρτηση αναμένει ένα ``dict`` με κλειδιά τύπου :class:`str` " "και τιμές τύπου :class:`int`::" -#: library/stdtypes.rst:5318 +#: library/stdtypes.rst:5374 msgid "" "def send_post_request(url: str, body: dict[str, int]) -> None:\n" " ..." @@ -9563,7 +9669,7 @@ msgstr "" "def send_post_request(url: str, body: dict[str, int]) -> None:\n" " ..." -#: library/stdtypes.rst:5321 +#: library/stdtypes.rst:5377 msgid "" "The builtin functions :func:`isinstance` and :func:`issubclass` do not " "accept ``GenericAlias`` types for their second argument::" @@ -9572,7 +9678,7 @@ msgstr "" "`issubclass` δεν δέχονται τους τύπους ``GenericAlias`` για το δεύτερο όρισμά " "τους::" -#: library/stdtypes.rst:5324 +#: library/stdtypes.rst:5380 msgid "" ">>> isinstance([1, 2], list[str])\n" "Traceback (most recent call last):\n" @@ -9584,7 +9690,7 @@ msgstr "" " File \"\", line 1, in \n" "TypeError: isinstance() argument 2 cannot be a parameterized generic" -#: library/stdtypes.rst:5329 +#: library/stdtypes.rst:5385 msgid "" "The Python runtime does not enforce :term:`type annotations `. " "This extends to generic types and their type parameters. When creating a " @@ -9599,7 +9705,7 @@ msgstr "" "τους. Για παράδειγμα, ο ακόλουθος κώδικας αποθαρρύνεται, αλλά θα εκτελεστεί " "χωρίς σφάλματα::" -#: library/stdtypes.rst:5335 +#: library/stdtypes.rst:5391 msgid "" ">>> t = list[str]\n" ">>> t([1, 2, 3])\n" @@ -9609,7 +9715,7 @@ msgstr "" ">>> t([1, 2, 3])\n" "[1, 2, 3]" -#: library/stdtypes.rst:5339 +#: library/stdtypes.rst:5395 msgid "" "Furthermore, parameterized generics erase type parameters during object " "creation::" @@ -9617,7 +9723,7 @@ msgstr "" "Επιπλέον, τα παραμετροποιημένα generics διαγράφουν τις παραμέτρους τύπου " "κατά τη δημιουργία αντικειμένου::" -#: library/stdtypes.rst:5342 +#: library/stdtypes.rst:5398 msgid "" ">>> t = list[str]\n" ">>> type(t)\n" @@ -9635,7 +9741,7 @@ msgstr "" ">>> type(l)\n" "" -#: library/stdtypes.rst:5350 +#: library/stdtypes.rst:5406 msgid "" "Calling :func:`repr` or :func:`str` on a generic shows the parameterized " "type::" @@ -9643,7 +9749,7 @@ msgstr "" "Η κλήση :func:`repr` ή :func:`str` σε ένα generic δείχνει τον " "παραμετροποιημένο τύπο::" -#: library/stdtypes.rst:5352 +#: library/stdtypes.rst:5408 msgid "" ">>> repr(list[int])\n" "'list[int]'\n" @@ -9657,7 +9763,7 @@ msgstr "" ">>> str(list[int])\n" "'list[int]'" -#: library/stdtypes.rst:5358 +#: library/stdtypes.rst:5414 msgid "" "The :meth:`~object.__getitem__` method of generic containers will raise an " "exception to disallow mistakes like ``dict[str][str]``::" @@ -9665,7 +9771,7 @@ msgstr "" "Η μέθοδος :meth:`~object.__getitem__` των generic containers θα κάνει raise " "μια εξαίρεση για την απαγόρευση λαθών όπως ``dict[str][str]``::" -#: library/stdtypes.rst:5361 +#: library/stdtypes.rst:5417 msgid "" ">>> dict[str][str]\n" "Traceback (most recent call last):\n" @@ -9677,7 +9783,7 @@ msgstr "" " ...\n" "TypeError: dict[str] is not a generic class" -#: library/stdtypes.rst:5366 +#: library/stdtypes.rst:5422 msgid "" "However, such expressions are valid when :ref:`type variables ` " "are used. The index must have as many elements as there are type variable " @@ -9688,7 +9794,7 @@ msgstr "" "στοιχεία όσα και τα στοιχεία μεταβλητής τύπου στο αντικείμενο " "``GenericAlias`` :attr:`~genericalias.__args__`. ::" -#: library/stdtypes.rst:5370 +#: library/stdtypes.rst:5426 msgid "" ">>> from typing import TypeVar\n" ">>> Y = TypeVar('Y')\n" @@ -9700,11 +9806,11 @@ msgstr "" ">>> dict[str, Y][int]\n" "dict[str, int]" -#: library/stdtypes.rst:5377 +#: library/stdtypes.rst:5433 msgid "Standard Generic Classes" msgstr "Τυπικές Γενικές Κλάσεις" -#: library/stdtypes.rst:5379 +#: library/stdtypes.rst:5435 msgid "" "The following standard library classes support parameterized generics. This " "list is non-exhaustive." @@ -9712,241 +9818,241 @@ msgstr "" "Οι ακόλουθες τυπικές κλάσεις βιβλιοθήκης υποστηρίζουν γενικά " "παραμετροποιημένα. Αυτή η λίστα δεν είναι εξαντλητική." -#: library/stdtypes.rst:5382 +#: library/stdtypes.rst:5438 msgid ":class:`tuple`" msgstr ":class:`tuple`" -#: library/stdtypes.rst:5383 +#: library/stdtypes.rst:5439 msgid ":class:`list`" msgstr ":class:`list`" -#: library/stdtypes.rst:5384 +#: library/stdtypes.rst:5440 msgid ":class:`dict`" msgstr ":class:`dict`" -#: library/stdtypes.rst:5385 +#: library/stdtypes.rst:5441 msgid ":class:`set`" msgstr ":class:`set`" -#: library/stdtypes.rst:5386 +#: library/stdtypes.rst:5442 msgid ":class:`frozenset`" msgstr ":class:`frozenset`" -#: library/stdtypes.rst:5387 +#: library/stdtypes.rst:5443 msgid ":class:`type`" msgstr ":class:`type`" -#: library/stdtypes.rst:5388 +#: library/stdtypes.rst:5444 msgid ":class:`asyncio.Future`" msgstr ":class:`asyncio.Future`" -#: library/stdtypes.rst:5389 +#: library/stdtypes.rst:5445 msgid ":class:`asyncio.Task`" msgstr ":class:`asyncio.Task`" -#: library/stdtypes.rst:5390 +#: library/stdtypes.rst:5446 msgid ":class:`collections.deque`" msgstr ":class:`collections.deque`" -#: library/stdtypes.rst:5391 +#: library/stdtypes.rst:5447 msgid ":class:`collections.defaultdict`" msgstr ":class:`collections.defaultdict`" -#: library/stdtypes.rst:5392 +#: library/stdtypes.rst:5448 msgid ":class:`collections.OrderedDict`" msgstr ":class:`collections.OrderedDict`" -#: library/stdtypes.rst:5393 +#: library/stdtypes.rst:5449 msgid ":class:`collections.Counter`" msgstr ":class:`collections.Counter`" -#: library/stdtypes.rst:5394 +#: library/stdtypes.rst:5450 msgid ":class:`collections.ChainMap`" msgstr ":class:`collections.ChainMap`" -#: library/stdtypes.rst:5395 +#: library/stdtypes.rst:5451 msgid ":class:`collections.abc.Awaitable`" msgstr ":class:`collections.abc.Awaitable`" -#: library/stdtypes.rst:5396 +#: library/stdtypes.rst:5452 msgid ":class:`collections.abc.Coroutine`" msgstr ":class:`collections.abc.Coroutine`" -#: library/stdtypes.rst:5397 +#: library/stdtypes.rst:5453 msgid ":class:`collections.abc.AsyncIterable`" msgstr ":class:`collections.abc.AsyncIterable`" -#: library/stdtypes.rst:5398 +#: library/stdtypes.rst:5454 msgid ":class:`collections.abc.AsyncIterator`" msgstr ":class:`collections.abc.AsyncIterator`" -#: library/stdtypes.rst:5399 +#: library/stdtypes.rst:5455 msgid ":class:`collections.abc.AsyncGenerator`" msgstr ":class:`collections.abc.AsyncGenerator`" -#: library/stdtypes.rst:5400 +#: library/stdtypes.rst:5456 msgid ":class:`collections.abc.Iterable`" msgstr ":class:`collections.abc.Iterable`" -#: library/stdtypes.rst:5401 +#: library/stdtypes.rst:5457 msgid ":class:`collections.abc.Iterator`" msgstr ":class:`collections.abc.Iterator`" -#: library/stdtypes.rst:5402 +#: library/stdtypes.rst:5458 msgid ":class:`collections.abc.Generator`" msgstr ":class:`collections.abc.Generator`" -#: library/stdtypes.rst:5403 +#: library/stdtypes.rst:5459 msgid ":class:`collections.abc.Reversible`" msgstr ":class:`collections.abc.Reversible`" -#: library/stdtypes.rst:5404 +#: library/stdtypes.rst:5460 msgid ":class:`collections.abc.Container`" msgstr ":class:`collections.abc.Container`" -#: library/stdtypes.rst:5405 +#: library/stdtypes.rst:5461 msgid ":class:`collections.abc.Collection`" msgstr ":class:`collections.abc.Collection`" -#: library/stdtypes.rst:5406 +#: library/stdtypes.rst:5462 msgid ":class:`collections.abc.Callable`" msgstr ":class:`collections.abc.Callable`" -#: library/stdtypes.rst:5407 +#: library/stdtypes.rst:5463 msgid ":class:`collections.abc.Set`" msgstr ":class:`collections.abc.Set`" -#: library/stdtypes.rst:5408 +#: library/stdtypes.rst:5464 msgid ":class:`collections.abc.MutableSet`" msgstr ":class:`collections.abc.MutableSet`" -#: library/stdtypes.rst:5409 +#: library/stdtypes.rst:5465 msgid ":class:`collections.abc.Mapping`" msgstr ":class:`collections.abc.Mapping`" -#: library/stdtypes.rst:5410 +#: library/stdtypes.rst:5466 msgid ":class:`collections.abc.MutableMapping`" msgstr ":class:`collections.abc.MutableMapping`" -#: library/stdtypes.rst:5411 +#: library/stdtypes.rst:5467 msgid ":class:`collections.abc.Sequence`" msgstr ":class:`collections.abc.Sequence`" -#: library/stdtypes.rst:5412 +#: library/stdtypes.rst:5468 msgid ":class:`collections.abc.MutableSequence`" msgstr ":class:`collections.abc.MutableSequence`" -#: library/stdtypes.rst:5413 +#: library/stdtypes.rst:5469 msgid ":class:`collections.abc.MappingView`" msgstr ":class:`collections.abc.MappingView`" -#: library/stdtypes.rst:5414 +#: library/stdtypes.rst:5470 msgid ":class:`collections.abc.KeysView`" msgstr ":class:`collections.abc.KeysView`" -#: library/stdtypes.rst:5415 +#: library/stdtypes.rst:5471 msgid ":class:`collections.abc.ItemsView`" msgstr ":class:`collections.abc.ItemsView`" -#: library/stdtypes.rst:5416 +#: library/stdtypes.rst:5472 msgid ":class:`collections.abc.ValuesView`" msgstr ":class:`collections.abc.ValuesView`" -#: library/stdtypes.rst:5417 +#: library/stdtypes.rst:5473 msgid ":class:`contextlib.AbstractContextManager`" msgstr ":class:`contextlib.AbstractContextManager`" -#: library/stdtypes.rst:5418 +#: library/stdtypes.rst:5474 msgid ":class:`contextlib.AbstractAsyncContextManager`" msgstr ":class:`contextlib.AbstractAsyncContextManager`" -#: library/stdtypes.rst:5419 +#: library/stdtypes.rst:5475 msgid ":class:`dataclasses.Field`" msgstr ":class:`dataclasses.Field`" -#: library/stdtypes.rst:5420 +#: library/stdtypes.rst:5476 msgid ":class:`functools.cached_property`" msgstr ":class:`functools.cached_property`" -#: library/stdtypes.rst:5421 +#: library/stdtypes.rst:5477 msgid ":class:`functools.partialmethod`" msgstr ":class:`functools.partialmethod`" -#: library/stdtypes.rst:5422 +#: library/stdtypes.rst:5478 msgid ":class:`os.PathLike`" msgstr ":class:`os.PathLike`" -#: library/stdtypes.rst:5423 +#: library/stdtypes.rst:5479 msgid ":class:`queue.LifoQueue`" msgstr ":class:`queue.LifoQueue`" -#: library/stdtypes.rst:5424 +#: library/stdtypes.rst:5480 msgid ":class:`queue.Queue`" msgstr ":class:`queue.Queue`" -#: library/stdtypes.rst:5425 +#: library/stdtypes.rst:5481 msgid ":class:`queue.PriorityQueue`" msgstr ":class:`queue.PriorityQueue`" -#: library/stdtypes.rst:5426 +#: library/stdtypes.rst:5482 msgid ":class:`queue.SimpleQueue`" msgstr ":class:`queue.SimpleQueue`" -#: library/stdtypes.rst:5427 +#: library/stdtypes.rst:5483 msgid ":ref:`re.Pattern `" msgstr ":ref:`re.Pattern `" -#: library/stdtypes.rst:5428 +#: library/stdtypes.rst:5484 msgid ":ref:`re.Match `" msgstr ":ref:`re.Match `" -#: library/stdtypes.rst:5429 +#: library/stdtypes.rst:5485 msgid ":class:`shelve.BsdDbShelf`" msgstr ":class:`shelve.BsdDbShelf`" -#: library/stdtypes.rst:5430 +#: library/stdtypes.rst:5486 msgid ":class:`shelve.DbfilenameShelf`" msgstr ":class:`shelve.DbfilenameShelf`" -#: library/stdtypes.rst:5431 +#: library/stdtypes.rst:5487 msgid ":class:`shelve.Shelf`" msgstr ":class:`shelve.Shelf`" -#: library/stdtypes.rst:5432 +#: library/stdtypes.rst:5488 msgid ":class:`types.MappingProxyType`" msgstr ":class:`types.MappingProxyType`" -#: library/stdtypes.rst:5433 +#: library/stdtypes.rst:5489 msgid ":class:`weakref.WeakKeyDictionary`" msgstr ":class:`weakref.WeakKeyDictionary`" -#: library/stdtypes.rst:5434 +#: library/stdtypes.rst:5490 msgid ":class:`weakref.WeakMethod`" msgstr ":class:`weakref.WeakMethod`" -#: library/stdtypes.rst:5435 +#: library/stdtypes.rst:5491 msgid ":class:`weakref.WeakSet`" msgstr ":class:`weakref.WeakSet`" -#: library/stdtypes.rst:5436 +#: library/stdtypes.rst:5492 msgid ":class:`weakref.WeakValueDictionary`" msgstr ":class:`weakref.WeakValueDictionary`" -#: library/stdtypes.rst:5441 +#: library/stdtypes.rst:5497 msgid "Special Attributes of ``GenericAlias`` objects" msgstr "Ειδικά Χαρακτηριστικά αντικειμένων ``GenericAlias``" -#: library/stdtypes.rst:5443 +#: library/stdtypes.rst:5499 msgid "All parameterized generics implement special read-only attributes." msgstr "" "Όλα τα παραμετροποιημένα generics εφαρμόζουν ειδικά χαρακτηριστικά μόνο για " "ανάγνωση." -#: library/stdtypes.rst:5447 +#: library/stdtypes.rst:5503 msgid "This attribute points at the non-parameterized generic class::" msgstr "Αυτό το χαρακτηριστικό δείχνει στη μη παραμετροποιημένη γενική κλάση::" -#: library/stdtypes.rst:5449 +#: library/stdtypes.rst:5505 msgid "" ">>> list[int].__origin__\n" "" @@ -9954,7 +10060,7 @@ msgstr "" ">>> list[int].__origin__\n" "" -#: library/stdtypes.rst:5455 +#: library/stdtypes.rst:5511 msgid "" "This attribute is a :class:`tuple` (possibly of length 1) of generic types " "passed to the original :meth:`~object.__class_getitem__` of the generic " @@ -9964,7 +10070,7 @@ msgstr "" "τύπων που μεταβιβάστηκαν στο αρχικό :meth:`~object.__class_getitem__` της " "generic κλάσης::" -#: library/stdtypes.rst:5459 +#: library/stdtypes.rst:5515 msgid "" ">>> dict[str, list[int]].__args__\n" "(, list[int])" @@ -9972,7 +10078,7 @@ msgstr "" ">>> dict[str, list[int]].__args__\n" "(, list[int])" -#: library/stdtypes.rst:5465 +#: library/stdtypes.rst:5521 msgid "" "This attribute is a lazily computed tuple (possibly empty) of unique type " "variables found in ``__args__``::" @@ -9980,7 +10086,7 @@ msgstr "" "Αυτό το χαρακτηριστικό είναι μία νωχελικά υπολογισμένη πλειάδα (tuple) " "(πιθανώς κενή) μεταβλητών μοναδικού τύπου που βρίσκονται στο ``__args__``::" -#: library/stdtypes.rst:5468 +#: library/stdtypes.rst:5524 msgid "" ">>> from typing import TypeVar\n" "\n" @@ -9994,7 +10100,7 @@ msgstr "" ">>> list[T].__parameters__\n" "(~T,)" -#: library/stdtypes.rst:5476 +#: library/stdtypes.rst:5532 msgid "" "A ``GenericAlias`` object with :class:`typing.ParamSpec` parameters may not " "have correct ``__parameters__`` after substitution because :class:`typing." @@ -10005,7 +10111,7 @@ msgstr "" "επειδή το :class:`typing.ParamSpec` προορίζεται κυρίως για έλεγχο στατικού " "τύπου." -#: library/stdtypes.rst:5483 +#: library/stdtypes.rst:5539 msgid "" "A boolean that is true if the alias has been unpacked using the ``*`` " "operator (see :data:`~typing.TypeVarTuple`)." @@ -10013,19 +10119,19 @@ msgstr "" "Ένα boolean που ισχύει αν το alias έχει αποσυμπιεστεί χρησιμοποιώντας τον " "τελεστή ``*`` (δείτε το :data:`~typing.TypeVarTuple`)." -#: library/stdtypes.rst:5491 +#: library/stdtypes.rst:5547 msgid ":pep:`484` - Type Hints" msgstr ":pep:`484` - Type Hints" -#: library/stdtypes.rst:5492 +#: library/stdtypes.rst:5548 msgid "Introducing Python's framework for type annotations." msgstr "Παρουσιάζοντας το framework της Python για τύπους annotations." -#: library/stdtypes.rst:5494 +#: library/stdtypes.rst:5550 msgid ":pep:`585` - Type Hinting Generics In Standard Collections" msgstr ":pep:`585` - Τύπος Generics Συμβουλών στις Τυπικές Συλλογές" -#: library/stdtypes.rst:5495 +#: library/stdtypes.rst:5551 msgid "" "Introducing the ability to natively parameterize standard-library classes, " "provided they implement the special class method :meth:`~object." @@ -10035,7 +10141,7 @@ msgstr "" "βιβλιοθήκης, υπό την προϋπόθεση ότι εφαρμόζουν τη μέθοδο ειδικής κλάσης :" "meth:`~object.__class_getitem__`." -#: library/stdtypes.rst:5499 +#: library/stdtypes.rst:5555 msgid "" ":ref:`Generics`, :ref:`user-defined generics ` and :" "class:`typing.Generic`" @@ -10043,7 +10149,7 @@ msgstr "" "Τα :ref:`Generics`, :ref:`user-defined generics ` " "και :class:`typing.Generic`" -#: library/stdtypes.rst:5500 +#: library/stdtypes.rst:5556 msgid "" "Documentation on how to implement generic classes that can be parameterized " "at runtime and understood by static type-checkers." @@ -10052,11 +10158,11 @@ msgstr "" "παραμετροποιηθούν κατά το χρόνο εκτέλεσης και να κατανοηθούν από στατικούς " "ελεγκτές τύπων." -#: library/stdtypes.rst:5509 +#: library/stdtypes.rst:5565 msgid "Union Type" msgstr "Τύπος Ένωσης" -#: library/stdtypes.rst:5515 +#: library/stdtypes.rst:5571 msgid "" "A union object holds the value of the ``|`` (bitwise or) operation on " "multiple :ref:`type objects `. These types are intended " @@ -10070,7 +10176,7 @@ msgstr "" "έκφραση τύπου ένωσης επιτρέπει την καθαρότερη σύνταξη υποδείξεων σε σύγκριση " "με την εγγραφή :class:`typing.Union`." -#: library/stdtypes.rst:5522 +#: library/stdtypes.rst:5578 msgid "" "Defines a union object which holds types *X*, *Y*, and so forth. ``X | Y`` " "means either X or Y. It is equivalent to ``typing.Union[X, Y]``. For " @@ -10082,7 +10188,7 @@ msgstr "" "``typing.Union[X, Y]``. Για παράδειγμα, η ακόλουθη συνάρτηση αναμένει ένα " "όρισμα τύπου :class:`int` or :class:`float`::" -#: library/stdtypes.rst:5527 +#: library/stdtypes.rst:5583 msgid "" "def square(number: int | float) -> int | float:\n" " return number ** 2" @@ -10090,7 +10196,7 @@ msgstr "" "def square(number: int | float) -> int | float:\n" " return number ** 2" -#: library/stdtypes.rst:5532 +#: library/stdtypes.rst:5588 msgid "" "The ``|`` operand cannot be used at runtime to define unions where one or " "more members is a forward reference. For example, ``int | \"Foo\"``, where " @@ -10105,42 +10211,42 @@ msgstr "" "εκτέλεσης. Για ενώσεις που περιλαμβάνουν μπροστινές αναφορές, παρουσιάζει " "ολόκληρη την έκφραση ως συμβολοσειρά, π.χ. ``\"int | Foo\"``." -#: library/stdtypes.rst:5540 +#: library/stdtypes.rst:5596 msgid "" "Union objects can be tested for equality with other union objects. Details:" msgstr "" "Τα αντικείμενα ένωσης μπορούν να ελεγχθούν για ισότητα με άλλα αντικείμενα " "ένωσης. Λεπτομέρειες:" -#: library/stdtypes.rst:5542 +#: library/stdtypes.rst:5598 msgid "Unions of unions are flattened::" msgstr "Οι ενώσεις των ενώσεων ισοπεδώνονται::" -#: library/stdtypes.rst:5544 +#: library/stdtypes.rst:5600 msgid "(int | str) | float == int | str | float" msgstr "(int | str) | float == int | str | float" -#: library/stdtypes.rst:5546 +#: library/stdtypes.rst:5602 msgid "Redundant types are removed::" msgstr "Οι περιττοί τύποι καταργούνται::" -#: library/stdtypes.rst:5548 +#: library/stdtypes.rst:5604 msgid "int | str | int == int | str" msgstr "int | str | int == int | str" -#: library/stdtypes.rst:5550 +#: library/stdtypes.rst:5606 msgid "When comparing unions, the order is ignored::" msgstr "Κατά τη σύγκριση των ενώσεων, η σειρά αγνοείται::" -#: library/stdtypes.rst:5552 +#: library/stdtypes.rst:5608 msgid "int | str == str | int" msgstr "int | str == str | int" -#: library/stdtypes.rst:5554 +#: library/stdtypes.rst:5610 msgid "It creates instances of :class:`typing.Union`::" msgstr "Δημιουργεί στιγμιότυπα της :class:`typing.Union`::" -#: library/stdtypes.rst:5556 +#: library/stdtypes.rst:5612 msgid "" "int | str == typing.Union[int, str]\n" "type(int | str) is typing.Union" @@ -10148,15 +10254,15 @@ msgstr "" "int | str == typing.Union[int, str]\n" "type(int | str) is typing.Union" -#: library/stdtypes.rst:5559 +#: library/stdtypes.rst:5615 msgid "Optional types can be spelled as a union with ``None``::" msgstr "Οι προαιρετικοί τύποι μπορούν να γραφτούν ως ένωση με ``None``::" -#: library/stdtypes.rst:5561 +#: library/stdtypes.rst:5617 msgid "str | None == typing.Optional[str]" msgstr "str | None == typing.Optional[str]" -#: library/stdtypes.rst:5566 +#: library/stdtypes.rst:5622 msgid "" "Calls to :func:`isinstance` and :func:`issubclass` are also supported with a " "union object::" @@ -10164,7 +10270,7 @@ msgstr "" "Οι κλήσεις σε :func:`isinstance` και :func:`issubclass` υποστηρίζονται " "επίσης με ένα αντικείμενο ένωσης::" -#: library/stdtypes.rst:5569 +#: library/stdtypes.rst:5625 msgid "" ">>> isinstance(\"\", int | str)\n" "True" @@ -10172,7 +10278,7 @@ msgstr "" ">>> isinstance(\"\", int | str)\n" "True" -#: library/stdtypes.rst:5572 +#: library/stdtypes.rst:5628 msgid "" "However, :ref:`parameterized generics ` in union objects " "cannot be checked::" @@ -10180,7 +10286,7 @@ msgstr "" "Ωστόσο, το :ref:`parameterized generics ` σε αντικείμενα " "ένωσης δεν μπορούν να ελεγχθούν::" -#: library/stdtypes.rst:5575 +#: library/stdtypes.rst:5631 msgid "" ">>> isinstance(1, int | list[int]) # short-circuit evaluation\n" "True\n" @@ -10196,7 +10302,7 @@ msgstr "" " ...\n" "TypeError: isinstance() argument 2 cannot be a parameterized generic" -#: library/stdtypes.rst:5582 +#: library/stdtypes.rst:5638 msgid "" "The user-exposed type for the union object can be accessed from :class:" "`typing.Union` and used for :func:`isinstance` checks::" @@ -10205,7 +10311,7 @@ msgstr "" "προσπελαστεί από το :data:`types.UnionType` και να χρησιμοποιηθεί για " "ελέγχους :func:`isinstance`." -#: library/stdtypes.rst:5585 +#: library/stdtypes.rst:5641 msgid "" ">>> import typing\n" ">>> isinstance(int | str, typing.Union)\n" @@ -10223,7 +10329,7 @@ msgstr "" " File \"\", line 1, in \n" "TypeError: cannot create 'typing.Union' instances" -#: library/stdtypes.rst:5594 +#: library/stdtypes.rst:5650 msgid "" "The :meth:`!__or__` method for type objects was added to support the syntax " "``X | Y``. If a metaclass implements :meth:`!__or__`, the Union may " @@ -10233,7 +10339,7 @@ msgstr "" "υποστηρίξει τη σύνταξη ``X | Y``. Εάν μια μετακλάση υλοποιεί :meth:`!" "__or__`, η Ένωση μπορεί να την παρακάμψει:" -#: library/stdtypes.rst:5598 +#: library/stdtypes.rst:5654 msgid "" ">>> class M(type):\n" "... def __or__(self, other):\n" @@ -10259,12 +10365,12 @@ msgstr "" ">>> int | C\n" "int | C" -#: library/stdtypes.rst:5614 +#: library/stdtypes.rst:5670 msgid ":pep:`604` -- PEP proposing the ``X | Y`` syntax and the Union type." msgstr "" ":pep:`604` -- Το PEP προτείνει τη σύνταξη ``X | Y`` και τον τύπο Ένωση." -#: library/stdtypes.rst:5620 +#: library/stdtypes.rst:5676 msgid "" "Union objects are now instances of :class:`typing.Union`. Previously, they " "were instances of :class:`types.UnionType`, which remains an alias for :" @@ -10274,11 +10380,11 @@ msgstr "" "Προηγουμένως, ήταν στιγμιότυπα της :class:`types.UnionType`, το οποίο " "παραμείνει ένα ψευδώνυμο για τη :class:`typing.Union`." -#: library/stdtypes.rst:5627 +#: library/stdtypes.rst:5683 msgid "Other Built-in Types" msgstr "Άλλοι Ενσωματωμένοι (built-in) Τύποι" -#: library/stdtypes.rst:5629 +#: library/stdtypes.rst:5685 msgid "" "The interpreter supports several other kinds of objects. Most of these " "support only one or two operations." @@ -10286,11 +10392,11 @@ msgstr "" "Ο διερμηνέας υποστηρίζει πολλά άλλα είδη αντικειμένων. Τα περισσότερα από " "αυτά υποστηρίζουν μόνο μία ή δύο λειτουργίες." -#: library/stdtypes.rst:5636 +#: library/stdtypes.rst:5692 msgid "Modules" msgstr "Modules" -#: library/stdtypes.rst:5638 +#: library/stdtypes.rst:5694 msgid "" "The only special operation on a module is attribute access: ``m.name``, " "where *m* is a module and *name* accesses a name defined in *m*'s symbol " @@ -10308,7 +10414,7 @@ msgstr "" "δεν απαιτεί να υπάρχει ένα αντικείμενο module με το όνομα *foo* αλλά απαιτεί " "έναν (εξωτερικό) *definition* για ένα module που ονομάζεται *foo* κάπου.)" -#: library/stdtypes.rst:5645 +#: library/stdtypes.rst:5701 msgid "" "A special attribute of every module is :attr:`~object.__dict__`. This is the " "dictionary containing the module's symbol table. Modifying this dictionary " @@ -10327,7 +10433,7 @@ msgstr "" "= {}``). Δεν συνίσταται η απευθείας τροποποίηση του :attr:`~object." "__dict__`." -#: library/stdtypes.rst:5653 +#: library/stdtypes.rst:5709 msgid "" "Modules built into the interpreter are written like this: ````. If loaded from a file, they are written as ````. Εάν φορτωθούν από ένα αρχείο, γράφονται ως " "````." -#: library/stdtypes.rst:5661 +#: library/stdtypes.rst:5717 msgid "Classes and Class Instances" msgstr "Κλάσεις και Στιγμιότυπα Κλάσης" -#: library/stdtypes.rst:5663 +#: library/stdtypes.rst:5719 msgid "See :ref:`objects` and :ref:`class` for these." msgstr "Δείτε :ref:`objects` και :ref:`class` για αυτά." -#: library/stdtypes.rst:5669 +#: library/stdtypes.rst:5725 msgid "Functions" msgstr "Συναρτήσεις" -#: library/stdtypes.rst:5671 +#: library/stdtypes.rst:5727 msgid "" "Function objects are created by function definitions. The only operation on " "a function object is to call it: ``func(argument-list)``." @@ -10358,7 +10464,7 @@ msgstr "" "λειτουργία σε ένα αντικείμενο συνάρτησης είναι να το ονομάσουμε: " "``func(argument-list)``." -#: library/stdtypes.rst:5674 +#: library/stdtypes.rst:5730 msgid "" "There are really two flavors of function objects: built-in functions and " "user-defined functions. Both support the same operation (to call the " @@ -10370,15 +10476,15 @@ msgstr "" "υποστηρίζουν την ίδια λειτουργία (για να καλέσετε τη συνάρτηση), αλλά η " "υλοποίηση είναι διαφορετική, εξ ου και οι διαφορετικοί τύποι αντικειμένων." -#: library/stdtypes.rst:5678 +#: library/stdtypes.rst:5734 msgid "See :ref:`function` for more information." msgstr "Δείτε το :ref:`function` για περισσότερες πληροφορίες." -#: library/stdtypes.rst:5684 +#: library/stdtypes.rst:5740 msgid "Methods" msgstr "Μέθοδοι" -#: library/stdtypes.rst:5688 +#: library/stdtypes.rst:5744 msgid "" "Methods are functions that are called using the attribute notation. There " "are two flavors: :ref:`built-in methods ` (such as :meth:" @@ -10391,7 +10497,7 @@ msgstr "" "method `. Οι ενσωματωμένες μέθοδοι περιγράφονται με τους " "τύπους που τις υποστηρίζουν." -#: library/stdtypes.rst:5693 +#: library/stdtypes.rst:5749 msgid "" "If you access a method (a function defined in a class namespace) through an " "instance, you get a special object: a :dfn:`bound method` (also called :ref:" @@ -10414,7 +10520,7 @@ msgstr "" "arg-2, ..., arg-n)`` είναι απολύτως ισοδύναμη με την κλήση του ``m." "__func__(m.__self__, arg-1, arg-2, ..., arg-n)``." -#: library/stdtypes.rst:5704 +#: library/stdtypes.rst:5760 msgid "" "Like :ref:`function objects `, bound method objects " "support getting arbitrary attributes. However, since method attributes are " @@ -10434,7 +10540,7 @@ msgstr "" "χαρακτηριστικό μεθόδου πρέπει να το ορίσετε ρητά στο υποκείμενο αντικείμενο " "συνάρτησης:" -#: library/stdtypes.rst:5712 +#: library/stdtypes.rst:5768 msgid "" ">>> class C:\n" "... def method(self):\n" @@ -10462,15 +10568,15 @@ msgstr "" ">>> c.method.whoami\n" "'my name is method'" -#: library/stdtypes.rst:5727 +#: library/stdtypes.rst:5783 msgid "See :ref:`instance-methods` for more information." msgstr "Δείτε το :ref:`instance-methods` για περισσότερες πληροφορίες." -#: library/stdtypes.rst:5735 +#: library/stdtypes.rst:5791 msgid "Code Objects" msgstr "Αντικείμενα Κώδικα" -#: library/stdtypes.rst:5741 +#: library/stdtypes.rst:5797 msgid "" "Code objects are used by the implementation to represent \"pseudo-compiled\" " "executable Python code such as a function body. They differ from function " @@ -10488,7 +10594,7 @@ msgstr "" "χαρακτηριστικού τους :attr:`~function.__code__`. Δείτε επίσης το module :mod:" "`code`." -#: library/stdtypes.rst:5748 +#: library/stdtypes.rst:5804 msgid "" "Accessing :attr:`~function.__code__` raises an :ref:`auditing event " "` ``object.__getattr__`` with arguments ``obj`` and " @@ -10498,7 +10604,7 @@ msgstr "" "event ` ``object.__getattr__`` με ορίσματα ``obj`` και " "``\"__code__\"``." -#: library/stdtypes.rst:5755 +#: library/stdtypes.rst:5811 msgid "" "A code object can be executed or evaluated by passing it (instead of a " "source string) to the :func:`exec` or :func:`eval` built-in functions." @@ -10507,15 +10613,15 @@ msgstr "" "(αντί για πηγαία συμβολοσειρά) στις ενσωματωμένες συναρτήσεις :func:`exec` " "ή :func:`eval`." -#: library/stdtypes.rst:5758 +#: library/stdtypes.rst:5814 msgid "See :ref:`types` for more information." msgstr "Δείτε :ref:`types` για περισσότερες πληροφορίες." -#: library/stdtypes.rst:5764 +#: library/stdtypes.rst:5820 msgid "Type Objects" msgstr "Τύποι Αντικειμένων" -#: library/stdtypes.rst:5770 +#: library/stdtypes.rst:5826 msgid "" "Type objects represent the various object types. An object's type is " "accessed by the built-in function :func:`type`. There are no special " @@ -10528,15 +10634,15 @@ msgstr "" "(standard) module :mod:`types` ορίζει ονόματα για όλους τους τυπικούς " "ενσωματωμένους τύπους." -#: library/stdtypes.rst:5775 +#: library/stdtypes.rst:5831 msgid "Types are written like this: ````." msgstr "Οι τύποι γράφονται ως εξής: ````." -#: library/stdtypes.rst:5781 +#: library/stdtypes.rst:5837 msgid "The Null Object" msgstr "Το Αντικείμενο Null" -#: library/stdtypes.rst:5783 +#: library/stdtypes.rst:5839 msgid "" "This object is returned by functions that don't explicitly return a value. " "It supports no special operations. There is exactly one null object, named " @@ -10547,15 +10653,15 @@ msgstr "" "μηδενικό αντικείμενο, που ονομάζεται ``None`` (ένα ενσωματωμένο όνομα). Το " "``type(None)()`` παράγει το ίδιο singleton." -#: library/stdtypes.rst:5787 +#: library/stdtypes.rst:5843 msgid "It is written as ``None``." msgstr "Γράφεται ως ``None``." -#: library/stdtypes.rst:5794 +#: library/stdtypes.rst:5850 msgid "The Ellipsis Object" msgstr "Το αντικείμενο Ellipsis" -#: library/stdtypes.rst:5796 +#: library/stdtypes.rst:5852 msgid "" "This object is commonly used by slicing (see :ref:`slicings`). It supports " "no special operations. There is exactly one ellipsis object, named :const:" @@ -10568,15 +10674,15 @@ msgstr "" "ενσωματωμένο όνομα). Το ``type(Ellipsis)()`` παράγει το :const:`Ellipsis` " "singleton." -#: library/stdtypes.rst:5801 +#: library/stdtypes.rst:5857 msgid "It is written as ``Ellipsis`` or ``...``." msgstr "Γράφεται ως ``Ellipsis`` ή ``...``." -#: library/stdtypes.rst:5807 +#: library/stdtypes.rst:5863 msgid "The NotImplemented Object" msgstr "Το NotImplemented Αντικείμενο" -#: library/stdtypes.rst:5809 +#: library/stdtypes.rst:5865 msgid "" "This object is returned from comparisons and binary operations when they are " "asked to operate on types they don't support. See :ref:`comparisons` for " @@ -10589,15 +10695,15 @@ msgstr "" "αντικείμενο :data:`NotImplemented`. Το :code:`type(NotImplemented)()` " "παράγει το στιγμιότυπο singleton." -#: library/stdtypes.rst:5814 +#: library/stdtypes.rst:5870 msgid "It is written as :code:`NotImplemented`." msgstr "Είναι γραμμένο ως :code:`NotImplemented`." -#: library/stdtypes.rst:5820 +#: library/stdtypes.rst:5876 msgid "Internal Objects" msgstr "Εσωτερικά Αντικείμενα" -#: library/stdtypes.rst:5822 +#: library/stdtypes.rst:5878 msgid "" "See :ref:`types` for this information. It describes :ref:`stack frame " "objects `, :ref:`traceback objects `, and " @@ -10607,11 +10713,11 @@ msgstr "" "objects `, :ref:`traceback objects `, και " "αντικείμενα τμηματοποίησης." -#: library/stdtypes.rst:5830 +#: library/stdtypes.rst:5886 msgid "Special Attributes" msgstr "Ειδικά Χαρακτηριστικά" -#: library/stdtypes.rst:5832 +#: library/stdtypes.rst:5888 msgid "" "The implementation adds a few special read-only attributes to several object " "types, where they are relevant. Some of these are not reported by the :func:" @@ -10621,14 +10727,14 @@ msgstr "" "διάφορους τύπους αντικειμένων, όπου είναι σχετικά. Ορισμένα από αυτά δεν " "αναφέρονται από την ενσωματωμένη συνάρτηση :func:`dir`." -#: library/stdtypes.rst:5839 +#: library/stdtypes.rst:5895 msgid "" "The name of the class, function, method, descriptor, or generator instance." msgstr "" "Το όνομα της κλάσης, της συνάρτησης, της μεθόδου, του descriptor ή του " "στιγμιοτύπου generator." -#: library/stdtypes.rst:5845 +#: library/stdtypes.rst:5901 msgid "" "The :term:`qualified name` of the class, function, method, descriptor, or " "generator instance." @@ -10636,18 +10742,18 @@ msgstr "" "Το :term:`qualified name` της κλάσης, της συνάρτησης, της μεθόδου, του " "descriptor, ή του στιγμιοτύπου generator." -#: library/stdtypes.rst:5853 +#: library/stdtypes.rst:5909 msgid "The name of the module in which a class or function was defined." msgstr "Το όνομα του module στο οποίο ορίστηκε μια κλάση ή μια συνάρτηση." -#: library/stdtypes.rst:5858 +#: library/stdtypes.rst:5914 msgid "" "The documentation string of a class or function, or ``None`` if undefined." msgstr "" "Η συμβολοσειρά τεκμηρίωσης μιας κλάσης ή συνάρτησης ή ``None`` εάν δεν έχει " "οριστεί." -#: library/stdtypes.rst:5863 +#: library/stdtypes.rst:5919 msgid "" "The :ref:`type parameters ` of generic classes, functions, and :" "ref:`type aliases `. For classes and functions that are not " @@ -10657,11 +10763,11 @@ msgstr "" "συναρτήσεων και :ref:`type aliases `. Για κλάσεις και " "συναρτήσεις που δεν είναι γενικές, αυτή θα είναι μια κενή πλειάδα." -#: library/stdtypes.rst:5873 +#: library/stdtypes.rst:5929 msgid "Integer string conversion length limitation" msgstr "Περιορισμός μήκους μετατροπής συμβολοσειράς ακέραιου αριθμού" -#: library/stdtypes.rst:5875 +#: library/stdtypes.rst:5931 msgid "" "CPython has a global limit for converting between :class:`int` and :class:" "`str` to mitigate denial of service attacks. This limit *only* applies to " @@ -10674,7 +10780,7 @@ msgstr "" "του δύο. Οι δεξαεξαδικές, οκταδικές, και δυαδικές μετατροπές είναι " "απεριόριστες. Το όριο μπορεί να διαμορφωθεί." -#: library/stdtypes.rst:5880 +#: library/stdtypes.rst:5936 msgid "" "The :class:`int` type in CPython is an arbitrary length number stored in " "binary form (commonly known as a \"bignum\"). There exists no algorithm that " @@ -10692,14 +10798,14 @@ msgstr "" "``int('1' * 500_000)`` μπορεί να διαρκέσει περισσότερο από ένα δευτερόλεπτο " "σε μια γρήγορη CPU." -#: library/stdtypes.rst:5887 +#: library/stdtypes.rst:5943 msgid "" "Limiting conversion size offers a practical way to avoid :cve:`2020-10735`." msgstr "" "Ο περιορισμός του μεγέθους μετατροπής προσφέρει έναν πρακτικό τρόπο αποφυγής " "του :cve:`2020-10735`." -#: library/stdtypes.rst:5889 +#: library/stdtypes.rst:5945 msgid "" "The limit is applied to the number of digit characters in the input or " "output string when a non-linear conversion algorithm would be involved. " @@ -10709,13 +10815,13 @@ msgstr "" "εισόδου ή εξόδου όταν εμπλέκεται ένας μη γραμμικός αλγόριθμος μετατροπής. " "Τα underscores και το πρόσημο δεν υπολογίζονται στο όριο." -#: library/stdtypes.rst:5893 +#: library/stdtypes.rst:5949 msgid "" "When an operation would exceed the limit, a :exc:`ValueError` is raised:" msgstr "" "Όταν μια λειτουργία υπερβαίνει το όριο, γίνεται raise μια :exc:`ValueError`:" -#: library/stdtypes.rst:5895 +#: library/stdtypes.rst:5951 msgid "" ">>> import sys\n" ">>> sys.set_int_max_str_digits(4300) # Illustrative, this is the default.\n" @@ -10759,7 +10865,7 @@ msgstr "" "7144\n" ">>> assert int(hex(i_squared), base=16) == i*i # Hexadecimal is unlimited." -#: library/stdtypes.rst:5915 +#: library/stdtypes.rst:5971 msgid "" "The default limit is 4300 digits as provided in :data:`sys.int_info." "default_max_str_digits `. The lowest limit that can be " @@ -10771,11 +10877,11 @@ msgstr "" "να διαμορφωθεί είναι 640 ψηφία όπως προβλέπεται στο :data:`sys.int_info." "str_digits_check_threshold `." -#: library/stdtypes.rst:5920 +#: library/stdtypes.rst:5976 msgid "Verification:" msgstr "Επαλήθευση:" -#: library/stdtypes.rst:5922 +#: library/stdtypes.rst:5978 msgid "" ">>> import sys\n" ">>> assert sys.int_info.default_max_str_digits == 4300, sys.int_info\n" @@ -10793,11 +10899,11 @@ msgstr "" "... '571186405732').to_bytes(53, 'big')\n" "..." -#: library/stdtypes.rst:5935 +#: library/stdtypes.rst:5991 msgid "Affected APIs" msgstr "Επηρεασμένα APIs" -#: library/stdtypes.rst:5937 +#: library/stdtypes.rst:5993 msgid "" "The limitation only applies to potentially slow conversions between :class:" "`int` and :class:`str` or :class:`bytes`:" @@ -10805,23 +10911,23 @@ msgstr "" "Ο περιορισμός ισχύει μόνο για δυνητικά αργές μετατροπές μεταξύ :class:`int` " "και :class:`str` ή :class:`bytes`:" -#: library/stdtypes.rst:5940 +#: library/stdtypes.rst:5996 msgid "``int(string)`` with default base 10." msgstr "``int(string)`` με default βάση το 10." -#: library/stdtypes.rst:5941 +#: library/stdtypes.rst:5997 msgid "``int(string, base)`` for all bases that are not a power of 2." msgstr "``int(string, base)`` για όλες τις βάσεις που δεν είναι δύναμη του 2." -#: library/stdtypes.rst:5942 +#: library/stdtypes.rst:5998 msgid "``str(integer)``." msgstr "``str(integer)``." -#: library/stdtypes.rst:5943 +#: library/stdtypes.rst:5999 msgid "``repr(integer)``." msgstr "``repr(integer)``." -#: library/stdtypes.rst:5944 +#: library/stdtypes.rst:6000 msgid "" "any other string conversion to base 10, for example ``f\"{integer}\"``, " "``\"{}\".format(integer)``, or ``b\"%d\" % integer``." @@ -10829,40 +10935,40 @@ msgstr "" "οποιαδήποτε άλλη μετατροπή συμβολοσειράς στη βάση 10, για παράδειγμα " "``f\"{integer}\"``, ``\"{}\".format(integer)``, ή ``b\"%d\" % integer``." -#: library/stdtypes.rst:5947 +#: library/stdtypes.rst:6003 msgid "The limitations do not apply to functions with a linear algorithm:" msgstr "Οι περιορισμοί δεν ισχύουν για συναρτήσεις με γραμμικό αλγόριθμο:" -#: library/stdtypes.rst:5949 +#: library/stdtypes.rst:6005 msgid "``int(string, base)`` with base 2, 4, 8, 16, or 32." msgstr "``int(string, base)`` με βάση 2, 4, 8, 16, ή 32." -#: library/stdtypes.rst:5950 +#: library/stdtypes.rst:6006 msgid ":func:`int.from_bytes` and :func:`int.to_bytes`." msgstr ":func:`int.from_bytes` και :func:`int.to_bytes`." -#: library/stdtypes.rst:5951 +#: library/stdtypes.rst:6007 msgid ":func:`hex`, :func:`oct`, :func:`bin`." msgstr ":func:`hex`, :func:`oct`, :func:`bin`." -#: library/stdtypes.rst:5952 +#: library/stdtypes.rst:6008 msgid ":ref:`formatspec` for hex, octal, and binary numbers." msgstr "" ":ref:`formatspec` για δεκαεξαδικούς, οκταδικούς και δυαδικούς αριθμούς." -#: library/stdtypes.rst:5953 +#: library/stdtypes.rst:6009 msgid ":class:`str` to :class:`float`." msgstr ":class:`str` σε :class:`float`." -#: library/stdtypes.rst:5954 +#: library/stdtypes.rst:6010 msgid ":class:`str` to :class:`decimal.Decimal`." msgstr ":class:`str` σε :class:`decimal.Decimal`." -#: library/stdtypes.rst:5957 +#: library/stdtypes.rst:6013 msgid "Configuring the limit" msgstr "Διαμόρφωση ορίου" -#: library/stdtypes.rst:5959 +#: library/stdtypes.rst:6015 msgid "" "Before Python starts up you can use an environment variable or an " "interpreter command line flag to configure the limit:" @@ -10871,7 +10977,7 @@ msgstr "" "περιβάλλοντος ή ένα δείκτη γραμμής εντολών διερμηνέα για να διαμορφώσετε το " "όριο:" -#: library/stdtypes.rst:5962 +#: library/stdtypes.rst:6018 msgid "" ":envvar:`PYTHONINTMAXSTRDIGITS`, e.g. ``PYTHONINTMAXSTRDIGITS=640 python3`` " "to set the limit to 640 or ``PYTHONINTMAXSTRDIGITS=0 python3`` to disable " @@ -10881,7 +10987,7 @@ msgstr "" "για να ορίσετε το όριο σε 640 ή ``PYTHONINTMAXSTRDIGITS=0 python3`` για να " "απενεργοποιήσετε τον περιορισμό." -#: library/stdtypes.rst:5965 +#: library/stdtypes.rst:6021 msgid "" ":option:`-X int_max_str_digits <-X>`, e.g. ``python3 -X " "int_max_str_digits=640``" @@ -10889,7 +10995,7 @@ msgstr "" ":option:`-X int_max_str_digits <-X>`, π.χ. ``python3 -X " "int_max_str_digits=640``" -#: library/stdtypes.rst:5967 +#: library/stdtypes.rst:6023 msgid "" ":data:`sys.flags.int_max_str_digits` contains the value of :envvar:" "`PYTHONINTMAXSTRDIGITS` or :option:`-X int_max_str_digits <-X>`. If both the " @@ -10904,7 +11010,7 @@ msgstr "" "επομένως χρησιμοποιήθηκε μια τιμή :data:`sys.int_info." "default_max_str_digits` κατά την προετοιμασία." -#: library/stdtypes.rst:5973 +#: library/stdtypes.rst:6029 msgid "" "From code, you can inspect the current limit and set a new one using these :" "mod:`sys` APIs:" @@ -10912,7 +11018,7 @@ msgstr "" "Από τον κώδικα, μπορείτε να επιθεωρήσετε το τρέχον όριο και να ορίσετε ένα " "νέο χρησιμοποιώντας αυτά τα :mod:`sys` APIs:" -#: library/stdtypes.rst:5976 +#: library/stdtypes.rst:6032 msgid "" ":func:`sys.get_int_max_str_digits` and :func:`sys.set_int_max_str_digits` " "are a getter and setter for the interpreter-wide limit. Subinterpreters have " @@ -10922,7 +11028,7 @@ msgstr "" "είναι ένας getter και setter για το όριο σε όλο τον διερμηνέα. Οι " "δευτερεύοντες διερμηνείς έχουν το δικό τους όριο." -#: library/stdtypes.rst:5980 +#: library/stdtypes.rst:6036 msgid "" "Information about the default and minimum can be found in :data:`sys." "int_info`:" @@ -10930,7 +11036,7 @@ msgstr "" "Πληροφορίες σχετικά με την προεπιλογή και το ελάχιστο μπορούν να βρεθούν " "στο :data:`sys.int_info`:" -#: library/stdtypes.rst:5982 +#: library/stdtypes.rst:6038 msgid "" ":data:`sys.int_info.default_max_str_digits ` is the compiled-" "in default limit." @@ -10938,7 +11044,7 @@ msgstr "" "Το :data:`sys.int_info.default_max_str_digits ` είναι το " "μεταγλωττισμένο προεπιλεγμένο όριο." -#: library/stdtypes.rst:5984 +#: library/stdtypes.rst:6040 msgid "" ":data:`sys.int_info.str_digits_check_threshold ` is the lowest " "accepted value for the limit (other than 0 which disables it)." @@ -10946,7 +11052,7 @@ msgstr "" "Το :data:`sys.int_info.str_digits_check_threshold ` είναι η " "χαμηλότερη αποδεκτή τιμή για το όριο (εκτός από το 0 που το απενεργοποιεί)." -#: library/stdtypes.rst:5991 +#: library/stdtypes.rst:6047 msgid "" "Setting a low limit *can* lead to problems. While rare, code exists that " "contains integer constants in decimal in their source that exceed the " @@ -10967,7 +11073,7 @@ msgstr "" "τον κώδικα. Μια λύση για τον πηγαίο που περιέχει τόσο μεγάλες σταθερές είναι " "να τις μετατρέψετε σε δεκαεξαδική μορφή ``0x`` καθώς δεν έχει όριο." -#: library/stdtypes.rst:6000 +#: library/stdtypes.rst:6056 msgid "" "Test your application thoroughly if you use a low limit. Ensure your tests " "run with the limit set early via the environment or flag so that it applies " @@ -10981,11 +11087,11 @@ msgstr "" "καλέσει την Python για να μεταγλωττίσει εκ των προτέρων το ``.py`` πηγαίο σε " "αρχεία ``.pyc``." -#: library/stdtypes.rst:6006 +#: library/stdtypes.rst:6062 msgid "Recommended configuration" msgstr "Προτεινόμενη διαμόρφωση" -#: library/stdtypes.rst:6008 +#: library/stdtypes.rst:6064 msgid "" "The default :data:`sys.int_info.default_max_str_digits` is expected to be " "reasonable for most applications. If your application requires a different " @@ -10998,11 +11104,11 @@ msgstr "" "τον συμβατό με τον κώδικα της έκδοσης Python, καθώς αυτά τα API προστέθηκαν " "στην ενημερωμένη έκδοση κώδικα ασφαλείας σε εκδόσεις πριν από την 3.12." -#: library/stdtypes.rst:6013 +#: library/stdtypes.rst:6069 msgid "Example::" msgstr "Παράδειγμα::" -#: library/stdtypes.rst:6015 +#: library/stdtypes.rst:6071 msgid "" ">>> import sys\n" ">>> if hasattr(sys, \"set_int_max_str_digits\"):\n" @@ -11024,15 +11130,15 @@ msgstr "" "... elif current_limit < lower_bound:\n" "... sys.set_int_max_str_digits(lower_bound)" -#: library/stdtypes.rst:6025 +#: library/stdtypes.rst:6081 msgid "If you need to disable it entirely, set it to ``0``." msgstr "Εάν πρέπει να το απενεργοποιήσετε εντελώς, ορίστε το σε ``0``." -#: library/stdtypes.rst:6029 +#: library/stdtypes.rst:6085 msgid "Footnotes" msgstr "Υποσημειώσεις" -#: library/stdtypes.rst:6030 +#: library/stdtypes.rst:6086 msgid "" "Additional information on these special methods may be found in the Python " "Reference Manual (:ref:`customization`)." @@ -11040,7 +11146,7 @@ msgstr "" "Πρόσθετε πληροφορίες σχετικά με αυτές τις ειδικές μεθόδους μπορείτε να " "βρείτε στο Εγχειρίδιο Αναφοράς Python (:ref:`customization`)." -#: library/stdtypes.rst:6033 +#: library/stdtypes.rst:6089 msgid "" "As a consequence, the list ``[1, 2]`` is considered equal to ``[1.0, 2.0]``, " "and similarly for tuples." @@ -11048,12 +11154,12 @@ msgstr "" "Σαν συνέπεια, η λίστα ``[1, 2]`` θεωρείται ίση με ``[1.0, 2.0]``, και ομοίως " "για πλειάδες (tuples)." -#: library/stdtypes.rst:6036 +#: library/stdtypes.rst:6092 msgid "They must have since the parser can't tell the type of the operands." msgstr "" "Πρέπει να έχουν, αφού ο parser δεν μπορεί να ξεχωρίσει τον τύπο των τελεστών." -#: library/stdtypes.rst:6038 +#: library/stdtypes.rst:6094 msgid "" "Cased characters are those with general category property being one of " "\"Lu\" (Letter, uppercase), \"Ll\" (Letter, lowercase), or \"Lt\" (Letter, " @@ -11063,7 +11169,7 @@ msgstr "" "είναι ένας από τους \"Lu\" (Γράμμα, κεφαλαίο), \"Ll\" (Γράμμα, πεζά), ή " "\"Lt\" (Γράμμα, κεφαλαία)." -#: library/stdtypes.rst:6041 +#: library/stdtypes.rst:6097 msgid "" "To format only a tuple you should therefore provide a singleton tuple whose " "only element is the tuple to be formatted." @@ -11076,12 +11182,12 @@ msgstr "" msgid "built-in" msgstr "ενσωματωμένοι (built-in) τύποι" -#: library/stdtypes.rst:322 library/stdtypes.rst:992 library/stdtypes.rst:1181 -#: library/stdtypes.rst:4775 library/stdtypes.rst:5766 +#: library/stdtypes.rst:322 library/stdtypes.rst:992 library/stdtypes.rst:1184 +#: library/stdtypes.rst:4831 library/stdtypes.rst:5822 msgid "types" msgstr "τύποι" -#: library/stdtypes.rst:1196 library/stdtypes.rst:4775 +#: library/stdtypes.rst:1199 library/stdtypes.rst:4831 msgid "statement" msgstr "statement" @@ -11194,11 +11300,11 @@ msgstr "is" msgid "is not" msgstr "is not" -#: library/stdtypes.rst:208 library/stdtypes.rst:1159 library/stdtypes.rst:1302 -#: library/stdtypes.rst:1425 library/stdtypes.rst:1676 -#: library/stdtypes.rst:2827 library/stdtypes.rst:4573 -#: library/stdtypes.rst:5255 library/stdtypes.rst:5686 -#: library/stdtypes.rst:5730 +#: library/stdtypes.rst:208 library/stdtypes.rst:1162 library/stdtypes.rst:1307 +#: library/stdtypes.rst:1430 library/stdtypes.rst:1681 +#: library/stdtypes.rst:2883 library/stdtypes.rst:4629 +#: library/stdtypes.rst:5311 library/stdtypes.rst:5742 +#: library/stdtypes.rst:5786 msgid "object" msgstr "αντικείμενο" @@ -11286,8 +11392,8 @@ msgstr "δυαδικό" msgid "arithmetic" msgstr "αριθμητικό" -#: library/stdtypes.rst:992 library/stdtypes.rst:4775 library/stdtypes.rst:5751 -#: library/stdtypes.rst:5766 +#: library/stdtypes.rst:992 library/stdtypes.rst:4831 library/stdtypes.rst:5807 +#: library/stdtypes.rst:5822 msgid "built-in function" msgstr "ενσωματωμένες (built-in) συναρτήσεις" @@ -11303,7 +11409,7 @@ msgstr "float" msgid "complex" msgstr "complex" -#: library/stdtypes.rst:2684 library/stdtypes.rst:3943 +#: library/stdtypes.rst:2740 library/stdtypes.rst:3999 msgid "+ (plus)" msgstr "+ (συν)" @@ -11315,11 +11421,11 @@ msgstr "τελεστής unary" msgid "binary operator" msgstr "δυαδικός τελεστής" -#: library/stdtypes.rst:2684 library/stdtypes.rst:3943 +#: library/stdtypes.rst:2740 library/stdtypes.rst:3999 msgid "- (minus)" msgstr "- (πλην)" -#: library/stdtypes.rst:2641 library/stdtypes.rst:3900 +#: library/stdtypes.rst:2697 library/stdtypes.rst:3956 msgid "* (asterisk)" msgstr "* (αστερίσκος)" @@ -11331,7 +11437,7 @@ msgstr "/ (κάθετος)" msgid "//" msgstr "//" -#: library/stdtypes.rst:2605 library/stdtypes.rst:3868 +#: library/stdtypes.rst:2661 library/stdtypes.rst:3924 msgid "% (percent)" msgstr "% (τοις εκατό)" @@ -11339,7 +11445,7 @@ msgstr "% (τοις εκατό)" msgid "**" msgstr "**" -#: library/stdtypes.rst:399 library/stdtypes.rst:1196 library/stdtypes.rst:4775 +#: library/stdtypes.rst:399 library/stdtypes.rst:1199 library/stdtypes.rst:4831 msgid "operations on" msgstr "λειτουργίες on" @@ -11347,7 +11453,7 @@ msgstr "λειτουργίες on" msgid "conjugate() (complex number method)" msgstr "conjugate() (μέθοδος μιγαδικών αριθμών)" -#: library/stdtypes.rst:1742 library/stdtypes.rst:5766 +#: library/stdtypes.rst:1747 library/stdtypes.rst:5822 msgid "module" msgstr "module" @@ -11415,7 +11521,7 @@ msgstr "τιμές" msgid "iterator protocol" msgstr "πρωτόκολλο iterator" -#: library/stdtypes.rst:5170 +#: library/stdtypes.rst:5226 msgid "protocol" msgstr "πρωτόκολλο" @@ -11423,7 +11529,7 @@ msgstr "πρωτόκολλο" msgid "iterator" msgstr "iterator" -#: library/stdtypes.rst:976 library/stdtypes.rst:1159 library/stdtypes.rst:1196 +#: library/stdtypes.rst:976 library/stdtypes.rst:1162 library/stdtypes.rst:1199 msgid "sequence" msgstr "sequence" @@ -11439,7 +11545,7 @@ msgstr "container" msgid "iteration over" msgstr "iteration over" -#: library/stdtypes.rst:4775 +#: library/stdtypes.rst:4831 msgid "len" msgstr "len" @@ -11463,11 +11569,11 @@ msgstr "λειτουργία" msgid "repetition" msgstr "επανάληψη" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "subscript" msgstr "subscript" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "slice" msgstr "slice" @@ -11495,350 +11601,350 @@ msgstr "μεταβλητή ακολουθίας" msgid "loop over" msgstr "loop over" -#: library/stdtypes.rst:1159 +#: library/stdtypes.rst:1162 msgid "immutable" msgstr "αμετάβλητο" -#: library/stdtypes.rst:1381 +#: library/stdtypes.rst:1386 msgid "tuple" msgstr "πλειάδα (tuple)" -#: library/stdtypes.rst:1159 +#: library/stdtypes.rst:1162 msgid "hash" msgstr "hash" -#: library/stdtypes.rst:1181 +#: library/stdtypes.rst:1184 msgid "mutable" msgstr "ευμετάβλητο" -#: library/stdtypes.rst:1196 library/stdtypes.rst:1302 +#: library/stdtypes.rst:1199 library/stdtypes.rst:1307 msgid "list" msgstr "λίστα" -#: library/stdtypes.rst:2808 library/stdtypes.rst:3046 -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:2864 library/stdtypes.rst:3102 +#: library/stdtypes.rst:3924 msgid "bytearray" msgstr "bytearray" -#: library/stdtypes.rst:4775 library/stdtypes.rst:5766 +#: library/stdtypes.rst:4831 library/stdtypes.rst:5822 msgid "type" msgstr "τύπος" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "assignment" msgstr "εκχώρηση" -#: library/stdtypes.rst:4775 +#: library/stdtypes.rst:4831 msgid "del" msgstr "del" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "append() (sequence method)" msgstr "append() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "clear() (sequence method)" msgstr "clear() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "copy() (sequence method)" msgstr "copy() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "extend() (sequence method)" msgstr "extend() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "insert() (sequence method)" msgstr "insert() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "pop() (sequence method)" msgstr "pop() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "remove() (sequence method)" msgstr "remove() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1196 +#: library/stdtypes.rst:1199 msgid "reverse() (sequence method)" msgstr "reverse() (μέθοδος ακολουθίας)" -#: library/stdtypes.rst:1425 +#: library/stdtypes.rst:1430 msgid "range" msgstr "range" -#: library/stdtypes.rst:1689 library/stdtypes.rst:2459 -#: library/stdtypes.rst:2605 +#: library/stdtypes.rst:1694 library/stdtypes.rst:2515 +#: library/stdtypes.rst:2661 msgid "string" msgstr "string" -#: library/stdtypes.rst:1546 +#: library/stdtypes.rst:1551 msgid "text sequence type" msgstr "τύπος ακολουθίας κειμένου" -#: library/stdtypes.rst:1689 library/stdtypes.rst:1707 +#: library/stdtypes.rst:1694 library/stdtypes.rst:1712 msgid "str (built-in class)" msgstr "str (ενσωματωμένη (built-in) κλάση)" -#: library/stdtypes.rst:1546 +#: library/stdtypes.rst:1551 msgid "(see also string)" msgstr "(βλ. επίσης string)" -#: library/stdtypes.rst:1676 +#: library/stdtypes.rst:1681 msgid "io.StringIO" msgstr "io.StringIO" -#: library/stdtypes.rst:2800 +#: library/stdtypes.rst:2856 msgid "buffer protocol" msgstr "πρωτόκολλο buffer" -#: library/stdtypes.rst:2808 library/stdtypes.rst:3046 -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:2864 library/stdtypes.rst:3102 +#: library/stdtypes.rst:3924 msgid "bytes" msgstr "bytes" -#: library/stdtypes.rst:3046 +#: library/stdtypes.rst:3102 msgid "methods" msgstr "μέθοδοι" -#: library/stdtypes.rst:1742 +#: library/stdtypes.rst:1747 msgid "re" msgstr "re" -#: library/stdtypes.rst:3722 +#: library/stdtypes.rst:3778 msgid "universal newlines" msgstr "καθολικές νέες γραμμές" -#: library/stdtypes.rst:2273 +#: library/stdtypes.rst:2329 msgid "str.splitlines method" msgstr "μέθοδος str.splitlines" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "! formatted string literal" msgstr "! μορφοποιημένη συμβολοσειρά κυριολεκτικής μορφής" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "formatted string literals" msgstr "μορφοποιημένες συμβολοσειρές κυριολεξίας" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "! f-string" msgstr "! f-string" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "f-strings" msgstr "string" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "fstring" msgstr "fstring" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "interpolated string literal" msgstr "συμβολοσειρά κυριολεξίας με παρεμβολή" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "formatted literal" msgstr "μορφοποιημένη κυριολεξία" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "interpolated literal" msgstr "κυριολεκτικό με παρεμβολή" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "{} (curly brackets)" msgstr "{} (αγκύλες)" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "in formatted string literal" msgstr "μέσα σε μορφοποιημένη συμβολοσειρά" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "! (exclamation mark)" msgstr "! (Θαυμαστικό)" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid ": (colon)" msgstr ": (άνω κάτω τελεία)" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "= (equals)" msgstr "= (ίσο)" -#: library/stdtypes.rst:2459 +#: library/stdtypes.rst:2515 msgid "for help in debugging using string literals" msgstr "για βοήθεια στην αποσφαλμάτωση μέσω κυριολεκτικών συμβολοσειρών" -#: library/stdtypes.rst:2605 +#: library/stdtypes.rst:2661 msgid "formatting, string (%)" msgstr "μορφοποίηση, string (%)" -#: library/stdtypes.rst:2605 +#: library/stdtypes.rst:2661 msgid "interpolation, string (%)" msgstr "παρεμβολή, string (%)" -#: library/stdtypes.rst:2605 +#: library/stdtypes.rst:2661 msgid "formatting, printf" msgstr "μορφοποίηση, printf" -#: library/stdtypes.rst:2605 +#: library/stdtypes.rst:2661 msgid "interpolation, printf" msgstr "παρεμβολή, printf" -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:3924 msgid "printf-style formatting" msgstr "μορφοποίηση σε στυλ printf" -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:3924 msgid "sprintf-style formatting" msgstr "μορφοποίηση σε στυλ sprintf" -#: library/stdtypes.rst:3900 +#: library/stdtypes.rst:3956 msgid "() (parentheses)" msgstr "() (παρενθέσεις)" -#: library/stdtypes.rst:2684 library/stdtypes.rst:3943 +#: library/stdtypes.rst:2740 library/stdtypes.rst:3999 msgid "in printf-style formatting" msgstr "σε μορφοποίηση σε στυλ printf" -#: library/stdtypes.rst:3900 +#: library/stdtypes.rst:3956 msgid ". (dot)" msgstr ". (τελεία)" -#: library/stdtypes.rst:3943 +#: library/stdtypes.rst:3999 msgid "# (hash)" msgstr "# (δίεση)" -#: library/stdtypes.rst:3943 +#: library/stdtypes.rst:3999 msgid "space" msgstr "διάστημα" -#: library/stdtypes.rst:2800 +#: library/stdtypes.rst:2856 msgid "binary sequence types" msgstr "τύπος δυαδικών ακολουθιών" -#: library/stdtypes.rst:2808 +#: library/stdtypes.rst:2864 msgid "memoryview" msgstr "memoryview" -#: library/stdtypes.rst:2808 +#: library/stdtypes.rst:2864 msgid "array" msgstr "πίνακας" -#: library/stdtypes.rst:3722 +#: library/stdtypes.rst:3778 msgid "bytes.splitlines method" msgstr "bytes.splitlines μέθοδος" -#: library/stdtypes.rst:3722 +#: library/stdtypes.rst:3778 msgid "bytearray.splitlines method" msgstr "bytearray.splitlines μέθοδος" -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:3924 msgid "formatting" msgstr "μορφοποίηση" -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:3924 msgid "bytes (%)" msgstr "bytes (%)" -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:3924 msgid "bytearray (%)" msgstr "bytearray (%)" -#: library/stdtypes.rst:3868 +#: library/stdtypes.rst:3924 msgid "interpolation" msgstr "μεταβολή" -#: library/stdtypes.rst:4573 +#: library/stdtypes.rst:4629 msgid "set" msgstr "set" -#: library/stdtypes.rst:4775 +#: library/stdtypes.rst:4831 msgid "mapping" msgstr "αντιστοίχιση" -#: library/stdtypes.rst:4775 +#: library/stdtypes.rst:4831 msgid "dictionary" msgstr "λεξικό" -#: library/stdtypes.rst:4885 +#: library/stdtypes.rst:4941 msgid "__missing__()" msgstr "__missing__()" -#: library/stdtypes.rst:5170 +#: library/stdtypes.rst:5226 msgid "context manager" msgstr "διαχειριστής περιεχομένου" -#: library/stdtypes.rst:5170 +#: library/stdtypes.rst:5226 msgid "context management protocol" msgstr "πρωτόκολλο διαχειριστή περιεχομένου" -#: library/stdtypes.rst:5170 +#: library/stdtypes.rst:5226 msgid "context management" msgstr "διαχείριση περιεχομένου" -#: library/stdtypes.rst:5243 +#: library/stdtypes.rst:5299 msgid "annotation" msgstr "annotation" -#: library/stdtypes.rst:5243 +#: library/stdtypes.rst:5299 msgid "type annotation; type hint" msgstr "type annotation; type hint" -#: library/stdtypes.rst:5255 +#: library/stdtypes.rst:5311 msgid "GenericAlias" msgstr "GenericAlias" -#: library/stdtypes.rst:5255 +#: library/stdtypes.rst:5311 msgid "Generic" msgstr "Generic" -#: library/stdtypes.rst:5255 +#: library/stdtypes.rst:5311 msgid "Alias" msgstr "Alias" -#: library/stdtypes.rst:5511 +#: library/stdtypes.rst:5567 msgid "Union" msgstr "Ένωση" -#: library/stdtypes.rst:5511 +#: library/stdtypes.rst:5567 msgid "union" msgstr "ένωση" -#: library/stdtypes.rst:5686 +#: library/stdtypes.rst:5742 msgid "method" msgstr "μέθοδος" -#: library/stdtypes.rst:5730 +#: library/stdtypes.rst:5786 msgid "code" msgstr "κώδικας" -#: library/stdtypes.rst:5730 +#: library/stdtypes.rst:5786 msgid "code object" msgstr "αντικείμενο κώδικα" -#: library/stdtypes.rst:5737 +#: library/stdtypes.rst:5793 msgid "compile" msgstr "compile" -#: library/stdtypes.rst:5737 +#: library/stdtypes.rst:5793 msgid "__code__ (function object attribute)" msgstr "__code__ (χαρακτηριστικό αντικείμενου συνάρτησης)" -#: library/stdtypes.rst:5751 +#: library/stdtypes.rst:5807 msgid "exec" msgstr "exec" -#: library/stdtypes.rst:5751 +#: library/stdtypes.rst:5807 msgid "eval" msgstr "eval" -#: library/stdtypes.rst:5790 +#: library/stdtypes.rst:5846 msgid "..." msgstr "..." -#: library/stdtypes.rst:5790 +#: library/stdtypes.rst:5846 msgid "ellipsis literal" msgstr "ellipsis literal" diff --git a/library/string.po b/library/string.po index 90eae22c..279c04a8 100644 --- a/library/string.po +++ b/library/string.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/stringprep.po b/library/stringprep.po index 1431a472..64fc7a67 100644 --- a/library/stringprep.po +++ b/library/stringprep.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/struct.po b/library/struct.po index 3454abd8..61513deb 100644 --- a/library/struct.po +++ b/library/struct.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-10 22:42+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/subprocess.po b/library/subprocess.po index f54c8ff6..ad66274f 100644 --- a/library/subprocess.po +++ b/library/subprocess.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sunau.po b/library/sunau.po index 3d9f20e9..b3454cf7 100644 --- a/library/sunau.po +++ b/library/sunau.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/superseded.po b/library/superseded.po index e5187654..9f50163e 100644 --- a/library/superseded.po +++ b/library/superseded.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/symtable.po b/library/symtable.po index dcac3a75..aae45843 100644 --- a/library/symtable.po +++ b/library/symtable.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sys.monitoring.po b/library/sys.monitoring.po index 77aa744b..610e495f 100644 --- a/library/sys.monitoring.po +++ b/library/sys.monitoring.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sys.po b/library/sys.po index d4f40dcb..d0d0311f 100644 --- a/library/sys.po +++ b/library/sys.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -42,8 +42,8 @@ msgid "" msgstr "" #: library/sys.rst:298 library/sys.rst:789 library/sys.rst:1054 -#: library/sys.rst:1891 library/sys.rst:1914 library/sys.rst:1952 -#: library/sys.rst:2196 +#: library/sys.rst:1891 library/sys.rst:1914 library/sys.rst:1959 +#: library/sys.rst:2203 msgid "Availability" msgstr "" @@ -2444,74 +2444,81 @@ msgid "" "local and remote interpreters must be the same exact version." msgstr "" -#: library/sys.rst:1942 +#: library/sys.rst:1938 +msgid "" +"When the script is executed in the remote process, an :ref:`auditing event " +"` ``sys.remote_debugger_script`` is raised with the path in the " +"remote process." +msgstr "" + +#: library/sys.rst:1949 msgid "" "Changes the :term:`filesystem encoding and error handler` to 'mbcs' and " "'replace' respectively, for consistency with versions of Python prior to 3.6." msgstr "" -#: library/sys.rst:1946 +#: library/sys.rst:1953 msgid "" "This is equivalent to defining the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` " "environment variable before launching Python." msgstr "" -#: library/sys.rst:1949 +#: library/sys.rst:1956 msgid "" "See also :func:`sys.getfilesystemencoding` and :func:`sys." "getfilesystemencodeerrors`." msgstr "" -#: library/sys.rst:1955 +#: library/sys.rst:1962 msgid "" "Changing the filesystem encoding after Python startup is risky because the " "old fsencoding or paths encoded by the old fsencoding may be cached " "somewhere. Use :envvar:`PYTHONLEGACYWINDOWSFSENCODING` instead." msgstr "" -#: library/sys.rst:1959 +#: library/sys.rst:1966 msgid "See :pep:`529` for more details." msgstr "" -#: library/sys.rst:1962 +#: library/sys.rst:1969 msgid "Use :envvar:`PYTHONLEGACYWINDOWSFSENCODING` instead." msgstr "" -#: library/sys.rst:1969 +#: library/sys.rst:1976 msgid "" ":term:`File objects ` used by the interpreter for standard " "input, output and errors:" msgstr "" -#: library/sys.rst:1972 +#: library/sys.rst:1979 msgid "" "``stdin`` is used for all interactive input (including calls to :func:" "`input`);" msgstr "" -#: library/sys.rst:1974 +#: library/sys.rst:1981 msgid "" "``stdout`` is used for the output of :func:`print` and :term:`expression` " "statements and for the prompts of :func:`input`;" msgstr "" -#: library/sys.rst:1976 +#: library/sys.rst:1983 msgid "The interpreter's own prompts and its error messages go to ``stderr``." msgstr "" -#: library/sys.rst:1978 +#: library/sys.rst:1985 msgid "" "These streams are regular :term:`text files ` like those returned " "by the :func:`open` function. Their parameters are chosen as follows:" msgstr "" -#: library/sys.rst:1982 +#: library/sys.rst:1989 msgid "" "The encoding and error handling are is initialized from :c:member:`PyConfig." "stdio_encoding` and :c:member:`PyConfig.stdio_errors`." msgstr "" -#: library/sys.rst:1985 +#: library/sys.rst:1992 msgid "" "On Windows, UTF-8 is used for the console device. Non-character devices " "such as disk files and pipes use the system locale encoding (i.e. the ANSI " @@ -2522,14 +2529,14 @@ msgid "" "initially attached to a console." msgstr "" -#: library/sys.rst:1994 +#: library/sys.rst:2001 msgid "" "The special behaviour of the console can be overridden by setting the " "environment variable PYTHONLEGACYWINDOWSSTDIO before starting Python. In " "that case, the console codepages are used as for any other character device." msgstr "" -#: library/sys.rst:1999 +#: library/sys.rst:2006 msgid "" "Under all platforms, you can override the character encoding by setting the :" "envvar:`PYTHONIOENCODING` environment variable before starting Python or by " @@ -2538,7 +2545,7 @@ msgid "" "only applies when :envvar:`PYTHONLEGACYWINDOWSSTDIO` is also set." msgstr "" -#: library/sys.rst:2006 +#: library/sys.rst:2013 msgid "" "When interactive, the ``stdout`` stream is line-buffered. Otherwise, it is " "block-buffered like regular text files. The ``stderr`` stream is line-" @@ -2547,19 +2554,19 @@ msgid "" "`PYTHONUNBUFFERED` environment variable." msgstr "" -#: library/sys.rst:2012 +#: library/sys.rst:2019 msgid "" "Non-interactive ``stderr`` is now line-buffered instead of fully buffered." msgstr "" -#: library/sys.rst:2018 +#: library/sys.rst:2025 msgid "" "To write or read binary data from/to the standard streams, use the " "underlying binary :data:`~io.TextIOBase.buffer` object. For example, to " "write bytes to :data:`stdout`, use ``sys.stdout.buffer.write(b'abc')``." msgstr "" -#: library/sys.rst:2022 +#: library/sys.rst:2029 msgid "" "However, if you are writing a library (and do not control in which context " "its code will be executed), be aware that the standard streams may be " @@ -2567,7 +2574,7 @@ msgid "" "support the :attr:`!buffer` attribute." msgstr "" -#: library/sys.rst:2032 +#: library/sys.rst:2039 msgid "" "These objects contain the original values of ``stdin``, ``stderr`` and " "``stdout`` at the start of the program. They are used during finalization, " @@ -2575,7 +2582,7 @@ msgid "" "``sys.std*`` object has been redirected." msgstr "" -#: library/sys.rst:2037 +#: library/sys.rst:2044 msgid "" "It can also be used to restore the actual files to known working file " "objects in case they have been overwritten with a broken object. However, " @@ -2583,7 +2590,7 @@ msgid "" "before replacing it, and restore the saved object." msgstr "" -#: library/sys.rst:2043 +#: library/sys.rst:2050 msgid "" "Under some conditions ``stdin``, ``stdout`` and ``stderr`` as well as the " "original values ``__stdin__``, ``__stdout__`` and ``__stderr__`` can be " @@ -2591,12 +2598,12 @@ msgid "" "to a console and Python apps started with :program:`pythonw`." msgstr "" -#: library/sys.rst:2051 +#: library/sys.rst:2058 msgid "" "A frozenset of strings containing the names of standard library modules." msgstr "" -#: library/sys.rst:2053 +#: library/sys.rst:2060 msgid "" "It is the same on all platforms. Modules which are not available on some " "platforms and modules disabled at Python build are also listed. All module " @@ -2604,7 +2611,7 @@ msgid "" "modules are excluded." msgstr "" -#: library/sys.rst:2058 +#: library/sys.rst:2065 msgid "" "For packages, only the main package is listed: sub-packages and sub-modules " "are not listed. For example, the ``email`` package is listed, but the " @@ -2612,60 +2619,60 @@ msgid "" "listed." msgstr "" -#: library/sys.rst:2063 +#: library/sys.rst:2070 msgid "See also the :data:`sys.builtin_module_names` list." msgstr "" -#: library/sys.rst:2070 +#: library/sys.rst:2077 msgid "" "A :term:`named tuple` holding information about the thread implementation." msgstr "" -#: library/sys.rst:2075 +#: library/sys.rst:2082 msgid "The name of the thread implementation:" msgstr "" -#: library/sys.rst:2077 +#: library/sys.rst:2084 msgid "``\"nt\"``: Windows threads" msgstr "" -#: library/sys.rst:2078 +#: library/sys.rst:2085 msgid "``\"pthread\"``: POSIX threads" msgstr "" -#: library/sys.rst:2079 +#: library/sys.rst:2086 msgid "" "``\"pthread-stubs\"``: stub POSIX threads (on WebAssembly platforms without " "threading support)" msgstr "" -#: library/sys.rst:2081 +#: library/sys.rst:2088 msgid "``\"solaris\"``: Solaris threads" msgstr "" -#: library/sys.rst:2085 +#: library/sys.rst:2092 msgid "The name of the lock implementation:" msgstr "" -#: library/sys.rst:2087 +#: library/sys.rst:2094 msgid "``\"semaphore\"``: a lock uses a semaphore" msgstr "" -#: library/sys.rst:2088 +#: library/sys.rst:2095 msgid "``\"mutex+cond\"``: a lock uses a mutex and a condition variable" msgstr "" -#: library/sys.rst:2089 +#: library/sys.rst:2096 msgid "``None`` if this information is unknown" msgstr "" -#: library/sys.rst:2093 +#: library/sys.rst:2100 msgid "" "The name and version of the thread library. It is a string, or ``None`` if " "this information is unknown." msgstr "" -#: library/sys.rst:2101 +#: library/sys.rst:2108 msgid "" "When this variable is set to an integer value, it determines the maximum " "number of levels of traceback information printed when an unhandled " @@ -2674,73 +2681,73 @@ msgid "" "are printed." msgstr "" -#: library/sys.rst:2109 +#: library/sys.rst:2116 msgid "Handle an unraisable exception." msgstr "" -#: library/sys.rst:2111 +#: library/sys.rst:2118 msgid "" "Called when an exception has occurred but there is no way for Python to " "handle it. For example, when a destructor raises an exception or during " "garbage collection (:func:`gc.collect`)." msgstr "" -#: library/sys.rst:2115 +#: library/sys.rst:2122 msgid "The *unraisable* argument has the following attributes:" msgstr "" -#: library/sys.rst:2117 +#: library/sys.rst:2124 msgid ":attr:`!exc_type`: Exception type." msgstr "" -#: library/sys.rst:2118 +#: library/sys.rst:2125 msgid ":attr:`!exc_value`: Exception value, can be ``None``." msgstr "" -#: library/sys.rst:2119 +#: library/sys.rst:2126 msgid ":attr:`!exc_traceback`: Exception traceback, can be ``None``." msgstr "" -#: library/sys.rst:2120 +#: library/sys.rst:2127 msgid ":attr:`!err_msg`: Error message, can be ``None``." msgstr "" -#: library/sys.rst:2121 +#: library/sys.rst:2128 msgid ":attr:`!object`: Object causing the exception, can be ``None``." msgstr "" -#: library/sys.rst:2123 +#: library/sys.rst:2130 msgid "" "The default hook formats :attr:`!err_msg` and :attr:`!object` as: " "``f'{err_msg}: {object!r}'``; use \"Exception ignored in\" error message if :" "attr:`!err_msg` is ``None``." msgstr "" -#: library/sys.rst:2127 +#: library/sys.rst:2134 msgid "" ":func:`sys.unraisablehook` can be overridden to control how unraisable " "exceptions are handled." msgstr "" -#: library/sys.rst:2132 +#: library/sys.rst:2139 msgid ":func:`excepthook` which handles uncaught exceptions." msgstr "" -#: library/sys.rst:2136 +#: library/sys.rst:2143 msgid "" "Storing :attr:`!exc_value` using a custom hook can create a reference cycle. " "It should be cleared explicitly to break the reference cycle when the " "exception is no longer needed." msgstr "" -#: library/sys.rst:2140 +#: library/sys.rst:2147 msgid "" "Storing :attr:`!object` using a custom hook can resurrect it if it is set to " "an object which is being finalized. Avoid storing :attr:`!object` after the " "custom hook completes to avoid resurrecting objects." msgstr "" -#: library/sys.rst:2146 +#: library/sys.rst:2153 msgid "" "Raise an auditing event ``sys.unraisablehook`` with arguments *hook*, " "*unraisable* when an exception that cannot be handled occurs. The " @@ -2748,7 +2755,7 @@ msgid "" "hook has been set, *hook* may be ``None``." msgstr "" -#: library/sys.rst:2155 +#: library/sys.rst:2162 msgid "" "A string containing the version number of the Python interpreter plus " "additional information on the build number and compiler used. This string " @@ -2757,13 +2764,13 @@ msgid "" "functions provided by the :mod:`platform` module." msgstr "" -#: library/sys.rst:2164 +#: library/sys.rst:2171 msgid "" "The C API version for this interpreter. Programmers may find this useful " "when debugging version conflicts between Python and extension modules." msgstr "" -#: library/sys.rst:2170 +#: library/sys.rst:2177 msgid "" "A tuple containing the five components of the version number: *major*, " "*minor*, *micro*, *releaselevel*, and *serial*. All values except " @@ -2774,18 +2781,18 @@ msgid "" "version_info.major`` and so on." msgstr "" -#: library/sys.rst:2178 +#: library/sys.rst:2185 msgid "Added named component attributes." msgstr "" -#: library/sys.rst:2183 +#: library/sys.rst:2190 msgid "" "This is an implementation detail of the warnings framework; do not modify " "this value. Refer to the :mod:`warnings` module for more information on the " "warnings framework." msgstr "" -#: library/sys.rst:2190 +#: library/sys.rst:2197 msgid "" "The version number used to form registry keys on Windows platforms. This is " "stored as string resource 1000 in the Python DLL. The value is normally the " @@ -2794,20 +2801,20 @@ msgid "" "has no effect on the registry keys used by Python." msgstr "" -#: library/sys.rst:2202 +#: library/sys.rst:2209 msgid "" "Namespace containing functions and constants for register callbacks and " "controlling monitoring events. See :mod:`sys.monitoring` for details." msgstr "" -#: library/sys.rst:2208 +#: library/sys.rst:2215 msgid "" "A dictionary of the various implementation-specific flags passed through " "the :option:`-X` command-line option. Option names are either mapped to " "their values, if given explicitly, or to :const:`True`. Example:" msgstr "" -#: library/sys.rst:2212 +#: library/sys.rst:2219 msgid "" "$ ./python -Xa=b -Xc\n" "Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50)\n" @@ -2819,18 +2826,18 @@ msgid "" "{'a': 'b', 'c': True}" msgstr "" -#: library/sys.rst:2224 +#: library/sys.rst:2231 msgid "" "This is a CPython-specific way of accessing options passed through :option:`-" "X`. Other implementations may export them through other means, or not at " "all." msgstr "" -#: library/sys.rst:2232 +#: library/sys.rst:2239 msgid "Citations" msgstr "" -#: library/sys.rst:2233 +#: library/sys.rst:2240 msgid "" "ISO/IEC 9899:1999. \"Programming languages -- C.\" A public draft of this " "standard is available at https://www.open-std.org/jtc1/sc22/wg14/www/docs/" diff --git a/library/sys_path_init.po b/library/sys_path_init.po index 63abc87d..f3fd2bd5 100644 --- a/library/sys_path_init.po +++ b/library/sys_path_init.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/sysconfig.po b/library/sysconfig.po index b588bd31..698835a6 100644 --- a/library/sysconfig.po +++ b/library/sysconfig.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/syslog.po b/library/syslog.po index 172168c7..94b895be 100644 --- a/library/syslog.po +++ b/library/syslog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tabnanny.po b/library/tabnanny.po index 47bdd9c7..7ebb27af 100644 --- a/library/tabnanny.po +++ b/library/tabnanny.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tarfile.po b/library/tarfile.po index 612398cf..23c660be 100644 --- a/library/tarfile.po +++ b/library/tarfile.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -349,11 +349,11 @@ msgstr "" msgid "Open an lzma compressed *stream* for writing." msgstr "" -#: library/tarfile.rst:431 +#: library/tarfile.rst:440 msgid "The ``'x'`` (exclusive creation) mode was added." msgstr "" -#: library/tarfile.rst:434 library/tarfile.rst:682 +#: library/tarfile.rst:443 library/tarfile.rst:691 msgid "The *name* parameter accepts a :term:`path-like object`." msgstr "" @@ -451,124 +451,132 @@ msgid "" "directory." msgstr "" -#: library/tarfile.rst:259 +#: library/tarfile.rst:260 +msgid "" +"Raised to refuse emulating a link (hard or symbolic) by extracting another " +"archive member, when that member would be rejected by the filter location. " +"The exception that was raised to reject the replacement member is available " +"as :attr:`!BaseException.__context__`." +msgstr "" + +#: library/tarfile.rst:268 msgid "The following constants are available at the module level:" msgstr "" -#: library/tarfile.rst:263 +#: library/tarfile.rst:272 msgid "" "The default character encoding: ``'utf-8'`` on Windows, the value returned " "by :func:`sys.getfilesystemencoding` otherwise." msgstr "" -#: library/tarfile.rst:269 +#: library/tarfile.rst:278 msgid "A regular file :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:273 +#: library/tarfile.rst:282 msgid "A link (inside tarfile) :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:277 +#: library/tarfile.rst:286 msgid "A symbolic link :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:281 +#: library/tarfile.rst:290 msgid "A character special device :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:285 +#: library/tarfile.rst:294 msgid "A block special device :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:289 +#: library/tarfile.rst:298 msgid "A directory :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:293 +#: library/tarfile.rst:302 msgid "A FIFO special device :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:297 +#: library/tarfile.rst:306 msgid "A contiguous file :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:301 +#: library/tarfile.rst:310 msgid "A GNU tar longname :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:305 +#: library/tarfile.rst:314 msgid "A GNU tar longlink :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:309 +#: library/tarfile.rst:318 msgid "A GNU tar sparse file :attr:`~TarInfo.type`." msgstr "" -#: library/tarfile.rst:312 +#: library/tarfile.rst:321 msgid "" "Each of the following constants defines a tar archive format that the :mod:" "`tarfile` module is able to create. See section :ref:`tar-formats` for " "details." msgstr "" -#: library/tarfile.rst:319 +#: library/tarfile.rst:328 msgid "POSIX.1-1988 (ustar) format." msgstr "" -#: library/tarfile.rst:324 +#: library/tarfile.rst:333 msgid "GNU tar format." msgstr "" -#: library/tarfile.rst:329 +#: library/tarfile.rst:338 msgid "POSIX.1-2001 (pax) format." msgstr "" -#: library/tarfile.rst:334 +#: library/tarfile.rst:343 msgid "" "The default format for creating archives. This is currently :const:" "`PAX_FORMAT`." msgstr "" -#: library/tarfile.rst:336 +#: library/tarfile.rst:345 msgid "" "The default format for new archives was changed to :const:`PAX_FORMAT` from :" "const:`GNU_FORMAT`." msgstr "" -#: library/tarfile.rst:343 +#: library/tarfile.rst:352 msgid "Module :mod:`zipfile`" msgstr "" -#: library/tarfile.rst:344 +#: library/tarfile.rst:353 msgid "Documentation of the :mod:`zipfile` standard module." msgstr "" -#: library/tarfile.rst:346 +#: library/tarfile.rst:355 msgid ":ref:`archiving-operations`" msgstr "" -#: library/tarfile.rst:347 +#: library/tarfile.rst:356 msgid "" "Documentation of the higher-level archiving facilities provided by the " "standard :mod:`shutil` module." msgstr "" -#: library/tarfile.rst:350 +#: library/tarfile.rst:359 msgid "" "`GNU tar manual, Basic Tar Format `_" msgstr "" -#: library/tarfile.rst:351 +#: library/tarfile.rst:360 msgid "Documentation for tar archive files, including GNU tar extensions." msgstr "" -#: library/tarfile.rst:357 +#: library/tarfile.rst:366 msgid "TarFile Objects" msgstr "" -#: library/tarfile.rst:359 +#: library/tarfile.rst:368 msgid "" "The :class:`TarFile` object provides an interface to a tar archive. A tar " "archive is a sequence of blocks. An archive member (a stored file) is made " @@ -577,7 +585,7 @@ msgid "" "class:`TarInfo` object, see :ref:`tarinfo-objects` for details." msgstr "" -#: library/tarfile.rst:365 +#: library/tarfile.rst:374 msgid "" "A :class:`TarFile` object can be used as a context manager in a :keyword:" "`with` statement. It will automatically be closed when the block is " @@ -586,24 +594,24 @@ msgid "" "be closed. See the :ref:`tar-examples` section for a use case." msgstr "" -#: library/tarfile.rst:371 +#: library/tarfile.rst:380 msgid "Added support for the context management protocol." msgstr "" -#: library/tarfile.rst:376 +#: library/tarfile.rst:385 msgid "" "All following arguments are optional and can be accessed as instance " "attributes as well." msgstr "" -#: library/tarfile.rst:379 +#: library/tarfile.rst:388 msgid "" "*name* is the pathname of the archive. *name* may be a :term:`path-like " "object`. It can be omitted if *fileobj* is given. In this case, the file " "object's :attr:`!name` attribute is used if it exists." msgstr "" -#: library/tarfile.rst:383 +#: library/tarfile.rst:392 msgid "" "*mode* is either ``'r'`` to read from an existing archive, ``'a'`` to append " "data to an existing file, ``'w'`` to create a new file overwriting an " @@ -611,18 +619,18 @@ msgid "" "exist." msgstr "" -#: library/tarfile.rst:387 +#: library/tarfile.rst:396 msgid "" "If *fileobj* is given, it is used for reading or writing data. If it can be " "determined, *mode* is overridden by *fileobj*'s mode. *fileobj* will be used " "from position 0." msgstr "" -#: library/tarfile.rst:393 +#: library/tarfile.rst:402 msgid "*fileobj* is not closed, when :class:`TarFile` is closed." msgstr "" -#: library/tarfile.rst:395 +#: library/tarfile.rst:404 msgid "" "*format* controls the archive format for writing. It must be one of the " "constants :const:`USTAR_FORMAT`, :const:`GNU_FORMAT` or :const:`PAX_FORMAT` " @@ -630,20 +638,20 @@ msgid "" "detected, even if different formats are present in a single archive." msgstr "" -#: library/tarfile.rst:400 +#: library/tarfile.rst:409 msgid "" "The *tarinfo* argument can be used to replace the default :class:`TarInfo` " "class with a different one." msgstr "" -#: library/tarfile.rst:403 +#: library/tarfile.rst:412 msgid "" "If *dereference* is :const:`False`, add symbolic and hard links to the " "archive. If it is :const:`True`, add the content of the target files to the " "archive. This has no effect on systems that do not support symbolic links." msgstr "" -#: library/tarfile.rst:407 +#: library/tarfile.rst:416 msgid "" "If *ignore_zeros* is :const:`False`, treat an empty block as the end of the " "archive. If it is :const:`True`, skip empty (and invalid) blocks and try to " @@ -651,19 +659,19 @@ msgid "" "concatenated or damaged archives." msgstr "" -#: library/tarfile.rst:411 +#: library/tarfile.rst:420 msgid "" "*debug* can be set from ``0`` (no debug messages) up to ``3`` (all debug " "messages). The messages are written to ``sys.stderr``." msgstr "" -#: library/tarfile.rst:414 +#: library/tarfile.rst:423 msgid "" "*errorlevel* controls how extraction errors are handled, see :attr:`the " "corresponding attribute `." msgstr "" -#: library/tarfile.rst:417 +#: library/tarfile.rst:426 msgid "" "The *encoding* and *errors* arguments define the character encoding to be " "used for reading or writing the archive and how conversion errors are going " @@ -671,57 +679,57 @@ msgid "" "ref:`tar-unicode` for in-depth information." msgstr "" -#: library/tarfile.rst:422 +#: library/tarfile.rst:431 msgid "" "The *pax_headers* argument is an optional dictionary of strings which will " "be added as a pax global header if *format* is :const:`PAX_FORMAT`." msgstr "" -#: library/tarfile.rst:425 +#: library/tarfile.rst:434 msgid "" "If *stream* is set to :const:`True` then while reading the archive info " "about files in the archive are not cached, saving memory." msgstr "" -#: library/tarfile.rst:751 +#: library/tarfile.rst:760 msgid "Use ``'surrogateescape'`` as the default for the *errors* argument." msgstr "" -#: library/tarfile.rst:437 +#: library/tarfile.rst:446 msgid "Add the *stream* parameter." msgstr "" -#: library/tarfile.rst:442 +#: library/tarfile.rst:451 msgid "" "Alternative constructor. The :func:`tarfile.open` function is actually a " "shortcut to this classmethod." msgstr "" -#: library/tarfile.rst:448 +#: library/tarfile.rst:457 msgid "" "Return a :class:`TarInfo` object for member *name*. If *name* can not be " "found in the archive, :exc:`KeyError` is raised." msgstr "" -#: library/tarfile.rst:453 +#: library/tarfile.rst:462 msgid "" "If a member occurs more than once in the archive, its last occurrence is " "assumed to be the most up-to-date version." msgstr "" -#: library/tarfile.rst:459 +#: library/tarfile.rst:468 msgid "" "Return the members of the archive as a list of :class:`TarInfo` objects. The " "list has the same order as the members in the archive." msgstr "" -#: library/tarfile.rst:465 +#: library/tarfile.rst:474 msgid "" "Return the members as a list of their names. It has the same order as the " "list returned by :meth:`getmembers`." msgstr "" -#: library/tarfile.rst:471 +#: library/tarfile.rst:480 msgid "" "Print a table of contents to ``sys.stdout``. If *verbose* is :const:`False`, " "only the names of the members are printed. If it is :const:`True`, output " @@ -729,18 +737,18 @@ msgid "" "given, it must be a subset of the list returned by :meth:`getmembers`." msgstr "" -#: library/tarfile.rst:476 +#: library/tarfile.rst:485 msgid "Added the *members* parameter." msgstr "" -#: library/tarfile.rst:482 +#: library/tarfile.rst:491 msgid "" "Return the next member of the archive as a :class:`TarInfo` object, when :" "class:`TarFile` is opened for reading. Return :const:`None` if there is no " "more available." msgstr "" -#: library/tarfile.rst:489 +#: library/tarfile.rst:498 msgid "" "Extract all members from the archive to the current working directory or " "directory *path*. If optional *members* is given, it must be a subset of the " @@ -752,14 +760,14 @@ msgid "" "fail." msgstr "" -#: library/tarfile.rst:497 +#: library/tarfile.rst:506 msgid "" "If *numeric_owner* is :const:`True`, the uid and gid numbers from the " "tarfile are used to set the owner/group for the extracted files. Otherwise, " "the named values from the tarfile are used." msgstr "" -#: library/tarfile.rst:501 +#: library/tarfile.rst:510 msgid "" "The *filter* argument specifies how ``members`` are modified or rejected " "before extraction. See :ref:`tarfile-extraction-filter` for details. It is " @@ -768,11 +776,11 @@ msgid "" "secure default (3.13 and lower)." msgstr "" -#: library/tarfile.rst:510 +#: library/tarfile.rst:519 msgid "Never extract archives from untrusted sources without prior inspection." msgstr "" -#: library/tarfile.rst:512 +#: library/tarfile.rst:521 msgid "" "Since Python 3.14, the default (:func:`data `) will prevent the " "most dangerous security issues. However, it will not prevent *all* " @@ -780,23 +788,23 @@ msgid "" "section for details." msgstr "" -#: library/tarfile.rst:554 +#: library/tarfile.rst:563 msgid "Added the *numeric_owner* parameter." msgstr "" -#: library/tarfile.rst:557 +#: library/tarfile.rst:566 msgid "The *path* parameter accepts a :term:`path-like object`." msgstr "" -#: library/tarfile.rst:560 library/tarfile.rst:644 +#: library/tarfile.rst:569 library/tarfile.rst:653 msgid "Added the *filter* parameter." msgstr "" -#: library/tarfile.rst:526 +#: library/tarfile.rst:535 msgid "The *filter* parameter now defaults to ``'data'``." msgstr "" -#: library/tarfile.rst:532 +#: library/tarfile.rst:541 msgid "" "Extract a member from the archive to the current working directory, using " "its full name. Its file information is extracted as accurately as possible. " @@ -805,29 +813,29 @@ msgid "" "File attributes (owner, mtime, mode) are set unless *set_attrs* is false." msgstr "" -#: library/tarfile.rst:538 +#: library/tarfile.rst:547 msgid "" "The *numeric_owner* and *filter* arguments are the same as for :meth:" "`extractall`." msgstr "" -#: library/tarfile.rst:543 +#: library/tarfile.rst:552 msgid "" "The :meth:`extract` method does not take care of several extraction issues. " "In most cases you should consider using the :meth:`extractall` method." msgstr "" -#: library/tarfile.rst:548 +#: library/tarfile.rst:557 msgid "" "Never extract archives from untrusted sources without prior inspection. See " "the warning for :meth:`extractall` for details." msgstr "" -#: library/tarfile.rst:551 +#: library/tarfile.rst:560 msgid "Added the *set_attrs* parameter." msgstr "" -#: library/tarfile.rst:566 +#: library/tarfile.rst:575 msgid "" "Extract a member from the archive as a file object. *member* may be a " "filename or a :class:`TarInfo` object. If *member* is a regular file or a " @@ -836,17 +844,17 @@ msgid "" "the archive, :exc:`KeyError` is raised." msgstr "" -#: library/tarfile.rst:572 +#: library/tarfile.rst:581 msgid "Return an :class:`io.BufferedReader` object." msgstr "" -#: library/tarfile.rst:575 +#: library/tarfile.rst:584 msgid "" "The returned :class:`io.BufferedReader` object has the :attr:`!mode` " "attribute which is always equal to ``'rb'``." msgstr "" -#: library/tarfile.rst:582 +#: library/tarfile.rst:591 msgid "" "If *errorlevel* is ``0``, errors are ignored when using :meth:`TarFile." "extract` and :meth:`TarFile.extractall`. Nevertheless, they appear as error " @@ -856,45 +864,45 @@ msgid "" "exc:`TarError` exceptions as well." msgstr "" -#: library/tarfile.rst:590 +#: library/tarfile.rst:599 msgid "" "Some exceptions, e.g. ones caused by wrong argument types or data " "corruption, are always raised." msgstr "" -#: library/tarfile.rst:593 +#: library/tarfile.rst:602 msgid "" "Custom :ref:`extraction filters ` should raise :" "exc:`FilterError` for *fatal* errors and :exc:`ExtractError` for *non-fatal* " "ones." msgstr "" -#: library/tarfile.rst:597 +#: library/tarfile.rst:606 msgid "" "Note that when an exception is raised, the archive may be partially " "extracted. It is the user’s responsibility to clean up." msgstr "" -#: library/tarfile.rst:604 +#: library/tarfile.rst:613 msgid "" "The :ref:`extraction filter ` used as a default " "for the *filter* argument of :meth:`~TarFile.extract` and :meth:`~TarFile." "extractall`." msgstr "" -#: library/tarfile.rst:608 +#: library/tarfile.rst:617 msgid "" "The attribute may be ``None`` or a callable. String names are not allowed " "for this attribute, unlike the *filter* argument to :meth:`~TarFile.extract`." msgstr "" -#: library/tarfile.rst:612 +#: library/tarfile.rst:621 msgid "" "If ``extraction_filter`` is ``None`` (the default), extraction methods will " "use the :func:`data ` filter by default." msgstr "" -#: library/tarfile.rst:615 +#: library/tarfile.rst:624 msgid "" "The attribute may be set on instances or overridden in subclasses. It also " "is possible to set it on the ``TarFile`` class itself to set a global " @@ -904,7 +912,7 @@ msgid "" "wrapped in :func:`staticmethod` to prevent injection of a ``self`` argument." msgstr "" -#: library/tarfile.rst:625 +#: library/tarfile.rst:634 msgid "" "The default filter is set to :func:`data `, which disallows " "some dangerous features such as links to absolute paths or paths outside of " @@ -912,7 +920,7 @@ msgid "" "`fully_trusted `." msgstr "" -#: library/tarfile.rst:633 +#: library/tarfile.rst:642 msgid "" "Add the file *name* to the archive. *name* may be any type of file " "(directory, fifo, symbolic link, etc.). If given, *arcname* specifies an " @@ -925,11 +933,11 @@ msgid "" "ref:`tar-examples` for an example." msgstr "" -#: library/tarfile.rst:647 +#: library/tarfile.rst:656 msgid "Recursion adds entries in sorted order." msgstr "" -#: library/tarfile.rst:653 +#: library/tarfile.rst:662 msgid "" "Add the :class:`TarInfo` object *tarinfo* to the archive. If *tarinfo* " "represents a non zero-size regular file, the *fileobj* argument should be a :" @@ -938,11 +946,11 @@ msgid "" "meth:`gettarinfo`." msgstr "" -#: library/tarfile.rst:660 +#: library/tarfile.rst:669 msgid "*fileobj* must be given for non-zero-sized regular files." msgstr "" -#: library/tarfile.rst:665 +#: library/tarfile.rst:674 msgid "" "Create a :class:`TarInfo` object from the result of :func:`os.stat` or " "equivalent on an existing file. The file is either named by *name*, or " @@ -953,7 +961,7 @@ msgid "" "The name should be a text string." msgstr "" -#: library/tarfile.rst:674 +#: library/tarfile.rst:683 msgid "" "You can modify some of the :class:`TarInfo`’s attributes before you add it " "using :meth:`addfile`. If the file object is not an ordinary file object " @@ -963,21 +971,21 @@ msgid "" "case *arcname* could be a dummy string." msgstr "" -#: library/tarfile.rst:688 +#: library/tarfile.rst:697 msgid "" "Close the :class:`TarFile`. In write mode, two finishing zero blocks are " "appended to the archive." msgstr "" -#: library/tarfile.rst:695 +#: library/tarfile.rst:704 msgid "A dictionary containing key-value pairs of pax global headers." msgstr "" -#: library/tarfile.rst:702 +#: library/tarfile.rst:711 msgid "TarInfo Objects" msgstr "" -#: library/tarfile.rst:704 +#: library/tarfile.rst:713 msgid "" "A :class:`TarInfo` object represents one member in a :class:`TarFile`. Aside " "from storing all required attributes of a file (like file type, size, time, " @@ -985,14 +993,14 @@ msgid "" "type. It does *not* contain the file's data itself." msgstr "" -#: library/tarfile.rst:709 +#: library/tarfile.rst:718 msgid "" ":class:`TarInfo` objects are returned by :class:`TarFile`'s methods :meth:" "`~TarFile.getmember`, :meth:`~TarFile.getmembers` and :meth:`~TarFile." "gettarinfo`." msgstr "" -#: library/tarfile.rst:713 +#: library/tarfile.rst:722 msgid "" "Modifying the objects returned by :meth:`~TarFile.getmember` or :meth:" "`~TarFile.getmembers` will affect all subsequent operations on the archive. " @@ -1001,80 +1009,80 @@ msgid "" "step." msgstr "" -#: library/tarfile.rst:719 +#: library/tarfile.rst:728 msgid "" "Several attributes can be set to ``None`` to indicate that a piece of " "metadata is unused or unknown. Different :class:`TarInfo` methods handle " "``None`` differently:" msgstr "" -#: library/tarfile.rst:723 +#: library/tarfile.rst:732 msgid "" "The :meth:`~TarFile.extract` or :meth:`~TarFile.extractall` methods will " "ignore the corresponding metadata, leaving it set to a default." msgstr "" -#: library/tarfile.rst:725 +#: library/tarfile.rst:734 msgid ":meth:`~TarFile.addfile` will fail." msgstr "" -#: library/tarfile.rst:726 +#: library/tarfile.rst:735 msgid ":meth:`~TarFile.list` will print a placeholder string." msgstr "" -#: library/tarfile.rst:730 +#: library/tarfile.rst:739 msgid "Create a :class:`TarInfo` object." msgstr "" -#: library/tarfile.rst:735 +#: library/tarfile.rst:744 msgid "Create and return a :class:`TarInfo` object from string buffer *buf*." msgstr "" -#: library/tarfile.rst:737 +#: library/tarfile.rst:746 msgid "Raises :exc:`HeaderError` if the buffer is invalid." msgstr "" -#: library/tarfile.rst:742 +#: library/tarfile.rst:751 msgid "" "Read the next member from the :class:`TarFile` object *tarfile* and return " "it as a :class:`TarInfo` object." msgstr "" -#: library/tarfile.rst:748 +#: library/tarfile.rst:757 msgid "" "Create a string buffer from a :class:`TarInfo` object. For information on " "the arguments see the constructor of the :class:`TarFile` class." msgstr "" -#: library/tarfile.rst:755 +#: library/tarfile.rst:764 msgid "A ``TarInfo`` object has the following public data attributes:" msgstr "" -#: library/tarfile.rst:761 +#: library/tarfile.rst:770 msgid "Name of the archive member." msgstr "" -#: library/tarfile.rst:767 +#: library/tarfile.rst:776 msgid "Size in bytes." msgstr "" -#: library/tarfile.rst:773 +#: library/tarfile.rst:782 msgid "" "Time of last modification in seconds since the :ref:`epoch `, as in :" "attr:`os.stat_result.st_mtime`." msgstr "" -#: library/tarfile.rst:789 library/tarfile.rst:832 library/tarfile.rst:854 +#: library/tarfile.rst:798 library/tarfile.rst:841 library/tarfile.rst:863 msgid "" "Can be set to ``None`` for :meth:`~TarFile.extract` and :meth:`~TarFile." "extractall`, causing extraction to skip applying this attribute." msgstr "" -#: library/tarfile.rst:785 +#: library/tarfile.rst:794 msgid "Permission bits, as for :func:`os.chmod`." msgstr "" -#: library/tarfile.rst:795 +#: library/tarfile.rst:804 msgid "" "File type. *type* is usually one of these constants: :const:`REGTYPE`, :" "const:`AREGTYPE`, :const:`LNKTYPE`, :const:`SYMTYPE`, :const:`DIRTYPE`, :" @@ -1083,128 +1091,128 @@ msgid "" "more conveniently, use the ``is*()`` methods below." msgstr "" -#: library/tarfile.rst:805 +#: library/tarfile.rst:814 msgid "" "Name of the target file name, which is only present in :class:`TarInfo` " "objects of type :const:`LNKTYPE` and :const:`SYMTYPE`." msgstr "" -#: library/tarfile.rst:808 +#: library/tarfile.rst:817 msgid "" "For symbolic links (``SYMTYPE``), the *linkname* is relative to the " "directory that contains the link. For hard links (``LNKTYPE``), the " "*linkname* is relative to the root of the archive." msgstr "" -#: library/tarfile.rst:817 +#: library/tarfile.rst:826 msgid "User ID of the user who originally stored this member." msgstr "" -#: library/tarfile.rst:828 +#: library/tarfile.rst:837 msgid "Group ID of the user who originally stored this member." msgstr "" -#: library/tarfile.rst:839 +#: library/tarfile.rst:848 msgid "User name." msgstr "" -#: library/tarfile.rst:850 +#: library/tarfile.rst:859 msgid "Group name." msgstr "" -#: library/tarfile.rst:861 +#: library/tarfile.rst:870 msgid "Header checksum." msgstr "" -#: library/tarfile.rst:867 +#: library/tarfile.rst:876 msgid "Device major number." msgstr "" -#: library/tarfile.rst:873 +#: library/tarfile.rst:882 msgid "Device minor number." msgstr "" -#: library/tarfile.rst:879 +#: library/tarfile.rst:888 msgid "The tar header starts here." msgstr "" -#: library/tarfile.rst:885 +#: library/tarfile.rst:894 msgid "The file's data starts here." msgstr "" -#: library/tarfile.rst:890 +#: library/tarfile.rst:899 msgid "Sparse member information." msgstr "" -#: library/tarfile.rst:896 +#: library/tarfile.rst:905 msgid "" "A dictionary containing key-value pairs of an associated pax extended header." msgstr "" -#: library/tarfile.rst:904 +#: library/tarfile.rst:913 msgid "" "Return a *new* copy of the :class:`!TarInfo` object with the given " "attributes changed. For example, to return a ``TarInfo`` with the group name " "set to ``'staff'``, use::" msgstr "" -#: library/tarfile.rst:908 +#: library/tarfile.rst:917 msgid "new_tarinfo = old_tarinfo.replace(gname='staff')" msgstr "" -#: library/tarfile.rst:910 +#: library/tarfile.rst:919 msgid "" "By default, a deep copy is made. If *deep* is false, the copy is shallow, i." "e. ``pax_headers`` and any custom attributes are shared with the original " "``TarInfo`` object." msgstr "" -#: library/tarfile.rst:914 +#: library/tarfile.rst:923 msgid "A :class:`TarInfo` object also provides some convenient query methods:" msgstr "" -#: library/tarfile.rst:919 +#: library/tarfile.rst:928 msgid "Return :const:`True` if the :class:`TarInfo` object is a regular file." msgstr "" -#: library/tarfile.rst:924 +#: library/tarfile.rst:933 msgid "Same as :meth:`isfile`." msgstr "" -#: library/tarfile.rst:929 +#: library/tarfile.rst:938 msgid "Return :const:`True` if it is a directory." msgstr "" -#: library/tarfile.rst:934 +#: library/tarfile.rst:943 msgid "Return :const:`True` if it is a symbolic link." msgstr "" -#: library/tarfile.rst:939 +#: library/tarfile.rst:948 msgid "Return :const:`True` if it is a hard link." msgstr "" -#: library/tarfile.rst:944 +#: library/tarfile.rst:953 msgid "Return :const:`True` if it is a character device." msgstr "" -#: library/tarfile.rst:949 +#: library/tarfile.rst:958 msgid "Return :const:`True` if it is a block device." msgstr "" -#: library/tarfile.rst:954 +#: library/tarfile.rst:963 msgid "Return :const:`True` if it is a FIFO." msgstr "" -#: library/tarfile.rst:959 +#: library/tarfile.rst:968 msgid "" "Return :const:`True` if it is one of character device, block device or FIFO." msgstr "" -#: library/tarfile.rst:965 +#: library/tarfile.rst:974 msgid "Extraction filters" msgstr "" -#: library/tarfile.rst:969 +#: library/tarfile.rst:978 msgid "" "The *tar* format is designed to capture all details of a UNIX-like " "filesystem, which makes it very powerful. Unfortunately, the features make " @@ -1214,71 +1222,71 @@ msgid "" "components, or symlinks that affect later members)." msgstr "" -#: library/tarfile.rst:977 +#: library/tarfile.rst:986 msgid "" "In most cases, the full functionality is not needed. Therefore, *tarfile* " "supports extraction filters: a mechanism to limit functionality, and thus " "mitigate some of the security issues." msgstr "" -#: library/tarfile.rst:983 +#: library/tarfile.rst:992 msgid "" "None of the available filters blocks *all* dangerous archive features. Never " "extract archives from untrusted sources without prior inspection. See also :" "ref:`tarfile-further-verification`." msgstr "" -#: library/tarfile.rst:989 +#: library/tarfile.rst:998 msgid ":pep:`706`" msgstr "" -#: library/tarfile.rst:990 +#: library/tarfile.rst:999 msgid "Contains further motivation and rationale behind the design." msgstr "" -#: library/tarfile.rst:992 +#: library/tarfile.rst:1001 msgid "" "The *filter* argument to :meth:`TarFile.extract` or :meth:`~TarFile." "extractall` can be:" msgstr "" -#: library/tarfile.rst:995 +#: library/tarfile.rst:1004 msgid "" "the string ``'fully_trusted'``: Honor all metadata as specified in the " "archive. Should be used if the user trusts the archive completely, or " "implements their own complex verification." msgstr "" -#: library/tarfile.rst:1000 +#: library/tarfile.rst:1009 msgid "" "the string ``'tar'``: Honor most *tar*-specific features (i.e. features of " "UNIX-like filesystems), but block features that are very likely to be " "surprising or malicious. See :func:`tar_filter` for details." msgstr "" -#: library/tarfile.rst:1004 +#: library/tarfile.rst:1013 msgid "" "the string ``'data'``: Ignore or block most features specific to UNIX-like " "filesystems. Intended for extracting cross-platform data archives. See :func:" "`data_filter` for details." msgstr "" -#: library/tarfile.rst:1008 +#: library/tarfile.rst:1017 msgid "``None`` (default): Use :attr:`TarFile.extraction_filter`." msgstr "" -#: library/tarfile.rst:1010 +#: library/tarfile.rst:1019 msgid "" "If that is also ``None`` (the default), the ``'data'`` filter will be used." msgstr "" -#: library/tarfile.rst:1014 +#: library/tarfile.rst:1023 msgid "" "The default filter is set to :func:`data `. Previously, the " "default was equivalent to :func:`fully_trusted `." msgstr "" -#: library/tarfile.rst:1018 +#: library/tarfile.rst:1027 msgid "" "A callable which will be called for each extracted member with a :ref:" "`TarInfo ` describing the member and the destination path " @@ -1286,27 +1294,27 @@ msgid "" "members)::" msgstr "" -#: library/tarfile.rst:1023 +#: library/tarfile.rst:1032 msgid "filter(member: TarInfo, path: str, /) -> TarInfo | None" msgstr "" -#: library/tarfile.rst:1025 +#: library/tarfile.rst:1034 msgid "" "The callable is called just before each member is extracted, so it can take " "the current state of the disk into account. It can:" msgstr "" -#: library/tarfile.rst:1029 +#: library/tarfile.rst:1038 msgid "" "return a :class:`TarInfo` object which will be used instead of the metadata " "in the archive, or" msgstr "" -#: library/tarfile.rst:1031 +#: library/tarfile.rst:1040 msgid "return ``None``, in which case the member will be skipped, or" msgstr "" -#: library/tarfile.rst:1032 +#: library/tarfile.rst:1041 msgid "" "raise an exception to abort the operation or skip the member, depending on :" "attr:`~TarFile.errorlevel`. Note that when extraction is aborted, :meth:" @@ -1314,124 +1322,136 @@ msgid "" "attempt to clean up." msgstr "" -#: library/tarfile.rst:1038 +#: library/tarfile.rst:1047 msgid "Default named filters" msgstr "" -#: library/tarfile.rst:1040 +#: library/tarfile.rst:1049 msgid "" "The pre-defined, named filters are available as functions, so they can be " "reused in custom filters:" msgstr "" -#: library/tarfile.rst:1045 +#: library/tarfile.rst:1054 msgid "Return *member* unchanged." msgstr "" -#: library/tarfile.rst:1047 +#: library/tarfile.rst:1056 msgid "This implements the ``'fully_trusted'`` filter." msgstr "" -#: library/tarfile.rst:1051 +#: library/tarfile.rst:1060 msgid "Implements the ``'tar'`` filter." msgstr "" -#: library/tarfile.rst:1053 +#: library/tarfile.rst:1062 msgid "Strip leading slashes (``/`` and :data:`os.sep`) from filenames." msgstr "" -#: library/tarfile.rst:1054 +#: library/tarfile.rst:1063 msgid "" ":ref:`Refuse ` to extract files with absolute " "paths (in case the name is absolute even after stripping slashes, e.g. ``C:/" "foo`` on Windows). This raises :class:`~tarfile.AbsolutePathError`." msgstr "" -#: library/tarfile.rst:1058 +#: library/tarfile.rst:1067 msgid "" ":ref:`Refuse ` to extract files whose absolute " "path (after following symlinks) would end up outside the destination. This " "raises :class:`~tarfile.OutsideDestinationError`." msgstr "" -#: library/tarfile.rst:1061 +#: library/tarfile.rst:1070 msgid "" "Clear high mode bits (setuid, setgid, sticky) and group/other write bits (:" "const:`~stat.S_IWGRP` | :const:`~stat.S_IWOTH`)." msgstr "" -#: library/tarfile.rst:1097 +#: library/tarfile.rst:1112 msgid "Return the modified ``TarInfo`` member." msgstr "" -#: library/tarfile.rst:1068 +#: library/tarfile.rst:1077 msgid "" "Implements the ``'data'`` filter. In addition to what ``tar_filter`` does:" msgstr "" -#: library/tarfile.rst:1071 +#: library/tarfile.rst:1080 +msgid "" +"Normalize link targets (:attr:`TarInfo.linkname`) using :func:`os.path." +"normpath`. Note that this removes internal ``..`` components, which may " +"change the meaning of the link if the path in :attr:`!TarInfo.linkname` " +"traverses symbolic links." +msgstr "" + +#: library/tarfile.rst:1086 msgid "" ":ref:`Refuse ` to extract links (hard or soft) " "that link to absolute paths, or ones that link outside the destination." msgstr "" -#: library/tarfile.rst:1074 +#: library/tarfile.rst:1089 msgid "" "This raises :class:`~tarfile.AbsoluteLinkError` or :class:`~tarfile." "LinkOutsideDestinationError`." msgstr "" -#: library/tarfile.rst:1077 +#: library/tarfile.rst:1092 msgid "" "Note that such files are refused even on platforms that do not support " "symbolic links." msgstr "" -#: library/tarfile.rst:1080 +#: library/tarfile.rst:1095 msgid "" ":ref:`Refuse ` to extract device files (including " "pipes). This raises :class:`~tarfile.SpecialFileError`." msgstr "" -#: library/tarfile.rst:1084 +#: library/tarfile.rst:1099 msgid "For regular files, including hard links:" msgstr "" -#: library/tarfile.rst:1086 +#: library/tarfile.rst:1101 msgid "" "Set the owner read and write permissions (:const:`~stat.S_IRUSR` | :const:" "`~stat.S_IWUSR`)." msgstr "" -#: library/tarfile.rst:1088 +#: library/tarfile.rst:1103 msgid "" "Remove the group & other executable permission (:const:`~stat.S_IXGRP` | :" "const:`~stat.S_IXOTH`) if the owner doesn’t have it (:const:`~stat.S_IXUSR`)." msgstr "" -#: library/tarfile.rst:1092 +#: library/tarfile.rst:1107 msgid "" "For other files (directories), set ``mode`` to ``None``, so that extraction " "methods skip applying permission bits." msgstr "" -#: library/tarfile.rst:1094 +#: library/tarfile.rst:1109 msgid "" "Set user and group info (``uid``, ``gid``, ``uname``, ``gname``) to " "``None``, so that extraction methods skip setting it." msgstr "" -#: library/tarfile.rst:1099 +#: library/tarfile.rst:1114 msgid "" "Note that this filter does not block *all* dangerous archive features. See :" "ref:`tarfile-further-verification` for details." msgstr "" -#: library/tarfile.rst:1106 +#: library/tarfile.rst:1119 +msgid "Link targets are now normalized." +msgstr "" + +#: library/tarfile.rst:1125 msgid "Filter errors" msgstr "" -#: library/tarfile.rst:1108 +#: library/tarfile.rst:1127 msgid "" "When a filter refuses to extract a file, it will raise an appropriate " "exception, a subclass of :class:`~tarfile.FilterError`. This will abort the " @@ -1440,11 +1460,11 @@ msgid "" "continue." msgstr "" -#: library/tarfile.rst:1118 +#: library/tarfile.rst:1137 msgid "Hints for further verification" msgstr "" -#: library/tarfile.rst:1120 +#: library/tarfile.rst:1139 msgid "" "Even with ``filter='data'``, *tarfile* is not suited for extracting " "untrusted files without prior inspection. Among other issues, the pre-" @@ -1452,69 +1472,73 @@ msgid "" "additional checks." msgstr "" -#: library/tarfile.rst:1125 +#: library/tarfile.rst:1144 msgid "Here is an incomplete list of things to consider:" msgstr "" -#: library/tarfile.rst:1127 +#: library/tarfile.rst:1146 msgid "" "Extract to a :func:`new temporary directory ` to prevent e." "g. exploiting pre-existing links, and to make it easier to clean up after a " "failed extraction." msgstr "" -#: library/tarfile.rst:1130 +#: library/tarfile.rst:1149 +msgid "Disallow symbolic links if you do not need the functionality." +msgstr "" + +#: library/tarfile.rst:1150 msgid "" "When working with untrusted data, use external (e.g. OS-level) limits on " "disk, memory and CPU usage." msgstr "" -#: library/tarfile.rst:1132 +#: library/tarfile.rst:1152 msgid "" "Check filenames against an allow-list of characters (to filter out control " "characters, confusables, foreign path separators, and so on)." msgstr "" -#: library/tarfile.rst:1135 +#: library/tarfile.rst:1155 msgid "" "Check that filenames have expected extensions (discouraging files that " "execute when you “click on them”, or extension-less files like Windows " "special device names)." msgstr "" -#: library/tarfile.rst:1138 +#: library/tarfile.rst:1158 msgid "" "Limit the number of extracted files, total size of extracted data, filename " "length (including symlink length), and size of individual files." msgstr "" -#: library/tarfile.rst:1140 +#: library/tarfile.rst:1160 msgid "Check for files that would be shadowed on case-insensitive filesystems." msgstr "" -#: library/tarfile.rst:1142 +#: library/tarfile.rst:1162 msgid "Also note that:" msgstr "" -#: library/tarfile.rst:1144 +#: library/tarfile.rst:1164 msgid "" "Tar files may contain multiple versions of the same file. Later ones are " "expected to overwrite any earlier ones. This feature is crucial to allow " "updating tape archives, but can be abused maliciously." msgstr "" -#: library/tarfile.rst:1148 +#: library/tarfile.rst:1168 msgid "" "*tarfile* does not protect against issues with “live” data, e.g. an attacker " "tinkering with the destination (or source) directory while extraction (or " "archiving) is in progress." msgstr "" -#: library/tarfile.rst:1154 +#: library/tarfile.rst:1174 msgid "Supporting older Python versions" msgstr "" -#: library/tarfile.rst:1156 +#: library/tarfile.rst:1176 msgid "" "Extraction filters were added to Python 3.12, but may be backported to older " "versions as security updates. To check whether the feature is available, use " @@ -1522,59 +1546,59 @@ msgid "" "version." msgstr "" -#: library/tarfile.rst:1161 +#: library/tarfile.rst:1181 msgid "" "The following examples show how to support Python versions with and without " "the feature. Note that setting ``extraction_filter`` will affect any " "subsequent operations." msgstr "" -#: library/tarfile.rst:1165 +#: library/tarfile.rst:1185 msgid "Fully trusted archive::" msgstr "" -#: library/tarfile.rst:1167 +#: library/tarfile.rst:1187 msgid "" "my_tarfile.extraction_filter = (lambda member, path: member)\n" "my_tarfile.extractall()" msgstr "" -#: library/tarfile.rst:1170 +#: library/tarfile.rst:1190 msgid "" "Use the ``'data'`` filter if available, but revert to Python 3.11 behavior " "(``'fully_trusted'``) if this feature is not available::" msgstr "" -#: library/tarfile.rst:1173 +#: library/tarfile.rst:1193 msgid "" "my_tarfile.extraction_filter = getattr(tarfile, 'data_filter',\n" " (lambda member, path: member))\n" "my_tarfile.extractall()" msgstr "" -#: library/tarfile.rst:1177 +#: library/tarfile.rst:1197 msgid "Use the ``'data'`` filter; *fail* if it is not available::" msgstr "" -#: library/tarfile.rst:1179 +#: library/tarfile.rst:1199 msgid "my_tarfile.extractall(filter=tarfile.data_filter)" msgstr "" -#: library/tarfile.rst:1181 +#: library/tarfile.rst:1201 msgid "or::" msgstr "" -#: library/tarfile.rst:1183 +#: library/tarfile.rst:1203 msgid "" "my_tarfile.extraction_filter = tarfile.data_filter\n" "my_tarfile.extractall()" msgstr "" -#: library/tarfile.rst:1186 +#: library/tarfile.rst:1206 msgid "Use the ``'data'`` filter; *warn* if it is not available::" msgstr "" -#: library/tarfile.rst:1188 +#: library/tarfile.rst:1208 msgid "" "if hasattr(tarfile, 'data_filter'):\n" " my_tarfile.extractall(filter='data')\n" @@ -1584,28 +1608,28 @@ msgid "" " my_tarfile.extractall()" msgstr "" -#: library/tarfile.rst:1197 +#: library/tarfile.rst:1217 msgid "Stateful extraction filter example" msgstr "" -#: library/tarfile.rst:1199 +#: library/tarfile.rst:1219 msgid "" "While *tarfile*'s extraction methods take a simple *filter* callable, custom " "filters may be more complex objects with an internal state. It may be useful " "to write these as context managers, to be used like this::" msgstr "" -#: library/tarfile.rst:1203 +#: library/tarfile.rst:1223 msgid "" "with StatefulFilter() as filter_func:\n" " tar.extractall(path, filter=filter_func)" msgstr "" -#: library/tarfile.rst:1206 +#: library/tarfile.rst:1226 msgid "Such a filter can be written as, for example::" msgstr "" -#: library/tarfile.rst:1208 +#: library/tarfile.rst:1228 msgid "" "class StatefulFilter:\n" " def __init__(self):\n" @@ -1622,103 +1646,103 @@ msgid "" " print(f'{self.file_count} files extracted')" msgstr "" -#: library/tarfile.rst:1228 +#: library/tarfile.rst:1248 msgid "Command-Line Interface" msgstr "" -#: library/tarfile.rst:1232 +#: library/tarfile.rst:1252 msgid "" "The :mod:`tarfile` module provides a simple command-line interface to " "interact with tar archives." msgstr "" -#: library/tarfile.rst:1235 +#: library/tarfile.rst:1255 msgid "" "If you want to create a new tar archive, specify its name after the :option:" "`-c` option and then list the filename(s) that should be included:" msgstr "" -#: library/tarfile.rst:1238 +#: library/tarfile.rst:1258 msgid "$ python -m tarfile -c monty.tar spam.txt eggs.txt" msgstr "" -#: library/tarfile.rst:1242 +#: library/tarfile.rst:1262 msgid "Passing a directory is also acceptable:" msgstr "" -#: library/tarfile.rst:1244 +#: library/tarfile.rst:1264 msgid "$ python -m tarfile -c monty.tar life-of-brian_1979/" msgstr "" -#: library/tarfile.rst:1248 +#: library/tarfile.rst:1268 msgid "" "If you want to extract a tar archive into the current directory, use the :" "option:`-e` option:" msgstr "" -#: library/tarfile.rst:1251 +#: library/tarfile.rst:1271 msgid "$ python -m tarfile -e monty.tar" msgstr "" -#: library/tarfile.rst:1255 +#: library/tarfile.rst:1275 msgid "" "You can also extract a tar archive into a different directory by passing the " "directory's name:" msgstr "" -#: library/tarfile.rst:1258 +#: library/tarfile.rst:1278 msgid "$ python -m tarfile -e monty.tar other-dir/" msgstr "" -#: library/tarfile.rst:1262 +#: library/tarfile.rst:1282 msgid "For a list of the files in a tar archive, use the :option:`-l` option:" msgstr "" -#: library/tarfile.rst:1264 +#: library/tarfile.rst:1284 msgid "$ python -m tarfile -l monty.tar" msgstr "" -#: library/tarfile.rst:1270 +#: library/tarfile.rst:1290 msgid "Command-line options" msgstr "" -#: library/tarfile.rst:1275 +#: library/tarfile.rst:1295 msgid "List files in a tarfile." msgstr "" -#: library/tarfile.rst:1280 +#: library/tarfile.rst:1300 msgid "Create tarfile from source files." msgstr "" -#: library/tarfile.rst:1285 +#: library/tarfile.rst:1305 msgid "" "Extract tarfile into the current directory if *output_dir* is not specified." msgstr "" -#: library/tarfile.rst:1290 +#: library/tarfile.rst:1310 msgid "Test whether the tarfile is valid or not." msgstr "" -#: library/tarfile.rst:1294 +#: library/tarfile.rst:1314 msgid "Verbose output." msgstr "" -#: library/tarfile.rst:1298 +#: library/tarfile.rst:1318 msgid "" "Specifies the *filter* for ``--extract``. See :ref:`tarfile-extraction-" "filter` for details. Only string names are accepted (that is, " "``fully_trusted``, ``tar``, and ``data``)." msgstr "" -#: library/tarfile.rst:1306 +#: library/tarfile.rst:1326 msgid "Examples" msgstr "" -#: library/tarfile.rst:1308 +#: library/tarfile.rst:1328 msgid "How to extract an entire tar archive to the current working directory::" msgstr "" -#: library/tarfile.rst:1310 +#: library/tarfile.rst:1330 msgid "" "import tarfile\n" "tar = tarfile.open(\"sample.tar.gz\")\n" @@ -1726,13 +1750,13 @@ msgid "" "tar.close()" msgstr "" -#: library/tarfile.rst:1315 +#: library/tarfile.rst:1335 msgid "" "How to extract a subset of a tar archive with :meth:`TarFile.extractall` " "using a generator function instead of a list::" msgstr "" -#: library/tarfile.rst:1318 +#: library/tarfile.rst:1338 msgid "" "import os\n" "import tarfile\n" @@ -1747,11 +1771,11 @@ msgid "" "tar.close()" msgstr "" -#: library/tarfile.rst:1330 +#: library/tarfile.rst:1350 msgid "How to create an uncompressed tar archive from a list of filenames::" msgstr "" -#: library/tarfile.rst:1332 +#: library/tarfile.rst:1352 msgid "" "import tarfile\n" "tar = tarfile.open(\"sample.tar\", \"w\")\n" @@ -1760,11 +1784,11 @@ msgid "" "tar.close()" msgstr "" -#: library/tarfile.rst:1338 +#: library/tarfile.rst:1358 msgid "The same example using the :keyword:`with` statement::" msgstr "" -#: library/tarfile.rst:1340 +#: library/tarfile.rst:1360 msgid "" "import tarfile\n" "with tarfile.open(\"sample.tar\", \"w\") as tar:\n" @@ -1772,13 +1796,13 @@ msgid "" " tar.add(name)" msgstr "" -#: library/tarfile.rst:1345 +#: library/tarfile.rst:1365 msgid "" "How to read a gzip compressed tar archive and display some member " "information::" msgstr "" -#: library/tarfile.rst:1347 +#: library/tarfile.rst:1367 msgid "" "import tarfile\n" "tar = tarfile.open(\"sample.tar.gz\", \"r:gz\")\n" @@ -1794,13 +1818,13 @@ msgid "" "tar.close()" msgstr "" -#: library/tarfile.rst:1359 +#: library/tarfile.rst:1379 msgid "" "How to create an archive and reset the user information using the *filter* " "parameter in :meth:`TarFile.add`::" msgstr "" -#: library/tarfile.rst:1362 +#: library/tarfile.rst:1382 msgid "" "import tarfile\n" "def reset(tarinfo):\n" @@ -1812,17 +1836,17 @@ msgid "" "tar.close()" msgstr "" -#: library/tarfile.rst:1375 +#: library/tarfile.rst:1395 msgid "Supported tar formats" msgstr "" -#: library/tarfile.rst:1377 +#: library/tarfile.rst:1397 msgid "" "There are three tar formats that can be created with the :mod:`tarfile` " "module:" msgstr "" -#: library/tarfile.rst:1379 +#: library/tarfile.rst:1399 msgid "" "The POSIX.1-1988 ustar format (:const:`USTAR_FORMAT`). It supports filenames " "up to a length of at best 256 characters and linknames up to 100 characters. " @@ -1830,7 +1854,7 @@ msgid "" "supported format." msgstr "" -#: library/tarfile.rst:1384 +#: library/tarfile.rst:1404 msgid "" "The GNU tar format (:const:`GNU_FORMAT`). It supports long filenames and " "linknames, files bigger than 8 GiB and sparse files. It is the de facto " @@ -1838,7 +1862,7 @@ msgid "" "extensions for long names, sparse file support is read-only." msgstr "" -#: library/tarfile.rst:1389 +#: library/tarfile.rst:1409 msgid "" "The POSIX.1-2001 pax format (:const:`PAX_FORMAT`). It is the most flexible " "format with virtually no limits. It supports long filenames and linknames, " @@ -1849,7 +1873,7 @@ msgid "" "*ustar* format. It is the current default format for new archives." msgstr "" -#: library/tarfile.rst:1397 +#: library/tarfile.rst:1417 msgid "" "It extends the existing *ustar* format with extra headers for information " "that cannot be stored otherwise. There are two flavours of pax headers: " @@ -1858,13 +1882,13 @@ msgid "" "in a pax header is encoded in *UTF-8* for portability reasons." msgstr "" -#: library/tarfile.rst:1403 +#: library/tarfile.rst:1423 msgid "" "There are some more variants of the tar format which can be read, but not " "created:" msgstr "" -#: library/tarfile.rst:1406 +#: library/tarfile.rst:1426 msgid "" "The ancient V7 format. This is the first tar format from Unix Seventh " "Edition, storing only regular files and directories. Names must not be " @@ -1873,17 +1897,17 @@ msgid "" "ASCII characters." msgstr "" -#: library/tarfile.rst:1411 +#: library/tarfile.rst:1431 msgid "" "The SunOS tar extended format. This format is a variant of the POSIX.1-2001 " "pax format, but is not compatible." msgstr "" -#: library/tarfile.rst:1417 +#: library/tarfile.rst:1437 msgid "Unicode issues" msgstr "" -#: library/tarfile.rst:1419 +#: library/tarfile.rst:1439 msgid "" "The tar format was originally conceived to make backups on tape drives with " "the main focus on preserving file system information. Nowadays tar archives " @@ -1898,13 +1922,13 @@ msgid "" "It stores non-ASCII metadata using the universal character encoding *UTF-8*." msgstr "" -#: library/tarfile.rst:1431 +#: library/tarfile.rst:1451 msgid "" "The details of character conversion in :mod:`tarfile` are controlled by the " "*encoding* and *errors* keyword arguments of the :class:`TarFile` class." msgstr "" -#: library/tarfile.rst:1434 +#: library/tarfile.rst:1454 msgid "" "*encoding* defines the character encoding to use for the metadata in the " "archive. The default value is :func:`sys.getfilesystemencoding` or " @@ -1913,7 +1937,7 @@ msgid "" "not set appropriately, this conversion may fail." msgstr "" -#: library/tarfile.rst:1440 +#: library/tarfile.rst:1460 msgid "" "The *errors* argument defines how characters are treated that cannot be " "converted. Possible values are listed in section :ref:`error-handlers`. The " @@ -1921,7 +1945,7 @@ msgid "" "system calls, see :ref:`os-filenames`." msgstr "" -#: library/tarfile.rst:1445 +#: library/tarfile.rst:1465 msgid "" "For :const:`PAX_FORMAT` archives (the default), *encoding* is generally not " "needed because all the metadata is stored using *UTF-8*. *encoding* is only " diff --git a/library/telnetlib.po b/library/telnetlib.po index c488eebc..ab79e7dd 100644 --- a/library/telnetlib.po +++ b/library/telnetlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tempfile.po b/library/tempfile.po index 2d72ac30..6944fa8c 100644 --- a/library/tempfile.po +++ b/library/tempfile.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/termios.po b/library/termios.po index e793697d..93cb6f95 100644 --- a/library/termios.po +++ b/library/termios.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/test.po b/library/test.po index 81442c19..24844878 100644 --- a/library/test.po +++ b/library/test.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/text.po b/library/text.po index 247ba1e2..51c20ac1 100644 --- a/library/text.po +++ b/library/text.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/textwrap.po b/library/textwrap.po index e9a582be..3b9a1aa7 100644 --- a/library/textwrap.po +++ b/library/textwrap.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/threading.po b/library/threading.po index f0bd9d85..abc72f32 100644 --- a/library/threading.po +++ b/library/threading.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -31,38 +31,103 @@ msgid "" "level :mod:`_thread` module." msgstr "" -#: library/threading.rst:14 -msgid "This module used to be optional, it is now always available." +#: library/threading.rst:293 includes/wasm-notavail.rst:3 +msgid "Availability" +msgstr "" + +#: includes/wasm-notavail.rst:5 +msgid "" +"This module does not work or is not available on WebAssembly. See :ref:`wasm-" +"availability` for more information." +msgstr "" + +#: library/threading.rst:17 +msgid "Introduction" msgstr "" #: library/threading.rst:19 msgid "" +"The :mod:`!threading` module provides a way to run multiple `threads " +"`_ (smaller units of a " +"process) concurrently within a single process. It allows for the creation " +"and management of threads, making it possible to execute tasks in parallel, " +"sharing memory space. Threads are particularly useful when tasks are I/O " +"bound, such as file operations or making network requests, where much of the " +"time is spent waiting for external resources." +msgstr "" + +#: library/threading.rst:27 +msgid "" +"A typical use case for :mod:`!threading` includes managing a pool of worker " +"threads that can process multiple tasks concurrently. Here's a basic " +"example of creating and starting threads using :class:`~threading.Thread`::" +msgstr "" + +#: library/threading.rst:31 +msgid "" +"import threading\n" +"import time\n" +"\n" +"def crawl(link, delay=3):\n" +" print(f\"crawl started for {link}\")\n" +" time.sleep(delay) # Blocking I/O (simulating a network request)\n" +" print(f\"crawl ended for {link}\")\n" +"\n" +"links = [\n" +" \"https://python.org\",\n" +" \"https://docs.python.org\",\n" +" \"https://peps.python.org\",\n" +"]\n" +"\n" +"# Start threads for each link\n" +"threads = []\n" +"for link in links:\n" +" # Using `args` to pass positional arguments and `kwargs` for keyword " +"arguments\n" +" t = threading.Thread(target=crawl, args=(link,), kwargs={\"delay\": 2})\n" +" threads.append(t)\n" +"\n" +"# Start each thread\n" +"for t in threads:\n" +" t.start()\n" +"\n" +"# Wait for all threads to finish\n" +"for t in threads:\n" +" t.join()" +msgstr "" + +#: library/threading.rst:60 +msgid "This module used to be optional, it is now always available." +msgstr "" + +#: library/threading.rst:65 +msgid "" ":class:`concurrent.futures.ThreadPoolExecutor` offers a higher level " "interface to push tasks to a background thread without blocking execution of " "the calling thread, while still being able to retrieve their results when " "needed." msgstr "" -#: library/threading.rst:23 +#: library/threading.rst:69 msgid "" ":mod:`queue` provides a thread-safe interface for exchanging data between " "running threads." msgstr "" -#: library/threading.rst:26 +#: library/threading.rst:72 msgid "" ":mod:`asyncio` offers an alternative approach to achieving task level " "concurrency without requiring the use of multiple operating system threads." msgstr "" -#: library/threading.rst:31 +#: library/threading.rst:77 msgid "" "In the Python 2.x series, this module contained ``camelCase`` names for some " "methods and functions. These are deprecated as of Python 3.10, but they are " "still supported for compatibility with Python 2.5 and lower." msgstr "" -#: library/threading.rst:38 +#: library/threading.rst:84 msgid "" "In CPython, due to the :term:`Global Interpreter Lock `, only one thread can execute Python code at once (even though certain " @@ -73,110 +138,126 @@ msgid "" "appropriate model if you want to run multiple I/O-bound tasks simultaneously." msgstr "" -#: library/threading.rst:229 includes/wasm-notavail.rst:3 -msgid "Availability" +#: library/threading.rst:95 +msgid "GIL and performance considerations" msgstr "" -#: includes/wasm-notavail.rst:5 +#: library/threading.rst:97 msgid "" -"This module does not work or is not available on WebAssembly. See :ref:`wasm-" -"availability` for more information." +"Unlike the :mod:`multiprocessing` module, which uses separate processes to " +"bypass the :term:`global interpreter lock` (GIL), the threading module " +"operates within a single process, meaning that all threads share the same " +"memory space. However, the GIL limits the performance gains of threading " +"when it comes to CPU-bound tasks, as only one thread can execute Python " +"bytecode at a time. Despite this, threads remain a useful tool for achieving " +"concurrency in many scenarios." msgstr "" -#: library/threading.rst:50 +#: library/threading.rst:105 +msgid "" +"As of Python 3.13, :term:`free-threaded ` builds can disable " +"the GIL, enabling true parallel execution of threads, but this feature is " +"not available by default (see :pep:`703`)." +msgstr "" + +#: library/threading.rst:112 +msgid "Reference" +msgstr "" + +#: library/threading.rst:114 msgid "This module defines the following functions:" msgstr "" -#: library/threading.rst:55 +#: library/threading.rst:119 msgid "" "Return the number of :class:`Thread` objects currently alive. The returned " "count is equal to the length of the list returned by :func:`.enumerate`." msgstr "" -#: library/threading.rst:58 +#: library/threading.rst:122 msgid "The function ``activeCount`` is a deprecated alias for this function." msgstr "" -#: library/threading.rst:63 +#: library/threading.rst:127 msgid "" "Return the current :class:`Thread` object, corresponding to the caller's " "thread of control. If the caller's thread of control was not created " -"through the :mod:`threading` module, a dummy thread object with limited " +"through the :mod:`!threading` module, a dummy thread object with limited " "functionality is returned." msgstr "" -#: library/threading.rst:68 +#: library/threading.rst:132 msgid "The function ``currentThread`` is a deprecated alias for this function." msgstr "" -#: library/threading.rst:73 +#: library/threading.rst:137 msgid "Handle uncaught exception raised by :func:`Thread.run`." msgstr "" -#: library/threading.rst:75 +#: library/threading.rst:139 msgid "The *args* argument has the following attributes:" msgstr "" -#: library/threading.rst:77 +#: library/threading.rst:141 msgid "*exc_type*: Exception type." msgstr "" -#: library/threading.rst:78 +#: library/threading.rst:142 msgid "*exc_value*: Exception value, can be ``None``." msgstr "" -#: library/threading.rst:79 +#: library/threading.rst:143 msgid "*exc_traceback*: Exception traceback, can be ``None``." msgstr "" -#: library/threading.rst:80 +#: library/threading.rst:144 msgid "*thread*: Thread which raised the exception, can be ``None``." msgstr "" -#: library/threading.rst:82 +#: library/threading.rst:146 msgid "" "If *exc_type* is :exc:`SystemExit`, the exception is silently ignored. " "Otherwise, the exception is printed out on :data:`sys.stderr`." msgstr "" -#: library/threading.rst:85 +#: library/threading.rst:149 msgid "" "If this function raises an exception, :func:`sys.excepthook` is called to " "handle it." msgstr "" -#: library/threading.rst:88 +#: library/threading.rst:152 msgid "" ":func:`threading.excepthook` can be overridden to control how uncaught " "exceptions raised by :func:`Thread.run` are handled." msgstr "" -#: library/threading.rst:91 +#: library/threading.rst:155 msgid "" "Storing *exc_value* using a custom hook can create a reference cycle. It " "should be cleared explicitly to break the reference cycle when the exception " "is no longer needed." msgstr "" -#: library/threading.rst:95 +#: library/threading.rst:159 msgid "" "Storing *thread* using a custom hook can resurrect it if it is set to an " "object which is being finalized. Avoid storing *thread* after the custom " "hook completes to avoid resurrecting objects." msgstr "" -#: library/threading.rst:100 +#: library/threading.rst:164 msgid ":func:`sys.excepthook` handles uncaught exceptions." msgstr "" -#: library/threading.rst:106 +#: library/threading.rst:170 msgid "" "Holds the original value of :func:`threading.excepthook`. It is saved so " "that the original value can be restored in case they happen to get replaced " "with broken or alternative objects." msgstr "" -#: library/threading.rst:114 +#: library/threading.rst:178 msgid "" "Return the 'thread identifier' of the current thread. This is a nonzero " "integer. Its value has no direct meaning; it is intended as a magic cookie " @@ -185,7 +266,7 @@ msgid "" "created." msgstr "" -#: library/threading.rst:125 +#: library/threading.rst:189 msgid "" "Return the native integral Thread ID of the current thread assigned by the " "kernel. This is a non-negative integer. Its value may be used to uniquely " @@ -193,11 +274,11 @@ msgid "" "after which the value may be recycled by the OS)." msgstr "" -#: library/threading.rst:134 +#: library/threading.rst:198 msgid "Added support for GNU/kFreeBSD." msgstr "" -#: library/threading.rst:140 +#: library/threading.rst:204 msgid "" "Return a list of all :class:`Thread` objects currently active. The list " "includes daemonic threads and dummy thread objects created by :func:" @@ -206,59 +287,59 @@ msgid "" "even when terminated." msgstr "" -#: library/threading.rst:149 +#: library/threading.rst:213 msgid "" "Return the main :class:`Thread` object. In normal conditions, the main " "thread is the thread from which the Python interpreter was started." msgstr "" -#: library/threading.rst:160 +#: library/threading.rst:224 msgid "" -"Set a trace function for all threads started from the :mod:`threading` " +"Set a trace function for all threads started from the :mod:`!threading` " "module. The *func* will be passed to :func:`sys.settrace` for each thread, " "before its :meth:`~Thread.run` method is called." msgstr "" -#: library/threading.rst:166 +#: library/threading.rst:230 msgid "" -"Set a trace function for all threads started from the :mod:`threading` " +"Set a trace function for all threads started from the :mod:`!threading` " "module and all Python threads that are currently executing." msgstr "" -#: library/threading.rst:169 +#: library/threading.rst:233 msgid "" "The *func* will be passed to :func:`sys.settrace` for each thread, before " "its :meth:`~Thread.run` method is called." msgstr "" -#: library/threading.rst:180 +#: library/threading.rst:244 msgid "Get the trace function as set by :func:`settrace`." msgstr "" -#: library/threading.rst:189 +#: library/threading.rst:253 msgid "" -"Set a profile function for all threads started from the :mod:`threading` " +"Set a profile function for all threads started from the :mod:`!threading` " "module. The *func* will be passed to :func:`sys.setprofile` for each " "thread, before its :meth:`~Thread.run` method is called." msgstr "" -#: library/threading.rst:195 +#: library/threading.rst:259 msgid "" -"Set a profile function for all threads started from the :mod:`threading` " +"Set a profile function for all threads started from the :mod:`!threading` " "module and all Python threads that are currently executing." msgstr "" -#: library/threading.rst:198 +#: library/threading.rst:262 msgid "" "The *func* will be passed to :func:`sys.setprofile` for each thread, before " "its :meth:`~Thread.run` method is called." msgstr "" -#: library/threading.rst:207 +#: library/threading.rst:271 msgid "Get the profiler function as set by :func:`setprofile`." msgstr "" -#: library/threading.rst:214 +#: library/threading.rst:278 msgid "" "Return the thread stack size used when creating new threads. The optional " "*size* argument specifies the stack size to be used for subsequently created " @@ -277,15 +358,15 @@ msgid "" "information)." msgstr "" -#: library/threading.rst:231 +#: library/threading.rst:295 msgid "Unix platforms with POSIX threads support." msgstr "" -#: library/threading.rst:234 +#: library/threading.rst:298 msgid "This module also defines the following constant:" msgstr "" -#: library/threading.rst:238 +#: library/threading.rst:302 msgid "" "The maximum value allowed for the *timeout* parameter of blocking functions " "(:meth:`Lock.acquire`, :meth:`RLock.acquire`, :meth:`Condition.wait`, etc.). " @@ -293,13 +374,13 @@ msgid "" "`OverflowError`." msgstr "" -#: library/threading.rst:246 +#: library/threading.rst:310 msgid "" "This module defines a number of classes, which are detailed in the sections " "below." msgstr "" -#: library/threading.rst:249 +#: library/threading.rst:313 msgid "" "The design of this module is loosely based on Java's threading model. " "However, where Java makes locks and condition variables basic behavior of " @@ -310,22 +391,22 @@ msgid "" "Thread class, when implemented, are mapped to module-level functions." msgstr "" -#: library/threading.rst:257 +#: library/threading.rst:321 msgid "All of the methods described below are executed atomically." msgstr "" -#: library/threading.rst:261 -msgid "Thread-Local Data" +#: library/threading.rst:325 +msgid "Thread-local data" msgstr "" -#: library/threading.rst:263 +#: library/threading.rst:327 msgid "" "Thread-local data is data whose values are thread specific. If you have data " "that you want to be local to a thread, create a :class:`local` object and " "use its attributes::" msgstr "" -#: library/threading.rst:267 +#: library/threading.rst:331 msgid "" ">>> mydata = local()\n" ">>> mydata.number = 42\n" @@ -333,11 +414,11 @@ msgid "" "42" msgstr "" -#: library/threading.rst:272 +#: library/threading.rst:336 msgid "You can also access the :class:`local`-object's dictionary::" msgstr "" -#: library/threading.rst:274 +#: library/threading.rst:338 msgid "" ">>> mydata.__dict__\n" "{'number': 42}\n" @@ -347,11 +428,11 @@ msgid "" "[]" msgstr "" -#: library/threading.rst:281 +#: library/threading.rst:345 msgid "If we access the data in a different thread::" msgstr "" -#: library/threading.rst:283 +#: library/threading.rst:347 msgid "" ">>> log = []\n" ">>> def f():\n" @@ -368,19 +449,19 @@ msgid "" "[[], 11]" msgstr "" -#: library/threading.rst:297 +#: library/threading.rst:361 msgid "" "we get different data. Furthermore, changes made in the other thread don't " "affect data seen in this thread::" msgstr "" -#: library/threading.rst:300 +#: library/threading.rst:364 msgid "" ">>> mydata.number\n" "42" msgstr "" -#: library/threading.rst:303 +#: library/threading.rst:367 msgid "" "Of course, values you get from a :class:`local` object, including their :" "attr:`~object.__dict__` attribute, are for whatever thread was current at " @@ -389,13 +470,13 @@ msgid "" "came from." msgstr "" -#: library/threading.rst:309 +#: library/threading.rst:373 msgid "" "You can create custom :class:`local` objects by subclassing the :class:" "`local` class::" msgstr "" -#: library/threading.rst:312 +#: library/threading.rst:376 msgid "" ">>> class MyLocal(local):\n" "... number = 2\n" @@ -405,7 +486,7 @@ msgid "" "... return self.number ** 2" msgstr "" -#: library/threading.rst:319 +#: library/threading.rst:383 msgid "" "This can be useful to support default values, methods and initialization. " "Note that if you define an :py:meth:`~object.__init__` method, it will be " @@ -413,50 +494,50 @@ msgid "" "This is necessary to initialize each thread's dictionary." msgstr "" -#: library/threading.rst:325 +#: library/threading.rst:389 msgid "Now if we create a :class:`local` object::" msgstr "" -#: library/threading.rst:327 +#: library/threading.rst:391 msgid ">>> mydata = MyLocal(color='red')" msgstr "" -#: library/threading.rst:329 +#: library/threading.rst:393 msgid "we have a default number::" msgstr "" -#: library/threading.rst:331 +#: library/threading.rst:395 msgid "" ">>> mydata.number\n" "2" msgstr "" -#: library/threading.rst:334 +#: library/threading.rst:398 msgid "an initial color::" msgstr "" -#: library/threading.rst:336 +#: library/threading.rst:400 msgid "" ">>> mydata.color\n" "'red'\n" ">>> del mydata.color" msgstr "" -#: library/threading.rst:340 +#: library/threading.rst:404 msgid "And a method that operates on the data::" msgstr "" -#: library/threading.rst:342 +#: library/threading.rst:406 msgid "" ">>> mydata.squared()\n" "4" msgstr "" -#: library/threading.rst:345 +#: library/threading.rst:409 msgid "As before, we can access the data in a separate thread::" msgstr "" -#: library/threading.rst:347 +#: library/threading.rst:411 msgid "" ">>> log = []\n" ">>> thread = threading.Thread(target=f)\n" @@ -466,11 +547,11 @@ msgid "" "[[('color', 'red')], 11]" msgstr "" -#: library/threading.rst:354 +#: library/threading.rst:418 msgid "without affecting this thread's data::" msgstr "" -#: library/threading.rst:356 +#: library/threading.rst:420 msgid "" ">>> mydata.number\n" "2\n" @@ -480,13 +561,13 @@ msgid "" "AttributeError: 'MyLocal' object has no attribute 'color'" msgstr "" -#: library/threading.rst:363 +#: library/threading.rst:427 msgid "" "Note that subclasses can define :term:`__slots__`, but they are not thread " "local. They are shared across threads::" msgstr "" -#: library/threading.rst:366 +#: library/threading.rst:430 msgid "" ">>> class MyLocal(local):\n" "... __slots__ = 'number'\n" @@ -496,36 +577,36 @@ msgid "" ">>> mydata.color = 'red'" msgstr "" -#: library/threading.rst:373 +#: library/threading.rst:437 msgid "So, the separate thread::" msgstr "" -#: library/threading.rst:375 +#: library/threading.rst:439 msgid "" ">>> thread = threading.Thread(target=f)\n" ">>> thread.start()\n" ">>> thread.join()" msgstr "" -#: library/threading.rst:379 +#: library/threading.rst:443 msgid "affects what we see::" msgstr "" -#: library/threading.rst:381 +#: library/threading.rst:445 msgid "" ">>> mydata.number\n" "11" msgstr "" -#: library/threading.rst:387 +#: library/threading.rst:451 msgid "A class that represents thread-local data." msgstr "" -#: library/threading.rst:393 -msgid "Thread Objects" +#: library/threading.rst:457 +msgid "Thread objects" msgstr "" -#: library/threading.rst:395 +#: library/threading.rst:459 msgid "" "The :class:`Thread` class represents an activity that is run in a separate " "thread of control. There are two ways to specify the activity: by passing a " @@ -535,14 +616,14 @@ msgid "" "``__init__()`` and :meth:`~Thread.run` methods of this class." msgstr "" -#: library/threading.rst:402 +#: library/threading.rst:466 msgid "" "Once a thread object is created, its activity must be started by calling the " "thread's :meth:`~Thread.start` method. This invokes the :meth:`~Thread.run` " "method in a separate thread of control." msgstr "" -#: library/threading.rst:406 +#: library/threading.rst:470 msgid "" "Once the thread's activity is started, the thread is considered 'alive'. It " "stops being alive when its :meth:`~Thread.run` method terminates -- either " @@ -550,27 +631,27 @@ msgid "" "is_alive` method tests whether the thread is alive." msgstr "" -#: library/threading.rst:411 +#: library/threading.rst:475 msgid "" "Other threads can call a thread's :meth:`~Thread.join` method. This blocks " "the calling thread until the thread whose :meth:`~Thread.join` method is " "called is terminated." msgstr "" -#: library/threading.rst:415 +#: library/threading.rst:479 msgid "" "A thread has a name. The name can be passed to the constructor, and read or " "changed through the :attr:`~Thread.name` attribute." msgstr "" -#: library/threading.rst:418 +#: library/threading.rst:482 msgid "" "If the :meth:`~Thread.run` method raises an exception, :func:`threading." "excepthook` is called to handle it. By default, :func:`threading.excepthook` " "ignores silently :exc:`SystemExit`." msgstr "" -#: library/threading.rst:422 +#: library/threading.rst:486 msgid "" "A thread can be flagged as a \"daemon thread\". The significance of this " "flag is that the entire Python program exits when only daemon threads are " @@ -579,7 +660,7 @@ msgid "" "constructor argument." msgstr "" -#: library/threading.rst:429 +#: library/threading.rst:493 msgid "" "Daemon threads are abruptly stopped at shutdown. Their resources (such as " "open files, database transactions, etc.) may not be released properly. If " @@ -587,13 +668,13 @@ msgid "" "suitable signalling mechanism such as an :class:`Event`." msgstr "" -#: library/threading.rst:434 +#: library/threading.rst:498 msgid "" "There is a \"main thread\" object; this corresponds to the initial thread of " "control in the Python program. It is not a daemon thread." msgstr "" -#: library/threading.rst:437 +#: library/threading.rst:501 msgid "" "There is the possibility that \"dummy thread objects\" are created. These " "are thread objects corresponding to \"alien threads\", which are threads of " @@ -604,25 +685,25 @@ msgid "" "threads." msgstr "" -#: library/threading.rst:448 +#: library/threading.rst:512 msgid "" "This constructor should always be called with keyword arguments. Arguments " "are:" msgstr "" -#: library/threading.rst:451 +#: library/threading.rst:515 msgid "" "*group* should be ``None``; reserved for future extension when a :class:`!" "ThreadGroup` class is implemented." msgstr "" -#: library/threading.rst:454 +#: library/threading.rst:518 msgid "" "*target* is the callable object to be invoked by the :meth:`run` method. " "Defaults to ``None``, meaning nothing is called." msgstr "" -#: library/threading.rst:457 +#: library/threading.rst:521 msgid "" "*name* is the thread name. By default, a unique name is constructed of the " "form \"Thread-*N*\" where *N* is a small decimal number, or \"Thread-*N* " @@ -630,26 +711,26 @@ msgid "" "is specified." msgstr "" -#: library/threading.rst:462 +#: library/threading.rst:526 msgid "" "*args* is a list or tuple of arguments for the target invocation. Defaults " "to ``()``." msgstr "" -#: library/threading.rst:464 +#: library/threading.rst:528 msgid "" "*kwargs* is a dictionary of keyword arguments for the target invocation. " "Defaults to ``{}``." msgstr "" -#: library/threading.rst:467 +#: library/threading.rst:531 msgid "" "If not ``None``, *daemon* explicitly sets whether the thread is daemonic. If " "``None`` (the default), the daemonic property is inherited from the current " "thread." msgstr "" -#: library/threading.rst:471 +#: library/threading.rst:535 msgid "" "*context* is the :class:`~contextvars.Context` value to use when starting " "the thread. The default value is ``None`` which indicates that the :data:" @@ -662,58 +743,58 @@ msgid "" "defaults true on free-threaded builds and false otherwise." msgstr "" -#: library/threading.rst:481 +#: library/threading.rst:545 msgid "" "If the subclass overrides the constructor, it must make sure to invoke the " "base class constructor (``Thread.__init__()``) before doing anything else to " "the thread." msgstr "" -#: library/threading.rst:485 +#: library/threading.rst:549 msgid "Added the *daemon* parameter." msgstr "" -#: library/threading.rst:488 +#: library/threading.rst:552 msgid "Use the *target* name if *name* argument is omitted." msgstr "" -#: library/threading.rst:491 +#: library/threading.rst:555 msgid "Added the *context* parameter." msgstr "" -#: library/threading.rst:496 +#: library/threading.rst:560 msgid "Start the thread's activity." msgstr "" -#: library/threading.rst:498 +#: library/threading.rst:562 msgid "" "It must be called at most once per thread object. It arranges for the " "object's :meth:`~Thread.run` method to be invoked in a separate thread of " "control." msgstr "" -#: library/threading.rst:502 +#: library/threading.rst:566 msgid "" "This method will raise a :exc:`RuntimeError` if called more than once on the " "same thread object." msgstr "" -#: library/threading.rst:505 +#: library/threading.rst:569 msgid "" "If supported, set the operating system thread name to :attr:`threading." "Thread.name`. The name can be truncated depending on the operating system " "thread name limits." msgstr "" -#: library/threading.rst:509 +#: library/threading.rst:573 msgid "Set the operating system thread name." msgstr "" -#: library/threading.rst:514 +#: library/threading.rst:578 msgid "Method representing the thread's activity." msgstr "" -#: library/threading.rst:516 +#: library/threading.rst:580 msgid "" "You may override this method in a subclass. The standard :meth:`run` method " "invokes the callable object passed to the object's constructor as the " @@ -721,17 +802,17 @@ msgid "" "the *args* and *kwargs* arguments, respectively." msgstr "" -#: library/threading.rst:521 +#: library/threading.rst:585 msgid "" "Using list or tuple as the *args* argument which passed to the :class:" "`Thread` could achieve the same effect." msgstr "" -#: library/threading.rst:524 +#: library/threading.rst:588 msgid "Example::" msgstr "" -#: library/threading.rst:526 +#: library/threading.rst:590 msgid "" ">>> from threading import Thread\n" ">>> t = Thread(target=print, args=[1])\n" @@ -742,7 +823,7 @@ msgid "" "1" msgstr "" -#: library/threading.rst:538 +#: library/threading.rst:602 msgid "" "Wait until the thread terminates. This blocks the calling thread until the " "thread whose :meth:`~Thread.join` method is called terminates -- either " @@ -750,7 +831,7 @@ msgid "" "occurs." msgstr "" -#: library/threading.rst:543 +#: library/threading.rst:607 msgid "" "When the *timeout* argument is present and not ``None``, it should be a " "floating-point number specifying a timeout for the operation in seconds (or " @@ -760,17 +841,17 @@ msgid "" "`~Thread.join` call timed out." msgstr "" -#: library/threading.rst:550 +#: library/threading.rst:614 msgid "" "When the *timeout* argument is not present or ``None``, the operation will " "block until the thread terminates." msgstr "" -#: library/threading.rst:553 +#: library/threading.rst:617 msgid "A thread can be joined many times." msgstr "" -#: library/threading.rst:555 +#: library/threading.rst:619 msgid "" ":meth:`~Thread.join` raises a :exc:`RuntimeError` if an attempt is made to " "join the current thread as that would cause a deadlock. It is also an error " @@ -778,25 +859,25 @@ msgid "" "do so raise the same exception." msgstr "" -#: library/threading.rst:560 +#: library/threading.rst:624 msgid "" "If an attempt is made to join a running daemonic thread in in late stages " "of :term:`Python finalization ` :meth:`!join` raises " "a :exc:`PythonFinalizationError`." msgstr "" -#: library/threading.rst:566 +#: library/threading.rst:630 msgid "May raise :exc:`PythonFinalizationError`." msgstr "" -#: library/threading.rst:570 +#: library/threading.rst:634 msgid "" "A string used for identification purposes only. It has no semantics. " "Multiple threads may be given the same name. The initial name is set by the " "constructor." msgstr "" -#: library/threading.rst:574 +#: library/threading.rst:638 msgid "" "On some platforms, the thread name is set at the operating system level when " "the thread starts, so that it is visible in task managers. This name may be " @@ -804,20 +885,20 @@ msgid "" "or 63 bytes on macOS)." msgstr "" -#: library/threading.rst:579 +#: library/threading.rst:643 msgid "" "Changes to *name* are only reflected at the OS level when the currently " "running thread is renamed. (Setting the *name* attribute of a different " "thread only updates the Python Thread object.)" msgstr "" -#: library/threading.rst:586 +#: library/threading.rst:650 msgid "" "Deprecated getter/setter API for :attr:`~Thread.name`; use it directly as a " "property instead." msgstr "" -#: library/threading.rst:593 +#: library/threading.rst:657 msgid "" "The 'thread identifier' of this thread or ``None`` if the thread has not " "been started. This is a nonzero integer. See the :func:`get_ident` " @@ -826,7 +907,7 @@ msgid "" "thread has exited." msgstr "" -#: library/threading.rst:601 +#: library/threading.rst:665 msgid "" "The Thread ID (``TID``) of this thread, as assigned by the OS (kernel). This " "is a non-negative integer, or ``None`` if the thread has not been started. " @@ -835,25 +916,25 @@ msgid "" "after which the value may be recycled by the OS)." msgstr "" -#: library/threading.rst:610 +#: library/threading.rst:674 msgid "" "Similar to Process IDs, Thread IDs are only valid (guaranteed unique system-" "wide) from the time the thread is created until the thread has been " "terminated." msgstr "" -#: library/threading.rst:620 +#: library/threading.rst:684 msgid "Return whether the thread is alive." msgstr "" -#: library/threading.rst:622 +#: library/threading.rst:686 msgid "" "This method returns ``True`` just before the :meth:`~Thread.run` method " "starts until just after the :meth:`~Thread.run` method terminates. The " "module function :func:`.enumerate` returns a list of all alive threads." msgstr "" -#: library/threading.rst:628 +#: library/threading.rst:692 msgid "" "A boolean value indicating whether this thread is a daemon thread (``True``) " "or not (``False``). This must be set before :meth:`~Thread.start` is " @@ -863,22 +944,22 @@ msgid "" "`~Thread.daemon` = ``False``." msgstr "" -#: library/threading.rst:635 +#: library/threading.rst:699 msgid "" "The entire Python program exits when no alive non-daemon threads are left." msgstr "" -#: library/threading.rst:640 +#: library/threading.rst:704 msgid "" "Deprecated getter/setter API for :attr:`~Thread.daemon`; use it directly as " "a property instead." msgstr "" -#: library/threading.rst:649 -msgid "Lock Objects" +#: library/threading.rst:713 +msgid "Lock objects" msgstr "" -#: library/threading.rst:651 +#: library/threading.rst:715 msgid "" "A primitive lock is a synchronization primitive that is not owned by a " "particular thread when locked. In Python, it is currently the lowest level " @@ -886,7 +967,7 @@ msgid "" "`_thread` extension module." msgstr "" -#: library/threading.rst:656 +#: library/threading.rst:720 msgid "" "A primitive lock is in one of two states, \"locked\" or \"unlocked\". It is " "created in the unlocked state. It has two basic methods, :meth:`~Lock." @@ -900,11 +981,11 @@ msgid "" "an unlocked lock, a :exc:`RuntimeError` will be raised." msgstr "" -#: library/threading.rst:667 +#: library/threading.rst:731 msgid "Locks also support the :ref:`context management protocol `." msgstr "" -#: library/threading.rst:669 +#: library/threading.rst:733 msgid "" "When more than one thread is blocked in :meth:`~Lock.acquire` waiting for " "the state to turn to unlocked, only one thread proceeds when a :meth:`~Lock." @@ -912,41 +993,41 @@ msgid "" "proceeds is not defined, and may vary across implementations." msgstr "" -#: library/threading.rst:674 +#: library/threading.rst:738 msgid "All methods are executed atomically." msgstr "" -#: library/threading.rst:679 +#: library/threading.rst:743 msgid "" "The class implementing primitive lock objects. Once a thread has acquired a " "lock, subsequent attempts to acquire it block, until it is released; any " "thread may release it." msgstr "" -#: library/threading.rst:683 +#: library/threading.rst:747 msgid "" "``Lock`` is now a class. In earlier Pythons, ``Lock`` was a factory function " "which returned an instance of the underlying private lock type." msgstr "" -#: library/threading.rst:785 +#: library/threading.rst:849 msgid "Acquire a lock, blocking or non-blocking." msgstr "" -#: library/threading.rst:693 +#: library/threading.rst:757 msgid "" "When invoked with the *blocking* argument set to ``True`` (the default), " "block until the lock is unlocked, then set it to locked and return ``True``." msgstr "" -#: library/threading.rst:696 +#: library/threading.rst:760 msgid "" "When invoked with the *blocking* argument set to ``False``, do not block. If " "a call with *blocking* set to ``True`` would block, return ``False`` " "immediately; otherwise, set the lock to locked and return ``True``." msgstr "" -#: library/threading.rst:700 +#: library/threading.rst:764 msgid "" "When invoked with the floating-point *timeout* argument set to a positive " "value, block for at most the number of seconds specified by *timeout* and as " @@ -955,56 +1036,56 @@ msgid "" "*blocking* is ``False``." msgstr "" -#: library/threading.rst:706 +#: library/threading.rst:770 msgid "" "The return value is ``True`` if the lock is acquired successfully, ``False`` " "if not (for example if the *timeout* expired)." msgstr "" -#: library/threading.rst:823 library/threading.rst:1083 +#: library/threading.rst:887 library/threading.rst:1147 msgid "The *timeout* parameter is new." msgstr "" -#: library/threading.rst:712 +#: library/threading.rst:776 msgid "" "Lock acquisition can now be interrupted by signals on POSIX if the " "underlying threading implementation supports it." msgstr "" -#: library/threading.rst:716 +#: library/threading.rst:780 msgid "Lock acquisition can now be interrupted by signals on Windows." msgstr "" -#: library/threading.rst:722 +#: library/threading.rst:786 msgid "" "Release a lock. This can be called from any thread, not only the thread " "which has acquired the lock." msgstr "" -#: library/threading.rst:725 +#: library/threading.rst:789 msgid "" "When the lock is locked, reset it to unlocked, and return. If any other " "threads are blocked waiting for the lock to become unlocked, allow exactly " "one of them to proceed." msgstr "" -#: library/threading.rst:729 +#: library/threading.rst:793 msgid "When invoked on an unlocked lock, a :exc:`RuntimeError` is raised." msgstr "" -#: library/threading.rst:839 +#: library/threading.rst:903 msgid "There is no return value." msgstr "" -#: library/threading.rst:735 +#: library/threading.rst:799 msgid "Return ``True`` if the lock is acquired." msgstr "" -#: library/threading.rst:742 -msgid "RLock Objects" +#: library/threading.rst:806 +msgid "RLock objects" msgstr "" -#: library/threading.rst:744 +#: library/threading.rst:808 msgid "" "A reentrant lock is a synchronization primitive that may be acquired " "multiple times by the same thread. Internally, it uses the concepts of " @@ -1013,13 +1094,13 @@ msgid "" "lock; in the unlocked state, no thread owns it." msgstr "" -#: library/threading.rst:750 +#: library/threading.rst:814 msgid "" "Threads call a lock's :meth:`~RLock.acquire` method to lock it, and its :" "meth:`~Lock.release` method to unlock it." msgstr "" -#: library/threading.rst:755 +#: library/threading.rst:819 msgid "" "Reentrant locks support the :ref:`context management protocol `, " "so it is recommended to use :keyword:`with` instead of manually calling :" @@ -1027,7 +1108,7 @@ msgid "" "releasing the lock for a block of code." msgstr "" -#: library/threading.rst:760 +#: library/threading.rst:824 msgid "" "RLock's :meth:`~RLock.acquire`/:meth:`~RLock.release` call pairs may be " "nested, unlike Lock's :meth:`~Lock.acquire`/:meth:`~Lock.release`. Only the " @@ -1036,7 +1117,7 @@ msgid "" "in :meth:`~RLock.acquire` to proceed." msgstr "" -#: library/threading.rst:766 +#: library/threading.rst:830 msgid "" ":meth:`~RLock.acquire`/:meth:`~RLock.release` must be used in pairs: each " "acquire must have a release in the thread that has acquired the lock. " @@ -1044,7 +1125,7 @@ msgid "" "deadlock." msgstr "" -#: library/threading.rst:773 +#: library/threading.rst:837 msgid "" "This class implements reentrant lock objects. A reentrant lock must be " "released by the thread that acquired it. Once a thread has acquired a " @@ -1052,39 +1133,39 @@ msgid "" "thread must release it once for each time it has acquired it." msgstr "" -#: library/threading.rst:778 +#: library/threading.rst:842 msgid "" "Note that ``RLock`` is actually a factory function which returns an instance " "of the most efficient version of the concrete RLock class that is supported " "by the platform." msgstr "" -#: library/threading.rst:789 +#: library/threading.rst:853 msgid ":ref:`Using RLock as a context manager `" msgstr "" -#: library/threading.rst:790 +#: library/threading.rst:854 msgid "" "Recommended over manual :meth:`!acquire` and :meth:`release` calls whenever " "practical." msgstr "" -#: library/threading.rst:794 +#: library/threading.rst:858 msgid "" "When invoked with the *blocking* argument set to ``True`` (the default):" msgstr "" -#: library/threading.rst:808 +#: library/threading.rst:872 msgid "If no thread owns the lock, acquire the lock and return immediately." msgstr "" -#: library/threading.rst:798 +#: library/threading.rst:862 msgid "" "If another thread owns the lock, block until we are able to acquire lock, or " "*timeout*, if set to a positive float value." msgstr "" -#: library/threading.rst:801 +#: library/threading.rst:865 msgid "" "If the same thread owns the lock, acquire the lock again, and return " "immediately. This is the difference between :class:`Lock` and :class:`!" @@ -1092,35 +1173,35 @@ msgid "" "until the lock can be acquired." msgstr "" -#: library/threading.rst:806 +#: library/threading.rst:870 msgid "When invoked with the *blocking* argument set to ``False``:" msgstr "" -#: library/threading.rst:810 +#: library/threading.rst:874 msgid "If another thread owns the lock, return immediately." msgstr "" -#: library/threading.rst:812 +#: library/threading.rst:876 msgid "" "If the same thread owns the lock, acquire the lock again and return " "immediately." msgstr "" -#: library/threading.rst:815 +#: library/threading.rst:879 msgid "" "In all cases, if the thread was able to acquire the lock, return ``True``. " "If the thread was unable to acquire the lock (i.e. if not blocking or the " "timeout was reached) return ``False``." msgstr "" -#: library/threading.rst:819 +#: library/threading.rst:883 msgid "" "If called multiple times, failing to call :meth:`~RLock.release` as many " "times may lead to deadlock. Consider using :class:`!RLock` as a context " "manager rather than calling acquire/release directly." msgstr "" -#: library/threading.rst:829 +#: library/threading.rst:893 msgid "" "Release a lock, decrementing the recursion level. If after the decrement it " "is zero, reset the lock to unlocked (not owned by any thread), and if any " @@ -1129,22 +1210,22 @@ msgid "" "is still nonzero, the lock remains locked and owned by the calling thread." msgstr "" -#: library/threading.rst:835 +#: library/threading.rst:899 msgid "" "Only call this method when the calling thread owns the lock. A :exc:" "`RuntimeError` is raised if this method is called when the lock is not " "acquired." msgstr "" -#: library/threading.rst:943 +#: library/threading.rst:1007 msgid "Return a boolean indicating whether this object is locked right now." msgstr "" -#: library/threading.rst:852 -msgid "Condition Objects" +#: library/threading.rst:916 +msgid "Condition objects" msgstr "" -#: library/threading.rst:854 +#: library/threading.rst:918 msgid "" "A condition variable is always associated with some kind of lock; this can " "be passed in or one will be created by default. Passing one in is useful " @@ -1152,7 +1233,7 @@ msgid "" "of the condition object: you don't have to track it separately." msgstr "" -#: library/threading.rst:859 +#: library/threading.rst:923 msgid "" "A condition variable obeys the :ref:`context management protocol `: using the ``with`` statement acquires the associated lock for the " @@ -1161,7 +1242,7 @@ msgid "" "associated lock." msgstr "" -#: library/threading.rst:865 +#: library/threading.rst:929 msgid "" "Other methods must be called with the associated lock held. The :meth:" "`~Condition.wait` method releases the lock, and then blocks until another " @@ -1170,14 +1251,14 @@ msgid "" "and returns. It is also possible to specify a timeout." msgstr "" -#: library/threading.rst:871 +#: library/threading.rst:935 msgid "" "The :meth:`~Condition.notify` method wakes up one of the threads waiting for " "the condition variable, if any are waiting. The :meth:`~Condition." "notify_all` method wakes up all threads waiting for the condition variable." msgstr "" -#: library/threading.rst:875 +#: library/threading.rst:939 msgid "" "Note: the :meth:`~Condition.notify` and :meth:`~Condition.notify_all` " "methods don't release the lock; this means that the thread or threads " @@ -1186,7 +1267,7 @@ msgid "" "or :meth:`~Condition.notify_all` finally relinquishes ownership of the lock." msgstr "" -#: library/threading.rst:881 +#: library/threading.rst:945 msgid "" "The typical programming style using condition variables uses the lock to " "synchronize access to some shared state; threads that are interested in a " @@ -1198,7 +1279,7 @@ msgid "" "situation with unlimited buffer capacity::" msgstr "" -#: library/threading.rst:890 +#: library/threading.rst:954 msgid "" "# Consume one item\n" "with cv:\n" @@ -1212,7 +1293,7 @@ msgid "" " cv.notify()" msgstr "" -#: library/threading.rst:901 +#: library/threading.rst:965 msgid "" "The ``while`` loop checking for the application's condition is necessary " "because :meth:`~Condition.wait` can return after an arbitrary long time, and " @@ -1222,7 +1303,7 @@ msgid "" "checking, and eases the computation of timeouts::" msgstr "" -#: library/threading.rst:908 +#: library/threading.rst:972 msgid "" "# Consume an item\n" "with cv:\n" @@ -1230,7 +1311,7 @@ msgid "" " get_an_available_item()" msgstr "" -#: library/threading.rst:913 +#: library/threading.rst:977 msgid "" "To choose between :meth:`~Condition.notify` and :meth:`~Condition." "notify_all`, consider whether one state change can be interesting for only " @@ -1239,44 +1320,44 @@ msgid "" "thread." msgstr "" -#: library/threading.rst:921 +#: library/threading.rst:985 msgid "" "This class implements condition variable objects. A condition variable " "allows one or more threads to wait until they are notified by another thread." msgstr "" -#: library/threading.rst:924 +#: library/threading.rst:988 msgid "" "If the *lock* argument is given and not ``None``, it must be a :class:`Lock` " "or :class:`RLock` object, and it is used as the underlying lock. Otherwise, " "a new :class:`RLock` object is created and used as the underlying lock." msgstr "" -#: library/threading.rst:1058 library/threading.rst:1156 -#: library/threading.rst:1224 +#: library/threading.rst:1122 library/threading.rst:1220 +#: library/threading.rst:1288 msgid "changed from a factory function to a class." msgstr "" -#: library/threading.rst:933 +#: library/threading.rst:997 msgid "" "Acquire the underlying lock. This method calls the corresponding method on " "the underlying lock; the return value is whatever that method returns." msgstr "" -#: library/threading.rst:938 +#: library/threading.rst:1002 msgid "" "Release the underlying lock. This method calls the corresponding method on " "the underlying lock; there is no return value." msgstr "" -#: library/threading.rst:949 +#: library/threading.rst:1013 msgid "" "Wait until notified or until a timeout occurs. If the calling thread has not " "acquired the lock when this method is called, a :exc:`RuntimeError` is " "raised." msgstr "" -#: library/threading.rst:953 +#: library/threading.rst:1017 msgid "" "This method releases the underlying lock, and then blocks until it is " "awakened by a :meth:`notify` or :meth:`notify_all` call for the same " @@ -1284,14 +1365,14 @@ msgid "" "Once awakened or timed out, it re-acquires the lock and returns." msgstr "" -#: library/threading.rst:958 +#: library/threading.rst:1022 msgid "" "When the *timeout* argument is present and not ``None``, it should be a " "floating-point number specifying a timeout for the operation in seconds (or " "fractions thereof)." msgstr "" -#: library/threading.rst:962 +#: library/threading.rst:1026 msgid "" "When the underlying lock is an :class:`RLock`, it is not released using its :" "meth:`release` method, since this may not actually unlock the lock when it " @@ -1301,24 +1382,24 @@ msgid "" "used to restore the recursion level when the lock is reacquired." msgstr "" -#: library/threading.rst:970 +#: library/threading.rst:1034 msgid "" "The return value is ``True`` unless a given *timeout* expired, in which case " "it is ``False``." msgstr "" -#: library/threading.rst:1189 +#: library/threading.rst:1253 msgid "Previously, the method always returned ``None``." msgstr "" -#: library/threading.rst:978 +#: library/threading.rst:1042 msgid "" "Wait until a condition evaluates to true. *predicate* should be a callable " "which result will be interpreted as a boolean value. A *timeout* may be " "provided giving the maximum time to wait." msgstr "" -#: library/threading.rst:982 +#: library/threading.rst:1046 msgid "" "This utility method may call :meth:`wait` repeatedly until the predicate is " "satisfied, or until a timeout occurs. The return value is the last return " @@ -1326,39 +1407,39 @@ msgid "" "out." msgstr "" -#: library/threading.rst:987 +#: library/threading.rst:1051 msgid "" "Ignoring the timeout feature, calling this method is roughly equivalent to " "writing::" msgstr "" -#: library/threading.rst:990 +#: library/threading.rst:1054 msgid "" "while not predicate():\n" " cv.wait()" msgstr "" -#: library/threading.rst:993 +#: library/threading.rst:1057 msgid "" "Therefore, the same rules apply as with :meth:`wait`: The lock must be held " "when called and is re-acquired on return. The predicate is evaluated with " "the lock held." msgstr "" -#: library/threading.rst:1001 +#: library/threading.rst:1065 msgid "" "By default, wake up one thread waiting on this condition, if any. If the " "calling thread has not acquired the lock when this method is called, a :exc:" "`RuntimeError` is raised." msgstr "" -#: library/threading.rst:1005 +#: library/threading.rst:1069 msgid "" "This method wakes up at most *n* of the threads waiting for the condition " "variable; it is a no-op if no threads are waiting." msgstr "" -#: library/threading.rst:1008 +#: library/threading.rst:1072 msgid "" "The current implementation wakes up exactly *n* threads, if at least *n* " "threads are waiting. However, it's not safe to rely on this behavior. A " @@ -1366,14 +1447,14 @@ msgid "" "threads." msgstr "" -#: library/threading.rst:1013 +#: library/threading.rst:1077 msgid "" "Note: an awakened thread does not actually return from its :meth:`wait` call " "until it can reacquire the lock. Since :meth:`notify` does not release the " "lock, its caller should." msgstr "" -#: library/threading.rst:1019 +#: library/threading.rst:1083 msgid "" "Wake up all threads waiting on this condition. This method acts like :meth:" "`notify`, but wakes up all waiting threads instead of one. If the calling " @@ -1381,15 +1462,15 @@ msgid "" "`RuntimeError` is raised." msgstr "" -#: library/threading.rst:1024 +#: library/threading.rst:1088 msgid "The method ``notifyAll`` is a deprecated alias for this method." msgstr "" -#: library/threading.rst:1030 -msgid "Semaphore Objects" +#: library/threading.rst:1094 +msgid "Semaphore objects" msgstr "" -#: library/threading.rst:1032 +#: library/threading.rst:1096 msgid "" "This is one of the oldest synchronization primitives in the history of " "computer science, invented by the early Dutch computer scientist Edsger W. " @@ -1397,7 +1478,7 @@ msgid "" "acquire` and :meth:`~Semaphore.release`)." msgstr "" -#: library/threading.rst:1037 +#: library/threading.rst:1101 msgid "" "A semaphore manages an internal counter which is decremented by each :meth:" "`~Semaphore.acquire` call and incremented by each :meth:`~Semaphore.release` " @@ -1406,12 +1487,12 @@ msgid "" "meth:`~Semaphore.release`." msgstr "" -#: library/threading.rst:1043 +#: library/threading.rst:1107 msgid "" "Semaphores also support the :ref:`context management protocol `." msgstr "" -#: library/threading.rst:1048 +#: library/threading.rst:1112 msgid "" "This class implements semaphore objects. A semaphore manages an atomic " "counter representing the number of :meth:`release` calls minus the number " @@ -1420,28 +1501,28 @@ msgid "" "If not given, *value* defaults to 1." msgstr "" -#: library/threading.rst:1054 +#: library/threading.rst:1118 msgid "" "The optional argument gives the initial *value* for the internal counter; it " "defaults to ``1``. If the *value* given is less than 0, :exc:`ValueError` is " "raised." msgstr "" -#: library/threading.rst:1063 +#: library/threading.rst:1127 msgid "Acquire a semaphore." msgstr "" -#: library/threading.rst:1065 +#: library/threading.rst:1129 msgid "When invoked without arguments:" msgstr "" -#: library/threading.rst:1067 +#: library/threading.rst:1131 msgid "" "If the internal counter is larger than zero on entry, decrement it by one " "and return ``True`` immediately." msgstr "" -#: library/threading.rst:1069 +#: library/threading.rst:1133 msgid "" "If the internal counter is zero on entry, block until awoken by a call to :" "meth:`~Semaphore.release`. Once awoken (and the counter is greater than 0), " @@ -1450,32 +1531,32 @@ msgid "" "threads are awoken should not be relied on." msgstr "" -#: library/threading.rst:1075 +#: library/threading.rst:1139 msgid "" "When invoked with *blocking* set to ``False``, do not block. If a call " "without an argument would block, return ``False`` immediately; otherwise, do " "the same thing as when called without arguments, and return ``True``." msgstr "" -#: library/threading.rst:1079 +#: library/threading.rst:1143 msgid "" "When invoked with a *timeout* other than ``None``, it will block for at most " "*timeout* seconds. If acquire does not complete successfully in that " "interval, return ``False``. Return ``True`` otherwise." msgstr "" -#: library/threading.rst:1088 +#: library/threading.rst:1152 msgid "" "Release a semaphore, incrementing the internal counter by *n*. When it was " "zero on entry and other threads are waiting for it to become larger than " "zero again, wake up *n* of those threads." msgstr "" -#: library/threading.rst:1092 +#: library/threading.rst:1156 msgid "Added the *n* parameter to release multiple waiting threads at once." msgstr "" -#: library/threading.rst:1098 +#: library/threading.rst:1162 msgid "" "Class implementing bounded semaphore objects. A bounded semaphore checks to " "make sure its current value doesn't exceed its initial value. If it does, :" @@ -1484,11 +1565,11 @@ msgid "" "times it's a sign of a bug. If not given, *value* defaults to 1." msgstr "" -#: library/threading.rst:1111 -msgid ":class:`Semaphore` Example" +#: library/threading.rst:1175 +msgid ":class:`Semaphore` example" msgstr "" -#: library/threading.rst:1113 +#: library/threading.rst:1177 msgid "" "Semaphores are often used to guard resources with limited capacity, for " "example, a database server. In any situation where the size of the resource " @@ -1496,20 +1577,20 @@ msgid "" "threads, your main thread would initialize the semaphore::" msgstr "" -#: library/threading.rst:1118 +#: library/threading.rst:1182 msgid "" "maxconnections = 5\n" "# ...\n" "pool_sema = BoundedSemaphore(value=maxconnections)" msgstr "" -#: library/threading.rst:1122 +#: library/threading.rst:1186 msgid "" "Once spawned, worker threads call the semaphore's acquire and release " "methods when they need to connect to the server::" msgstr "" -#: library/threading.rst:1125 +#: library/threading.rst:1189 msgid "" "with pool_sema:\n" " conn = connectdb()\n" @@ -1519,31 +1600,31 @@ msgid "" " conn.close()" msgstr "" -#: library/threading.rst:1132 +#: library/threading.rst:1196 msgid "" "The use of a bounded semaphore reduces the chance that a programming error " "which causes the semaphore to be released more than it's acquired will go " "undetected." msgstr "" -#: library/threading.rst:1139 -msgid "Event Objects" +#: library/threading.rst:1203 +msgid "Event objects" msgstr "" -#: library/threading.rst:1141 +#: library/threading.rst:1205 msgid "" "This is one of the simplest mechanisms for communication between threads: " "one thread signals an event and other threads wait for it." msgstr "" -#: library/threading.rst:1144 +#: library/threading.rst:1208 msgid "" "An event object manages an internal flag that can be set to true with the :" "meth:`~Event.set` method and reset to false with the :meth:`~Event.clear` " "method. The :meth:`~Event.wait` method blocks until the flag is true." msgstr "" -#: library/threading.rst:1151 +#: library/threading.rst:1215 msgid "" "Class implementing event objects. An event manages a flag that can be set " "to true with the :meth:`~Event.set` method and reset to false with the :meth:" @@ -1551,29 +1632,29 @@ msgid "" "flag is initially false." msgstr "" -#: library/threading.rst:1161 +#: library/threading.rst:1225 msgid "Return ``True`` if and only if the internal flag is true." msgstr "" -#: library/threading.rst:1163 +#: library/threading.rst:1227 msgid "The method ``isSet`` is a deprecated alias for this method." msgstr "" -#: library/threading.rst:1167 +#: library/threading.rst:1231 msgid "" "Set the internal flag to true. All threads waiting for it to become true are " "awakened. Threads that call :meth:`wait` once the flag is true will not " "block at all." msgstr "" -#: library/threading.rst:1173 +#: library/threading.rst:1237 msgid "" "Reset the internal flag to false. Subsequently, threads calling :meth:`wait` " "will block until :meth:`.set` is called to set the internal flag to true " "again." msgstr "" -#: library/threading.rst:1179 +#: library/threading.rst:1243 msgid "" "Block as long as the internal flag is false and the timeout, if given, has " "not expired. The return value represents the reason that this blocking " @@ -1582,18 +1663,18 @@ msgid "" "become true within the given wait time." msgstr "" -#: library/threading.rst:1185 +#: library/threading.rst:1249 msgid "" "When the timeout argument is present and not ``None``, it should be a " "floating-point number specifying a timeout for the operation in seconds, or " "fractions thereof." msgstr "" -#: library/threading.rst:1196 -msgid "Timer Objects" +#: library/threading.rst:1260 +msgid "Timer objects" msgstr "" -#: library/threading.rst:1198 +#: library/threading.rst:1262 msgid "" "This class represents an action that should be run only after a certain " "amount of time has passed --- a timer. :class:`Timer` is a subclass of :" @@ -1601,7 +1682,7 @@ msgid "" "threads." msgstr "" -#: library/threading.rst:1202 +#: library/threading.rst:1266 msgid "" "Timers are started, as with threads, by calling their :meth:`Timer.start " "` method. The timer can be stopped (before its action has " @@ -1610,11 +1691,11 @@ msgid "" "interval specified by the user." msgstr "" -#: library/threading.rst:1208 +#: library/threading.rst:1272 msgid "For example::" msgstr "" -#: library/threading.rst:1210 +#: library/threading.rst:1274 msgid "" "def hello():\n" " print(\"hello, world\")\n" @@ -1623,7 +1704,7 @@ msgid "" "t.start() # after 30 seconds, \"hello, world\" will be printed" msgstr "" -#: library/threading.rst:1219 +#: library/threading.rst:1283 msgid "" "Create a timer that will run *function* with arguments *args* and keyword " "arguments *kwargs*, after *interval* seconds have passed. If *args* is " @@ -1631,17 +1712,17 @@ msgid "" "``None`` (the default) then an empty dict will be used." msgstr "" -#: library/threading.rst:1229 +#: library/threading.rst:1293 msgid "" "Stop the timer, and cancel the execution of the timer's action. This will " "only work if the timer is still in its waiting stage." msgstr "" -#: library/threading.rst:1234 -msgid "Barrier Objects" +#: library/threading.rst:1298 +msgid "Barrier objects" msgstr "" -#: library/threading.rst:1238 +#: library/threading.rst:1302 msgid "" "This class provides a simple synchronization primitive for use by a fixed " "number of threads that need to wait for each other. Each of the threads " @@ -1650,18 +1731,18 @@ msgid "" "calls. At this point, the threads are released simultaneously." msgstr "" -#: library/threading.rst:1244 +#: library/threading.rst:1308 msgid "" "The barrier can be reused any number of times for the same number of threads." msgstr "" -#: library/threading.rst:1246 +#: library/threading.rst:1310 msgid "" "As an example, here is a simple way to synchronize a client and server " "thread::" msgstr "" -#: library/threading.rst:1248 +#: library/threading.rst:1312 msgid "" "b = Barrier(2, timeout=5)\n" "\n" @@ -1679,7 +1760,7 @@ msgid "" " process_client_connection(connection)" msgstr "" -#: library/threading.rst:1266 +#: library/threading.rst:1330 msgid "" "Create a barrier object for *parties* number of threads. An *action*, when " "provided, is a callable to be called by one of the threads when they are " @@ -1687,7 +1768,7 @@ msgid "" "the :meth:`wait` method." msgstr "" -#: library/threading.rst:1273 +#: library/threading.rst:1337 msgid "" "Pass the barrier. When all the threads party to the barrier have called " "this function, they are all released simultaneously. If a *timeout* is " @@ -1695,14 +1776,14 @@ msgid "" "constructor." msgstr "" -#: library/threading.rst:1278 +#: library/threading.rst:1342 msgid "" "The return value is an integer in the range 0 to *parties* -- 1, different " "for each thread. This can be used to select a thread to do some special " "housekeeping, e.g.::" msgstr "" -#: library/threading.rst:1282 +#: library/threading.rst:1346 msgid "" "i = barrier.wait()\n" "if i == 0:\n" @@ -1710,37 +1791,37 @@ msgid "" " print(\"passed the barrier\")" msgstr "" -#: library/threading.rst:1287 +#: library/threading.rst:1351 msgid "" "If an *action* was provided to the constructor, one of the threads will have " "called it prior to being released. Should this call raise an error, the " "barrier is put into the broken state." msgstr "" -#: library/threading.rst:1291 +#: library/threading.rst:1355 msgid "If the call times out, the barrier is put into the broken state." msgstr "" -#: library/threading.rst:1293 +#: library/threading.rst:1357 msgid "" "This method may raise a :class:`BrokenBarrierError` exception if the barrier " "is broken or reset while a thread is waiting." msgstr "" -#: library/threading.rst:1298 +#: library/threading.rst:1362 msgid "" "Return the barrier to the default, empty state. Any threads waiting on it " "will receive the :class:`BrokenBarrierError` exception." msgstr "" -#: library/threading.rst:1301 +#: library/threading.rst:1365 msgid "" "Note that using this function may require some external synchronization if " "there are other threads whose state is unknown. If a barrier is broken it " "may be better to just leave it and create a new one." msgstr "" -#: library/threading.rst:1307 +#: library/threading.rst:1371 msgid "" "Put the barrier into a broken state. This causes any active or future calls " "to :meth:`wait` to fail with the :class:`BrokenBarrierError`. Use this for " @@ -1748,36 +1829,36 @@ msgid "" "application." msgstr "" -#: library/threading.rst:1312 +#: library/threading.rst:1376 msgid "" "It may be preferable to simply create the barrier with a sensible *timeout* " "value to automatically guard against one of the threads going awry." msgstr "" -#: library/threading.rst:1318 +#: library/threading.rst:1382 msgid "The number of threads required to pass the barrier." msgstr "" -#: library/threading.rst:1322 +#: library/threading.rst:1386 msgid "The number of threads currently waiting in the barrier." msgstr "" -#: library/threading.rst:1326 +#: library/threading.rst:1390 msgid "A boolean that is ``True`` if the barrier is in the broken state." msgstr "" -#: library/threading.rst:1331 +#: library/threading.rst:1395 msgid "" "This exception, a subclass of :exc:`RuntimeError`, is raised when the :class:" "`Barrier` object is reset or broken." msgstr "" -#: library/threading.rst:1338 +#: library/threading.rst:1402 msgid "" "Using locks, conditions, and semaphores in the :keyword:`!with` statement" msgstr "" -#: library/threading.rst:1340 +#: library/threading.rst:1404 msgid "" "All of the objects provided by this module that have ``acquire`` and " "``release`` methods can be used as context managers for a :keyword:`with` " @@ -1786,17 +1867,17 @@ msgid "" "following snippet::" msgstr "" -#: library/threading.rst:1346 +#: library/threading.rst:1410 msgid "" "with some_lock:\n" " # do something..." msgstr "" -#: library/threading.rst:1349 +#: library/threading.rst:1413 msgid "is equivalent to::" msgstr "" -#: library/threading.rst:1351 +#: library/threading.rst:1415 msgid "" "some_lock.acquire()\n" "try:\n" @@ -1805,21 +1886,21 @@ msgid "" " some_lock.release()" msgstr "" -#: library/threading.rst:1357 +#: library/threading.rst:1421 msgid "" "Currently, :class:`Lock`, :class:`RLock`, :class:`Condition`, :class:" "`Semaphore`, and :class:`BoundedSemaphore` objects may be used as :keyword:" "`with` statement context managers." msgstr "" -#: library/threading.rst:176 +#: library/threading.rst:240 msgid "trace function" msgstr "" -#: library/threading.rst:176 +#: library/threading.rst:240 msgid "debugger" msgstr "" -#: library/threading.rst:205 +#: library/threading.rst:269 msgid "profile function" msgstr "" diff --git a/library/time.po b/library/time.po index 298e5287..1bb92974 100644 --- a/library/time.po +++ b/library/time.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/timeit.po b/library/timeit.po index 56a140f0..e6a352ba 100644 --- a/library/timeit.po +++ b/library/timeit.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tk.po b/library/tk.po index 071e1a95..972a226f 100644 --- a/library/tk.po +++ b/library/tk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.colorchooser.po b/library/tkinter.colorchooser.po index 0f896c49..43d59778 100644 --- a/library/tkinter.colorchooser.po +++ b/library/tkinter.colorchooser.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.dnd.po b/library/tkinter.dnd.po index d79bfc21..f07cf43d 100644 --- a/library/tkinter.dnd.po +++ b/library/tkinter.dnd.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.font.po b/library/tkinter.font.po index f8965cfd..e3ceef03 100644 --- a/library/tkinter.font.po +++ b/library/tkinter.font.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.messagebox.po b/library/tkinter.messagebox.po index 4a1ac474..0493a971 100644 --- a/library/tkinter.messagebox.po +++ b/library/tkinter.messagebox.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.po b/library/tkinter.po index e020e959..67165f6e 100644 --- a/library/tkinter.po +++ b/library/tkinter.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.scrolledtext.po b/library/tkinter.scrolledtext.po index c2e9922e..a4c0bbd2 100644 --- a/library/tkinter.scrolledtext.po +++ b/library/tkinter.scrolledtext.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tkinter.ttk.po b/library/tkinter.ttk.po index 9a730562..8e36e0e4 100644 --- a/library/tkinter.ttk.po +++ b/library/tkinter.ttk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/token.po b/library/token.po index d4d84cfe..37a007bd 100644 --- a/library/token.po +++ b/library/token.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -73,7 +73,7 @@ msgstr "" #: library/token.rst:53 msgid "" "Token value that indicates an :ref:`identifier `. Note that " -"keywords are also initially tokenized an ``NAME`` tokens." +"keywords are also initially tokenized as ``NAME`` tokens." msgstr "" #: library/token.rst:58 diff --git a/library/tokenize.po b/library/tokenize.po index 7ff8acba..b11a9560 100644 --- a/library/tokenize.po +++ b/library/tokenize.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tomllib.po b/library/tomllib.po index d7391ee5..ee52e7f4 100644 --- a/library/tomllib.po +++ b/library/tomllib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/trace.po b/library/trace.po index 3d54ef7d..74cf9555 100644 --- a/library/trace.po +++ b/library/trace.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/traceback.po b/library/traceback.po index d97a4e3a..d38e9942 100644 --- a/library/traceback.po +++ b/library/traceback.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tracemalloc.po b/library/tracemalloc.po index 32e145db..febd3cb6 100644 --- a/library/tracemalloc.po +++ b/library/tracemalloc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/tty.po b/library/tty.po index f3b0ddb4..bfbd2762 100644 --- a/library/tty.po +++ b/library/tty.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/turtle.po b/library/turtle.po index d47d9cb7..ce06ec85 100644 --- a/library/turtle.po +++ b/library/turtle.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/types.po b/library/types.po index 95614636..83fa5584 100644 --- a/library/types.po +++ b/library/types.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-22 18:56+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/library/typing.po b/library/typing.po index 1620ecb8..a31753b6 100644 --- a/library/typing.po +++ b/library/typing.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -415,7 +415,7 @@ msgid "" "ReturnType]`` respectively." msgstr "" -#: library/typing.rst:3970 +#: library/typing.rst:3965 msgid "" "``Callable`` now supports :class:`ParamSpec` and :data:`Concatenate`. See :" "pep:`612` for more details." @@ -3245,7 +3245,7 @@ msgstr "" msgid "Typed version of :func:`collections.namedtuple`." msgstr "" -#: library/typing.rst:2451 library/typing.rst:3544 +#: library/typing.rst:2451 library/typing.rst:3545 msgid "Usage::" msgstr "" @@ -4796,46 +4796,24 @@ msgstr "" #: library/typing.rst:3502 msgid "" "This is similar to calling :meth:`annotationlib.ForwardRef.evaluate`, but " -"unlike that method, :func:`!evaluate_forward_ref` also:" -msgstr "" - -#: library/typing.rst:3505 -msgid "Recursively evaluates forward references nested within the type hint." +"unlike that method, :func:`!evaluate_forward_ref` also recursively evaluates " +"forward references nested within the type hint." msgstr "" #: library/typing.rst:3506 msgid "" -"Raises :exc:`TypeError` when it encounters certain objects that are not " -"valid type hints." -msgstr "" - -#: library/typing.rst:3508 -msgid "" -"Replaces type hints that evaluate to :const:`!None` with :class:`types." -"NoneType`." -msgstr "" - -#: library/typing.rst:3510 -msgid "" -"Supports the :attr:`~annotationlib.Format.FORWARDREF` and :attr:" -"`~annotationlib.Format.STRING` formats." -msgstr "" - -#: library/typing.rst:3513 -msgid "" "See the documentation for :meth:`annotationlib.ForwardRef.evaluate` for the " -"meaning of the *owner*, *globals*, *locals*, and *type_params* parameters. " -"*format* specifies the format of the annotation and is a member of the :" -"class:`annotationlib.Format` enum." +"meaning of the *owner*, *globals*, *locals*, *type_params*, and *format* " +"parameters." msgstr "" -#: library/typing.rst:3522 +#: library/typing.rst:3513 msgid "" "A sentinel object used to indicate that a type parameter has no default " "value. For example:" msgstr "" -#: library/typing.rst:3525 +#: library/typing.rst:3516 msgid "" ">>> T = TypeVar(\"T\")\n" ">>> T.__default__ is typing.NoDefault\n" @@ -4845,46 +4823,51 @@ msgid "" "True" msgstr "" -#: library/typing.rst:3537 +#: library/typing.rst:3528 msgid "Constant" msgstr "" -#: library/typing.rst:3541 +#: library/typing.rst:3532 msgid "" "A special constant that is assumed to be ``True`` by 3rd party static type " -"checkers. It is ``False`` at runtime." +"checkers. It's ``False`` at runtime." +msgstr "" + +#: library/typing.rst:3535 +msgid "" +"A module which is expensive to import, and which only contain types used for " +"typing annotations, can be safely imported inside an ``if TYPE_CHECKING:`` " +"block. This prevents the module from actually being imported at runtime; " +"annotations aren't eagerly evaluated (see :pep:`649`) so using undefined " +"symbols in annotations is harmless--as long as you don't later examine them. " +"Your static type analysis tool will set ``TYPE_CHECKING`` to ``True`` during " +"static type analysis, which means the module will be imported and the types " +"will be checked properly during such analysis." msgstr "" -#: library/typing.rst:3546 +#: library/typing.rst:3547 msgid "" "if TYPE_CHECKING:\n" " import expensive_mod\n" "\n" -"def fun(arg: 'expensive_mod.SomeType') -> None:\n" +"def fun(arg: expensive_mod.SomeType) -> None:\n" " local_var: expensive_mod.AnotherType = other_fun()" msgstr "" -#: library/typing.rst:3552 +#: library/typing.rst:3553 msgid "" -"The first type annotation must be enclosed in quotes, making it a \"forward " -"reference\", to hide the ``expensive_mod`` reference from the interpreter " -"runtime. Type annotations for local variables are not evaluated, so the " -"second annotation does not need to be enclosed in quotes." +"If you occasionally need to examine type annotations at runtime which may " +"contain undefined symbols, use :meth:`annotationlib.get_annotations` with a " +"``format`` parameter of :attr:`annotationlib.Format.STRING` or :attr:" +"`annotationlib.Format.FORWARDREF` to safely retrieve the annotations without " +"raising :exc:`NameError`." msgstr "" -#: library/typing.rst:3559 -msgid "" -"If ``from __future__ import annotations`` is used, annotations are not " -"evaluated at function definition time. Instead, they are stored as strings " -"in ``__annotations__``. This makes it unnecessary to use quotes around the " -"annotation (see :pep:`563`)." -msgstr "" - -#: library/typing.rst:3571 +#: library/typing.rst:3566 msgid "Deprecated aliases" msgstr "" -#: library/typing.rst:3573 +#: library/typing.rst:3568 msgid "" "This module defines several deprecated aliases to pre-existing standard " "library classes. These were originally included in the :mod:`!typing` module " @@ -4893,7 +4876,7 @@ msgid "" "pre-existing classes were enhanced to support ``[]`` (see :pep:`585`)." msgstr "" -#: library/typing.rst:3580 +#: library/typing.rst:3575 msgid "" "The redundant types are deprecated as of Python 3.9. However, while the " "aliases may be removed at some point, removal of these aliases is not " @@ -4901,7 +4884,7 @@ msgid "" "the interpreter for these aliases." msgstr "" -#: library/typing.rst:3585 +#: library/typing.rst:3580 msgid "" "If at some point it is decided to remove these deprecated aliases, a " "deprecation warning will be issued by the interpreter for at least two " @@ -4909,38 +4892,38 @@ msgid "" "`!typing` module without deprecation warnings until at least Python 3.14." msgstr "" -#: library/typing.rst:3590 +#: library/typing.rst:3585 msgid "" "Type checkers are encouraged to flag uses of the deprecated types if the " "program they are checking targets a minimum Python version of 3.9 or newer." msgstr "" -#: library/typing.rst:3596 +#: library/typing.rst:3591 msgid "Aliases to built-in types" msgstr "" -#: library/typing.rst:3600 +#: library/typing.rst:3595 msgid "Deprecated alias to :class:`dict`." msgstr "" -#: library/typing.rst:3602 +#: library/typing.rst:3597 msgid "" "Note that to annotate arguments, it is preferred to use an abstract " "collection type such as :class:`~collections.abc.Mapping` rather than to " "use :class:`dict` or :class:`!typing.Dict`." msgstr "" -#: library/typing.rst:3606 +#: library/typing.rst:3601 msgid "" ":class:`builtins.dict ` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3612 +#: library/typing.rst:3607 msgid "Deprecated alias to :class:`list`." msgstr "" -#: library/typing.rst:3614 +#: library/typing.rst:3609 msgid "" "Note that to annotate arguments, it is preferred to use an abstract " "collection type such as :class:`~collections.abc.Sequence` or :class:" @@ -4948,136 +4931,136 @@ msgid "" "typing.List`." msgstr "" -#: library/typing.rst:3619 +#: library/typing.rst:3614 msgid "" ":class:`builtins.list ` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3625 +#: library/typing.rst:3620 msgid "Deprecated alias to :class:`builtins.set `." msgstr "" -#: library/typing.rst:3627 +#: library/typing.rst:3622 msgid "" "Note that to annotate arguments, it is preferred to use an abstract " "collection type such as :class:`collections.abc.Set` rather than to use :" "class:`set` or :class:`typing.Set`." msgstr "" -#: library/typing.rst:3631 +#: library/typing.rst:3626 msgid "" ":class:`builtins.set ` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3637 +#: library/typing.rst:3632 msgid "Deprecated alias to :class:`builtins.frozenset `." msgstr "" -#: library/typing.rst:3639 +#: library/typing.rst:3634 msgid "" ":class:`builtins.frozenset ` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3646 +#: library/typing.rst:3641 msgid "Deprecated alias for :class:`tuple`." msgstr "" -#: library/typing.rst:3648 +#: library/typing.rst:3643 msgid "" ":class:`tuple` and ``Tuple`` are special-cased in the type system; see :ref:" "`annotating-tuples` for more details." msgstr "" -#: library/typing.rst:3651 +#: library/typing.rst:3646 msgid "" ":class:`builtins.tuple ` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3657 +#: library/typing.rst:3652 msgid "Deprecated alias to :class:`type`." msgstr "" -#: library/typing.rst:3659 +#: library/typing.rst:3654 msgid "" "See :ref:`type-of-class-objects` for details on using :class:`type` or " "``typing.Type`` in type annotations." msgstr "" -#: library/typing.rst:3664 +#: library/typing.rst:3659 msgid "" ":class:`builtins.type ` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3671 +#: library/typing.rst:3666 msgid "Aliases to types in :mod:`collections`" msgstr "" -#: library/typing.rst:3675 +#: library/typing.rst:3670 msgid "Deprecated alias to :class:`collections.defaultdict`." msgstr "" -#: library/typing.rst:3679 +#: library/typing.rst:3674 msgid "" ":class:`collections.defaultdict` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3685 +#: library/typing.rst:3680 msgid "Deprecated alias to :class:`collections.OrderedDict`." msgstr "" -#: library/typing.rst:3689 +#: library/typing.rst:3684 msgid "" ":class:`collections.OrderedDict` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3695 +#: library/typing.rst:3690 msgid "Deprecated alias to :class:`collections.ChainMap`." msgstr "" -#: library/typing.rst:3699 +#: library/typing.rst:3694 msgid "" ":class:`collections.ChainMap` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3705 +#: library/typing.rst:3700 msgid "Deprecated alias to :class:`collections.Counter`." msgstr "" -#: library/typing.rst:3709 +#: library/typing.rst:3704 msgid "" ":class:`collections.Counter` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3715 +#: library/typing.rst:3710 msgid "Deprecated alias to :class:`collections.deque`." msgstr "" -#: library/typing.rst:3719 +#: library/typing.rst:3714 msgid "" ":class:`collections.deque` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3726 +#: library/typing.rst:3721 msgid "Aliases to other concrete types" msgstr "" -#: library/typing.rst:3731 +#: library/typing.rst:3726 msgid "" "Deprecated aliases corresponding to the return types from :func:`re.compile` " "and :func:`re.match`." msgstr "" -#: library/typing.rst:3734 +#: library/typing.rst:3729 msgid "" "These types (and the corresponding functions) are generic over :data:" "`AnyStr`. ``Pattern`` can be specialised as ``Pattern[str]`` or " @@ -5085,331 +5068,331 @@ msgid "" "``Match[bytes]``." msgstr "" -#: library/typing.rst:3739 +#: library/typing.rst:3734 msgid "" "Classes ``Pattern`` and ``Match`` from :mod:`re` now support ``[]``. See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3745 +#: library/typing.rst:3740 msgid "Deprecated alias for :class:`str`." msgstr "" -#: library/typing.rst:3747 +#: library/typing.rst:3742 msgid "" "``Text`` is provided to supply a forward compatible path for Python 2 code: " "in Python 2, ``Text`` is an alias for ``unicode``." msgstr "" -#: library/typing.rst:3751 +#: library/typing.rst:3746 msgid "" "Use ``Text`` to indicate that a value must contain a unicode string in a " "manner that is compatible with both Python 2 and Python 3::" msgstr "" -#: library/typing.rst:3754 +#: library/typing.rst:3749 msgid "" "def add_unicode_checkmark(text: Text) -> Text:\n" " return text + u' \\u2713'" msgstr "" -#: library/typing.rst:3759 +#: library/typing.rst:3754 msgid "" "Python 2 is no longer supported, and most type checkers also no longer " "support type checking Python 2 code. Removal of the alias is not currently " "planned, but users are encouraged to use :class:`str` instead of ``Text``." msgstr "" -#: library/typing.rst:3769 +#: library/typing.rst:3764 msgid "Aliases to container ABCs in :mod:`collections.abc`" msgstr "" -#: library/typing.rst:3773 +#: library/typing.rst:3768 msgid "Deprecated alias to :class:`collections.abc.Set`." msgstr "" -#: library/typing.rst:3775 +#: library/typing.rst:3770 msgid "" ":class:`collections.abc.Set` now supports subscripting (``[]``). See :pep:" "`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3781 +#: library/typing.rst:3776 msgid "Deprecated alias to :class:`collections.abc.Collection`." msgstr "" -#: library/typing.rst:3785 +#: library/typing.rst:3780 msgid "" ":class:`collections.abc.Collection` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3791 +#: library/typing.rst:3786 msgid "Deprecated alias to :class:`collections.abc.Container`." msgstr "" -#: library/typing.rst:3793 +#: library/typing.rst:3788 msgid "" ":class:`collections.abc.Container` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3799 +#: library/typing.rst:3794 msgid "Deprecated alias to :class:`collections.abc.ItemsView`." msgstr "" -#: library/typing.rst:3801 +#: library/typing.rst:3796 msgid "" ":class:`collections.abc.ItemsView` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3807 +#: library/typing.rst:3802 msgid "Deprecated alias to :class:`collections.abc.KeysView`." msgstr "" -#: library/typing.rst:3809 +#: library/typing.rst:3804 msgid "" ":class:`collections.abc.KeysView` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3815 +#: library/typing.rst:3810 msgid "Deprecated alias to :class:`collections.abc.Mapping`." msgstr "" -#: library/typing.rst:3817 +#: library/typing.rst:3812 msgid "" ":class:`collections.abc.Mapping` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3823 +#: library/typing.rst:3818 msgid "Deprecated alias to :class:`collections.abc.MappingView`." msgstr "" -#: library/typing.rst:3825 +#: library/typing.rst:3820 msgid "" ":class:`collections.abc.MappingView` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3831 +#: library/typing.rst:3826 msgid "Deprecated alias to :class:`collections.abc.MutableMapping`." msgstr "" -#: library/typing.rst:3833 +#: library/typing.rst:3828 msgid "" ":class:`collections.abc.MutableMapping` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3840 +#: library/typing.rst:3835 msgid "Deprecated alias to :class:`collections.abc.MutableSequence`." msgstr "" -#: library/typing.rst:3842 +#: library/typing.rst:3837 msgid "" ":class:`collections.abc.MutableSequence` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3849 +#: library/typing.rst:3844 msgid "Deprecated alias to :class:`collections.abc.MutableSet`." msgstr "" -#: library/typing.rst:3851 +#: library/typing.rst:3846 msgid "" ":class:`collections.abc.MutableSet` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3857 +#: library/typing.rst:3852 msgid "Deprecated alias to :class:`collections.abc.Sequence`." msgstr "" -#: library/typing.rst:3859 +#: library/typing.rst:3854 msgid "" ":class:`collections.abc.Sequence` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3865 +#: library/typing.rst:3860 msgid "Deprecated alias to :class:`collections.abc.ValuesView`." msgstr "" -#: library/typing.rst:3867 +#: library/typing.rst:3862 msgid "" ":class:`collections.abc.ValuesView` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3874 +#: library/typing.rst:3869 msgid "Aliases to asynchronous ABCs in :mod:`collections.abc`" msgstr "" -#: library/typing.rst:3878 +#: library/typing.rst:3873 msgid "Deprecated alias to :class:`collections.abc.Coroutine`." msgstr "" -#: library/typing.rst:3880 +#: library/typing.rst:3875 msgid "" "See :ref:`annotating-generators-and-coroutines` for details on using :class:" "`collections.abc.Coroutine` and ``typing.Coroutine`` in type annotations." msgstr "" -#: library/typing.rst:3886 +#: library/typing.rst:3881 msgid "" ":class:`collections.abc.Coroutine` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3892 +#: library/typing.rst:3887 msgid "Deprecated alias to :class:`collections.abc.AsyncGenerator`." msgstr "" -#: library/typing.rst:3894 +#: library/typing.rst:3889 msgid "" "See :ref:`annotating-generators-and-coroutines` for details on using :class:" "`collections.abc.AsyncGenerator` and ``typing.AsyncGenerator`` in type " "annotations." msgstr "" -#: library/typing.rst:3900 +#: library/typing.rst:3895 msgid "" ":class:`collections.abc.AsyncGenerator` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3905 +#: library/typing.rst:3900 msgid "The ``SendType`` parameter now has a default." msgstr "" -#: library/typing.rst:3910 +#: library/typing.rst:3905 msgid "Deprecated alias to :class:`collections.abc.AsyncIterable`." msgstr "" -#: library/typing.rst:3914 +#: library/typing.rst:3909 msgid "" ":class:`collections.abc.AsyncIterable` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3920 +#: library/typing.rst:3915 msgid "Deprecated alias to :class:`collections.abc.AsyncIterator`." msgstr "" -#: library/typing.rst:3924 +#: library/typing.rst:3919 msgid "" ":class:`collections.abc.AsyncIterator` now supports subscripting (``[]``). " "See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3930 +#: library/typing.rst:3925 msgid "Deprecated alias to :class:`collections.abc.Awaitable`." msgstr "" -#: library/typing.rst:3934 +#: library/typing.rst:3929 msgid "" ":class:`collections.abc.Awaitable` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3941 +#: library/typing.rst:3936 msgid "Aliases to other ABCs in :mod:`collections.abc`" msgstr "" -#: library/typing.rst:3945 +#: library/typing.rst:3940 msgid "Deprecated alias to :class:`collections.abc.Iterable`." msgstr "" -#: library/typing.rst:3947 +#: library/typing.rst:3942 msgid "" ":class:`collections.abc.Iterable` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3953 +#: library/typing.rst:3948 msgid "Deprecated alias to :class:`collections.abc.Iterator`." msgstr "" -#: library/typing.rst:3955 +#: library/typing.rst:3950 msgid "" ":class:`collections.abc.Iterator` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3961 +#: library/typing.rst:3956 msgid "Deprecated alias to :class:`collections.abc.Callable`." msgstr "" -#: library/typing.rst:3963 +#: library/typing.rst:3958 msgid "" "See :ref:`annotating-callables` for details on how to use :class:" "`collections.abc.Callable` and ``typing.Callable`` in type annotations." msgstr "" -#: library/typing.rst:3966 +#: library/typing.rst:3961 msgid "" ":class:`collections.abc.Callable` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3976 +#: library/typing.rst:3971 msgid "Deprecated alias to :class:`collections.abc.Generator`." msgstr "" -#: library/typing.rst:3978 +#: library/typing.rst:3973 msgid "" "See :ref:`annotating-generators-and-coroutines` for details on using :class:" "`collections.abc.Generator` and ``typing.Generator`` in type annotations." msgstr "" -#: library/typing.rst:3982 +#: library/typing.rst:3977 msgid "" ":class:`collections.abc.Generator` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:3986 +#: library/typing.rst:3981 msgid "Default values for the send and return types were added." msgstr "" -#: library/typing.rst:3991 +#: library/typing.rst:3986 msgid "Deprecated alias to :class:`collections.abc.Hashable`." msgstr "" -#: library/typing.rst:3993 +#: library/typing.rst:3988 msgid "Use :class:`collections.abc.Hashable` directly instead." msgstr "" -#: library/typing.rst:3998 +#: library/typing.rst:3993 msgid "Deprecated alias to :class:`collections.abc.Reversible`." msgstr "" -#: library/typing.rst:4000 +#: library/typing.rst:3995 msgid "" ":class:`collections.abc.Reversible` now supports subscripting (``[]``). See :" "pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:4006 +#: library/typing.rst:4001 msgid "Deprecated alias to :class:`collections.abc.Sized`." msgstr "" -#: library/typing.rst:4008 +#: library/typing.rst:4003 msgid "Use :class:`collections.abc.Sized` directly instead." msgstr "" -#: library/typing.rst:4014 +#: library/typing.rst:4009 msgid "Aliases to :mod:`contextlib` ABCs" msgstr "" -#: library/typing.rst:4018 +#: library/typing.rst:4013 msgid "Deprecated alias to :class:`contextlib.AbstractContextManager`." msgstr "" -#: library/typing.rst:4020 +#: library/typing.rst:4015 msgid "" "The first type parameter, ``T_co``, represents the type returned by the :" "meth:`~object.__enter__` method. The optional second type parameter, " @@ -5417,21 +5400,21 @@ msgid "" "returned by the :meth:`~object.__exit__` method." msgstr "" -#: library/typing.rst:4027 +#: library/typing.rst:4022 msgid "" ":class:`contextlib.AbstractContextManager` now supports subscripting " "(``[]``). See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:4032 +#: library/typing.rst:4027 msgid "Added the optional second type parameter, ``ExitT_co``." msgstr "" -#: library/typing.rst:4037 +#: library/typing.rst:4032 msgid "Deprecated alias to :class:`contextlib.AbstractAsyncContextManager`." msgstr "" -#: library/typing.rst:4039 +#: library/typing.rst:4034 msgid "" "The first type parameter, ``T_co``, represents the type returned by the :" "meth:`~object.__aenter__` method. The optional second type parameter, " @@ -5439,21 +5422,21 @@ msgid "" "returned by the :meth:`~object.__aexit__` method." msgstr "" -#: library/typing.rst:4046 +#: library/typing.rst:4041 msgid "" ":class:`contextlib.AbstractAsyncContextManager` now supports subscripting " "(``[]``). See :pep:`585` and :ref:`types-genericalias`." msgstr "" -#: library/typing.rst:4051 +#: library/typing.rst:4046 msgid "Added the optional second type parameter, ``AExitT_co``." msgstr "" -#: library/typing.rst:4055 +#: library/typing.rst:4050 msgid "Deprecation Timeline of Major Features" msgstr "" -#: library/typing.rst:4057 +#: library/typing.rst:4052 msgid "" "Certain features in ``typing`` are deprecated and may be removed in a future " "version of Python. The following table summarizes major deprecations for " @@ -5461,98 +5444,98 @@ msgid "" "listed." msgstr "" -#: library/typing.rst:4064 +#: library/typing.rst:4059 msgid "Feature" msgstr "" -#: library/typing.rst:4065 +#: library/typing.rst:4060 msgid "Deprecated in" msgstr "" -#: library/typing.rst:4066 +#: library/typing.rst:4061 msgid "Projected removal" msgstr "" -#: library/typing.rst:4067 +#: library/typing.rst:4062 msgid "PEP/issue" msgstr "" -#: library/typing.rst:4068 +#: library/typing.rst:4063 msgid "``typing`` versions of standard collections" msgstr "" -#: library/typing.rst:4069 +#: library/typing.rst:4064 msgid "3.9" msgstr "" -#: library/typing.rst:4070 +#: library/typing.rst:4065 msgid "Undecided (see :ref:`deprecated-aliases` for more information)" msgstr "" -#: library/typing.rst:4071 +#: library/typing.rst:4066 msgid ":pep:`585`" msgstr "" -#: library/typing.rst:4072 +#: library/typing.rst:4067 msgid ":data:`typing.Text`" msgstr "" -#: library/typing.rst:4073 +#: library/typing.rst:4068 msgid "3.11" msgstr "" -#: library/typing.rst:4078 library/typing.rst:4082 +#: library/typing.rst:4073 library/typing.rst:4077 msgid "Undecided" msgstr "" -#: library/typing.rst:4075 +#: library/typing.rst:4070 msgid ":gh:`92332`" msgstr "" -#: library/typing.rst:4076 +#: library/typing.rst:4071 msgid ":class:`typing.Hashable` and :class:`typing.Sized`" msgstr "" -#: library/typing.rst:4081 +#: library/typing.rst:4076 msgid "3.12" msgstr "" -#: library/typing.rst:4079 +#: library/typing.rst:4074 msgid ":gh:`94309`" msgstr "" -#: library/typing.rst:4080 +#: library/typing.rst:4075 msgid ":data:`typing.TypeAlias`" msgstr "" -#: library/typing.rst:4083 +#: library/typing.rst:4078 msgid ":pep:`695`" msgstr "" -#: library/typing.rst:4084 +#: library/typing.rst:4079 msgid ":func:`@typing.no_type_check_decorator `" msgstr "" -#: library/typing.rst:4089 +#: library/typing.rst:4084 msgid "3.13" msgstr "" -#: library/typing.rst:4086 +#: library/typing.rst:4081 msgid "3.15" msgstr "" -#: library/typing.rst:4087 +#: library/typing.rst:4082 msgid ":gh:`106309`" msgstr "" -#: library/typing.rst:4088 +#: library/typing.rst:4083 msgid ":data:`typing.AnyStr`" msgstr "" -#: library/typing.rst:4090 +#: library/typing.rst:4085 msgid "3.18" msgstr "" -#: library/typing.rst:4091 +#: library/typing.rst:4086 msgid ":gh:`105578`" msgstr "" diff --git a/library/unicodedata.po b/library/unicodedata.po index b1afce6b..651d81e2 100644 --- a/library/unicodedata.po +++ b/library/unicodedata.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/unittest.mock-examples.po b/library/unittest.mock-examples.po index bce5e00a..bbbb18d1 100644 --- a/library/unittest.mock-examples.po +++ b/library/unittest.mock-examples.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/unittest.mock.po b/library/unittest.mock.po index b066090d..5d0f0329 100644 --- a/library/unittest.mock.po +++ b/library/unittest.mock.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2768,9 +2768,9 @@ msgstr "" #: library/unittest.mock.rst:2655 msgid "" -">>> mock.has_data()\n" +">>> mock.header_items()\n" "\n" -">>> mock.has_data.assret_called_with() # Intentional typo!" +">>> mock.header_items.assret_called_with() # Intentional typo!" msgstr "" #: library/unittest.mock.rst:2661 diff --git a/library/unittest.po b/library/unittest.po index 7016a4e1..32900ad1 100644 --- a/library/unittest.po +++ b/library/unittest.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -197,7 +197,7 @@ msgstr "" #: library/unittest.rst:112 msgid "" -"A testcase is created by subclassing :class:`unittest.TestCase`. The three " +"A test case is created by subclassing :class:`unittest.TestCase`. The three " "individual tests are defined with methods whose names start with the letters " "``test``. This naming convention informs the test runner about which " "methods represent tests." diff --git a/library/unix.po b/library/unix.po index 229e9d94..4fbb552a 100644 --- a/library/unix.po +++ b/library/unix.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/urllib.error.po b/library/urllib.error.po index 88502107..00a9d40e 100644 --- a/library/urllib.error.po +++ b/library/urllib.error.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/urllib.parse.po b/library/urllib.parse.po index 7c4ba8d1..dda7128c 100644 --- a/library/urllib.parse.po +++ b/library/urllib.parse.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/urllib.po b/library/urllib.po index 7424f1fd..bf2d2a85 100644 --- a/library/urllib.po +++ b/library/urllib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/urllib.request.po b/library/urllib.request.po index 84d0e702..c8ec905d 100644 --- a/library/urllib.request.po +++ b/library/urllib.request.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1283,7 +1283,7 @@ msgstr "" #: library/urllib.request.rst:1123 msgid "" "Send an HTTP request, which can be either GET or POST, depending on ``req." -"has_data()``." +"data``." msgstr "" #: library/urllib.request.rst:1130 @@ -1293,7 +1293,7 @@ msgstr "" #: library/urllib.request.rst:1135 msgid "" "Send an HTTPS request, which can be either GET or POST, depending on ``req." -"has_data()``." +"data``." msgstr "" #: library/urllib.request.rst:1142 diff --git a/library/urllib.robotparser.po b/library/urllib.robotparser.po index 7f8f5f23..46797a25 100644 --- a/library/urllib.robotparser.po +++ b/library/urllib.robotparser.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/uu.po b/library/uu.po index 03e0cf99..171543e9 100644 --- a/library/uu.po +++ b/library/uu.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/uuid.po b/library/uuid.po index 0212d790..55df7e68 100644 --- a/library/uuid.po +++ b/library/uuid.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -302,117 +302,124 @@ msgid "" "arguments are substituted for a pseudo-random integer of appropriate size." msgstr "" -#: library/uuid.rst:263 +#: library/uuid.rst:260 +msgid "" +"By default, *a*, *b* and *c* are not generated by a cryptographically secure " +"pseudo-random number generator (CSPRNG). Use :func:`uuid4` when a UUID needs " +"to be used in a security-sensitive context." +msgstr "" + +#: library/uuid.rst:267 msgid "" "The :mod:`uuid` module defines the following namespace identifiers for use " "with :func:`uuid3` or :func:`uuid5`." msgstr "" -#: library/uuid.rst:269 +#: library/uuid.rst:273 msgid "" "When this namespace is specified, the *name* string is a fully qualified " "domain name." msgstr "" -#: library/uuid.rst:275 +#: library/uuid.rst:279 msgid "When this namespace is specified, the *name* string is a URL." msgstr "" -#: library/uuid.rst:280 +#: library/uuid.rst:284 msgid "When this namespace is specified, the *name* string is an ISO OID." msgstr "" -#: library/uuid.rst:285 +#: library/uuid.rst:289 msgid "" "When this namespace is specified, the *name* string is an X.500 DN in DER or " "a text output format." msgstr "" -#: library/uuid.rst:288 +#: library/uuid.rst:292 msgid "" "The :mod:`uuid` module defines the following constants for the possible " "values of the :attr:`~UUID.variant` attribute:" msgstr "" -#: library/uuid.rst:294 +#: library/uuid.rst:298 msgid "Reserved for NCS compatibility." msgstr "" -#: library/uuid.rst:299 +#: library/uuid.rst:303 msgid "" "Specifies the UUID layout given in :rfc:`4122`. This constant is kept for " "backward compatibility even though :rfc:`4122` has been superseded by :rfc:" "`9562`." msgstr "" -#: library/uuid.rst:306 +#: library/uuid.rst:310 msgid "Reserved for Microsoft compatibility." msgstr "" -#: library/uuid.rst:311 +#: library/uuid.rst:315 msgid "Reserved for future definition." msgstr "" -#: library/uuid.rst:314 +#: library/uuid.rst:318 msgid "The :mod:`uuid` module defines the special Nil and Max UUID values:" msgstr "" -#: library/uuid.rst:319 +#: library/uuid.rst:323 msgid "" "A special form of UUID that is specified to have all 128 bits set to zero " "according to :rfc:`RFC 9562, §5.9 <9562#section-5.9>`." msgstr "" -#: library/uuid.rst:327 +#: library/uuid.rst:331 msgid "" "A special form of UUID that is specified to have all 128 bits set to one " "according to :rfc:`RFC 9562, §5.10 <9562#section-5.10>`." msgstr "" -#: library/uuid.rst:335 +#: library/uuid.rst:339 msgid ":rfc:`9562` - A Universally Unique IDentifier (UUID) URN Namespace" msgstr "" -#: library/uuid.rst:336 +#: library/uuid.rst:340 msgid "" "This specification defines a Uniform Resource Name namespace for UUIDs, the " "internal format of UUIDs, and methods of generating UUIDs." msgstr "" -#: library/uuid.rst:343 +#: library/uuid.rst:347 msgid "Command-Line Usage" msgstr "" -#: library/uuid.rst:347 +#: library/uuid.rst:351 msgid "" "The :mod:`uuid` module can be executed as a script from the command line." msgstr "" -#: library/uuid.rst:349 +#: library/uuid.rst:353 msgid "" "python -m uuid [-h] [-u {uuid1,uuid3,uuid4,uuid5,uuid6,uuid7,uuid8}] [-n " "NAMESPACE] [-N NAME]" msgstr "" -#: library/uuid.rst:353 +#: library/uuid.rst:357 msgid "The following options are accepted:" msgstr "" -#: library/uuid.rst:359 +#: library/uuid.rst:363 msgid "Show the help message and exit." msgstr "" -#: library/uuid.rst:364 +#: library/uuid.rst:368 msgid "" "Specify the function name to use to generate the uuid. By default :func:" "`uuid4` is used." msgstr "" -#: library/uuid.rst:367 +#: library/uuid.rst:371 msgid "Allow generating UUID versions 6, 7 and 8." msgstr "" -#: library/uuid.rst:373 +#: library/uuid.rst:377 msgid "" "The namespace is a ``UUID``, or ``@ns`` where ``ns`` is a well-known " "predefined UUID addressed by namespace name. Such as ``@dns``, ``@url``, " @@ -420,25 +427,25 @@ msgid "" "functions." msgstr "" -#: library/uuid.rst:380 +#: library/uuid.rst:384 msgid "" "The name used as part of generating the uuid. Only required for :func:" "`uuid3` / :func:`uuid5` functions." msgstr "" -#: library/uuid.rst:386 +#: library/uuid.rst:390 msgid "Generate *num* fresh UUIDs." msgstr "" -#: library/uuid.rst:394 +#: library/uuid.rst:398 msgid "Example" msgstr "" -#: library/uuid.rst:396 +#: library/uuid.rst:400 msgid "Here are some examples of typical usage of the :mod:`uuid` module::" msgstr "" -#: library/uuid.rst:398 +#: library/uuid.rst:402 msgid "" ">>> import uuid\n" "\n" @@ -491,17 +498,17 @@ msgid "" "datetime.datetime(...)" msgstr "" -#: library/uuid.rst:452 +#: library/uuid.rst:456 msgid "Command-Line Example" msgstr "" -#: library/uuid.rst:454 +#: library/uuid.rst:458 msgid "" "Here are some examples of typical usage of the :mod:`uuid` command-line " "interface:" msgstr "" -#: library/uuid.rst:456 +#: library/uuid.rst:460 msgid "" "# generate a random UUID - by default uuid4() is used\n" "$ python -m uuid\n" diff --git a/library/venv.po b/library/venv.po index bc4e51ff..d8a379b3 100644 --- a/library/venv.po +++ b/library/venv.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/warnings.po b/library/warnings.po index f73d40b6..72cc30b5 100644 --- a/library/warnings.po +++ b/library/warnings.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/wave.po b/library/wave.po index 2fbda643..905d1cc3 100644 --- a/library/wave.po +++ b/library/wave.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/weakref.po b/library/weakref.po index a1df2a90..71d30764 100644 --- a/library/weakref.po +++ b/library/weakref.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/webbrowser.po b/library/webbrowser.po index 2bfc00b2..f955683a 100644 --- a/library/webbrowser.po +++ b/library/webbrowser.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/windows.po b/library/windows.po index df6ebed6..d71252a0 100644 --- a/library/windows.po +++ b/library/windows.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/winreg.po b/library/winreg.po index 712f7b38..68769b6b 100644 --- a/library/winreg.po +++ b/library/winreg.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/winsound.po b/library/winsound.po index 1583ce05..0c60f63c 100644 --- a/library/winsound.po +++ b/library/winsound.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/wsgiref.po b/library/wsgiref.po index 3f17709e..41a927de 100644 --- a/library/wsgiref.po +++ b/library/wsgiref.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xdrlib.po b/library/xdrlib.po index c23b6a69..d3ec74e5 100644 --- a/library/xdrlib.po +++ b/library/xdrlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.dom.minidom.po b/library/xml.dom.minidom.po index de1b0d0d..b3641761 100644 --- a/library/xml.dom.minidom.po +++ b/library/xml.dom.minidom.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.dom.po b/library/xml.dom.po index 5edfe984..77a1767c 100644 --- a/library/xml.dom.po +++ b/library/xml.dom.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.dom.pulldom.po b/library/xml.dom.pulldom.po index 8a096d78..5bd03c70 100644 --- a/library/xml.dom.pulldom.po +++ b/library/xml.dom.pulldom.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.etree.elementtree.po b/library/xml.etree.elementtree.po index 0f39266e..4c79d0a7 100644 --- a/library/xml.etree.elementtree.po +++ b/library/xml.etree.elementtree.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.po b/library/xml.po index 84c578bf..dbf4056e 100644 --- a/library/xml.po +++ b/library/xml.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.sax.handler.po b/library/xml.sax.handler.po index 7c6012f8..96e31662 100644 --- a/library/xml.sax.handler.po +++ b/library/xml.sax.handler.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.sax.po b/library/xml.sax.po index 3c93e9c7..5af4a483 100644 --- a/library/xml.sax.po +++ b/library/xml.sax.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.sax.reader.po b/library/xml.sax.reader.po index 47ae0872..3bcac94f 100644 --- a/library/xml.sax.reader.po +++ b/library/xml.sax.reader.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xml.sax.utils.po b/library/xml.sax.utils.po index f509e350..ea8d8026 100644 --- a/library/xml.sax.utils.po +++ b/library/xml.sax.utils.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xmlrpc.client.po b/library/xmlrpc.client.po index bb9aa322..73fb5d94 100644 --- a/library/xmlrpc.client.po +++ b/library/xmlrpc.client.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xmlrpc.po b/library/xmlrpc.po index 3b7012b8..eb1fd8f5 100644 --- a/library/xmlrpc.po +++ b/library/xmlrpc.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/xmlrpc.server.po b/library/xmlrpc.server.po index 27b35325..3dbe3c83 100644 --- a/library/xmlrpc.server.po +++ b/library/xmlrpc.server.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/zipapp.po b/library/zipapp.po index 7763fd85..0226c81c 100644 --- a/library/zipapp.po +++ b/library/zipapp.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/zipfile.po b/library/zipfile.po index df96862e..cc310f24 100644 --- a/library/zipfile.po +++ b/library/zipfile.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/zipimport.po b/library/zipimport.po index 574187d1..8ab00ae6 100644 --- a/library/zipimport.po +++ b/library/zipimport.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/zlib.po b/library/zlib.po index 014c6e89..2e80d05c 100644 --- a/library/zlib.po +++ b/library/zlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/library/zoneinfo.po b/library/zoneinfo.po index d09882f0..1a27b3ec 100644 --- a/library/zoneinfo.po +++ b/library/zoneinfo.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/license.po b/license.po index e31bfbba..a9f7f59a 100644 --- a/license.po +++ b/license.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-14 22:38+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/reference/compound_stmts.po b/reference/compound_stmts.po index e5a5e5a2..df7ed20f 100644 --- a/reference/compound_stmts.po +++ b/reference/compound_stmts.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -144,13 +144,13 @@ msgstr "" #: reference/compound_stmts.rst:160 msgid "" -"The ``starred_list`` expression is evaluated once; it should yield an :term:" -"`iterable` object. An :term:`iterator` is created for that iterable. The " -"first item provided by the iterator is then assigned to the target list " -"using the standard rules for assignments (see :ref:`assignment`), and the " -"suite is executed. This repeats for each item provided by the iterator. " -"When the iterator is exhausted, the suite in the :keyword:`!else` clause, if " -"present, is executed, and the loop terminates." +"The :token:`~python-grammar:starred_expression_list` expression is evaluated " +"once; it should yield an :term:`iterable` object. An :term:`iterator` is " +"created for that iterable. The first item provided by the iterator is then " +"assigned to the target list using the standard rules for assignments (see :" +"ref:`assignment`), and the suite is executed. This repeats for each item " +"provided by the iterator. When the iterator is exhausted, the suite in the :" +"keyword:`!else` clause, if present, is executed, and the loop terminates." msgstr "" #: reference/compound_stmts.rst:173 @@ -1474,7 +1474,7 @@ msgstr "" msgid ":class:`int`" msgstr "" -#: reference/compound_stmts.rst:1167 reference/compound_stmts.rst:1919 +#: reference/compound_stmts.rst:1167 reference/compound_stmts.rst:1925 msgid ":class:`list`" msgstr "" @@ -1486,7 +1486,7 @@ msgstr "" msgid ":class:`str`" msgstr "" -#: reference/compound_stmts.rst:1170 reference/compound_stmts.rst:1922 +#: reference/compound_stmts.rst:1170 reference/compound_stmts.rst:1928 msgid ":class:`tuple`" msgstr "" @@ -2414,7 +2414,7 @@ msgstr "" #: reference/compound_stmts.rst:1888 msgid "" -"By default, annotations are lazily evaluated in a :ref:`annotation scope " +"By default, annotations are lazily evaluated in an :ref:`annotation scope " "`. This means that they are not evaluated when the code " "containing the annotation is evaluated. Instead, the interpreter saves " "information that can be used to evaluate the annotation later if requested. " @@ -2435,97 +2435,106 @@ msgid "" "{'param': 'annotation'}" msgstr "" -#: reference/compound_stmts.rst:1903 +#: reference/compound_stmts.rst:1901 +msgid "" +"This future statement will be deprecated and removed in a future version of " +"Python, but not before Python 3.13 reaches its end of life (see :pep:`749`). " +"When it is used, introspection tools like :func:`annotationlib." +"get_annotations` and :func:`typing.get_type_hints` are less likely to be " +"able to resolve annotations at runtime." +msgstr "" + +#: reference/compound_stmts.rst:1909 msgid "Footnotes" msgstr "" -#: reference/compound_stmts.rst:1904 +#: reference/compound_stmts.rst:1910 msgid "" "The exception is propagated to the invocation stack unless there is a :" "keyword:`finally` clause which happens to raise another exception. That new " "exception causes the old one to be lost." msgstr "" -#: reference/compound_stmts.rst:1908 +#: reference/compound_stmts.rst:1914 msgid "In pattern matching, a sequence is defined as one of the following:" msgstr "" -#: reference/compound_stmts.rst:1910 +#: reference/compound_stmts.rst:1916 msgid "a class that inherits from :class:`collections.abc.Sequence`" msgstr "" -#: reference/compound_stmts.rst:1911 +#: reference/compound_stmts.rst:1917 msgid "" "a Python class that has been registered as :class:`collections.abc.Sequence`" msgstr "" -#: reference/compound_stmts.rst:1912 +#: reference/compound_stmts.rst:1918 msgid "" "a builtin class that has its (CPython) :c:macro:`Py_TPFLAGS_SEQUENCE` bit set" msgstr "" -#: reference/compound_stmts.rst:1913 reference/compound_stmts.rst:1932 +#: reference/compound_stmts.rst:1919 reference/compound_stmts.rst:1938 msgid "a class that inherits from any of the above" msgstr "" -#: reference/compound_stmts.rst:1915 +#: reference/compound_stmts.rst:1921 msgid "The following standard library classes are sequences:" msgstr "" -#: reference/compound_stmts.rst:1917 +#: reference/compound_stmts.rst:1923 msgid ":class:`array.array`" msgstr "" -#: reference/compound_stmts.rst:1918 +#: reference/compound_stmts.rst:1924 msgid ":class:`collections.deque`" msgstr "" -#: reference/compound_stmts.rst:1920 +#: reference/compound_stmts.rst:1926 msgid ":class:`memoryview`" msgstr "" -#: reference/compound_stmts.rst:1921 +#: reference/compound_stmts.rst:1927 msgid ":class:`range`" msgstr "" -#: reference/compound_stmts.rst:1924 +#: reference/compound_stmts.rst:1930 msgid "" "Subject values of type ``str``, ``bytes``, and ``bytearray`` do not match " "sequence patterns." msgstr "" -#: reference/compound_stmts.rst:1927 +#: reference/compound_stmts.rst:1933 msgid "In pattern matching, a mapping is defined as one of the following:" msgstr "" -#: reference/compound_stmts.rst:1929 +#: reference/compound_stmts.rst:1935 msgid "a class that inherits from :class:`collections.abc.Mapping`" msgstr "" -#: reference/compound_stmts.rst:1930 +#: reference/compound_stmts.rst:1936 msgid "" "a Python class that has been registered as :class:`collections.abc.Mapping`" msgstr "" -#: reference/compound_stmts.rst:1931 +#: reference/compound_stmts.rst:1937 msgid "" "a builtin class that has its (CPython) :c:macro:`Py_TPFLAGS_MAPPING` bit set" msgstr "" -#: reference/compound_stmts.rst:1934 +#: reference/compound_stmts.rst:1940 msgid "" "The standard library classes :class:`dict` and :class:`types." "MappingProxyType` are mappings." msgstr "" -#: reference/compound_stmts.rst:1937 +#: reference/compound_stmts.rst:1943 msgid "" "A string literal appearing as the first statement in the function body is " "transformed into the function's :attr:`~function.__doc__` attribute and " "therefore the function's :term:`docstring`." msgstr "" -#: reference/compound_stmts.rst:1941 +#: reference/compound_stmts.rst:1947 msgid "" "A string literal appearing as the first statement in the class body is " "transformed into the namespace's :attr:`~type.__doc__` item and therefore " diff --git a/reference/datamodel.po b/reference/datamodel.po index 0a338f9c..8e3a423e 100644 --- a/reference/datamodel.po +++ b/reference/datamodel.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -313,11 +313,11 @@ msgid "" "``\"True\"`` are returned, respectively." msgstr "" -#: reference/datamodel.rst:266 +#: reference/datamodel.rst:268 msgid ":class:`numbers.Real` (:class:`float`)" msgstr "" -#: reference/datamodel.rst:274 +#: reference/datamodel.rst:276 msgid "" "These represent machine-level double precision floating-point numbers. You " "are at the mercy of the underlying machine architecture (and C or Java " @@ -328,11 +328,11 @@ msgid "" "complicate the language with two kinds of floating-point numbers." msgstr "" -#: reference/datamodel.rst:284 +#: reference/datamodel.rst:286 msgid ":class:`numbers.Complex` (:class:`complex`)" msgstr "" -#: reference/datamodel.rst:290 +#: reference/datamodel.rst:292 msgid "" "These represent complex numbers as a pair of machine-level double precision " "floating-point numbers. The same caveats apply as for floating-point " @@ -340,11 +340,11 @@ msgid "" "retrieved through the read-only attributes ``z.real`` and ``z.imag``." msgstr "" -#: reference/datamodel.rst:297 +#: reference/datamodel.rst:299 msgid "Sequences" msgstr "" -#: reference/datamodel.rst:306 +#: reference/datamodel.rst:308 msgid "" "These represent finite ordered sets indexed by non-negative numbers. The " "built-in function :func:`len` returns the number of items of a sequence. " @@ -355,7 +355,7 @@ msgid "" "second to last item of sequence a with length ``n``." msgstr "" -#: reference/datamodel.rst:316 +#: reference/datamodel.rst:318 msgid "" "Sequences also support slicing: ``a[i:j]`` selects all items with index *k* " "such that *i* ``<=`` *k* ``<`` *j*. When used as an expression, a slice is " @@ -363,22 +363,22 @@ msgid "" "applies to negative slice positions." msgstr "" -#: reference/datamodel.rst:321 +#: reference/datamodel.rst:323 msgid "" "Some sequences also support \"extended slicing\" with a third \"step\" " "parameter: ``a[i:j:k]`` selects all items of *a* with index *x* where ``x = " "i + n*k``, *n* ``>=`` ``0`` and *i* ``<=`` *x* ``<`` *j*." msgstr "" -#: reference/datamodel.rst:325 +#: reference/datamodel.rst:327 msgid "Sequences are distinguished according to their mutability:" msgstr "" -#: reference/datamodel.rst:329 +#: reference/datamodel.rst:331 msgid "Immutable sequences" msgstr "" -#: reference/datamodel.rst:335 +#: reference/datamodel.rst:337 msgid "" "An object of an immutable sequence type cannot change once it is created. " "(If the object contains references to other objects, these other objects may " @@ -386,15 +386,15 @@ msgid "" "referenced by an immutable object cannot change.)" msgstr "" -#: reference/datamodel.rst:340 +#: reference/datamodel.rst:342 msgid "The following types are immutable sequences:" msgstr "" -#: reference/datamodel.rst:345 +#: reference/datamodel.rst:347 msgid "Strings" msgstr "" -#: reference/datamodel.rst:353 +#: reference/datamodel.rst:355 msgid "" "A string is a sequence of values that represent Unicode code points. All the " "code points in the range ``U+0000 - U+10FFFF`` can be represented in a " @@ -408,11 +408,11 @@ msgid "" "to achieve the opposite." msgstr "" -#: reference/datamodel.rst:365 +#: reference/datamodel.rst:367 msgid "Tuples" msgstr "" -#: reference/datamodel.rst:371 +#: reference/datamodel.rst:373 msgid "" "The items of a tuple are arbitrary Python objects. Tuples of two or more " "items are formed by comma-separated lists of expressions. A tuple of one " @@ -422,11 +422,11 @@ msgid "" "empty pair of parentheses." msgstr "" -#: reference/datamodel.rst:378 +#: reference/datamodel.rst:380 msgid "Bytes" msgstr "" -#: reference/datamodel.rst:381 +#: reference/datamodel.rst:383 msgid "" "A bytes object is an immutable array. The items are 8-bit bytes, " "represented by integers in the range 0 <= x < 256. Bytes literals (like " @@ -435,43 +435,43 @@ msgid "" "`~bytes.decode` method." msgstr "" -#: reference/datamodel.rst:389 +#: reference/datamodel.rst:391 msgid "Mutable sequences" msgstr "" -#: reference/datamodel.rst:398 +#: reference/datamodel.rst:400 msgid "" "Mutable sequences can be changed after they are created. The subscription " "and slicing notations can be used as the target of assignment and :keyword:" "`del` (delete) statements." msgstr "" -#: reference/datamodel.rst:406 +#: reference/datamodel.rst:408 msgid "" "The :mod:`collections` and :mod:`array` module provide additional examples " "of mutable sequence types." msgstr "" -#: reference/datamodel.rst:409 +#: reference/datamodel.rst:411 msgid "There are currently two intrinsic mutable sequence types:" msgstr "" -#: reference/datamodel.rst:411 +#: reference/datamodel.rst:413 msgid "Lists" msgstr "" -#: reference/datamodel.rst:414 +#: reference/datamodel.rst:416 msgid "" "The items of a list are arbitrary Python objects. Lists are formed by " "placing a comma-separated list of expressions in square brackets. (Note that " "there are no special cases needed to form lists of length 0 or 1.)" msgstr "" -#: reference/datamodel.rst:418 +#: reference/datamodel.rst:420 msgid "Byte Arrays" msgstr "" -#: reference/datamodel.rst:421 +#: reference/datamodel.rst:423 msgid "" "A bytearray object is a mutable array. They are created by the built-in :" "func:`bytearray` constructor. Aside from being mutable (and hence " @@ -479,11 +479,11 @@ msgid "" "functionality as immutable :class:`bytes` objects." msgstr "" -#: reference/datamodel.rst:428 +#: reference/datamodel.rst:430 msgid "Set types" msgstr "" -#: reference/datamodel.rst:434 +#: reference/datamodel.rst:436 msgid "" "These represent unordered, finite sets of unique, immutable objects. As " "such, they cannot be indexed by any subscript. However, they can be iterated " @@ -493,7 +493,7 @@ msgid "" "union, difference, and symmetric difference." msgstr "" -#: reference/datamodel.rst:441 +#: reference/datamodel.rst:443 msgid "" "For set elements, the same immutability rules apply as for dictionary keys. " "Note that numeric types obey the normal rules for numeric comparison: if two " @@ -501,37 +501,37 @@ msgid "" "contained in a set." msgstr "" -#: reference/datamodel.rst:446 +#: reference/datamodel.rst:448 msgid "There are currently two intrinsic set types:" msgstr "" -#: reference/datamodel.rst:449 +#: reference/datamodel.rst:451 msgid "Sets" msgstr "" -#: reference/datamodel.rst:452 +#: reference/datamodel.rst:454 msgid "" "These represent a mutable set. They are created by the built-in :func:`set` " "constructor and can be modified afterwards by several methods, such as :meth:" "`~set.add`." msgstr "" -#: reference/datamodel.rst:457 +#: reference/datamodel.rst:459 msgid "Frozen sets" msgstr "" -#: reference/datamodel.rst:460 +#: reference/datamodel.rst:462 msgid "" "These represent an immutable set. They are created by the built-in :func:" "`frozenset` constructor. As a frozenset is immutable and :term:`hashable`, " "it can be used again as an element of another set, or as a dictionary key." msgstr "" -#: reference/datamodel.rst:467 +#: reference/datamodel.rst:469 msgid "Mappings" msgstr "" -#: reference/datamodel.rst:474 +#: reference/datamodel.rst:476 msgid "" "These represent finite sets of objects indexed by arbitrary index sets. The " "subscript notation ``a[k]`` selects the item indexed by ``k`` from the " @@ -540,15 +540,15 @@ msgid "" "returns the number of items in a mapping." msgstr "" -#: reference/datamodel.rst:480 +#: reference/datamodel.rst:482 msgid "There is currently a single intrinsic mapping type:" msgstr "" -#: reference/datamodel.rst:484 +#: reference/datamodel.rst:486 msgid "Dictionaries" msgstr "" -#: reference/datamodel.rst:488 +#: reference/datamodel.rst:490 msgid "" "These represent finite sets of objects indexed by nearly arbitrary values. " "The only types of values not acceptable as keys are values containing lists " @@ -560,7 +560,7 @@ msgid "" "interchangeably to index the same dictionary entry." msgstr "" -#: reference/datamodel.rst:497 +#: reference/datamodel.rst:499 msgid "" "Dictionaries preserve insertion order, meaning that keys will be produced in " "the same order they were added sequentially over the dictionary. Replacing " @@ -568,128 +568,128 @@ msgid "" "inserting it will add it to the end instead of keeping its old place." msgstr "" -#: reference/datamodel.rst:502 +#: reference/datamodel.rst:504 msgid "" "Dictionaries are mutable; they can be created by the ``{}`` notation (see " "section :ref:`dict`)." msgstr "" -#: reference/datamodel.rst:509 +#: reference/datamodel.rst:511 msgid "" "The extension modules :mod:`dbm.ndbm` and :mod:`dbm.gnu` provide additional " "examples of mapping types, as does the :mod:`collections` module." msgstr "" -#: reference/datamodel.rst:513 +#: reference/datamodel.rst:515 msgid "" "Dictionaries did not preserve insertion order in versions of Python before " "3.6. In CPython 3.6, insertion order was preserved, but it was considered an " "implementation detail at that time rather than a language guarantee." msgstr "" -#: reference/datamodel.rst:520 +#: reference/datamodel.rst:522 msgid "Callable types" msgstr "" -#: reference/datamodel.rst:528 +#: reference/datamodel.rst:530 msgid "" "These are the types to which the function call operation (see section :ref:" "`calls`) can be applied:" msgstr "" -#: reference/datamodel.rst:535 +#: reference/datamodel.rst:537 msgid "User-defined functions" msgstr "" -#: reference/datamodel.rst:542 +#: reference/datamodel.rst:544 msgid "" "A user-defined function object is created by a function definition (see " "section :ref:`function`). It should be called with an argument list " "containing the same number of items as the function's formal parameter list." msgstr "" -#: reference/datamodel.rst:1429 reference/datamodel.rst:1629 +#: reference/datamodel.rst:1443 reference/datamodel.rst:1643 msgid "Special read-only attributes" msgstr "" -#: reference/datamodel.rst:594 reference/datamodel.rst:1196 +#: reference/datamodel.rst:596 reference/datamodel.rst:1198 msgid "Attribute" msgstr "" -#: reference/datamodel.rst:595 reference/datamodel.rst:1197 +#: reference/datamodel.rst:597 reference/datamodel.rst:1199 msgid "Meaning" msgstr "" -#: reference/datamodel.rst:562 +#: reference/datamodel.rst:564 msgid "" "A reference to the :class:`dictionary ` that holds the function's :ref:" "`global variables ` -- the global namespace of the module in which " "the function was defined." msgstr "" -#: reference/datamodel.rst:567 +#: reference/datamodel.rst:569 msgid "" "``None`` or a :class:`tuple` of cells that contain bindings for the names " "specified in the :attr:`~codeobject.co_freevars` attribute of the " "function's :attr:`code object `." msgstr "" -#: reference/datamodel.rst:571 +#: reference/datamodel.rst:573 msgid "" "A cell object has the attribute ``cell_contents``. This can be used to get " "the value of the cell, as well as set the value." msgstr "" -#: reference/datamodel.rst:1671 +#: reference/datamodel.rst:1685 msgid "Special writable attributes" msgstr "" -#: reference/datamodel.rst:589 +#: reference/datamodel.rst:591 msgid "Most of these attributes check the type of the assigned value:" msgstr "" -#: reference/datamodel.rst:598 +#: reference/datamodel.rst:600 msgid "The function's documentation string, or ``None`` if unavailable." msgstr "" -#: reference/datamodel.rst:601 +#: reference/datamodel.rst:603 msgid "" "The function's name. See also: :attr:`__name__ attributes `." msgstr "" -#: reference/datamodel.rst:605 +#: reference/datamodel.rst:607 msgid "" "The function's :term:`qualified name`. See also: :attr:`__qualname__ " "attributes `." msgstr "" -#: reference/datamodel.rst:611 +#: reference/datamodel.rst:613 msgid "" "The name of the module the function was defined in, or ``None`` if " "unavailable." msgstr "" -#: reference/datamodel.rst:615 +#: reference/datamodel.rst:617 msgid "" "A :class:`tuple` containing default :term:`parameter` values for those " "parameters that have defaults, or ``None`` if no parameters have a default " "value." msgstr "" -#: reference/datamodel.rst:620 +#: reference/datamodel.rst:622 msgid "" "The :ref:`code object ` representing the compiled function " "body." msgstr "" -#: reference/datamodel.rst:624 +#: reference/datamodel.rst:626 msgid "" "The namespace supporting arbitrary function attributes. See also: :attr:" "`__dict__ attributes `." msgstr "" -#: reference/datamodel.rst:628 +#: reference/datamodel.rst:630 msgid "" "A :class:`dictionary ` containing annotations of :term:`parameters " "`. The keys of the dictionary are the parameter names, and " @@ -697,100 +697,100 @@ msgid "" "__annotations__`." msgstr "" -#: reference/datamodel.rst:1103 reference/datamodel.rst:1235 +#: reference/datamodel.rst:1105 reference/datamodel.rst:1249 msgid "" "Annotations are now :ref:`lazily evaluated `. See :pep:" "`649`." msgstr "" -#: reference/datamodel.rst:639 +#: reference/datamodel.rst:641 msgid "" "The :term:`annotate function` for this function, or ``None`` if the function " "has no annotations. See :attr:`object.__annotate__`." msgstr "" -#: reference/datamodel.rst:645 +#: reference/datamodel.rst:647 msgid "" "A :class:`dictionary ` containing defaults for keyword-only :term:" "`parameters `." msgstr "" -#: reference/datamodel.rst:649 +#: reference/datamodel.rst:651 msgid "" "A :class:`tuple` containing the :ref:`type parameters ` of a :" "ref:`generic function `." msgstr "" -#: reference/datamodel.rst:654 +#: reference/datamodel.rst:656 msgid "" "Function objects also support getting and setting arbitrary attributes, " "which can be used, for example, to attach metadata to functions. Regular " "attribute dot-notation is used to get and set such attributes." msgstr "" -#: reference/datamodel.rst:660 +#: reference/datamodel.rst:662 msgid "" "CPython's current implementation only supports function attributes on user-" "defined functions. Function attributes on :ref:`built-in functions ` may be supported in the future." msgstr "" -#: reference/datamodel.rst:665 +#: reference/datamodel.rst:667 msgid "" "Additional information about a function's definition can be retrieved from " "its :ref:`code object ` (accessible via the :attr:`~function." "__code__` attribute)." msgstr "" -#: reference/datamodel.rst:673 +#: reference/datamodel.rst:675 msgid "Instance methods" msgstr "" -#: reference/datamodel.rst:680 +#: reference/datamodel.rst:682 msgid "" "An instance method object combines a class, a class instance and any " "callable object (normally a user-defined function)." msgstr "" -#: reference/datamodel.rst:1767 +#: reference/datamodel.rst:1781 msgid "Special read-only attributes:" msgstr "" -#: reference/datamodel.rst:695 +#: reference/datamodel.rst:697 msgid "" "Refers to the class instance object to which the method is :ref:`bound " "`" msgstr "" -#: reference/datamodel.rst:699 +#: reference/datamodel.rst:701 msgid "Refers to the original :ref:`function object `" msgstr "" -#: reference/datamodel.rst:702 +#: reference/datamodel.rst:704 msgid "" "The method's documentation (same as :attr:`method.__func__.__doc__ `). A :class:`string ` if the original function had a " "docstring, else ``None``." msgstr "" -#: reference/datamodel.rst:708 +#: reference/datamodel.rst:710 msgid "" "The name of the method (same as :attr:`method.__func__.__name__ `)" msgstr "" -#: reference/datamodel.rst:712 +#: reference/datamodel.rst:714 msgid "" "The name of the module the method was defined in, or ``None`` if unavailable." msgstr "" -#: reference/datamodel.rst:715 +#: reference/datamodel.rst:717 msgid "" "Methods also support accessing (but not setting) the arbitrary function " "attributes on the underlying :ref:`function object `." msgstr "" -#: reference/datamodel.rst:718 +#: reference/datamodel.rst:720 msgid "" "User-defined method objects may be created when getting an attribute of a " "class (perhaps via an instance of that class), if that attribute is a user-" @@ -798,7 +798,7 @@ msgid "" "`classmethod` object." msgstr "" -#: reference/datamodel.rst:725 +#: reference/datamodel.rst:727 msgid "" "When an instance method object is created by retrieving a user-defined :ref:" "`function object ` from a class via one of its " @@ -807,7 +807,7 @@ msgid "" "__func__` attribute is the original function object." msgstr "" -#: reference/datamodel.rst:731 +#: reference/datamodel.rst:733 msgid "" "When an instance method object is created by retrieving a :class:" "`classmethod` object from a class or instance, its :attr:`~method.__self__` " @@ -815,7 +815,7 @@ msgid "" "the function object underlying the class method." msgstr "" -#: reference/datamodel.rst:736 +#: reference/datamodel.rst:738 msgid "" "When an instance method object is called, the underlying function (:attr:" "`~method.__func__`) is called, inserting the class instance (:attr:`~method." @@ -825,7 +825,7 @@ msgid "" "f(x, 1)``." msgstr "" -#: reference/datamodel.rst:743 +#: reference/datamodel.rst:745 msgid "" "When an instance method object is derived from a :class:`classmethod` " "object, the \"class instance\" stored in :attr:`~method.__self__` will " @@ -834,18 +834,18 @@ msgid "" "function." msgstr "" -#: reference/datamodel.rst:748 +#: reference/datamodel.rst:750 msgid "" "It is important to note that user-defined functions which are attributes of " "a class instance are not converted to bound methods; this *only* happens " "when the function is an attribute of the class." msgstr "" -#: reference/datamodel.rst:755 +#: reference/datamodel.rst:757 msgid "Generator functions" msgstr "" -#: reference/datamodel.rst:761 +#: reference/datamodel.rst:763 msgid "" "A function or method which uses the :keyword:`yield` statement (see section :" "ref:`yield`) is called a :dfn:`generator function`. Such a function, when " @@ -858,11 +858,11 @@ msgid "" "values to be returned." msgstr "" -#: reference/datamodel.rst:773 +#: reference/datamodel.rst:775 msgid "Coroutine functions" msgstr "" -#: reference/datamodel.rst:778 +#: reference/datamodel.rst:780 msgid "" "A function or method which is defined using :keyword:`async def` is called " "a :dfn:`coroutine function`. Such a function, when called, returns a :term:" @@ -871,11 +871,11 @@ msgid "" "ref:`coroutine-objects` section." msgstr "" -#: reference/datamodel.rst:786 +#: reference/datamodel.rst:788 msgid "Asynchronous generator functions" msgstr "" -#: reference/datamodel.rst:792 +#: reference/datamodel.rst:794 msgid "" "A function or method which is defined using :keyword:`async def` and which " "uses the :keyword:`yield` statement is called a :dfn:`asynchronous generator " @@ -884,7 +884,7 @@ msgid "" "execute the body of the function." msgstr "" -#: reference/datamodel.rst:798 +#: reference/datamodel.rst:800 msgid "" "Calling the asynchronous iterator's :meth:`aiterator.__anext__ ` method will return an :term:`awaitable` which when awaited will " @@ -895,11 +895,11 @@ msgid "" "yielded." msgstr "" -#: reference/datamodel.rst:811 +#: reference/datamodel.rst:813 msgid "Built-in functions" msgstr "" -#: reference/datamodel.rst:818 +#: reference/datamodel.rst:820 msgid "" "A built-in function object is a wrapper around a C function. Examples of " "built-in functions are :func:`len` and :func:`math.sin` (:mod:`math` is a " @@ -907,32 +907,32 @@ msgid "" "determined by the C function. Special read-only attributes:" msgstr "" -#: reference/datamodel.rst:823 +#: reference/datamodel.rst:825 msgid "" ":attr:`!__doc__` is the function's documentation string, or ``None`` if " "unavailable. See :attr:`function.__doc__`." msgstr "" -#: reference/datamodel.rst:825 +#: reference/datamodel.rst:827 msgid "" ":attr:`!__name__` is the function's name. See :attr:`function.__name__`." msgstr "" -#: reference/datamodel.rst:826 +#: reference/datamodel.rst:828 msgid ":attr:`!__self__` is set to ``None`` (but see the next item)." msgstr "" -#: reference/datamodel.rst:827 +#: reference/datamodel.rst:829 msgid "" ":attr:`!__module__` is the name of the module the function was defined in or " "``None`` if unavailable. See :attr:`function.__module__`." msgstr "" -#: reference/datamodel.rst:835 +#: reference/datamodel.rst:837 msgid "Built-in methods" msgstr "" -#: reference/datamodel.rst:842 +#: reference/datamodel.rst:844 msgid "" "This is really a different disguise of a built-in function, this time " "containing an object passed to the C function as an implicit extra " @@ -943,11 +943,11 @@ msgid "" "__self__>`.)" msgstr "" -#: reference/datamodel.rst:852 +#: reference/datamodel.rst:854 msgid "Classes" msgstr "" -#: reference/datamodel.rst:854 +#: reference/datamodel.rst:856 msgid "" "Classes are callable. These objects normally act as factories for new " "instances of themselves, but variations are possible for class types that " @@ -956,21 +956,21 @@ msgid "" "initialize the new instance." msgstr "" -#: reference/datamodel.rst:862 +#: reference/datamodel.rst:864 msgid "Class Instances" msgstr "" -#: reference/datamodel.rst:864 +#: reference/datamodel.rst:866 msgid "" "Instances of arbitrary classes can be made callable by defining a :meth:" "`~object.__call__` method in their class." msgstr "" -#: reference/datamodel.rst:871 +#: reference/datamodel.rst:873 msgid "Modules" msgstr "" -#: reference/datamodel.rst:877 +#: reference/datamodel.rst:879 msgid "" "Modules are a basic organizational unit of Python code, and are created by " "the :ref:`import system ` as invoked either by the :keyword:" @@ -985,17 +985,17 @@ msgid "" "done)." msgstr "" -#: reference/datamodel.rst:890 +#: reference/datamodel.rst:892 msgid "" "Attribute assignment updates the module's namespace dictionary, e.g., ``m.x " "= 1`` is equivalent to ``m.__dict__[\"x\"] = 1``." msgstr "" -#: reference/datamodel.rst:909 +#: reference/datamodel.rst:911 msgid "Import-related attributes on module objects" msgstr "" -#: reference/datamodel.rst:911 +#: reference/datamodel.rst:913 msgid "" "Module objects have the following attributes that relate to the :ref:`import " "system `. When a module is created using the machinery " @@ -1004,7 +1004,7 @@ msgid "" "and loads the module." msgstr "" -#: reference/datamodel.rst:917 +#: reference/datamodel.rst:919 msgid "" "To create a module dynamically rather than using the import system, it's " "recommended to use :func:`importlib.util.module_from_spec`, which will set " @@ -1015,7 +1015,7 @@ msgid "" "approach." msgstr "" -#: reference/datamodel.rst:927 +#: reference/datamodel.rst:929 msgid "" "With the exception of :attr:`~module.__name__`, it is **strongly** " "recommended that you rely on :attr:`~module.__spec__` and its attributes " @@ -1024,7 +1024,7 @@ msgid "" "corresponding attribute on the module itself:" msgstr "" -#: reference/datamodel.rst:933 +#: reference/datamodel.rst:935 msgid "" ">>> import typing\n" ">>> typing.__name__, typing.__spec__.name\n" @@ -1037,34 +1037,34 @@ msgid "" "('keyboard_smashing', 'spelling')" msgstr "" -#: reference/datamodel.rst:947 +#: reference/datamodel.rst:949 msgid "" "The name used to uniquely identify the module in the import system. For a " "directly executed module, this will be set to ``\"__main__\"``." msgstr "" -#: reference/datamodel.rst:950 +#: reference/datamodel.rst:952 msgid "" "This attribute must be set to the fully qualified name of the module. It is " "expected to match the value of :attr:`module.__spec__.name `." msgstr "" -#: reference/datamodel.rst:956 +#: reference/datamodel.rst:958 msgid "A record of the module's import-system-related state." msgstr "" -#: reference/datamodel.rst:958 +#: reference/datamodel.rst:960 msgid "" "Set to the :class:`module spec ` that was " "used when importing the module. See :ref:`module-specs` for more details." msgstr "" -#: reference/datamodel.rst:965 +#: reference/datamodel.rst:967 msgid "The :term:`package` a module belongs to." msgstr "" -#: reference/datamodel.rst:967 +#: reference/datamodel.rst:969 msgid "" "If the module is top-level (that is, not a part of any specific package) " "then the attribute should be set to ``''`` (the empty string). Otherwise, it " @@ -1073,7 +1073,7 @@ msgid "" "for further details." msgstr "" -#: reference/datamodel.rst:973 +#: reference/datamodel.rst:975 msgid "" "This attribute is used instead of :attr:`~module.__name__` to calculate " "explicit relative imports for main modules. It defaults to ``None`` for " @@ -1082,7 +1082,7 @@ msgid "" "is set to a :class:`str`." msgstr "" -#: reference/datamodel.rst:979 +#: reference/datamodel.rst:981 msgid "" "It is **strongly** recommended that you use :attr:`module.__spec__.parent " "` instead of :attr:`!module." @@ -1090,14 +1090,14 @@ msgid "" "__spec__.parent` is not set, and this fallback path is deprecated." msgstr "" -#: reference/datamodel.rst:1026 +#: reference/datamodel.rst:1028 msgid "" "This attribute now defaults to ``None`` for modules created dynamically " "using the :class:`types.ModuleType` constructor. Previously the attribute " "was optional." msgstr "" -#: reference/datamodel.rst:990 +#: reference/datamodel.rst:992 msgid "" "The value of :attr:`!__package__` is expected to be the same as :attr:" "`__spec__.parent `. :attr:" @@ -1105,38 +1105,38 @@ msgid "" "attr:`!__spec__.parent` is not defined." msgstr "" -#: reference/datamodel.rst:996 +#: reference/datamodel.rst:998 msgid "" ":exc:`ImportWarning` is raised if an import resolution falls back to :attr:`!" "__package__` instead of :attr:`__spec__.parent `." msgstr "" -#: reference/datamodel.rst:1001 +#: reference/datamodel.rst:1003 msgid "" "Raise :exc:`DeprecationWarning` instead of :exc:`ImportWarning` when falling " "back to :attr:`!__package__` during import resolution." msgstr "" -#: reference/datamodel.rst:1005 +#: reference/datamodel.rst:1007 msgid "" ":attr:`!__package__` will cease to be set or taken into consideration by the " "import system or standard library." msgstr "" -#: reference/datamodel.rst:1011 +#: reference/datamodel.rst:1013 msgid "" "The :term:`loader` object that the import machinery used to load the module." msgstr "" -#: reference/datamodel.rst:1013 +#: reference/datamodel.rst:1015 msgid "" "This attribute is mostly useful for introspection, but can be used for " "additional loader-specific functionality, for example getting data " "associated with a loader." msgstr "" -#: reference/datamodel.rst:1017 +#: reference/datamodel.rst:1019 msgid "" ":attr:`!__loader__` defaults to ``None`` for modules created dynamically " "using the :class:`types.ModuleType` constructor; use :func:`importlib.util." @@ -1144,14 +1144,14 @@ msgid "" "object." msgstr "" -#: reference/datamodel.rst:1022 +#: reference/datamodel.rst:1024 msgid "" "It is **strongly** recommended that you use :attr:`module.__spec__.loader " "` instead of :attr:`!module." "__loader__`." msgstr "" -#: reference/datamodel.rst:1031 +#: reference/datamodel.rst:1033 msgid "" "Setting :attr:`!__loader__` on a module while failing to set :attr:`!" "__spec__.loader` is deprecated. In Python 3.16, :attr:`!__loader__` will " @@ -1159,7 +1159,7 @@ msgid "" "standard library." msgstr "" -#: reference/datamodel.rst:1039 +#: reference/datamodel.rst:1041 msgid "" "A (possibly empty) :term:`sequence` of strings enumerating the locations " "where the package's submodules will be found. Non-package modules should not " @@ -1167,21 +1167,21 @@ msgid "" "details." msgstr "" -#: reference/datamodel.rst:1044 +#: reference/datamodel.rst:1046 msgid "" "It is **strongly** recommended that you use :attr:`module.__spec__." "submodule_search_locations ` instead of :attr:`!module.__path__`." msgstr "" -#: reference/datamodel.rst:1051 +#: reference/datamodel.rst:1053 msgid "" ":attr:`!__file__` and :attr:`!__cached__` are both optional attributes that " "may or may not be set. Both attributes should be a :class:`str` when they " "are available." msgstr "" -#: reference/datamodel.rst:1055 +#: reference/datamodel.rst:1057 msgid "" ":attr:`!__file__` indicates the pathname of the file from which the module " "was loaded (if loaded from a file), or the pathname of the shared library " @@ -1192,7 +1192,7 @@ msgid "" "example, a module loaded from a database)." msgstr "" -#: reference/datamodel.rst:1063 +#: reference/datamodel.rst:1065 msgid "" "If :attr:`!__file__` is set then the :attr:`!__cached__` attribute might " "also be set, which is the path to any compiled version of the code (for " @@ -1201,7 +1201,7 @@ msgid "" "exist (see :pep:`3147`)." msgstr "" -#: reference/datamodel.rst:1069 +#: reference/datamodel.rst:1071 msgid "" "Note that :attr:`!__cached__` may be set even if :attr:`!__file__` is not " "set. However, that scenario is quite atypical. Ultimately, the :term:" @@ -1211,14 +1211,14 @@ msgid "" "file, that atypical scenario may be appropriate." msgstr "" -#: reference/datamodel.rst:1076 +#: reference/datamodel.rst:1078 msgid "" "It is **strongly** recommended that you use :attr:`module.__spec__.cached " "` instead of :attr:`!module." "__cached__`." msgstr "" -#: reference/datamodel.rst:1080 +#: reference/datamodel.rst:1082 msgid "" "Setting :attr:`!__cached__` on a module while failing to set :attr:`!" "__spec__.cached` is deprecated. In Python 3.15, :attr:`!__cached__` will " @@ -1226,51 +1226,51 @@ msgid "" "library." msgstr "" -#: reference/datamodel.rst:1087 +#: reference/datamodel.rst:1089 msgid "Other writable attributes on module objects" msgstr "" -#: reference/datamodel.rst:1089 +#: reference/datamodel.rst:1091 msgid "" "As well as the import-related attributes listed above, module objects also " "have the following writable attributes:" msgstr "" -#: reference/datamodel.rst:1094 +#: reference/datamodel.rst:1096 msgid "" "The module's documentation string, or ``None`` if unavailable. See also: :" "attr:`__doc__ attributes `." msgstr "" -#: reference/datamodel.rst:1099 +#: reference/datamodel.rst:1101 msgid "" "A dictionary containing :term:`variable annotations ` " "collected during module body execution. For best practices on working with :" "attr:`!__annotations__`, see :mod:`annotationlib`." msgstr "" -#: reference/datamodel.rst:1109 +#: reference/datamodel.rst:1111 msgid "" "The :term:`annotate function` for this module, or ``None`` if the module has " "no annotations. See also: :attr:`~object.__annotate__` attributes." msgstr "" -#: reference/datamodel.rst:1115 +#: reference/datamodel.rst:1117 msgid "Module dictionaries" msgstr "" -#: reference/datamodel.rst:1117 +#: reference/datamodel.rst:1119 msgid "Module objects also have the following special read-only attribute:" msgstr "" -#: reference/datamodel.rst:1122 +#: reference/datamodel.rst:1124 msgid "" "The module's namespace as a dictionary object. Uniquely among the attributes " "listed here, :attr:`!__dict__` cannot be accessed as a global variable from " "within a module; it can only be accessed as an attribute on module objects." msgstr "" -#: reference/datamodel.rst:1128 +#: reference/datamodel.rst:1130 msgid "" "Because of the way CPython clears module dictionaries, the module dictionary " "will be cleared when the module falls out of scope even if the dictionary " @@ -1278,11 +1278,11 @@ msgid "" "module around while using its dictionary directly." msgstr "" -#: reference/datamodel.rst:1137 +#: reference/datamodel.rst:1139 msgid "Custom classes" msgstr "" -#: reference/datamodel.rst:1139 +#: reference/datamodel.rst:1141 msgid "" "Custom class types are typically created by class definitions (see section :" "ref:`class`). A class has a namespace implemented by a dictionary object. " @@ -1297,7 +1297,7 @@ msgid "" "found at :ref:`python_2.3_mro`." msgstr "" -#: reference/datamodel.rst:1160 +#: reference/datamodel.rst:1162 msgid "" "When a class attribute reference (for class :class:`!C`, say) would yield a " "class method object, it is transformed into an instance method object whose :" @@ -1308,129 +1308,144 @@ msgid "" "contained in its :attr:`~object.__dict__`." msgstr "" -#: reference/datamodel.rst:1171 +#: reference/datamodel.rst:1173 msgid "" "Class attribute assignments update the class's dictionary, never the " "dictionary of a base class." msgstr "" -#: reference/datamodel.rst:1176 +#: reference/datamodel.rst:1178 msgid "" "A class object can be called (see above) to yield a class instance (see " "below)." msgstr "" -#: reference/datamodel.rst:1335 +#: reference/datamodel.rst:1349 msgid "Special attributes" msgstr "" -#: reference/datamodel.rst:1200 +#: reference/datamodel.rst:1202 msgid "" "The class's name. See also: :attr:`__name__ attributes `." msgstr "" -#: reference/datamodel.rst:1204 +#: reference/datamodel.rst:1206 msgid "" "The class's :term:`qualified name`. See also: :attr:`__qualname__ attributes " "`." msgstr "" -#: reference/datamodel.rst:1208 +#: reference/datamodel.rst:1210 msgid "The name of the module in which the class was defined." msgstr "" -#: reference/datamodel.rst:1211 +#: reference/datamodel.rst:1213 msgid "" "A :class:`mapping proxy ` providing a read-only view " "of the class's namespace. See also: :attr:`__dict__ attributes `." msgstr "" -#: reference/datamodel.rst:1216 +#: reference/datamodel.rst:1218 msgid "" "A :class:`tuple` containing the class's bases. In most cases, for a class " "defined as ``class X(A, B, C)``, ``X.__bases__`` will be exactly equal to " "``(A, B, C)``." msgstr "" -#: reference/datamodel.rst:1221 +#: reference/datamodel.rst:1223 msgid "" "The class's documentation string, or ``None`` if undefined. Not inherited by " "subclasses." msgstr "" -#: reference/datamodel.rst:1225 +#: reference/datamodel.rst:1227 msgid "" "A dictionary containing :term:`variable annotations ` " "collected during class body execution. See also: :attr:`__annotations__ " "attributes `." msgstr "" -#: reference/datamodel.rst:1230 +#: reference/datamodel.rst:1232 msgid "" "For best practices on working with :attr:`~object.__annotations__`, please " -"see :mod:`annotationlib`. Where possible, use :func:`annotationlib." -"get_annotations` instead of accessing this attribute directly." +"see :mod:`annotationlib`. Use :func:`annotationlib.get_annotations` instead " +"of accessing this attribute directly." +msgstr "" + +#: reference/datamodel.rst:1239 +msgid "" +"Accessing the :attr:`!__annotations__` attribute directly on a class object " +"may return annotations for the wrong class, specifically in certain cases " +"where the class, its base class, or a metaclass is defined under ``from " +"__future__ import annotations``. See :pep:`749 <749#pep749-metaclasses>` for " +"details." +msgstr "" + +#: reference/datamodel.rst:1245 +msgid "" +"This attribute does not exist on certain builtin classes. On user-defined " +"classes without ``__annotations__``, it is an empty dictionary." msgstr "" -#: reference/datamodel.rst:1240 +#: reference/datamodel.rst:1254 msgid "" "The :term:`annotate function` for this class, or ``None`` if the class has " "no annotations. See also: :attr:`__annotate__ attributes `." msgstr "" -#: reference/datamodel.rst:1247 +#: reference/datamodel.rst:1261 msgid "" "A :class:`tuple` containing the :ref:`type parameters ` of a :" "ref:`generic class `." msgstr "" -#: reference/datamodel.rst:1253 +#: reference/datamodel.rst:1267 msgid "" "A :class:`tuple` containing names of attributes of this class which are " "assigned through ``self.X`` from any function in its body." msgstr "" -#: reference/datamodel.rst:1259 +#: reference/datamodel.rst:1273 msgid "" "The line number of the first line of the class definition, including " "decorators. Setting the :attr:`__module__` attribute removes the :attr:`!" "__firstlineno__` item from the type's dictionary." msgstr "" -#: reference/datamodel.rst:1267 +#: reference/datamodel.rst:1281 msgid "" "The :class:`tuple` of classes that are considered when looking for base " "classes during method resolution." msgstr "" -#: reference/datamodel.rst:1272 +#: reference/datamodel.rst:1286 msgid "Special methods" msgstr "" -#: reference/datamodel.rst:1274 +#: reference/datamodel.rst:1288 msgid "" "In addition to the special attributes described above, all Python classes " "also have the following two methods available:" msgstr "" -#: reference/datamodel.rst:1279 +#: reference/datamodel.rst:1293 msgid "" "This method can be overridden by a metaclass to customize the method " "resolution order for its instances. It is called at class instantiation, " "and its result is stored in :attr:`~type.__mro__`." msgstr "" -#: reference/datamodel.rst:1285 +#: reference/datamodel.rst:1299 msgid "" "Each class keeps a list of weak references to its immediate subclasses. This " "method returns a list of all those references still alive. The list is in " "definition order. Example:" msgstr "" -#: reference/datamodel.rst:1289 +#: reference/datamodel.rst:1303 msgid "" ">>> class A: pass\n" ">>> class B(A): pass\n" @@ -1438,11 +1453,11 @@ msgid "" "[]" msgstr "" -#: reference/datamodel.rst:1297 +#: reference/datamodel.rst:1311 msgid "Class instances" msgstr "" -#: reference/datamodel.rst:1305 +#: reference/datamodel.rst:1319 msgid "" "A class instance is created by calling a class object (see above). A class " "instance has a namespace implemented as a dictionary which is the first " @@ -1459,7 +1474,7 @@ msgid "" "__getattr__` method, that is called to satisfy the lookup." msgstr "" -#: reference/datamodel.rst:1321 +#: reference/datamodel.rst:1335 msgid "" "Attribute assignments and deletions update the instance's dictionary, never " "a class's dictionary. If the class has a :meth:`~object.__setattr__` or :" @@ -1467,28 +1482,28 @@ msgid "" "instance dictionary directly." msgstr "" -#: reference/datamodel.rst:1331 +#: reference/datamodel.rst:1345 msgid "" "Class instances can pretend to be numbers, sequences, or mappings if they " "have methods with certain special names. See section :ref:`specialnames`." msgstr "" -#: reference/datamodel.rst:1343 +#: reference/datamodel.rst:1357 msgid "The class to which a class instance belongs." msgstr "" -#: reference/datamodel.rst:1347 +#: reference/datamodel.rst:1361 msgid "" "A dictionary or other mapping object used to store an object's (writable) " "attributes. Not all instances have a :attr:`!__dict__` attribute; see the " "section on :ref:`slots` for more details." msgstr "" -#: reference/datamodel.rst:1353 +#: reference/datamodel.rst:1367 msgid "I/O objects (also known as file objects)" msgstr "" -#: reference/datamodel.rst:1368 +#: reference/datamodel.rst:1382 msgid "" "A :term:`file object` represents an open file. Various shortcuts are " "available to create file objects: the :func:`open` built-in function, and " @@ -1497,7 +1512,7 @@ msgid "" "methods provided by extension modules)." msgstr "" -#: reference/datamodel.rst:1374 +#: reference/datamodel.rst:1388 msgid "" "The objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are initialized " "to file objects corresponding to the interpreter's standard input, output " @@ -1505,22 +1520,22 @@ msgid "" "interface defined by the :class:`io.TextIOBase` abstract class." msgstr "" -#: reference/datamodel.rst:1382 +#: reference/datamodel.rst:1396 msgid "Internal types" msgstr "" -#: reference/datamodel.rst:1388 +#: reference/datamodel.rst:1402 msgid "" "A few types used internally by the interpreter are exposed to the user. " "Their definitions may change with future versions of the interpreter, but " "they are mentioned here for completeness." msgstr "" -#: reference/datamodel.rst:1396 +#: reference/datamodel.rst:1410 msgid "Code objects" msgstr "" -#: reference/datamodel.rst:1400 +#: reference/datamodel.rst:1414 msgid "" "Code objects represent *byte-compiled* executable Python code, or :term:" "`bytecode`. The difference between a code object and a function object is " @@ -1532,111 +1547,111 @@ msgid "" "no references (directly or indirectly) to mutable objects." msgstr "" -#: reference/datamodel.rst:1434 +#: reference/datamodel.rst:1448 msgid "The function name" msgstr "" -#: reference/datamodel.rst:1437 +#: reference/datamodel.rst:1451 msgid "The fully qualified function name" msgstr "" -#: reference/datamodel.rst:1442 +#: reference/datamodel.rst:1456 msgid "" "The total number of positional :term:`parameters ` (including " "positional-only parameters and parameters with default values) that the " "function has" msgstr "" -#: reference/datamodel.rst:1447 +#: reference/datamodel.rst:1461 msgid "" "The number of positional-only :term:`parameters ` (including " "arguments with default values) that the function has" msgstr "" -#: reference/datamodel.rst:1451 +#: reference/datamodel.rst:1465 msgid "" "The number of keyword-only :term:`parameters ` (including " "arguments with default values) that the function has" msgstr "" -#: reference/datamodel.rst:1455 +#: reference/datamodel.rst:1469 msgid "" "The number of :ref:`local variables ` used by the function " "(including parameters)" msgstr "" -#: reference/datamodel.rst:1459 +#: reference/datamodel.rst:1473 msgid "" "A :class:`tuple` containing the names of the local variables in the function " "(starting with the parameter names)" msgstr "" -#: reference/datamodel.rst:1463 +#: reference/datamodel.rst:1477 msgid "" "A :class:`tuple` containing the names of :ref:`local variables ` " "that are referenced from at least one :term:`nested scope` inside the " "function" msgstr "" -#: reference/datamodel.rst:1467 +#: reference/datamodel.rst:1481 msgid "" "A :class:`tuple` containing the names of :term:`free (closure) variables " "` that a :term:`nested scope` references in an outer " "scope. See also :attr:`function.__closure__`." msgstr "" -#: reference/datamodel.rst:1471 +#: reference/datamodel.rst:1485 msgid "Note: references to global and builtin names are *not* included." msgstr "" -#: reference/datamodel.rst:1474 +#: reference/datamodel.rst:1488 msgid "" "A string representing the sequence of :term:`bytecode` instructions in the " "function" msgstr "" -#: reference/datamodel.rst:1478 +#: reference/datamodel.rst:1492 msgid "" "A :class:`tuple` containing the literals used by the :term:`bytecode` in the " "function" msgstr "" -#: reference/datamodel.rst:1482 +#: reference/datamodel.rst:1496 msgid "" "A :class:`tuple` containing the names used by the :term:`bytecode` in the " "function" msgstr "" -#: reference/datamodel.rst:1486 +#: reference/datamodel.rst:1500 msgid "The name of the file from which the code was compiled" msgstr "" -#: reference/datamodel.rst:1489 +#: reference/datamodel.rst:1503 msgid "The line number of the first line of the function" msgstr "" -#: reference/datamodel.rst:1492 +#: reference/datamodel.rst:1506 msgid "" "A string encoding the mapping from :term:`bytecode` offsets to line numbers. " "For details, see the source code of the interpreter." msgstr "" -#: reference/datamodel.rst:1495 +#: reference/datamodel.rst:1509 msgid "" "This attribute of code objects is deprecated, and may be removed in Python " "3.15." msgstr "" -#: reference/datamodel.rst:1500 +#: reference/datamodel.rst:1514 msgid "The required stack size of the code object" msgstr "" -#: reference/datamodel.rst:1503 +#: reference/datamodel.rst:1517 msgid "" "An :class:`integer ` encoding a number of flags for the interpreter." msgstr "" -#: reference/datamodel.rst:1508 +#: reference/datamodel.rst:1522 msgid "" "The following flag bits are defined for :attr:`~codeobject.co_flags`: bit " "``0x04`` is set if the function uses the ``*arguments`` syntax to accept an " @@ -1647,7 +1662,7 @@ msgid "" "might be present." msgstr "" -#: reference/datamodel.rst:1516 +#: reference/datamodel.rst:1530 msgid "" "Future feature declarations (for example, ``from __future__ import " "division``) also use bits in :attr:`~codeobject.co_flags` to indicate " @@ -1655,12 +1670,12 @@ msgid "" "attr:`~__future__._Feature.compiler_flag`." msgstr "" -#: reference/datamodel.rst:1520 +#: reference/datamodel.rst:1534 msgid "" "Other bits in :attr:`~codeobject.co_flags` are reserved for internal use." msgstr "" -#: reference/datamodel.rst:1524 +#: reference/datamodel.rst:1538 msgid "" "If a code object represents a function and has a docstring, the :data:" "`~inspect.CO_HAS_DOCSTRING` bit is set in :attr:`~codeobject.co_flags` and " @@ -1668,17 +1683,17 @@ msgid "" "function." msgstr "" -#: reference/datamodel.rst:1530 +#: reference/datamodel.rst:1544 msgid "Methods on code objects" msgstr "" -#: reference/datamodel.rst:1534 +#: reference/datamodel.rst:1548 msgid "" "Returns an iterable over the source code positions of each :term:`bytecode` " "instruction in the code object." msgstr "" -#: reference/datamodel.rst:1537 +#: reference/datamodel.rst:1551 msgid "" "The iterator returns :class:`tuple`\\s containing the ``(start_line, " "end_line, start_column, end_column)``. The *i-th* tuple corresponds to the " @@ -1686,37 +1701,37 @@ msgid "" "information is 0-indexed utf-8 byte offsets on the given source line." msgstr "" -#: reference/datamodel.rst:1543 +#: reference/datamodel.rst:1557 msgid "" "This positional information can be missing. A non-exhaustive lists of cases " "where this may happen:" msgstr "" -#: reference/datamodel.rst:1546 +#: reference/datamodel.rst:1560 msgid "Running the interpreter with :option:`-X` ``no_debug_ranges``." msgstr "" -#: reference/datamodel.rst:1547 +#: reference/datamodel.rst:1561 msgid "" "Loading a pyc file compiled while using :option:`-X` ``no_debug_ranges``." msgstr "" -#: reference/datamodel.rst:1548 +#: reference/datamodel.rst:1562 msgid "Position tuples corresponding to artificial instructions." msgstr "" -#: reference/datamodel.rst:1549 +#: reference/datamodel.rst:1563 msgid "" "Line and column numbers that can't be represented due to implementation " "specific limitations." msgstr "" -#: reference/datamodel.rst:1552 +#: reference/datamodel.rst:1566 msgid "" "When this occurs, some or all of the tuple elements can be :const:`None`." msgstr "" -#: reference/datamodel.rst:1558 +#: reference/datamodel.rst:1572 msgid "" "This feature requires storing column positions in code objects which may " "result in a small increase of disk usage of compiled Python files or " @@ -1726,155 +1741,155 @@ msgid "" "environment variable can be used." msgstr "" -#: reference/datamodel.rst:1567 +#: reference/datamodel.rst:1581 msgid "" "Returns an iterator that yields information about successive ranges of :term:" "`bytecode`\\s. Each item yielded is a ``(start, end, lineno)`` :class:" "`tuple`:" msgstr "" -#: reference/datamodel.rst:1571 +#: reference/datamodel.rst:1585 msgid "" "``start`` (an :class:`int`) represents the offset (inclusive) of the start " "of the :term:`bytecode` range" msgstr "" -#: reference/datamodel.rst:1573 +#: reference/datamodel.rst:1587 msgid "" "``end`` (an :class:`int`) represents the offset (exclusive) of the end of " "the :term:`bytecode` range" msgstr "" -#: reference/datamodel.rst:1575 +#: reference/datamodel.rst:1589 msgid "" "``lineno`` is an :class:`int` representing the line number of the :term:" "`bytecode` range, or ``None`` if the bytecodes in the given range have no " "line number" msgstr "" -#: reference/datamodel.rst:1579 +#: reference/datamodel.rst:1593 msgid "The items yielded will have the following properties:" msgstr "" -#: reference/datamodel.rst:1581 +#: reference/datamodel.rst:1595 msgid "The first range yielded will have a ``start`` of 0." msgstr "" -#: reference/datamodel.rst:1582 +#: reference/datamodel.rst:1596 msgid "" "The ``(start, end)`` ranges will be non-decreasing and consecutive. That is, " "for any pair of :class:`tuple`\\s, the ``start`` of the second will be equal " "to the ``end`` of the first." msgstr "" -#: reference/datamodel.rst:1585 +#: reference/datamodel.rst:1599 msgid "No range will be backwards: ``end >= start`` for all triples." msgstr "" -#: reference/datamodel.rst:1586 +#: reference/datamodel.rst:1600 msgid "" "The last :class:`tuple` yielded will have ``end`` equal to the size of the :" "term:`bytecode`." msgstr "" -#: reference/datamodel.rst:1589 +#: reference/datamodel.rst:1603 msgid "" "Zero-width ranges, where ``start == end``, are allowed. Zero-width ranges " "are used for lines that are present in the source code, but have been " "eliminated by the :term:`bytecode` compiler." msgstr "" -#: reference/datamodel.rst:1597 +#: reference/datamodel.rst:1611 msgid ":pep:`626` - Precise line numbers for debugging and other tools." msgstr "" -#: reference/datamodel.rst:1598 +#: reference/datamodel.rst:1612 msgid "The PEP that introduced the :meth:`!co_lines` method." msgstr "" -#: reference/datamodel.rst:1602 +#: reference/datamodel.rst:1616 msgid "" "Return a copy of the code object with new values for the specified fields." msgstr "" -#: reference/datamodel.rst:1604 +#: reference/datamodel.rst:1618 msgid "" "Code objects are also supported by the generic function :func:`copy.replace`." msgstr "" -#: reference/datamodel.rst:1612 +#: reference/datamodel.rst:1626 msgid "Frame objects" msgstr "" -#: reference/datamodel.rst:1616 +#: reference/datamodel.rst:1630 msgid "" "Frame objects represent execution frames. They may occur in :ref:`traceback " "objects `, and are also passed to registered trace " "functions." msgstr "" -#: reference/datamodel.rst:1634 +#: reference/datamodel.rst:1648 msgid "" "Points to the previous stack frame (towards the caller), or ``None`` if this " "is the bottom stack frame" msgstr "" -#: reference/datamodel.rst:1638 +#: reference/datamodel.rst:1652 msgid "" "The :ref:`code object ` being executed in this frame. " "Accessing this attribute raises an :ref:`auditing event ` ``object." "__getattr__`` with arguments ``obj`` and ``\"f_code\"``." msgstr "" -#: reference/datamodel.rst:1643 +#: reference/datamodel.rst:1657 msgid "" "The mapping used by the frame to look up :ref:`local variables `. If " "the frame refers to an :term:`optimized scope`, this may return a write-" "through proxy object." msgstr "" -#: reference/datamodel.rst:1648 +#: reference/datamodel.rst:1662 msgid "Return a proxy for optimized scopes." msgstr "" -#: reference/datamodel.rst:1652 +#: reference/datamodel.rst:1666 msgid "" "The dictionary used by the frame to look up :ref:`global variables `" msgstr "" -#: reference/datamodel.rst:1656 +#: reference/datamodel.rst:1670 msgid "" "The dictionary used by the frame to look up :ref:`built-in (intrinsic) names " "`" msgstr "" -#: reference/datamodel.rst:1660 +#: reference/datamodel.rst:1674 msgid "" "The \"precise instruction\" of the frame object (this is an index into the :" "term:`bytecode` string of the :ref:`code object `)" msgstr "" -#: reference/datamodel.rst:1676 +#: reference/datamodel.rst:1690 msgid "" "If not ``None``, this is a function called for various events during code " "execution (this is used by debuggers). Normally an event is triggered for " "each new source line (see :attr:`~frame.f_trace_lines`)." msgstr "" -#: reference/datamodel.rst:1681 +#: reference/datamodel.rst:1695 msgid "" "Set this attribute to :const:`False` to disable triggering a tracing event " "for each source line." msgstr "" -#: reference/datamodel.rst:1685 +#: reference/datamodel.rst:1699 msgid "" "Set this attribute to :const:`True` to allow per-opcode events to be " "requested. Note that this may lead to undefined interpreter behaviour if " "exceptions raised by the trace function escape to the function being traced." msgstr "" -#: reference/datamodel.rst:1691 +#: reference/datamodel.rst:1705 msgid "" "The current line number of the frame -- writing to this from within a trace " "function jumps to the given line (only for the bottom-most frame). A " @@ -1882,15 +1897,15 @@ msgid "" "this attribute." msgstr "" -#: reference/datamodel.rst:1697 +#: reference/datamodel.rst:1711 msgid "Frame object methods" msgstr "" -#: reference/datamodel.rst:1699 +#: reference/datamodel.rst:1713 msgid "Frame objects support one method:" msgstr "" -#: reference/datamodel.rst:1703 +#: reference/datamodel.rst:1717 msgid "" "This method clears all references to :ref:`local variables ` held by " "the frame. Also, if the frame belonged to a :term:`generator`, the " @@ -1899,34 +1914,34 @@ msgid "" "and storing its :ref:`traceback ` for later use)." msgstr "" -#: reference/datamodel.rst:1709 +#: reference/datamodel.rst:1723 msgid "" ":exc:`RuntimeError` is raised if the frame is currently executing or " "suspended." msgstr "" -#: reference/datamodel.rst:1714 +#: reference/datamodel.rst:1728 msgid "" "Attempting to clear a suspended frame raises :exc:`RuntimeError` (as has " "always been the case for executing frames)." msgstr "" -#: reference/datamodel.rst:1722 +#: reference/datamodel.rst:1736 msgid "Traceback objects" msgstr "" -#: reference/datamodel.rst:1735 +#: reference/datamodel.rst:1749 msgid "" "Traceback objects represent the stack trace of an :ref:`exception `. A traceback object is implicitly created when an exception occurs, " "and may also be explicitly created by calling :class:`types.TracebackType`." msgstr "" -#: reference/datamodel.rst:1740 +#: reference/datamodel.rst:1754 msgid "Traceback objects can now be explicitly instantiated from Python code." msgstr "" -#: reference/datamodel.rst:1743 +#: reference/datamodel.rst:1757 msgid "" "For implicitly created tracebacks, when the search for an exception handler " "unwinds the execution stack, at each unwound level a traceback object is " @@ -1937,7 +1952,7 @@ msgid "" "the caught exception." msgstr "" -#: reference/datamodel.rst:1752 +#: reference/datamodel.rst:1766 msgid "" "When the program contains no suitable handler, the stack trace is written " "(nicely formatted) to the standard error stream; if the interpreter is " @@ -1945,33 +1960,33 @@ msgid "" "last_traceback`." msgstr "" -#: reference/datamodel.rst:1757 +#: reference/datamodel.rst:1771 msgid "" "For explicitly created tracebacks, it is up to the creator of the traceback " "to determine how the :attr:`~traceback.tb_next` attributes should be linked " "to form a full stack trace." msgstr "" -#: reference/datamodel.rst:1772 +#: reference/datamodel.rst:1786 msgid "" "Points to the execution :ref:`frame ` of the current level." msgstr "" -#: reference/datamodel.rst:1775 +#: reference/datamodel.rst:1789 msgid "" "Accessing this attribute raises an :ref:`auditing event ` ``object." "__getattr__`` with arguments ``obj`` and ``\"tb_frame\"``." msgstr "" -#: reference/datamodel.rst:1780 +#: reference/datamodel.rst:1794 msgid "Gives the line number where the exception occurred" msgstr "" -#: reference/datamodel.rst:1783 +#: reference/datamodel.rst:1797 msgid "Indicates the \"precise instruction\"." msgstr "" -#: reference/datamodel.rst:1785 +#: reference/datamodel.rst:1799 msgid "" "The line number and last instruction in the traceback may differ from the " "line number of its :ref:`frame object ` if the exception " @@ -1979,39 +1994,39 @@ msgid "" "with a :keyword:`finally` clause." msgstr "" -#: reference/datamodel.rst:1796 +#: reference/datamodel.rst:1810 msgid "" "The special writable attribute :attr:`!tb_next` is the next level in the " "stack trace (towards the frame where the exception occurred), or ``None`` if " "there is no next level." msgstr "" -#: reference/datamodel.rst:1800 +#: reference/datamodel.rst:1814 msgid "This attribute is now writable" msgstr "" -#: reference/datamodel.rst:1805 +#: reference/datamodel.rst:1819 msgid "Slice objects" msgstr "" -#: reference/datamodel.rst:1809 +#: reference/datamodel.rst:1823 msgid "" "Slice objects are used to represent slices for :meth:`~object.__getitem__` " "methods. They are also created by the built-in :func:`slice` function." msgstr "" -#: reference/datamodel.rst:1818 +#: reference/datamodel.rst:1832 msgid "" "Special read-only attributes: :attr:`~slice.start` is the lower bound; :attr:" "`~slice.stop` is the upper bound; :attr:`~slice.step` is the step value; " "each is ``None`` if omitted. These attributes can have any type." msgstr "" -#: reference/datamodel.rst:1822 +#: reference/datamodel.rst:1836 msgid "Slice objects support one method:" msgstr "" -#: reference/datamodel.rst:1826 +#: reference/datamodel.rst:1840 msgid "" "This method takes a single integer argument *length* and computes " "information about the slice that the slice object would describe if applied " @@ -2021,11 +2036,11 @@ msgid "" "a manner consistent with regular slices." msgstr "" -#: reference/datamodel.rst:1835 +#: reference/datamodel.rst:1849 msgid "Static method objects" msgstr "" -#: reference/datamodel.rst:1837 +#: reference/datamodel.rst:1851 msgid "" "Static method objects provide a way of defeating the transformation of " "function objects to method objects described above. A static method object " @@ -2036,11 +2051,11 @@ msgid "" "method objects are created by the built-in :func:`staticmethod` constructor." msgstr "" -#: reference/datamodel.rst:1847 +#: reference/datamodel.rst:1861 msgid "Class method objects" msgstr "" -#: reference/datamodel.rst:1849 +#: reference/datamodel.rst:1863 msgid "" "A class method object, like a static method object, is a wrapper around " "another object that alters the way in which that object is retrieved from " @@ -2050,11 +2065,11 @@ msgid "" "`classmethod` constructor." msgstr "" -#: reference/datamodel.rst:1859 +#: reference/datamodel.rst:1873 msgid "Special method names" msgstr "" -#: reference/datamodel.rst:1865 +#: reference/datamodel.rst:1879 msgid "" "A class can implement certain operations that are invoked by special syntax " "(such as arithmetic operations or subscripting and slicing) by defining " @@ -2068,7 +2083,7 @@ msgid "" "`TypeError`)." msgstr "" -#: reference/datamodel.rst:1876 +#: reference/datamodel.rst:1890 msgid "" "Setting a special method to ``None`` indicates that the corresponding " "operation is not available. For example, if a class sets :meth:`~object." @@ -2077,7 +2092,7 @@ msgid "" "`~object.__getitem__`). [#]_" msgstr "" -#: reference/datamodel.rst:1882 +#: reference/datamodel.rst:1896 msgid "" "When implementing a class that emulates any built-in type, it is important " "that the emulation only be implemented to the degree that it makes sense for " @@ -2087,11 +2102,11 @@ msgid "" "the W3C's Document Object Model.)" msgstr "" -#: reference/datamodel.rst:1893 +#: reference/datamodel.rst:1907 msgid "Basic customization" msgstr "" -#: reference/datamodel.rst:1899 +#: reference/datamodel.rst:1913 msgid "" "Called to create a new instance of class *cls*. :meth:`__new__` is a static " "method (special-cased so you need not declare it as such) that takes the " @@ -2101,7 +2116,7 @@ msgid "" "new object instance (usually an instance of *cls*)." msgstr "" -#: reference/datamodel.rst:1906 +#: reference/datamodel.rst:1920 msgid "" "Typical implementations create a new instance of the class by invoking the " "superclass's :meth:`__new__` method using ``super().__new__(cls[, ...])`` " @@ -2109,7 +2124,7 @@ msgid "" "necessary before returning it." msgstr "" -#: reference/datamodel.rst:1911 +#: reference/datamodel.rst:1925 msgid "" "If :meth:`__new__` is invoked during object construction and it returns an " "instance of *cls*, then the new instance’s :meth:`__init__` method will be " @@ -2118,13 +2133,13 @@ msgid "" "constructor." msgstr "" -#: reference/datamodel.rst:1916 +#: reference/datamodel.rst:1930 msgid "" "If :meth:`__new__` does not return an instance of *cls*, then the new " "instance's :meth:`__init__` method will not be invoked." msgstr "" -#: reference/datamodel.rst:1919 +#: reference/datamodel.rst:1933 msgid "" ":meth:`__new__` is intended mainly to allow subclasses of immutable types " "(like int, str, or tuple) to customize instance creation. It is also " @@ -2132,7 +2147,7 @@ msgid "" "creation." msgstr "" -#: reference/datamodel.rst:1928 +#: reference/datamodel.rst:1942 msgid "" "Called after the instance has been created (by :meth:`__new__`), but before " "it is returned to the caller. The arguments are those passed to the class " @@ -2142,7 +2157,7 @@ msgid "" "example: ``super().__init__([args...])``." msgstr "" -#: reference/datamodel.rst:1935 +#: reference/datamodel.rst:1949 msgid "" "Because :meth:`__new__` and :meth:`__init__` work together in constructing " "objects (:meth:`__new__` to create it, and :meth:`__init__` to customize " @@ -2150,7 +2165,7 @@ msgid "" "will cause a :exc:`TypeError` to be raised at runtime." msgstr "" -#: reference/datamodel.rst:1948 +#: reference/datamodel.rst:1962 msgid "" "Called when the instance is about to be destroyed. This is also called a " "finalizer or (improperly) a destructor. If a base class has a :meth:" @@ -2159,7 +2174,7 @@ msgid "" "instance." msgstr "" -#: reference/datamodel.rst:1954 +#: reference/datamodel.rst:1968 msgid "" "It is possible (though not recommended!) for the :meth:`__del__` method to " "postpone destruction of the instance by creating a new reference to it. " @@ -2169,7 +2184,7 @@ msgid "" "it once." msgstr "" -#: reference/datamodel.rst:1961 +#: reference/datamodel.rst:1975 msgid "" "It is not guaranteed that :meth:`__del__` methods are called for objects " "that still exist when the interpreter exits. :class:`weakref.finalize` " @@ -2177,14 +2192,14 @@ msgid "" "when an object is garbage collected." msgstr "" -#: reference/datamodel.rst:1968 +#: reference/datamodel.rst:1982 msgid "" "``del x`` doesn't directly call ``x.__del__()`` --- the former decrements " "the reference count for ``x`` by one, and the latter is only called when " "``x``'s reference count reaches zero." msgstr "" -#: reference/datamodel.rst:1973 +#: reference/datamodel.rst:1987 msgid "" "It is possible for a reference cycle to prevent the reference count of an " "object from going to zero. In this case, the cycle will be later detected " @@ -2195,18 +2210,18 @@ msgid "" "caught in the traceback." msgstr "" -#: reference/datamodel.rst:1983 +#: reference/datamodel.rst:1997 msgid "Documentation for the :mod:`gc` module." msgstr "" -#: reference/datamodel.rst:1987 +#: reference/datamodel.rst:2001 msgid "" "Due to the precarious circumstances under which :meth:`__del__` methods are " "invoked, exceptions that occur during their execution are ignored, and a " "warning is printed to ``sys.stderr`` instead. In particular:" msgstr "" -#: reference/datamodel.rst:1991 +#: reference/datamodel.rst:2005 msgid "" ":meth:`__del__` can be invoked when arbitrary code is being executed, " "including from any arbitrary thread. If :meth:`__del__` needs to take a " @@ -2215,7 +2230,7 @@ msgid "" "`__del__`." msgstr "" -#: reference/datamodel.rst:1997 +#: reference/datamodel.rst:2011 msgid "" ":meth:`__del__` can be executed during interpreter shutdown. As a " "consequence, the global variables it needs to access (including other " @@ -2226,7 +2241,7 @@ msgid "" "still available at the time when the :meth:`__del__` method is called." msgstr "" -#: reference/datamodel.rst:2012 +#: reference/datamodel.rst:2026 msgid "" "Called by the :func:`repr` built-in function to compute the \"official\" " "string representation of an object. If at all possible, this should look " @@ -2238,14 +2253,14 @@ msgid "" "an \"informal\" string representation of instances of that class is required." msgstr "" -#: reference/datamodel.rst:2021 +#: reference/datamodel.rst:2035 msgid "" "This is typically used for debugging, so it is important that the " "representation is information-rich and unambiguous. A default implementation " "is provided by the :class:`object` class itself." msgstr "" -#: reference/datamodel.rst:2033 +#: reference/datamodel.rst:2047 msgid "" "Called by :func:`str(object) `, the default :meth:`__format__` " "implementation, and the built-in function :func:`print`, to compute the " @@ -2253,27 +2268,27 @@ msgid "" "return value must be a :ref:`str ` object." msgstr "" -#: reference/datamodel.rst:2038 +#: reference/datamodel.rst:2052 msgid "" "This method differs from :meth:`object.__repr__` in that there is no " "expectation that :meth:`__str__` return a valid Python expression: a more " "convenient or concise representation can be used." msgstr "" -#: reference/datamodel.rst:2042 +#: reference/datamodel.rst:2056 msgid "" "The default implementation defined by the built-in type :class:`object` " "calls :meth:`object.__repr__`." msgstr "" -#: reference/datamodel.rst:2052 +#: reference/datamodel.rst:2066 msgid "" "Called by :ref:`bytes ` to compute a byte-string representation " "of an object. This should return a :class:`bytes` object. The :class:" "`object` class itself does not provide this method." msgstr "" -#: reference/datamodel.rst:2064 +#: reference/datamodel.rst:2078 msgid "" "Called by the :func:`format` built-in function, and by extension, evaluation " "of :ref:`formatted string literals ` and the :meth:`str.format` " @@ -2285,34 +2300,34 @@ msgid "" "formatting option syntax." msgstr "" -#: reference/datamodel.rst:2074 +#: reference/datamodel.rst:2088 msgid "" "See :ref:`formatspec` for a description of the standard formatting syntax." msgstr "" -#: reference/datamodel.rst:2076 +#: reference/datamodel.rst:2090 msgid "The return value must be a string object." msgstr "" -#: reference/datamodel.rst:2078 +#: reference/datamodel.rst:2092 msgid "" "The default implementation by the :class:`object` class should be given an " "empty *format_spec* string. It delegates to :meth:`__str__`." msgstr "" -#: reference/datamodel.rst:2081 +#: reference/datamodel.rst:2095 msgid "" "The __format__ method of ``object`` itself raises a :exc:`TypeError` if " "passed any non-empty string." msgstr "" -#: reference/datamodel.rst:2085 +#: reference/datamodel.rst:2099 msgid "" "``object.__format__(x, '')`` is now equivalent to ``str(x)`` rather than " "``format(str(x), '')``." msgstr "" -#: reference/datamodel.rst:2101 +#: reference/datamodel.rst:2115 msgid "" "These are the so-called \"rich comparison\" methods. The correspondence " "between operator symbols and method names is as follows: ``x.__hash__``." msgstr "" -#: reference/datamodel.rst:2199 +#: reference/datamodel.rst:2213 msgid "" "If a class that does not override :meth:`__eq__` wishes to suppress hash " "support, it should include ``__hash__ = None`` in the class definition. A " @@ -2454,7 +2469,7 @@ msgid "" "``isinstance(obj, collections.abc.Hashable)`` call." msgstr "" -#: reference/datamodel.rst:2208 +#: reference/datamodel.rst:2222 msgid "" "By default, the :meth:`__hash__` values of str and bytes objects are " "\"salted\" with an unpredictable random value. Although they remain " @@ -2462,7 +2477,7 @@ msgid "" "between repeated invocations of Python." msgstr "" -#: reference/datamodel.rst:2213 +#: reference/datamodel.rst:2227 msgid "" "This is intended to provide protection against a denial-of-service caused by " "carefully chosen inputs that exploit the worst case performance of a dict " @@ -2470,22 +2485,22 @@ msgid "" "advisories/ocert-2011-003.html for details." msgstr "" -#: reference/datamodel.rst:2218 +#: reference/datamodel.rst:2232 msgid "" "Changing hash values affects the iteration order of sets. Python has never " "made guarantees about this ordering (and it typically varies between 32-bit " "and 64-bit builds)." msgstr "" -#: reference/datamodel.rst:2222 +#: reference/datamodel.rst:2236 msgid "See also :envvar:`PYTHONHASHSEED`." msgstr "" -#: reference/datamodel.rst:2224 +#: reference/datamodel.rst:2238 msgid "Hash randomization is enabled by default." msgstr "" -#: reference/datamodel.rst:2232 +#: reference/datamodel.rst:2246 msgid "" "Called to implement truth value testing and the built-in operation " "``bool()``; should return ``False`` or ``True``. When this method is not " @@ -2495,18 +2510,18 @@ msgid "" "class itself), all its instances are considered true." msgstr "" -#: reference/datamodel.rst:2243 +#: reference/datamodel.rst:2257 msgid "Customizing attribute access" msgstr "" -#: reference/datamodel.rst:2245 +#: reference/datamodel.rst:2259 msgid "" "The following methods can be defined to customize the meaning of attribute " "access (use of, assignment to, or deletion of ``x.name``) for class " "instances." msgstr "" -#: reference/datamodel.rst:2253 +#: reference/datamodel.rst:2267 msgid "" "Called when the default attribute access fails with an :exc:`AttributeError` " "(either :meth:`__getattribute__` raises an :exc:`AttributeError` because " @@ -2517,7 +2532,7 @@ msgid "" "`object` class itself does not provide this method." msgstr "" -#: reference/datamodel.rst:2261 +#: reference/datamodel.rst:2275 msgid "" "Note that if the attribute is found through the normal mechanism, :meth:" "`__getattr__` is not called. (This is an intentional asymmetry between :" @@ -2530,7 +2545,7 @@ msgid "" "actually get total control over attribute access." msgstr "" -#: reference/datamodel.rst:2274 +#: reference/datamodel.rst:2288 msgid "" "Called unconditionally to implement attribute accesses for instances of the " "class. If the class also defines :meth:`__getattr__`, the latter will not be " @@ -2542,64 +2557,64 @@ msgid "" "example, ``object.__getattribute__(self, name)``." msgstr "" -#: reference/datamodel.rst:2285 +#: reference/datamodel.rst:2299 msgid "" "This method may still be bypassed when looking up special methods as the " "result of implicit invocation via language syntax or :ref:`built-in " "functions `. See :ref:`special-lookup`." msgstr "" -#: reference/datamodel.rst:2292 +#: reference/datamodel.rst:2306 msgid "" "For certain sensitive attribute accesses, raises an :ref:`auditing event " "` ``object.__getattr__`` with arguments ``obj`` and ``name``." msgstr "" -#: reference/datamodel.rst:2299 +#: reference/datamodel.rst:2313 msgid "" "Called when an attribute assignment is attempted. This is called instead of " "the normal mechanism (i.e. store the value in the instance dictionary). " "*name* is the attribute name, *value* is the value to be assigned to it." msgstr "" -#: reference/datamodel.rst:2303 +#: reference/datamodel.rst:2317 msgid "" "If :meth:`__setattr__` wants to assign to an instance attribute, it should " "call the base class method with the same name, for example, ``object." "__setattr__(self, name, value)``." msgstr "" -#: reference/datamodel.rst:2309 +#: reference/datamodel.rst:2323 msgid "" "For certain sensitive attribute assignments, raises an :ref:`auditing event " "` ``object.__setattr__`` with arguments ``obj``, ``name``, " "``value``." msgstr "" -#: reference/datamodel.rst:2316 +#: reference/datamodel.rst:2330 msgid "" "Like :meth:`__setattr__` but for attribute deletion instead of assignment. " "This should only be implemented if ``del obj.name`` is meaningful for the " "object." msgstr "" -#: reference/datamodel.rst:2321 +#: reference/datamodel.rst:2335 msgid "" "For certain sensitive attribute deletions, raises an :ref:`auditing event " "` ``object.__delattr__`` with arguments ``obj`` and ``name``." msgstr "" -#: reference/datamodel.rst:2328 +#: reference/datamodel.rst:2342 msgid "" "Called when :func:`dir` is called on the object. An iterable must be " "returned. :func:`dir` converts the returned iterable to a list and sorts it." msgstr "" -#: reference/datamodel.rst:2333 +#: reference/datamodel.rst:2347 msgid "Customizing module attribute access" msgstr "" -#: reference/datamodel.rst:2340 +#: reference/datamodel.rst:2354 msgid "" "Special names ``__getattr__`` and ``__dir__`` can be also used to customize " "access to module attributes. The ``__getattr__`` function at the module " @@ -2611,21 +2626,21 @@ msgid "" "with the attribute name and the result is returned." msgstr "" -#: reference/datamodel.rst:2349 +#: reference/datamodel.rst:2363 msgid "" "The ``__dir__`` function should accept no arguments, and return an iterable " "of strings that represents the names accessible on module. If present, this " "function overrides the standard :func:`dir` search on a module." msgstr "" -#: reference/datamodel.rst:2353 +#: reference/datamodel.rst:2367 msgid "" "For a more fine grained customization of the module behavior (setting " "attributes, properties, etc.), one can set the ``__class__`` attribute of a " "module object to a subclass of :class:`types.ModuleType`. For example::" msgstr "" -#: reference/datamodel.rst:2357 +#: reference/datamodel.rst:2371 msgid "" "import sys\n" "from types import ModuleType\n" @@ -2641,7 +2656,7 @@ msgid "" "sys.modules[__name__].__class__ = VerboseModule" msgstr "" -#: reference/datamodel.rst:2371 +#: reference/datamodel.rst:2385 msgid "" "Defining module ``__getattr__`` and setting module ``__class__`` only affect " "lookups made using the attribute access syntax -- directly accessing the " @@ -2649,27 +2664,27 @@ msgid "" "module's globals dictionary) is unaffected." msgstr "" -#: reference/datamodel.rst:2376 +#: reference/datamodel.rst:2390 msgid "``__class__`` module attribute is now writable." msgstr "" -#: reference/datamodel.rst:2379 +#: reference/datamodel.rst:2393 msgid "``__getattr__`` and ``__dir__`` module attributes." msgstr "" -#: reference/datamodel.rst:2384 +#: reference/datamodel.rst:2398 msgid ":pep:`562` - Module __getattr__ and __dir__" msgstr "" -#: reference/datamodel.rst:2385 +#: reference/datamodel.rst:2399 msgid "Describes the ``__getattr__`` and ``__dir__`` functions on modules." msgstr "" -#: reference/datamodel.rst:2391 +#: reference/datamodel.rst:2405 msgid "Implementing Descriptors" msgstr "" -#: reference/datamodel.rst:2393 +#: reference/datamodel.rst:2407 msgid "" "The following methods only apply when an instance of the class containing " "the method (a so-called *descriptor* class) appears in an *owner* class (the " @@ -2680,7 +2695,7 @@ msgid "" "does not implement any of these protocols." msgstr "" -#: reference/datamodel.rst:2403 +#: reference/datamodel.rst:2417 msgid "" "Called to get the attribute of the owner class (class attribute access) or " "of an instance of that class (instance attribute access). The optional " @@ -2689,13 +2704,13 @@ msgid "" "accessed through the *owner*." msgstr "" -#: reference/datamodel.rst:2409 +#: reference/datamodel.rst:2423 msgid "" "This method should return the computed attribute value or raise an :exc:" "`AttributeError` exception." msgstr "" -#: reference/datamodel.rst:2412 +#: reference/datamodel.rst:2426 msgid "" ":PEP:`252` specifies that :meth:`__get__` is callable with one or two " "arguments. Python's own built-in descriptors support this specification; " @@ -2705,31 +2720,31 @@ msgid "" "not." msgstr "" -#: reference/datamodel.rst:2421 +#: reference/datamodel.rst:2435 msgid "" "Called to set the attribute on an instance *instance* of the owner class to " "a new value, *value*." msgstr "" -#: reference/datamodel.rst:2424 +#: reference/datamodel.rst:2438 msgid "" "Note, adding :meth:`__set__` or :meth:`__delete__` changes the kind of " "descriptor to a \"data descriptor\". See :ref:`descriptor-invocation` for " "more details." msgstr "" -#: reference/datamodel.rst:2430 +#: reference/datamodel.rst:2444 msgid "" "Called to delete the attribute on an instance *instance* of the owner class." msgstr "" -#: reference/datamodel.rst:2432 +#: reference/datamodel.rst:2446 msgid "" "Instances of descriptors may also have the :attr:`!__objclass__` attribute " "present:" msgstr "" -#: reference/datamodel.rst:2437 +#: reference/datamodel.rst:2451 msgid "" "The attribute :attr:`!__objclass__` is interpreted by the :mod:`inspect` " "module as specifying the class where this object was defined (setting this " @@ -2740,11 +2755,11 @@ msgid "" "are implemented in C)." msgstr "" -#: reference/datamodel.rst:2448 +#: reference/datamodel.rst:2462 msgid "Invoking Descriptors" msgstr "" -#: reference/datamodel.rst:2450 +#: reference/datamodel.rst:2464 msgid "" "In general, a descriptor is an object attribute with \"binding behavior\", " "one whose attribute access has been overridden by methods in the descriptor " @@ -2753,7 +2768,7 @@ msgid "" "is said to be a descriptor." msgstr "" -#: reference/datamodel.rst:2456 +#: reference/datamodel.rst:2470 msgid "" "The default behavior for attribute access is to get, set, or delete the " "attribute from an object's dictionary. For instance, ``a.x`` has a lookup " @@ -2761,7 +2776,7 @@ msgid "" "continuing through the base classes of ``type(a)`` excluding metaclasses." msgstr "" -#: reference/datamodel.rst:2461 +#: reference/datamodel.rst:2475 msgid "" "However, if the looked-up value is an object defining one of the descriptor " "methods, then Python may override the default behavior and invoke the " @@ -2769,54 +2784,54 @@ msgid "" "depends on which descriptor methods were defined and how they were called." msgstr "" -#: reference/datamodel.rst:2466 +#: reference/datamodel.rst:2480 msgid "" "The starting point for descriptor invocation is a binding, ``a.x``. How the " "arguments are assembled depends on ``a``:" msgstr "" -#: reference/datamodel.rst:2469 +#: reference/datamodel.rst:2483 msgid "Direct Call" msgstr "" -#: reference/datamodel.rst:2470 +#: reference/datamodel.rst:2484 msgid "" "The simplest and least common call is when user code directly invokes a " "descriptor method: ``x.__get__(a)``." msgstr "" -#: reference/datamodel.rst:2473 +#: reference/datamodel.rst:2487 msgid "Instance Binding" msgstr "" -#: reference/datamodel.rst:2474 +#: reference/datamodel.rst:2488 msgid "" "If binding to an object instance, ``a.x`` is transformed into the call: " "``type(a).__dict__['x'].__get__(a, type(a))``." msgstr "" -#: reference/datamodel.rst:2477 +#: reference/datamodel.rst:2491 msgid "Class Binding" msgstr "" -#: reference/datamodel.rst:2478 +#: reference/datamodel.rst:2492 msgid "" "If binding to a class, ``A.x`` is transformed into the call: ``A." "__dict__['x'].__get__(None, A)``." msgstr "" -#: reference/datamodel.rst:2481 +#: reference/datamodel.rst:2495 msgid "Super Binding" msgstr "" -#: reference/datamodel.rst:2482 +#: reference/datamodel.rst:2496 msgid "" "A dotted lookup such as ``super(A, a).x`` searches ``a.__class__.__mro__`` " "for a base class ``B`` following ``A`` and then returns ``B.__dict__['x']." "__get__(a, A)``. If not a descriptor, ``x`` is returned unchanged." msgstr "" -#: reference/datamodel.rst:2519 +#: reference/datamodel.rst:2533 msgid "" "For instance bindings, the precedence of descriptor invocation depends on " "which descriptor methods are defined. A descriptor can define any " @@ -2834,7 +2849,7 @@ msgid "" "instances." msgstr "" -#: reference/datamodel.rst:2534 +#: reference/datamodel.rst:2548 msgid "" "Python methods (including those decorated with :func:`@staticmethod " "` and :func:`@classmethod `) are implemented as " @@ -2843,30 +2858,30 @@ msgid "" "from other instances of the same class." msgstr "" -#: reference/datamodel.rst:2540 +#: reference/datamodel.rst:2554 msgid "" "The :func:`property` function is implemented as a data descriptor. " "Accordingly, instances cannot override the behavior of a property." msgstr "" -#: reference/datamodel.rst:2547 +#: reference/datamodel.rst:2561 msgid "__slots__" msgstr "" -#: reference/datamodel.rst:2549 +#: reference/datamodel.rst:2563 msgid "" "*__slots__* allow us to explicitly declare data members (like properties) " "and deny the creation of :attr:`~object.__dict__` and *__weakref__* (unless " "explicitly declared in *__slots__* or available in a parent.)" msgstr "" -#: reference/datamodel.rst:2553 +#: reference/datamodel.rst:2567 msgid "" "The space saved over using :attr:`~object.__dict__` can be significant. " "Attribute lookup speed can be significantly improved as well." msgstr "" -#: reference/datamodel.rst:2558 +#: reference/datamodel.rst:2572 msgid "" "This class variable can be assigned a string, iterable, or sequence of " "strings with variable names used by instances. *__slots__* reserves space " @@ -2874,18 +2889,18 @@ msgid "" "`~object.__dict__` and *__weakref__* for each instance." msgstr "" -#: reference/datamodel.rst:2567 +#: reference/datamodel.rst:2581 msgid "Notes on using *__slots__*:" msgstr "" -#: reference/datamodel.rst:2569 +#: reference/datamodel.rst:2583 msgid "" "When inheriting from a class without *__slots__*, the :attr:`~object." "__dict__` and *__weakref__* attribute of the instances will always be " "accessible." msgstr "" -#: reference/datamodel.rst:2573 +#: reference/datamodel.rst:2587 msgid "" "Without a :attr:`~object.__dict__` variable, instances cannot be assigned " "new variables not listed in the *__slots__* definition. Attempts to assign " @@ -2894,7 +2909,7 @@ msgid "" "sequence of strings in the *__slots__* declaration." msgstr "" -#: reference/datamodel.rst:2580 +#: reference/datamodel.rst:2594 msgid "" "Without a *__weakref__* variable for each instance, classes defining " "*__slots__* do not support :mod:`weak references ` to its " @@ -2902,7 +2917,7 @@ msgid "" "to the sequence of strings in the *__slots__* declaration." msgstr "" -#: reference/datamodel.rst:2586 +#: reference/datamodel.rst:2600 msgid "" "*__slots__* are implemented at the class level by creating :ref:`descriptors " "` for each variable name. As a result, class attributes cannot " @@ -2910,7 +2925,7 @@ msgid "" "otherwise, the class attribute would overwrite the descriptor assignment." msgstr "" -#: reference/datamodel.rst:2592 +#: reference/datamodel.rst:2606 msgid "" "The action of a *__slots__* declaration is not limited to the class where it " "is defined. *__slots__* declared in parents are available in child classes. " @@ -2919,7 +2934,7 @@ msgid "" "only contain names of any *additional* slots)." msgstr "" -#: reference/datamodel.rst:2598 +#: reference/datamodel.rst:2612 msgid "" "If a class defines a slot also defined in a base class, the instance " "variable defined by the base class slot is inaccessible (except by " @@ -2928,7 +2943,7 @@ msgid "" "prevent this." msgstr "" -#: reference/datamodel.rst:2603 +#: reference/datamodel.rst:2617 msgid "" ":exc:`TypeError` will be raised if nonempty *__slots__* are defined for a " "class derived from a :c:member:`\"variable-length\" built-in type " @@ -2936,11 +2951,11 @@ msgid "" "`tuple`." msgstr "" -#: reference/datamodel.rst:2608 +#: reference/datamodel.rst:2622 msgid "Any non-string :term:`iterable` may be assigned to *__slots__*." msgstr "" -#: reference/datamodel.rst:2610 +#: reference/datamodel.rst:2624 msgid "" "If a :class:`dictionary ` is used to assign *__slots__*, the " "dictionary keys will be used as the slot names. The values of the dictionary " @@ -2948,13 +2963,13 @@ msgid "" "func:`inspect.getdoc` and displayed in the output of :func:`help`." msgstr "" -#: reference/datamodel.rst:2615 +#: reference/datamodel.rst:2629 msgid "" ":attr:`~object.__class__` assignment works only if both classes have the " "same *__slots__*." msgstr "" -#: reference/datamodel.rst:2618 +#: reference/datamodel.rst:2632 msgid "" ":ref:`Multiple inheritance ` with multiple slotted parent " "classes can be used, but only one parent is allowed to have attributes " @@ -2962,18 +2977,18 @@ msgid "" "raise :exc:`TypeError`." msgstr "" -#: reference/datamodel.rst:2624 +#: reference/datamodel.rst:2638 msgid "" "If an :term:`iterator` is used for *__slots__* then a :term:`descriptor` is " "created for each of the iterator's values. However, the *__slots__* " "attribute will be an empty iterator." msgstr "" -#: reference/datamodel.rst:2632 +#: reference/datamodel.rst:2646 msgid "Customizing class creation" msgstr "" -#: reference/datamodel.rst:2634 +#: reference/datamodel.rst:2648 msgid "" "Whenever a class inherits from another class, :meth:`~object." "__init_subclass__` is called on the parent class. This way, it is possible " @@ -2983,14 +2998,14 @@ msgid "" "future subclasses of the class defining the method." msgstr "" -#: reference/datamodel.rst:2643 +#: reference/datamodel.rst:2657 msgid "" "This method is called whenever the containing class is subclassed. *cls* is " "then the new subclass. If defined as a normal instance method, this method " "is implicitly converted to a class method." msgstr "" -#: reference/datamodel.rst:2647 +#: reference/datamodel.rst:2661 msgid "" "Keyword arguments which are given to a new class are passed to the parent " "class's ``__init_subclass__``. For compatibility with other classes using " @@ -2998,7 +3013,7 @@ msgid "" "pass the others over to the base class, as in::" msgstr "" -#: reference/datamodel.rst:2653 +#: reference/datamodel.rst:2667 msgid "" "class Philosopher:\n" " def __init_subclass__(cls, /, default_name, **kwargs):\n" @@ -3009,13 +3024,13 @@ msgid "" " pass" msgstr "" -#: reference/datamodel.rst:2661 +#: reference/datamodel.rst:2675 msgid "" "The default implementation ``object.__init_subclass__`` does nothing, but " "raises an error if it is called with any arguments." msgstr "" -#: reference/datamodel.rst:2666 +#: reference/datamodel.rst:2680 msgid "" "The metaclass hint ``metaclass`` is consumed by the rest of the type " "machinery, and is never passed to ``__init_subclass__`` implementations. The " @@ -3023,32 +3038,32 @@ msgid "" "``type(cls)``." msgstr "" -#: reference/datamodel.rst:2674 +#: reference/datamodel.rst:2688 msgid "" "When a class is created, :meth:`type.__new__` scans the class variables and " "makes callbacks to those with a :meth:`~object.__set_name__` hook." msgstr "" -#: reference/datamodel.rst:2679 +#: reference/datamodel.rst:2693 msgid "" "Automatically called at the time the owning class *owner* is created. The " "object has been assigned to *name* in that class::" msgstr "" -#: reference/datamodel.rst:2682 +#: reference/datamodel.rst:2696 msgid "" "class A:\n" " x = C() # Automatically calls: x.__set_name__(A, 'x')" msgstr "" -#: reference/datamodel.rst:2685 +#: reference/datamodel.rst:2699 msgid "" "If the class variable is assigned after the class is created, :meth:" "`__set_name__` will not be called automatically. If needed, :meth:" "`__set_name__` can be called directly::" msgstr "" -#: reference/datamodel.rst:2689 +#: reference/datamodel.rst:2703 msgid "" "class A:\n" " pass\n" @@ -3058,22 +3073,22 @@ msgid "" "c.__set_name__(A, 'x') # Manually invoke the hook" msgstr "" -#: reference/datamodel.rst:2696 +#: reference/datamodel.rst:2710 msgid "See :ref:`class-object-creation` for more details." msgstr "" -#: reference/datamodel.rst:2704 +#: reference/datamodel.rst:2718 msgid "Metaclasses" msgstr "" -#: reference/datamodel.rst:2711 +#: reference/datamodel.rst:2725 msgid "" "By default, classes are constructed using :func:`type`. The class body is " "executed in a new namespace and the class name is bound locally to the " "result of ``type(name, bases, namespace)``." msgstr "" -#: reference/datamodel.rst:2715 +#: reference/datamodel.rst:2729 msgid "" "The class creation process can be customized by passing the ``metaclass`` " "keyword argument in the class definition line, or by inheriting from an " @@ -3081,7 +3096,7 @@ msgid "" "both ``MyClass`` and ``MySubclass`` are instances of ``Meta``::" msgstr "" -#: reference/datamodel.rst:2720 +#: reference/datamodel.rst:2734 msgid "" "class Meta(type):\n" " pass\n" @@ -3093,41 +3108,41 @@ msgid "" " pass" msgstr "" -#: reference/datamodel.rst:2729 +#: reference/datamodel.rst:2743 msgid "" "Any other keyword arguments that are specified in the class definition are " "passed through to all metaclass operations described below." msgstr "" -#: reference/datamodel.rst:2732 +#: reference/datamodel.rst:2746 msgid "When a class definition is executed, the following steps occur:" msgstr "" -#: reference/datamodel.rst:2734 +#: reference/datamodel.rst:2748 msgid "MRO entries are resolved;" msgstr "" -#: reference/datamodel.rst:2735 +#: reference/datamodel.rst:2749 msgid "the appropriate metaclass is determined;" msgstr "" -#: reference/datamodel.rst:2736 +#: reference/datamodel.rst:2750 msgid "the class namespace is prepared;" msgstr "" -#: reference/datamodel.rst:2737 +#: reference/datamodel.rst:2751 msgid "the class body is executed;" msgstr "" -#: reference/datamodel.rst:2738 +#: reference/datamodel.rst:2752 msgid "the class object is created." msgstr "" -#: reference/datamodel.rst:2742 +#: reference/datamodel.rst:2756 msgid "Resolving MRO entries" msgstr "" -#: reference/datamodel.rst:2746 +#: reference/datamodel.rst:2760 msgid "" "If a base that appears in a class definition is not an instance of :class:" "`type`, then an :meth:`!__mro_entries__` method is searched on the base. If " @@ -3139,59 +3154,59 @@ msgid "" "is ignored." msgstr "" -#: reference/datamodel.rst:2757 +#: reference/datamodel.rst:2771 msgid ":func:`types.resolve_bases`" msgstr "" -#: reference/datamodel.rst:2758 +#: reference/datamodel.rst:2772 msgid "Dynamically resolve bases that are not instances of :class:`type`." msgstr "" -#: reference/datamodel.rst:2760 +#: reference/datamodel.rst:2774 msgid ":func:`types.get_original_bases`" msgstr "" -#: reference/datamodel.rst:2761 +#: reference/datamodel.rst:2775 msgid "" "Retrieve a class's \"original bases\" prior to modifications by :meth:" "`~object.__mro_entries__`." msgstr "" -#: reference/datamodel.rst:2764 +#: reference/datamodel.rst:2778 msgid ":pep:`560`" msgstr "" -#: reference/datamodel.rst:2765 +#: reference/datamodel.rst:2779 msgid "Core support for typing module and generic types." msgstr "" -#: reference/datamodel.rst:2769 +#: reference/datamodel.rst:2783 msgid "Determining the appropriate metaclass" msgstr "" -#: reference/datamodel.rst:2773 +#: reference/datamodel.rst:2787 msgid "" "The appropriate metaclass for a class definition is determined as follows:" msgstr "" -#: reference/datamodel.rst:2775 +#: reference/datamodel.rst:2789 msgid "" "if no bases and no explicit metaclass are given, then :func:`type` is used;" msgstr "" -#: reference/datamodel.rst:2776 +#: reference/datamodel.rst:2790 msgid "" "if an explicit metaclass is given and it is *not* an instance of :func:" "`type`, then it is used directly as the metaclass;" msgstr "" -#: reference/datamodel.rst:2778 +#: reference/datamodel.rst:2792 msgid "" "if an instance of :func:`type` is given as the explicit metaclass, or bases " "are defined, then the most derived metaclass is used." msgstr "" -#: reference/datamodel.rst:2781 +#: reference/datamodel.rst:2795 msgid "" "The most derived metaclass is selected from the explicitly specified " "metaclass (if any) and the metaclasses (i.e. ``type(cls)``) of all specified " @@ -3200,11 +3215,11 @@ msgid "" "that criterion, then the class definition will fail with ``TypeError``." msgstr "" -#: reference/datamodel.rst:2791 +#: reference/datamodel.rst:2805 msgid "Preparing the class namespace" msgstr "" -#: reference/datamodel.rst:2796 +#: reference/datamodel.rst:2810 msgid "" "Once the appropriate metaclass has been identified, then the class namespace " "is prepared. If the metaclass has a ``__prepare__`` attribute, it is called " @@ -3216,25 +3231,25 @@ msgid "" "copied into a new ``dict``." msgstr "" -#: reference/datamodel.rst:2805 +#: reference/datamodel.rst:2819 msgid "" "If the metaclass has no ``__prepare__`` attribute, then the class namespace " "is initialised as an empty ordered mapping." msgstr "" -#: reference/datamodel.rst:2810 +#: reference/datamodel.rst:2824 msgid ":pep:`3115` - Metaclasses in Python 3000" msgstr "" -#: reference/datamodel.rst:2811 +#: reference/datamodel.rst:2825 msgid "Introduced the ``__prepare__`` namespace hook" msgstr "" -#: reference/datamodel.rst:2815 +#: reference/datamodel.rst:2829 msgid "Executing the class body" msgstr "" -#: reference/datamodel.rst:2820 +#: reference/datamodel.rst:2834 msgid "" "The class body is executed (approximately) as ``exec(body, globals(), " "namespace)``. The key difference from a normal call to :func:`exec` is that " @@ -3243,7 +3258,7 @@ msgid "" "inside a function." msgstr "" -#: reference/datamodel.rst:2826 +#: reference/datamodel.rst:2840 msgid "" "However, even when the class definition occurs inside the function, methods " "defined inside the class still cannot see names defined at the class scope. " @@ -3252,11 +3267,11 @@ msgid "" "reference described in the next section." msgstr "" -#: reference/datamodel.rst:2835 +#: reference/datamodel.rst:2849 msgid "Creating the class object" msgstr "" -#: reference/datamodel.rst:2842 +#: reference/datamodel.rst:2856 msgid "" "Once the class namespace has been populated by executing the class body, the " "class object is created by calling ``metaclass(name, bases, namespace, " @@ -3264,7 +3279,7 @@ msgid "" "to ``__prepare__``)." msgstr "" -#: reference/datamodel.rst:2847 +#: reference/datamodel.rst:2861 msgid "" "This class object is the one that will be referenced by the zero-argument " "form of :func:`super`. ``__class__`` is an implicit closure reference " @@ -3275,7 +3290,7 @@ msgid "" "is identified based on the first argument passed to the method." msgstr "" -#: reference/datamodel.rst:2857 +#: reference/datamodel.rst:2871 msgid "" "In CPython 3.6 and later, the ``__class__`` cell is passed to the metaclass " "as a ``__classcell__`` entry in the class namespace. If present, this must " @@ -3284,39 +3299,39 @@ msgid "" "in Python 3.8." msgstr "" -#: reference/datamodel.rst:2863 +#: reference/datamodel.rst:2877 msgid "" "When using the default metaclass :class:`type`, or any metaclass that " "ultimately calls ``type.__new__``, the following additional customization " "steps are invoked after creating the class object:" msgstr "" -#: reference/datamodel.rst:2867 +#: reference/datamodel.rst:2881 msgid "" "The ``type.__new__`` method collects all of the attributes in the class " "namespace that define a :meth:`~object.__set_name__` method;" msgstr "" -#: reference/datamodel.rst:2869 +#: reference/datamodel.rst:2883 msgid "" "Those ``__set_name__`` methods are called with the class being defined and " "the assigned name of that particular attribute;" msgstr "" -#: reference/datamodel.rst:2871 +#: reference/datamodel.rst:2885 msgid "" "The :meth:`~object.__init_subclass__` hook is called on the immediate parent " "of the new class in its method resolution order." msgstr "" -#: reference/datamodel.rst:2874 +#: reference/datamodel.rst:2888 msgid "" "After the class object is created, it is passed to the class decorators " "included in the class definition (if any) and the resulting object is bound " "in the local namespace as the defined class." msgstr "" -#: reference/datamodel.rst:2878 +#: reference/datamodel.rst:2892 msgid "" "When a new class is created by ``type.__new__``, the object provided as the " "namespace parameter is copied to a new ordered mapping and the original " @@ -3324,19 +3339,19 @@ msgid "" "becomes the :attr:`~type.__dict__` attribute of the class object." msgstr "" -#: reference/datamodel.rst:2885 +#: reference/datamodel.rst:2899 msgid ":pep:`3135` - New super" msgstr "" -#: reference/datamodel.rst:2886 +#: reference/datamodel.rst:2900 msgid "Describes the implicit ``__class__`` closure reference" msgstr "" -#: reference/datamodel.rst:2890 +#: reference/datamodel.rst:2904 msgid "Uses for metaclasses" msgstr "" -#: reference/datamodel.rst:2892 +#: reference/datamodel.rst:2906 msgid "" "The potential uses for metaclasses are boundless. Some ideas that have been " "explored include enum, logging, interface checking, automatic delegation, " @@ -3344,17 +3359,17 @@ msgid "" "locking/synchronization." msgstr "" -#: reference/datamodel.rst:2899 +#: reference/datamodel.rst:2913 msgid "Customizing instance and subclass checks" msgstr "" -#: reference/datamodel.rst:2901 +#: reference/datamodel.rst:2915 msgid "" "The following methods are used to override the default behavior of the :func:" "`isinstance` and :func:`issubclass` built-in functions." msgstr "" -#: reference/datamodel.rst:2904 +#: reference/datamodel.rst:2918 msgid "" "In particular, the metaclass :class:`abc.ABCMeta` implements these methods " "in order to allow the addition of Abstract Base Classes (ABCs) as \"virtual " @@ -3362,21 +3377,21 @@ msgid "" "other ABCs." msgstr "" -#: reference/datamodel.rst:2911 +#: reference/datamodel.rst:2925 msgid "" "Return true if *instance* should be considered a (direct or indirect) " "instance of *class*. If defined, called to implement ``isinstance(instance, " "class)``." msgstr "" -#: reference/datamodel.rst:2918 +#: reference/datamodel.rst:2932 msgid "" "Return true if *subclass* should be considered a (direct or indirect) " "subclass of *class*. If defined, called to implement ``issubclass(subclass, " "class)``." msgstr "" -#: reference/datamodel.rst:2923 +#: reference/datamodel.rst:2937 msgid "" "Note that these methods are looked up on the type (metaclass) of a class. " "They cannot be defined as class methods in the actual class. This is " @@ -3384,11 +3399,11 @@ msgid "" "only in this case the instance is itself a class." msgstr "" -#: reference/datamodel.rst:2930 +#: reference/datamodel.rst:2944 msgid ":pep:`3119` - Introducing Abstract Base Classes" msgstr "" -#: reference/datamodel.rst:2931 +#: reference/datamodel.rst:2945 msgid "" "Includes the specification for customizing :func:`isinstance` and :func:" "`issubclass` behavior through :meth:`~type.__instancecheck__` and :meth:" @@ -3397,11 +3412,11 @@ msgid "" "language." msgstr "" -#: reference/datamodel.rst:2939 +#: reference/datamodel.rst:2953 msgid "Emulating generic types" msgstr "" -#: reference/datamodel.rst:2941 +#: reference/datamodel.rst:2955 msgid "" "When using :term:`type annotations`, it is often useful to " "*parameterize* a :term:`generic type` using Python's square-brackets " @@ -3409,65 +3424,65 @@ msgid "" "a :class:`list` in which all the elements are of type :class:`int`." msgstr "" -#: reference/datamodel.rst:2948 +#: reference/datamodel.rst:2962 msgid ":pep:`484` - Type Hints" msgstr "" -#: reference/datamodel.rst:2949 +#: reference/datamodel.rst:2963 msgid "Introducing Python's framework for type annotations" msgstr "" -#: reference/datamodel.rst:2951 +#: reference/datamodel.rst:2965 msgid ":ref:`Generic Alias Types`" msgstr "" -#: reference/datamodel.rst:2952 +#: reference/datamodel.rst:2966 msgid "Documentation for objects representing parameterized generic classes" msgstr "" -#: reference/datamodel.rst:2954 +#: reference/datamodel.rst:2968 msgid "" ":ref:`Generics`, :ref:`user-defined generics` and :" "class:`typing.Generic`" msgstr "" -#: reference/datamodel.rst:2955 +#: reference/datamodel.rst:2969 msgid "" "Documentation on how to implement generic classes that can be parameterized " "at runtime and understood by static type-checkers." msgstr "" -#: reference/datamodel.rst:2958 +#: reference/datamodel.rst:2972 msgid "" "A class can *generally* only be parameterized if it defines the special " "class method ``__class_getitem__()``." msgstr "" -#: reference/datamodel.rst:2963 +#: reference/datamodel.rst:2977 msgid "" "Return an object representing the specialization of a generic class by type " "arguments found in *key*." msgstr "" -#: reference/datamodel.rst:2966 +#: reference/datamodel.rst:2980 msgid "" "When defined on a class, ``__class_getitem__()`` is automatically a class " "method. As such, there is no need for it to be decorated with :func:" "`@classmethod` when it is defined." msgstr "" -#: reference/datamodel.rst:2972 +#: reference/datamodel.rst:2986 msgid "The purpose of *__class_getitem__*" msgstr "" -#: reference/datamodel.rst:2974 +#: reference/datamodel.rst:2988 msgid "" "The purpose of :meth:`~object.__class_getitem__` is to allow runtime " "parameterization of standard-library generic classes in order to more easily " "apply :term:`type hints` to these classes." msgstr "" -#: reference/datamodel.rst:2978 +#: reference/datamodel.rst:2992 msgid "" "To implement custom generic classes that can be parameterized at runtime and " "understood by static type-checkers, users should either inherit from a " @@ -3476,7 +3491,7 @@ msgid "" "own implementation of ``__class_getitem__()``." msgstr "" -#: reference/datamodel.rst:2984 +#: reference/datamodel.rst:2998 msgid "" "Custom implementations of :meth:`~object.__class_getitem__` on classes " "defined outside of the standard library may not be understood by third-party " @@ -3484,11 +3499,11 @@ msgid "" "purposes other than type hinting is discouraged." msgstr "" -#: reference/datamodel.rst:2994 +#: reference/datamodel.rst:3008 msgid "*__class_getitem__* versus *__getitem__*" msgstr "" -#: reference/datamodel.rst:2996 +#: reference/datamodel.rst:3010 msgid "" "Usually, the :ref:`subscription` of an object using square " "brackets will call the :meth:`~object.__getitem__` instance method defined " @@ -3498,14 +3513,14 @@ msgid "" "genericalias>` object if it is properly defined." msgstr "" -#: reference/datamodel.rst:3003 +#: reference/datamodel.rst:3017 msgid "" "Presented with the :term:`expression` ``obj[x]``, the Python interpreter " "follows something like the following process to decide whether :meth:" "`~object.__getitem__` or :meth:`~object.__class_getitem__` should be called::" msgstr "" -#: reference/datamodel.rst:3008 +#: reference/datamodel.rst:3022 msgid "" "from inspect import isclass\n" "\n" @@ -3531,7 +3546,7 @@ msgid "" " )" msgstr "" -#: reference/datamodel.rst:3031 +#: reference/datamodel.rst:3045 msgid "" "In Python, all classes are themselves instances of other classes. The class " "of a class is known as that class's :term:`metaclass`, and most classes have " @@ -3541,7 +3556,7 @@ msgid "" "__class_getitem__` being called::" msgstr "" -#: reference/datamodel.rst:3038 +#: reference/datamodel.rst:3052 msgid "" ">>> # list has class \"type\" as its metaclass, like most classes:\n" ">>> type(list)\n" @@ -3556,14 +3571,14 @@ msgid "" "" msgstr "" -#: reference/datamodel.rst:3050 +#: reference/datamodel.rst:3064 msgid "" "However, if a class has a custom metaclass that defines :meth:`~object." "__getitem__`, subscribing the class may result in different behaviour. An " "example of this can be found in the :mod:`enum` module::" msgstr "" -#: reference/datamodel.rst:3054 +#: reference/datamodel.rst:3068 msgid "" ">>> from enum import Enum\n" ">>> class Menu(Enum):\n" @@ -3583,33 +3598,33 @@ msgid "" "" msgstr "" -#: reference/datamodel.rst:3073 +#: reference/datamodel.rst:3087 msgid ":pep:`560` - Core Support for typing module and generic types" msgstr "" -#: reference/datamodel.rst:3074 +#: reference/datamodel.rst:3088 msgid "" "Introducing :meth:`~object.__class_getitem__`, and outlining when a :ref:" "`subscription` results in ``__class_getitem__()`` being " "called instead of :meth:`~object.__getitem__`" msgstr "" -#: reference/datamodel.rst:3082 +#: reference/datamodel.rst:3096 msgid "Emulating callable objects" msgstr "" -#: reference/datamodel.rst:3089 +#: reference/datamodel.rst:3103 msgid "" "Called when the instance is \"called\" as a function; if this method is " "defined, ``x(arg1, arg2, ...)`` roughly translates to ``type(x).__call__(x, " "arg1, ...)``. The :class:`object` class itself does not provide this method." msgstr "" -#: reference/datamodel.rst:3097 +#: reference/datamodel.rst:3111 msgid "Emulating container types" msgstr "" -#: reference/datamodel.rst:3099 +#: reference/datamodel.rst:3113 msgid "" "The following methods can be defined to implement container objects. None of " "them are provided by the :class:`object` class itself. Containers usually " @@ -3646,7 +3661,7 @@ msgid "" "should iterate through the values." msgstr "" -#: reference/datamodel.rst:3141 +#: reference/datamodel.rst:3155 msgid "" "Called to implement the built-in function :func:`len`. Should return the " "length of the object, an integer ``>=`` 0. Also, an object that doesn't " @@ -3654,7 +3669,7 @@ msgid "" "returns zero is considered to be false in a Boolean context." msgstr "" -#: reference/datamodel.rst:3148 +#: reference/datamodel.rst:3162 msgid "" "In CPython, the length is required to be at most :data:`sys.maxsize`. If the " "length is larger than :data:`!sys.maxsize` some features (such as :func:" @@ -3663,7 +3678,7 @@ msgid "" "`~object.__bool__` method." msgstr "" -#: reference/datamodel.rst:3157 +#: reference/datamodel.rst:3171 msgid "" "Called to implement :func:`operator.length_hint`. Should return an estimated " "length for the object (which may be greater or less than the actual length). " @@ -3673,28 +3688,28 @@ msgid "" "never required for correctness." msgstr "" -#: reference/datamodel.rst:3171 +#: reference/datamodel.rst:3185 msgid "" "Slicing is done exclusively with the following three methods. A call like ::" msgstr "" -#: reference/datamodel.rst:3173 +#: reference/datamodel.rst:3187 msgid "a[1:2] = b" msgstr "" -#: reference/datamodel.rst:3175 +#: reference/datamodel.rst:3189 msgid "is translated to ::" msgstr "" -#: reference/datamodel.rst:3177 +#: reference/datamodel.rst:3191 msgid "a[slice(1, 2, None)] = b" msgstr "" -#: reference/datamodel.rst:3179 +#: reference/datamodel.rst:3193 msgid "and so forth. Missing slice items are always filled in with ``None``." msgstr "" -#: reference/datamodel.rst:3184 +#: reference/datamodel.rst:3198 msgid "" "Called to implement evaluation of ``self[key]``. For :term:`sequence` types, " "the accepted keys should be integers. Optionally, they may support :class:" @@ -3706,20 +3721,20 @@ msgid "" "`KeyError` should be raised." msgstr "" -#: reference/datamodel.rst:3196 +#: reference/datamodel.rst:3210 msgid "" ":keyword:`for` loops expect that an :exc:`IndexError` will be raised for " "illegal indexes to allow proper detection of the end of the sequence." msgstr "" -#: reference/datamodel.rst:3201 +#: reference/datamodel.rst:3215 msgid "" "When :ref:`subscripting` a *class*, the special class method :" "meth:`~object.__class_getitem__` may be called instead of ``__getitem__()``. " "See :ref:`classgetitem-versus-getitem` for more details." msgstr "" -#: reference/datamodel.rst:3209 +#: reference/datamodel.rst:3223 msgid "" "Called to implement assignment to ``self[key]``. Same note as for :meth:" "`__getitem__`. This should only be implemented for mappings if the objects " @@ -3728,7 +3743,7 @@ msgid "" "for improper *key* values as for the :meth:`__getitem__` method." msgstr "" -#: reference/datamodel.rst:3218 +#: reference/datamodel.rst:3232 msgid "" "Called to implement deletion of ``self[key]``. Same note as for :meth:" "`__getitem__`. This should only be implemented for mappings if the objects " @@ -3737,13 +3752,13 @@ msgid "" "values as for the :meth:`__getitem__` method." msgstr "" -#: reference/datamodel.rst:3227 +#: reference/datamodel.rst:3241 msgid "" "Called by :class:`dict`\\ .\\ :meth:`__getitem__` to implement ``self[key]`` " "for dict subclasses when key is not in the dictionary." msgstr "" -#: reference/datamodel.rst:3233 +#: reference/datamodel.rst:3247 msgid "" "This method is called when an :term:`iterator` is required for a container. " "This method should return a new iterator object that can iterate over all " @@ -3751,14 +3766,14 @@ msgid "" "of the container." msgstr "" -#: reference/datamodel.rst:3241 +#: reference/datamodel.rst:3255 msgid "" "Called (if present) by the :func:`reversed` built-in to implement reverse " "iteration. It should return a new iterator object that iterates over all " "the objects in the container in reverse order." msgstr "" -#: reference/datamodel.rst:3245 +#: reference/datamodel.rst:3259 msgid "" "If the :meth:`__reversed__` method is not provided, the :func:`reversed` " "built-in will fall back to using the sequence protocol (:meth:`__len__` and :" @@ -3767,7 +3782,7 @@ msgid "" "more efficient than the one provided by :func:`reversed`." msgstr "" -#: reference/datamodel.rst:3252 +#: reference/datamodel.rst:3266 msgid "" "The membership test operators (:keyword:`in` and :keyword:`not in`) are " "normally implemented as an iteration through a container. However, container " @@ -3775,14 +3790,14 @@ msgid "" "implementation, which also does not require the object be iterable." msgstr "" -#: reference/datamodel.rst:3259 +#: reference/datamodel.rst:3273 msgid "" "Called to implement membership test operators. Should return true if *item* " "is in *self*, false otherwise. For mapping objects, this should consider " "the keys of the mapping rather than the values or the key-item pairs." msgstr "" -#: reference/datamodel.rst:3263 +#: reference/datamodel.rst:3277 msgid "" "For objects that don't define :meth:`__contains__`, the membership test " "first tries iteration via :meth:`__iter__`, then the old sequence iteration " @@ -3790,11 +3805,11 @@ msgid "" "reference `." msgstr "" -#: reference/datamodel.rst:3272 +#: reference/datamodel.rst:3286 msgid "Emulating numeric types" msgstr "" -#: reference/datamodel.rst:3274 +#: reference/datamodel.rst:3288 msgid "" "The following methods can be defined to emulate numeric objects. Methods " "corresponding to operations that are not supported by the particular kind of " @@ -3802,7 +3817,7 @@ msgid "" "should be left undefined." msgstr "" -#: reference/datamodel.rst:3300 +#: reference/datamodel.rst:3314 msgid "" "These methods are called to implement the binary arithmetic operations " "(``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`, :func:" @@ -3816,13 +3831,13 @@ msgid "" "`pow` function is to be supported." msgstr "" -#: reference/datamodel.rst:3311 +#: reference/datamodel.rst:3325 msgid "" "If one of those methods does not support the operation with the supplied " "arguments, it should return :data:`NotImplemented`." msgstr "" -#: reference/datamodel.rst:3334 +#: reference/datamodel.rst:3348 msgid "" "These methods are called to implement the binary arithmetic operations " "(``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`, :func:" @@ -3836,21 +3851,21 @@ msgid "" "`NotImplemented` or ``type(y)`` is a subclass of ``type(x)``. [#]_" msgstr "" -#: reference/datamodel.rst:3345 +#: reference/datamodel.rst:3359 msgid "" "Note that :meth:`__rpow__` should be defined to accept an optional third " "argument if the three-argument version of the built-in :func:`pow` function " "is to be supported." msgstr "" -#: reference/datamodel.rst:3351 +#: reference/datamodel.rst:3365 msgid "" "Three-argument :func:`pow` now try calling :meth:`~object.__rpow__` if " "necessary. Previously it was only called in two-argument :func:`!pow` and " "the binary power operator." msgstr "" -#: reference/datamodel.rst:3357 +#: reference/datamodel.rst:3371 msgid "" "If the right operand's type is a subclass of the left operand's type and " "that subclass provides a different implementation of the reflected method " @@ -3859,7 +3874,7 @@ msgid "" "ancestors' operations." msgstr "" -#: reference/datamodel.rst:3377 +#: reference/datamodel.rst:3391 msgid "" "These methods are called to implement the augmented arithmetic assignments " "(``+=``, ``-=``, ``*=``, ``@=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``, " @@ -3877,19 +3892,19 @@ msgid "" "data model." msgstr "" -#: reference/datamodel.rst:3400 +#: reference/datamodel.rst:3414 msgid "" "Called to implement the unary arithmetic operations (``-``, ``+``, :func:" "`abs` and ``~``)." msgstr "" -#: reference/datamodel.rst:3413 +#: reference/datamodel.rst:3427 msgid "" "Called to implement the built-in functions :func:`complex`, :func:`int` and :" "func:`float`. Should return a value of the appropriate type." msgstr "" -#: reference/datamodel.rst:3420 +#: reference/datamodel.rst:3434 msgid "" "Called to implement :func:`operator.index`, and whenever Python needs to " "losslessly convert the numeric object to an integer object (such as in " @@ -3898,14 +3913,14 @@ msgid "" "integer type. Must return an integer." msgstr "" -#: reference/datamodel.rst:3426 +#: reference/datamodel.rst:3440 msgid "" "If :meth:`__int__`, :meth:`__float__` and :meth:`__complex__` are not " "defined then corresponding built-in functions :func:`int`, :func:`float` " "and :func:`complex` fall back to :meth:`__index__`." msgstr "" -#: reference/datamodel.rst:3438 +#: reference/datamodel.rst:3452 msgid "" "Called to implement the built-in function :func:`round` and :mod:`math` " "functions :func:`~math.trunc`, :func:`~math.floor` and :func:`~math.ceil`. " @@ -3914,16 +3929,16 @@ msgid "" "(typically an :class:`int`)." msgstr "" -#: reference/datamodel.rst:3444 +#: reference/datamodel.rst:3458 msgid "" ":func:`int` no longer delegates to the :meth:`~object.__trunc__` method." msgstr "" -#: reference/datamodel.rst:3451 +#: reference/datamodel.rst:3465 msgid "With Statement Context Managers" msgstr "" -#: reference/datamodel.rst:3453 +#: reference/datamodel.rst:3467 msgid "" "A :dfn:`context manager` is an object that defines the runtime context to be " "established when executing a :keyword:`with` statement. The context manager " @@ -3933,34 +3948,34 @@ msgid "" "can also be used by directly invoking their methods." msgstr "" -#: reference/datamodel.rst:3464 +#: reference/datamodel.rst:3478 msgid "" "Typical uses of context managers include saving and restoring various kinds " "of global state, locking and unlocking resources, closing opened files, etc." msgstr "" -#: reference/datamodel.rst:3467 +#: reference/datamodel.rst:3481 msgid "" "For more information on context managers, see :ref:`typecontextmanager`. " "The :class:`object` class itself does not provide the context manager " "methods." msgstr "" -#: reference/datamodel.rst:3473 +#: reference/datamodel.rst:3487 msgid "" "Enter the runtime context related to this object. The :keyword:`with` " "statement will bind this method's return value to the target(s) specified in " "the :keyword:`!as` clause of the statement, if any." msgstr "" -#: reference/datamodel.rst:3480 +#: reference/datamodel.rst:3494 msgid "" "Exit the runtime context related to this object. The parameters describe the " "exception that caused the context to be exited. If the context was exited " "without an exception, all three arguments will be :const:`None`." msgstr "" -#: reference/datamodel.rst:3484 +#: reference/datamodel.rst:3498 msgid "" "If an exception is supplied, and the method wishes to suppress the exception " "(i.e., prevent it from being propagated), it should return a true value. " @@ -3968,27 +3983,27 @@ msgid "" "method." msgstr "" -#: reference/datamodel.rst:3488 +#: reference/datamodel.rst:3502 msgid "" "Note that :meth:`~object.__exit__` methods should not reraise the passed-in " "exception; this is the caller's responsibility." msgstr "" -#: reference/datamodel.rst:3494 +#: reference/datamodel.rst:3508 msgid ":pep:`343` - The \"with\" statement" msgstr "" -#: reference/datamodel.rst:3495 +#: reference/datamodel.rst:3509 msgid "" "The specification, background, and examples for the Python :keyword:`with` " "statement." msgstr "" -#: reference/datamodel.rst:3502 +#: reference/datamodel.rst:3516 msgid "Customizing positional arguments in class pattern matching" msgstr "" -#: reference/datamodel.rst:3504 +#: reference/datamodel.rst:3518 msgid "" "When using a class name in a pattern, positional arguments in the pattern " "are not allowed by default, i.e. ``case MyClass(x, y)`` is typically invalid " @@ -3996,7 +4011,7 @@ msgid "" "pattern, the class needs to define a *__match_args__* attribute." msgstr "" -#: reference/datamodel.rst:3511 +#: reference/datamodel.rst:3525 msgid "" "This class variable can be assigned a tuple of strings. When this class is " "used in a class pattern with positional arguments, each positional argument " @@ -4005,7 +4020,7 @@ msgid "" "to setting it to ``()``." msgstr "" -#: reference/datamodel.rst:3517 +#: reference/datamodel.rst:3531 msgid "" "For example, if ``MyClass.__match_args__`` is ``(\"left\", \"center\", " "\"right\")`` that means that ``case MyClass(x, y)`` is equivalent to ``case " @@ -4015,19 +4030,19 @@ msgid "" "exc:`TypeError`." msgstr "" -#: reference/datamodel.rst:3527 +#: reference/datamodel.rst:3541 msgid ":pep:`634` - Structural Pattern Matching" msgstr "" -#: reference/datamodel.rst:3528 +#: reference/datamodel.rst:3542 msgid "The specification for the Python ``match`` statement." msgstr "" -#: reference/datamodel.rst:3534 +#: reference/datamodel.rst:3548 msgid "Emulating buffer types" msgstr "" -#: reference/datamodel.rst:3536 +#: reference/datamodel.rst:3550 msgid "" "The :ref:`buffer protocol ` provides a way for Python objects " "to expose efficient access to a low-level memory array. This protocol is " @@ -4035,13 +4050,13 @@ msgid "" "and third-party libraries may define additional buffer types." msgstr "" -#: reference/datamodel.rst:3541 +#: reference/datamodel.rst:3555 msgid "" "While buffer types are usually implemented in C, it is also possible to " "implement the protocol in Python." msgstr "" -#: reference/datamodel.rst:3546 +#: reference/datamodel.rst:3560 msgid "" "Called when a buffer is requested from *self* (for example, by the :class:" "`memoryview` constructor). The *flags* argument is an integer representing " @@ -4051,7 +4066,7 @@ msgid "" "`memoryview` object." msgstr "" -#: reference/datamodel.rst:3555 +#: reference/datamodel.rst:3569 msgid "" "Called when a buffer is no longer needed. The *buffer* argument is a :class:" "`memoryview` object that was previously returned by :meth:`~object." @@ -4060,35 +4075,35 @@ msgid "" "to perform any cleanup are not required to implement this method." msgstr "" -#: reference/datamodel.rst:3566 +#: reference/datamodel.rst:3580 msgid ":pep:`688` - Making the buffer protocol accessible in Python" msgstr "" -#: reference/datamodel.rst:3567 +#: reference/datamodel.rst:3581 msgid "" "Introduces the Python ``__buffer__`` and ``__release_buffer__`` methods." msgstr "" -#: reference/datamodel.rst:3569 +#: reference/datamodel.rst:3583 msgid ":class:`collections.abc.Buffer`" msgstr "" -#: reference/datamodel.rst:3570 +#: reference/datamodel.rst:3584 msgid "ABC for buffer types." msgstr "" -#: reference/datamodel.rst:3573 +#: reference/datamodel.rst:3587 msgid "Annotations" msgstr "" -#: reference/datamodel.rst:3575 +#: reference/datamodel.rst:3589 msgid "" "Functions, classes, and modules may contain :term:`annotations " "`, which are a way to associate information (usually :term:`type " "hints `) with a symbol." msgstr "" -#: reference/datamodel.rst:3581 +#: reference/datamodel.rst:3595 msgid "" "This attribute contains the annotations for an object. It is :ref:`lazily " "evaluated `, so accessing the attribute may execute " @@ -4096,24 +4111,24 @@ msgid "" "attribute is set to a dictionary mapping from variable names to annotations." msgstr "" -#: reference/datamodel.rst:3586 +#: reference/datamodel.rst:3600 msgid "Annotations are now lazily evaluated." msgstr "" -#: reference/datamodel.rst:3591 +#: reference/datamodel.rst:3605 msgid "" "An :term:`annotate function`. Returns a new dictionary object mapping " "attribute/parameter names to their annotation values." msgstr "" -#: reference/datamodel.rst:3594 +#: reference/datamodel.rst:3608 msgid "" "Takes a format parameter specifying the format in which annotations values " "should be provided. It must be a member of the :class:`annotationlib.Format` " "enum, or an integer with a value corresponding to a member of the enum." msgstr "" -#: reference/datamodel.rst:3598 +#: reference/datamodel.rst:3612 msgid "" "If an annotate function doesn't support the requested format, it must raise :" "exc:`NotImplementedError`. Annotate functions must always support :attr:" @@ -4121,34 +4136,34 @@ msgid "" "`NotImplementedError()` when called with this format." msgstr "" -#: reference/datamodel.rst:3603 +#: reference/datamodel.rst:3617 msgid "" "When called with :attr:`~annotationlib.Format.VALUE` format, an annotate " "function may raise :exc:`NameError`; it must not raise :exc:`!NameError` " "when called requesting any other format." msgstr "" -#: reference/datamodel.rst:3606 +#: reference/datamodel.rst:3620 msgid "" "If an object does not have any annotations, :attr:`~object.__annotate__` " "should preferably be set to ``None`` (it can’t be deleted), rather than set " "to a function that returns an empty dict." msgstr "" -#: reference/datamodel.rst:3613 +#: reference/datamodel.rst:3627 msgid ":pep:`649` --- Deferred evaluation of annotation using descriptors" msgstr "" -#: reference/datamodel.rst:3614 +#: reference/datamodel.rst:3628 msgid "" "Introduces lazy evaluation of annotations and the ``__annotate__`` function." msgstr "" -#: reference/datamodel.rst:3620 +#: reference/datamodel.rst:3634 msgid "Special method lookup" msgstr "" -#: reference/datamodel.rst:3622 +#: reference/datamodel.rst:3636 msgid "" "For custom classes, implicit invocations of special methods are only " "guaranteed to work correctly if defined on an object's type, not in the " @@ -4156,7 +4171,7 @@ msgid "" "following code raises an exception::" msgstr "" -#: reference/datamodel.rst:3627 +#: reference/datamodel.rst:3641 msgid "" ">>> class C:\n" "... pass\n" @@ -4169,7 +4184,7 @@ msgid "" "TypeError: object of type 'C' has no len()" msgstr "" -#: reference/datamodel.rst:3637 +#: reference/datamodel.rst:3651 msgid "" "The rationale behind this behaviour lies with a number of special methods " "such as :meth:`~object.__hash__` and :meth:`~object.__repr__` that are " @@ -4178,7 +4193,7 @@ msgid "" "invoked on the type object itself::" msgstr "" -#: reference/datamodel.rst:3644 +#: reference/datamodel.rst:3658 msgid "" ">>> 1 .__hash__() == hash(1)\n" "True\n" @@ -4188,14 +4203,14 @@ msgid "" "TypeError: descriptor '__hash__' of 'int' object needs an argument" msgstr "" -#: reference/datamodel.rst:3651 +#: reference/datamodel.rst:3665 msgid "" "Incorrectly attempting to invoke an unbound method of a class in this way is " "sometimes referred to as 'metaclass confusion', and is avoided by bypassing " "the instance when looking up special methods::" msgstr "" -#: reference/datamodel.rst:3655 +#: reference/datamodel.rst:3669 msgid "" ">>> type(1).__hash__(1) == hash(1)\n" "True\n" @@ -4203,14 +4218,14 @@ msgid "" "True" msgstr "" -#: reference/datamodel.rst:3660 +#: reference/datamodel.rst:3674 msgid "" "In addition to bypassing any instance attributes in the interest of " "correctness, implicit special method lookup generally also bypasses the :" "meth:`~object.__getattribute__` method even of the object's metaclass::" msgstr "" -#: reference/datamodel.rst:3664 +#: reference/datamodel.rst:3678 msgid "" ">>> class Meta(type):\n" "... def __getattribute__(*args):\n" @@ -4235,7 +4250,7 @@ msgid "" "10" msgstr "" -#: reference/datamodel.rst:3686 +#: reference/datamodel.rst:3700 msgid "" "Bypassing the :meth:`~object.__getattribute__` machinery in this fashion " "provides significant scope for speed optimisations within the interpreter, " @@ -4244,29 +4259,29 @@ msgid "" "consistently invoked by the interpreter)." msgstr "" -#: reference/datamodel.rst:3697 +#: reference/datamodel.rst:3711 msgid "Coroutines" msgstr "" -#: reference/datamodel.rst:3701 +#: reference/datamodel.rst:3715 msgid "Awaitable Objects" msgstr "" -#: reference/datamodel.rst:3703 +#: reference/datamodel.rst:3717 msgid "" "An :term:`awaitable` object generally implements an :meth:`~object." "__await__` method. :term:`Coroutine objects ` returned from :" "keyword:`async def` functions are awaitable." msgstr "" -#: reference/datamodel.rst:3709 +#: reference/datamodel.rst:3723 msgid "" "The :term:`generator iterator` objects returned from generators decorated " "with :func:`types.coroutine` are also awaitable, but they do not implement :" "meth:`~object.__await__`." msgstr "" -#: reference/datamodel.rst:3715 +#: reference/datamodel.rst:3729 msgid "" "Must return an :term:`iterator`. Should be used to implement :term:" "`awaitable` objects. For instance, :class:`asyncio.Future` implements this " @@ -4274,7 +4289,7 @@ msgid "" "`object` class itself is not awaitable and does not provide this method." msgstr "" -#: reference/datamodel.rst:3723 +#: reference/datamodel.rst:3737 msgid "" "The language doesn't place any restriction on the type or value of the " "objects yielded by the iterator returned by ``__await__``, as this is " @@ -4282,15 +4297,15 @@ msgid "" "g. :mod:`asyncio`) that will be managing the :term:`awaitable` object." msgstr "" -#: reference/datamodel.rst:3731 +#: reference/datamodel.rst:3745 msgid ":pep:`492` for additional information about awaitable objects." msgstr "" -#: reference/datamodel.rst:3737 +#: reference/datamodel.rst:3751 msgid "Coroutine Objects" msgstr "" -#: reference/datamodel.rst:3739 +#: reference/datamodel.rst:3753 msgid "" ":term:`Coroutine objects ` are :term:`awaitable` objects. A " "coroutine's execution can be controlled by calling :meth:`~object.__await__` " @@ -4301,18 +4316,18 @@ msgid "" "should not directly raise unhandled :exc:`StopIteration` exceptions." msgstr "" -#: reference/datamodel.rst:3747 +#: reference/datamodel.rst:3761 msgid "" "Coroutines also have the methods listed below, which are analogous to those " "of generators (see :ref:`generator-methods`). However, unlike generators, " "coroutines do not directly support iteration." msgstr "" -#: reference/datamodel.rst:3751 +#: reference/datamodel.rst:3765 msgid "It is a :exc:`RuntimeError` to await on a coroutine more than once." msgstr "" -#: reference/datamodel.rst:3757 +#: reference/datamodel.rst:3771 msgid "" "Starts or resumes execution of the coroutine. If *value* is ``None``, this " "is equivalent to advancing the iterator returned by :meth:`~object." @@ -4323,7 +4338,7 @@ msgid "" "value, described above." msgstr "" -#: reference/datamodel.rst:3768 +#: reference/datamodel.rst:3782 msgid "" "Raises the specified exception in the coroutine. This method delegates to " "the :meth:`~generator.throw` method of the iterator that caused the " @@ -4334,13 +4349,13 @@ msgid "" "not caught in the coroutine, it propagates back to the caller." msgstr "" -#: reference/datamodel.rst:3779 +#: reference/datamodel.rst:3793 msgid "" "The second signature \\(type\\[, value\\[, traceback\\]\\]\\) is deprecated " "and may be removed in a future version of Python." msgstr "" -#: reference/datamodel.rst:3784 +#: reference/datamodel.rst:3798 msgid "" "Causes the coroutine to clean itself up and exit. If the coroutine is " "suspended, this method first delegates to the :meth:`~generator.close` " @@ -4350,46 +4365,46 @@ msgid "" "is marked as having finished executing, even if it was never started." msgstr "" -#: reference/datamodel.rst:3792 +#: reference/datamodel.rst:3806 msgid "" "Coroutine objects are automatically closed using the above process when they " "are about to be destroyed." msgstr "" -#: reference/datamodel.rst:3798 +#: reference/datamodel.rst:3812 msgid "Asynchronous Iterators" msgstr "" -#: reference/datamodel.rst:3800 +#: reference/datamodel.rst:3814 msgid "" "An *asynchronous iterator* can call asynchronous code in its ``__anext__`` " "method." msgstr "" -#: reference/datamodel.rst:3803 +#: reference/datamodel.rst:3817 msgid "" "Asynchronous iterators can be used in an :keyword:`async for` statement." msgstr "" -#: reference/datamodel.rst:3854 +#: reference/datamodel.rst:3868 msgid "The :class:`object` class itself does not provide these methods." msgstr "" -#: reference/datamodel.rst:3810 +#: reference/datamodel.rst:3824 msgid "Must return an *asynchronous iterator* object." msgstr "" -#: reference/datamodel.rst:3814 +#: reference/datamodel.rst:3828 msgid "" "Must return an *awaitable* resulting in a next value of the iterator. " "Should raise a :exc:`StopAsyncIteration` error when the iteration is over." msgstr "" -#: reference/datamodel.rst:3817 +#: reference/datamodel.rst:3831 msgid "An example of an asynchronous iterable object::" msgstr "" -#: reference/datamodel.rst:3819 +#: reference/datamodel.rst:3833 msgid "" "class Reader:\n" " async def readline(self):\n" @@ -4405,53 +4420,53 @@ msgid "" " return val" msgstr "" -#: reference/datamodel.rst:3834 +#: reference/datamodel.rst:3848 msgid "" "Prior to Python 3.7, :meth:`~object.__aiter__` could return an *awaitable* " "that would resolve to an :term:`asynchronous iterator `." msgstr "" -#: reference/datamodel.rst:3839 +#: reference/datamodel.rst:3853 msgid "" "Starting with Python 3.7, :meth:`~object.__aiter__` must return an " "asynchronous iterator object. Returning anything else will result in a :exc:" "`TypeError` error." msgstr "" -#: reference/datamodel.rst:3847 +#: reference/datamodel.rst:3861 msgid "Asynchronous Context Managers" msgstr "" -#: reference/datamodel.rst:3849 +#: reference/datamodel.rst:3863 msgid "" "An *asynchronous context manager* is a *context manager* that is able to " "suspend execution in its ``__aenter__`` and ``__aexit__`` methods." msgstr "" -#: reference/datamodel.rst:3852 +#: reference/datamodel.rst:3866 msgid "" "Asynchronous context managers can be used in an :keyword:`async with` " "statement." msgstr "" -#: reference/datamodel.rst:3858 +#: reference/datamodel.rst:3872 msgid "" "Semantically similar to :meth:`~object.__enter__`, the only difference being " "that it must return an *awaitable*." msgstr "" -#: reference/datamodel.rst:3863 +#: reference/datamodel.rst:3877 msgid "" "Semantically similar to :meth:`~object.__exit__`, the only difference being " "that it must return an *awaitable*." msgstr "" -#: reference/datamodel.rst:3866 +#: reference/datamodel.rst:3880 msgid "An example of an asynchronous context manager class::" msgstr "" -#: reference/datamodel.rst:3868 +#: reference/datamodel.rst:3882 msgid "" "class AsyncContextManager:\n" " async def __aenter__(self):\n" @@ -4461,18 +4476,18 @@ msgid "" " await log('exiting context')" msgstr "" -#: reference/datamodel.rst:3879 +#: reference/datamodel.rst:3893 msgid "Footnotes" msgstr "" -#: reference/datamodel.rst:3880 +#: reference/datamodel.rst:3894 msgid "" "It *is* possible in some cases to change an object's type, under certain " "controlled conditions. It generally isn't a good idea though, since it can " "lead to some very strange behaviour if it is handled incorrectly." msgstr "" -#: reference/datamodel.rst:3884 +#: reference/datamodel.rst:3898 msgid "" "The :meth:`~object.__hash__`, :meth:`~object.__iter__`, :meth:`~object." "__reversed__`, :meth:`~object.__contains__`, :meth:`~object." @@ -4481,7 +4496,7 @@ msgid "" "by relying on the behavior that ``None`` is not callable." msgstr "" -#: reference/datamodel.rst:3891 +#: reference/datamodel.rst:3905 msgid "" "\"Does not support\" here means that the class has no such method, or the " "method returns :data:`NotImplemented`. Do not set the method to ``None`` if " @@ -4489,14 +4504,14 @@ msgid "" "instead have the opposite effect of explicitly *blocking* such fallback." msgstr "" -#: reference/datamodel.rst:3897 +#: reference/datamodel.rst:3911 msgid "" "For operands of the same type, it is assumed that if the non-reflected " "method (such as :meth:`~object.__add__`) fails then the operation is not " "supported, which is why the reflected method is not called." msgstr "" -#: reference/datamodel.rst:3901 +#: reference/datamodel.rst:3915 msgid "" "If the right operand's type is a subclass of the left operand's type, the " "reflected method having precedence allows subclasses to override their " @@ -4504,14 +4519,14 @@ msgid "" msgstr "" #: reference/datamodel.rst:152 reference/datamodel.rst:187 -#: reference/datamodel.rst:232 reference/datamodel.rst:268 -#: reference/datamodel.rst:299 reference/datamodel.rst:366 -#: reference/datamodel.rst:412 reference/datamodel.rst:450 -#: reference/datamodel.rst:469 reference/datamodel.rst:522 -#: reference/datamodel.rst:675 reference/datamodel.rst:837 -#: reference/datamodel.rst:1151 reference/datamodel.rst:1326 -#: reference/datamodel.rst:1506 reference/datamodel.rst:1724 -#: reference/datamodel.rst:3167 +#: reference/datamodel.rst:232 reference/datamodel.rst:270 +#: reference/datamodel.rst:301 reference/datamodel.rst:368 +#: reference/datamodel.rst:414 reference/datamodel.rst:452 +#: reference/datamodel.rst:471 reference/datamodel.rst:524 +#: reference/datamodel.rst:677 reference/datamodel.rst:839 +#: reference/datamodel.rst:1153 reference/datamodel.rst:1340 +#: reference/datamodel.rst:1520 reference/datamodel.rst:1738 +#: reference/datamodel.rst:3181 msgid "object" msgstr "" @@ -4519,11 +4534,11 @@ msgstr "" msgid "data" msgstr "" -#: reference/datamodel.rst:299 reference/datamodel.rst:430 -#: reference/datamodel.rst:813 reference/datamodel.rst:1807 -#: reference/datamodel.rst:2056 reference/datamodel.rst:2706 -#: reference/datamodel.rst:3295 reference/datamodel.rst:3398 -#: reference/datamodel.rst:3436 +#: reference/datamodel.rst:301 reference/datamodel.rst:432 +#: reference/datamodel.rst:815 reference/datamodel.rst:1821 +#: reference/datamodel.rst:2070 reference/datamodel.rst:2720 +#: reference/datamodel.rst:3309 reference/datamodel.rst:3412 +#: reference/datamodel.rst:3450 msgid "built-in function" msgstr "" @@ -4531,7 +4546,7 @@ msgstr "" msgid "id" msgstr "" -#: reference/datamodel.rst:126 reference/datamodel.rst:2706 +#: reference/datamodel.rst:126 reference/datamodel.rst:2720 msgid "type" msgstr "" @@ -4567,7 +4582,7 @@ msgstr "" msgid "unreachable object" msgstr "" -#: reference/datamodel.rst:1151 +#: reference/datamodel.rst:1153 msgid "container" msgstr "" @@ -4579,21 +4594,21 @@ msgstr "" msgid "extension" msgstr "" -#: reference/datamodel.rst:403 reference/datamodel.rst:505 -#: reference/datamodel.rst:893 reference/datamodel.rst:1355 +#: reference/datamodel.rst:405 reference/datamodel.rst:507 +#: reference/datamodel.rst:895 reference/datamodel.rst:1369 msgid "module" msgstr "" -#: reference/datamodel.rst:268 reference/datamodel.rst:813 +#: reference/datamodel.rst:270 reference/datamodel.rst:815 msgid "C" msgstr "" -#: reference/datamodel.rst:268 reference/datamodel.rst:813 +#: reference/datamodel.rst:270 reference/datamodel.rst:815 msgid "language" msgstr "" -#: reference/datamodel.rst:1151 reference/datamodel.rst:1299 -#: reference/datamodel.rst:1319 +#: reference/datamodel.rst:1153 reference/datamodel.rst:1313 +#: reference/datamodel.rst:1333 msgid "attribute" msgstr "" @@ -4613,11 +4628,11 @@ msgstr "" msgid "ellipsis literal" msgstr "" -#: reference/datamodel.rst:1326 +#: reference/datamodel.rst:1340 msgid "numeric" msgstr "" -#: reference/datamodel.rst:238 reference/datamodel.rst:346 +#: reference/datamodel.rst:238 reference/datamodel.rst:348 msgid "integer" msgstr "" @@ -4637,829 +4652,829 @@ msgstr "" msgid "True" msgstr "" -#: reference/datamodel.rst:268 +#: reference/datamodel.rst:270 msgid "floating-point" msgstr "" -#: reference/datamodel.rst:286 +#: reference/datamodel.rst:288 msgid "number" msgstr "" -#: reference/datamodel.rst:268 +#: reference/datamodel.rst:270 msgid "Java" msgstr "" -#: reference/datamodel.rst:3408 +#: reference/datamodel.rst:3422 msgid "complex" msgstr "" -#: reference/datamodel.rst:430 reference/datamodel.rst:3137 +#: reference/datamodel.rst:432 reference/datamodel.rst:3151 msgid "len" msgstr "" -#: reference/datamodel.rst:1326 +#: reference/datamodel.rst:1340 msgid "sequence" msgstr "" -#: reference/datamodel.rst:299 +#: reference/datamodel.rst:301 msgid "index operation" msgstr "" -#: reference/datamodel.rst:299 +#: reference/datamodel.rst:301 msgid "item selection" msgstr "" -#: reference/datamodel.rst:391 reference/datamodel.rst:469 +#: reference/datamodel.rst:393 reference/datamodel.rst:471 msgid "subscription" msgstr "" -#: reference/datamodel.rst:391 +#: reference/datamodel.rst:393 msgid "slicing" msgstr "" -#: reference/datamodel.rst:331 +#: reference/datamodel.rst:333 msgid "immutable sequence" msgstr "" -#: reference/datamodel.rst:331 +#: reference/datamodel.rst:333 msgid "immutable" msgstr "" -#: reference/datamodel.rst:2025 reference/datamodel.rst:2056 +#: reference/datamodel.rst:2039 reference/datamodel.rst:2070 msgid "string" msgstr "" -#: reference/datamodel.rst:342 +#: reference/datamodel.rst:344 msgid "immutable sequences" msgstr "" -#: reference/datamodel.rst:346 +#: reference/datamodel.rst:348 msgid "chr" msgstr "" -#: reference/datamodel.rst:346 +#: reference/datamodel.rst:348 msgid "ord" msgstr "" -#: reference/datamodel.rst:346 +#: reference/datamodel.rst:348 msgid "character" msgstr "" -#: reference/datamodel.rst:346 +#: reference/datamodel.rst:348 msgid "Unicode" msgstr "" -#: reference/datamodel.rst:366 +#: reference/datamodel.rst:368 msgid "tuple" msgstr "" -#: reference/datamodel.rst:366 +#: reference/datamodel.rst:368 msgid "singleton" msgstr "" -#: reference/datamodel.rst:366 +#: reference/datamodel.rst:368 msgid "empty" msgstr "" -#: reference/datamodel.rst:2050 +#: reference/datamodel.rst:2064 msgid "bytes" msgstr "" -#: reference/datamodel.rst:379 +#: reference/datamodel.rst:381 msgid "byte" msgstr "" -#: reference/datamodel.rst:391 +#: reference/datamodel.rst:393 msgid "mutable sequence" msgstr "" -#: reference/datamodel.rst:391 +#: reference/datamodel.rst:393 msgid "mutable" msgstr "" -#: reference/datamodel.rst:1169 reference/datamodel.rst:1319 +#: reference/datamodel.rst:1171 reference/datamodel.rst:1333 msgid "assignment" msgstr "" -#: reference/datamodel.rst:873 reference/datamodel.rst:1943 -#: reference/datamodel.rst:3460 +#: reference/datamodel.rst:875 reference/datamodel.rst:1957 +#: reference/datamodel.rst:3474 msgid "statement" msgstr "" -#: reference/datamodel.rst:403 +#: reference/datamodel.rst:405 msgid "array" msgstr "" -#: reference/datamodel.rst:404 +#: reference/datamodel.rst:406 msgid "collections" msgstr "" -#: reference/datamodel.rst:412 +#: reference/datamodel.rst:414 msgid "list" msgstr "" -#: reference/datamodel.rst:419 +#: reference/datamodel.rst:421 msgid "bytearray" msgstr "" -#: reference/datamodel.rst:430 +#: reference/datamodel.rst:432 msgid "set type" msgstr "" -#: reference/datamodel.rst:450 +#: reference/datamodel.rst:452 msgid "set" msgstr "" -#: reference/datamodel.rst:458 +#: reference/datamodel.rst:460 msgid "frozenset" msgstr "" -#: reference/datamodel.rst:1326 +#: reference/datamodel.rst:1340 msgid "mapping" msgstr "" -#: reference/datamodel.rst:1151 reference/datamodel.rst:2149 +#: reference/datamodel.rst:1153 reference/datamodel.rst:2163 msgid "dictionary" msgstr "" -#: reference/datamodel.rst:505 +#: reference/datamodel.rst:507 msgid "dbm.ndbm" msgstr "" -#: reference/datamodel.rst:505 +#: reference/datamodel.rst:507 msgid "dbm.gnu" msgstr "" -#: reference/datamodel.rst:522 +#: reference/datamodel.rst:524 msgid "callable" msgstr "" -#: reference/datamodel.rst:537 reference/datamodel.rst:775 -#: reference/datamodel.rst:813 +#: reference/datamodel.rst:539 reference/datamodel.rst:777 +#: reference/datamodel.rst:815 msgid "function" msgstr "" -#: reference/datamodel.rst:1151 reference/datamodel.rst:3087 +#: reference/datamodel.rst:1153 reference/datamodel.rst:3101 msgid "call" msgstr "" -#: reference/datamodel.rst:522 +#: reference/datamodel.rst:524 msgid "invocation" msgstr "" -#: reference/datamodel.rst:522 +#: reference/datamodel.rst:524 msgid "argument" msgstr "" -#: reference/datamodel.rst:675 +#: reference/datamodel.rst:677 msgid "user-defined" msgstr "" -#: reference/datamodel.rst:537 +#: reference/datamodel.rst:539 msgid "user-defined function" msgstr "" -#: reference/datamodel.rst:550 +#: reference/datamodel.rst:552 msgid "__closure__ (function attribute)" msgstr "" -#: reference/datamodel.rst:550 +#: reference/datamodel.rst:552 msgid "__globals__ (function attribute)" msgstr "" -#: reference/datamodel.rst:550 +#: reference/datamodel.rst:552 msgid "global" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "namespace" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__doc__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__name__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__module__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__dict__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__defaults__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__code__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__annotations__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__annotate__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__kwdefaults__ (function attribute)" msgstr "" -#: reference/datamodel.rst:577 +#: reference/datamodel.rst:579 msgid "__type_params__ (function attribute)" msgstr "" -#: reference/datamodel.rst:837 +#: reference/datamodel.rst:839 msgid "method" msgstr "" -#: reference/datamodel.rst:675 +#: reference/datamodel.rst:677 msgid "user-defined method" msgstr "" -#: reference/datamodel.rst:683 +#: reference/datamodel.rst:685 msgid "__func__ (method attribute)" msgstr "" -#: reference/datamodel.rst:683 +#: reference/datamodel.rst:685 msgid "__self__ (method attribute)" msgstr "" -#: reference/datamodel.rst:683 +#: reference/datamodel.rst:685 msgid "__doc__ (method attribute)" msgstr "" -#: reference/datamodel.rst:683 +#: reference/datamodel.rst:685 msgid "__name__ (method attribute)" msgstr "" -#: reference/datamodel.rst:683 +#: reference/datamodel.rst:685 msgid "__module__ (method attribute)" msgstr "" -#: reference/datamodel.rst:1506 +#: reference/datamodel.rst:1520 msgid "generator" msgstr "" -#: reference/datamodel.rst:757 +#: reference/datamodel.rst:759 msgid "iterator" msgstr "" -#: reference/datamodel.rst:3693 +#: reference/datamodel.rst:3707 msgid "coroutine" msgstr "" -#: reference/datamodel.rst:788 +#: reference/datamodel.rst:790 msgid "asynchronous generator" msgstr "" -#: reference/datamodel.rst:788 +#: reference/datamodel.rst:790 msgid "asynchronous iterator" msgstr "" -#: reference/datamodel.rst:837 +#: reference/datamodel.rst:839 msgid "built-in method" msgstr "" -#: reference/datamodel.rst:837 +#: reference/datamodel.rst:839 msgid "built-in" msgstr "" -#: reference/datamodel.rst:873 +#: reference/datamodel.rst:875 msgid "import" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__name__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__spec__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__package__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__loader__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__path__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__file__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__cached__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__doc__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__annotations__ (module attribute)" msgstr "" -#: reference/datamodel.rst:893 +#: reference/datamodel.rst:895 msgid "__annotate__ (module attribute)" msgstr "" -#: reference/datamodel.rst:1119 +#: reference/datamodel.rst:1121 msgid "__dict__ (module attribute)" msgstr "" -#: reference/datamodel.rst:1169 reference/datamodel.rst:1926 -#: reference/datamodel.rst:2817 +#: reference/datamodel.rst:1171 reference/datamodel.rst:1940 +#: reference/datamodel.rst:2831 msgid "class" msgstr "" -#: reference/datamodel.rst:1299 reference/datamodel.rst:1319 +#: reference/datamodel.rst:1313 reference/datamodel.rst:1333 msgid "class instance" msgstr "" -#: reference/datamodel.rst:1299 reference/datamodel.rst:3087 +#: reference/datamodel.rst:1313 reference/datamodel.rst:3101 msgid "instance" msgstr "" -#: reference/datamodel.rst:1174 +#: reference/datamodel.rst:1176 msgid "class object" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__name__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__module__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__dict__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__bases__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__doc__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__annotations__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__annotate__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__type_params__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__static_attributes__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1181 +#: reference/datamodel.rst:1183 msgid "__firstlineno__ (class attribute)" msgstr "" -#: reference/datamodel.rst:1337 +#: reference/datamodel.rst:1351 msgid "__dict__ (instance attribute)" msgstr "" -#: reference/datamodel.rst:1337 +#: reference/datamodel.rst:1351 msgid "__class__ (instance attribute)" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "open" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "io" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "popen() (in module os)" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "makefile() (socket method)" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "sys.stdin" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "sys.stdout" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "sys.stderr" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "stdio" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "stdin (in module sys)" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "stdout (in module sys)" msgstr "" -#: reference/datamodel.rst:1355 +#: reference/datamodel.rst:1369 msgid "stderr (in module sys)" msgstr "" -#: reference/datamodel.rst:1384 +#: reference/datamodel.rst:1398 msgid "internal type" msgstr "" -#: reference/datamodel.rst:1384 +#: reference/datamodel.rst:1398 msgid "types, internal" msgstr "" -#: reference/datamodel.rst:1398 +#: reference/datamodel.rst:1412 msgid "bytecode" msgstr "" -#: reference/datamodel.rst:1398 +#: reference/datamodel.rst:1412 msgid "code" msgstr "" -#: reference/datamodel.rst:1398 +#: reference/datamodel.rst:1412 msgid "code object" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_argcount (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_posonlyargcount (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_kwonlyargcount (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_code (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_consts (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_filename (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_firstlineno (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_flags (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_lnotab (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_name (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_names (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_nlocals (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_stacksize (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_varnames (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_cellvars (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_freevars (code object attribute)" msgstr "" -#: reference/datamodel.rst:1409 +#: reference/datamodel.rst:1423 msgid "co_qualname (code object attribute)" msgstr "" -#: reference/datamodel.rst:1522 +#: reference/datamodel.rst:1536 msgid "documentation string" msgstr "" -#: reference/datamodel.rst:1614 +#: reference/datamodel.rst:1628 msgid "frame" msgstr "" -#: reference/datamodel.rst:1620 +#: reference/datamodel.rst:1634 msgid "f_back (frame attribute)" msgstr "" -#: reference/datamodel.rst:1620 +#: reference/datamodel.rst:1634 msgid "f_code (frame attribute)" msgstr "" -#: reference/datamodel.rst:1620 +#: reference/datamodel.rst:1634 msgid "f_globals (frame attribute)" msgstr "" -#: reference/datamodel.rst:1620 +#: reference/datamodel.rst:1634 msgid "f_locals (frame attribute)" msgstr "" -#: reference/datamodel.rst:1620 +#: reference/datamodel.rst:1634 msgid "f_lasti (frame attribute)" msgstr "" -#: reference/datamodel.rst:1620 +#: reference/datamodel.rst:1634 msgid "f_builtins (frame attribute)" msgstr "" -#: reference/datamodel.rst:1664 +#: reference/datamodel.rst:1678 msgid "f_trace (frame attribute)" msgstr "" -#: reference/datamodel.rst:1664 +#: reference/datamodel.rst:1678 msgid "f_trace_lines (frame attribute)" msgstr "" -#: reference/datamodel.rst:1664 +#: reference/datamodel.rst:1678 msgid "f_trace_opcodes (frame attribute)" msgstr "" -#: reference/datamodel.rst:1664 +#: reference/datamodel.rst:1678 msgid "f_lineno (frame attribute)" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "traceback" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "stack" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "trace" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "exception" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "handler" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "execution" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "exc_info (in module sys)" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "last_traceback (in module sys)" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "sys.exc_info" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "sys.exception" msgstr "" -#: reference/datamodel.rst:1724 +#: reference/datamodel.rst:1738 msgid "sys.last_traceback" msgstr "" -#: reference/datamodel.rst:1761 +#: reference/datamodel.rst:1775 msgid "tb_frame (traceback attribute)" msgstr "" -#: reference/datamodel.rst:1761 +#: reference/datamodel.rst:1775 msgid "tb_lineno (traceback attribute)" msgstr "" -#: reference/datamodel.rst:1761 +#: reference/datamodel.rst:1775 msgid "tb_lasti (traceback attribute)" msgstr "" -#: reference/datamodel.rst:1761 +#: reference/datamodel.rst:1775 msgid "try" msgstr "" -#: reference/datamodel.rst:1791 +#: reference/datamodel.rst:1805 msgid "tb_next (traceback attribute)" msgstr "" -#: reference/datamodel.rst:3167 +#: reference/datamodel.rst:3181 msgid "slice" msgstr "" -#: reference/datamodel.rst:1813 +#: reference/datamodel.rst:1827 msgid "start (slice object attribute)" msgstr "" -#: reference/datamodel.rst:1813 +#: reference/datamodel.rst:1827 msgid "stop (slice object attribute)" msgstr "" -#: reference/datamodel.rst:1813 +#: reference/datamodel.rst:1827 msgid "step (slice object attribute)" msgstr "" -#: reference/datamodel.rst:1861 +#: reference/datamodel.rst:1875 msgid "operator" msgstr "" -#: reference/datamodel.rst:1861 +#: reference/datamodel.rst:1875 msgid "overloading" msgstr "" -#: reference/datamodel.rst:1861 +#: reference/datamodel.rst:1875 msgid "__getitem__() (mapping object method)" msgstr "" -#: reference/datamodel.rst:1897 +#: reference/datamodel.rst:1911 msgid "subclassing" msgstr "" -#: reference/datamodel.rst:1897 +#: reference/datamodel.rst:1911 msgid "immutable types" msgstr "" -#: reference/datamodel.rst:1926 +#: reference/datamodel.rst:1940 msgid "constructor" msgstr "" -#: reference/datamodel.rst:1943 +#: reference/datamodel.rst:1957 msgid "destructor" msgstr "" -#: reference/datamodel.rst:1943 +#: reference/datamodel.rst:1957 msgid "finalizer" msgstr "" -#: reference/datamodel.rst:1943 +#: reference/datamodel.rst:1957 msgid "del" msgstr "" -#: reference/datamodel.rst:2007 +#: reference/datamodel.rst:2021 msgid "repr() (built-in function)" msgstr "" -#: reference/datamodel.rst:2007 +#: reference/datamodel.rst:2021 msgid "__repr__() (object method)" msgstr "" -#: reference/datamodel.rst:2025 +#: reference/datamodel.rst:2039 msgid "__str__() (object method)" msgstr "" -#: reference/datamodel.rst:2025 +#: reference/datamodel.rst:2039 msgid "format() (built-in function)" msgstr "" -#: reference/datamodel.rst:2025 +#: reference/datamodel.rst:2039 msgid "print() (built-in function)" msgstr "" -#: reference/datamodel.rst:2056 +#: reference/datamodel.rst:2070 msgid "__format__() (object method)" msgstr "" -#: reference/datamodel.rst:2056 +#: reference/datamodel.rst:2070 msgid "conversion" msgstr "" -#: reference/datamodel.rst:2056 +#: reference/datamodel.rst:2070 msgid "print" msgstr "" -#: reference/datamodel.rst:2098 +#: reference/datamodel.rst:2112 msgid "comparisons" msgstr "" -#: reference/datamodel.rst:2149 +#: reference/datamodel.rst:2163 msgid "hash" msgstr "" -#: reference/datamodel.rst:2230 +#: reference/datamodel.rst:2244 msgid "__len__() (mapping object method)" msgstr "" -#: reference/datamodel.rst:2335 +#: reference/datamodel.rst:2349 msgid "__getattr__ (module attribute)" msgstr "" -#: reference/datamodel.rst:2335 +#: reference/datamodel.rst:2349 msgid "__dir__ (module attribute)" msgstr "" -#: reference/datamodel.rst:2335 +#: reference/datamodel.rst:2349 msgid "__class__ (module attribute)" msgstr "" -#: reference/datamodel.rst:2706 +#: reference/datamodel.rst:2720 msgid "metaclass" msgstr "" -#: reference/datamodel.rst:2706 +#: reference/datamodel.rst:2720 msgid "= (equals)" msgstr "" -#: reference/datamodel.rst:2706 +#: reference/datamodel.rst:2720 msgid "class definition" msgstr "" -#: reference/datamodel.rst:2770 +#: reference/datamodel.rst:2784 msgid "metaclass hint" msgstr "" -#: reference/datamodel.rst:2793 +#: reference/datamodel.rst:2807 msgid "__prepare__ (metaclass method)" msgstr "" -#: reference/datamodel.rst:2817 +#: reference/datamodel.rst:2831 msgid "body" msgstr "" -#: reference/datamodel.rst:2837 +#: reference/datamodel.rst:2851 msgid "__class__ (method cell)" msgstr "" -#: reference/datamodel.rst:2837 +#: reference/datamodel.rst:2851 msgid "__classcell__ (class namespace entry)" msgstr "" -#: reference/datamodel.rst:3137 +#: reference/datamodel.rst:3151 msgid "__bool__() (object method)" msgstr "" -#: reference/datamodel.rst:3330 +#: reference/datamodel.rst:3344 msgid "divmod" msgstr "" -#: reference/datamodel.rst:3330 +#: reference/datamodel.rst:3344 msgid "pow" msgstr "" -#: reference/datamodel.rst:3398 +#: reference/datamodel.rst:3412 msgid "abs" msgstr "" -#: reference/datamodel.rst:3408 +#: reference/datamodel.rst:3422 msgid "int" msgstr "" -#: reference/datamodel.rst:3408 +#: reference/datamodel.rst:3422 msgid "float" msgstr "" -#: reference/datamodel.rst:3436 +#: reference/datamodel.rst:3450 msgid "round" msgstr "" -#: reference/datamodel.rst:3460 +#: reference/datamodel.rst:3474 msgid "with" msgstr "" -#: reference/datamodel.rst:3460 +#: reference/datamodel.rst:3474 msgid "context manager" msgstr "" diff --git a/reference/executionmodel.po b/reference/executionmodel.po index cf3c842a..2ab91599 100644 --- a/reference/executionmodel.po +++ b/reference/executionmodel.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-13 19:59+0200\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" diff --git a/reference/expressions.po b/reference/expressions.po index cc80aed4..ae172d1d 100644 --- a/reference/expressions.po +++ b/reference/expressions.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -179,7 +179,7 @@ msgstr "" msgid "Python supports string and bytes literals and various numeric literals:" msgstr "" -#: reference/expressions.rst:140 +#: reference/expressions.rst:139 msgid "" "Evaluation of a literal yields an object of the given type (string, bytes, " "integer, floating-point number, complex number) with the given value. The " @@ -187,7 +187,7 @@ msgid "" "(complex) literals. See section :ref:`literals` for details." msgstr "" -#: reference/expressions.rst:149 +#: reference/expressions.rst:148 msgid "" "All literals correspond to immutable data types, and hence the object's " "identity is less important than its value. Multiple evaluations of literals " @@ -196,30 +196,30 @@ msgid "" "the same value." msgstr "" -#: reference/expressions.rst:159 +#: reference/expressions.rst:158 msgid "Parenthesized forms" msgstr "" -#: reference/expressions.rst:165 +#: reference/expressions.rst:164 msgid "" "A parenthesized form is an optional expression list enclosed in parentheses:" msgstr "" -#: reference/expressions.rst:170 +#: reference/expressions.rst:169 msgid "" "A parenthesized expression list yields whatever that expression list yields: " "if the list contains at least one comma, it yields a tuple; otherwise, it " "yields the single expression that makes up the expression list." msgstr "" -#: reference/expressions.rst:176 +#: reference/expressions.rst:175 msgid "" "An empty pair of parentheses yields an empty tuple object. Since tuples are " "immutable, the same rules as for literals apply (i.e., two occurrences of " "the empty tuple may or may not yield the same object)." msgstr "" -#: reference/expressions.rst:184 +#: reference/expressions.rst:183 msgid "" "Note that tuples are not formed by the parentheses, but rather by use of the " "comma. The exception is the empty tuple, for which parentheses *are* " @@ -227,31 +227,31 @@ msgid "" "ambiguities and allow common typos to pass uncaught." msgstr "" -#: reference/expressions.rst:193 +#: reference/expressions.rst:192 msgid "Displays for lists, sets and dictionaries" msgstr "" -#: reference/expressions.rst:197 +#: reference/expressions.rst:196 msgid "" "For constructing a list, a set or a dictionary Python provides special " "syntax called \"displays\", each of them in two flavors:" msgstr "" -#: reference/expressions.rst:200 +#: reference/expressions.rst:199 msgid "either the container contents are listed explicitly, or" msgstr "" -#: reference/expressions.rst:202 +#: reference/expressions.rst:201 msgid "" "they are computed via a set of looping and filtering instructions, called a :" "dfn:`comprehension`." msgstr "" -#: reference/expressions.rst:210 +#: reference/expressions.rst:209 msgid "Common syntax elements for comprehensions are:" msgstr "" -#: reference/expressions.rst:218 +#: reference/expressions.rst:217 msgid "" "The comprehension consists of a single expression followed by at least one :" "keyword:`!for` clause and zero or more :keyword:`!for` or :keyword:`!if` " @@ -261,7 +261,7 @@ msgid "" "expression to produce an element each time the innermost block is reached." msgstr "" -#: reference/expressions.rst:225 +#: reference/expressions.rst:224 msgid "" "However, aside from the iterable expression in the leftmost :keyword:`!for` " "clause, the comprehension is executed in a separate implicitly nested scope. " @@ -269,7 +269,7 @@ msgid "" "the enclosing scope." msgstr "" -#: reference/expressions.rst:229 +#: reference/expressions.rst:228 msgid "" "The iterable expression in the leftmost :keyword:`!for` clause is evaluated " "directly in the enclosing scope and then passed as an argument to the " @@ -279,14 +279,14 @@ msgid "" "iterable. For example: ``[x*y for x in range(10) for y in range(x, x+10)]``." msgstr "" -#: reference/expressions.rst:236 +#: reference/expressions.rst:235 msgid "" "To ensure the comprehension always results in a container of the appropriate " "type, ``yield`` and ``yield from`` expressions are prohibited in the " "implicitly nested scope." msgstr "" -#: reference/expressions.rst:243 +#: reference/expressions.rst:242 msgid "" "Since Python 3.6, in an :keyword:`async def` function, an :keyword:`!async " "for` clause may be used to iterate over a :term:`asynchronous iterator`. A " @@ -296,7 +296,7 @@ msgid "" "clauses, and may also use :keyword:`await` expressions." msgstr "" -#: reference/expressions.rst:250 +#: reference/expressions.rst:249 msgid "" "If a comprehension contains :keyword:`!async for` clauses, or if it " "contains :keyword:`!await` expressions or other asynchronous comprehensions " @@ -306,7 +306,7 @@ msgid "" "it appears. See also :pep:`530`." msgstr "" -#: reference/expressions.rst:257 +#: reference/expressions.rst:256 msgid "Asynchronous comprehensions were introduced." msgstr "" @@ -314,23 +314,23 @@ msgstr "" msgid "``yield`` and ``yield from`` prohibited in the implicitly nested scope." msgstr "" -#: reference/expressions.rst:263 +#: reference/expressions.rst:262 msgid "" "Asynchronous comprehensions are now allowed inside comprehensions in " "asynchronous functions. Outer comprehensions implicitly become asynchronous." msgstr "" -#: reference/expressions.rst:272 +#: reference/expressions.rst:271 msgid "List displays" msgstr "" -#: reference/expressions.rst:282 +#: reference/expressions.rst:281 msgid "" "A list display is a possibly empty series of expressions enclosed in square " "brackets:" msgstr "" -#: reference/expressions.rst:288 +#: reference/expressions.rst:287 msgid "" "A list display yields a new list object, the contents being specified by " "either a list of expressions or a comprehension. When a comma-separated " @@ -340,17 +340,17 @@ msgid "" "comprehension." msgstr "" -#: reference/expressions.rst:298 +#: reference/expressions.rst:297 msgid "Set displays" msgstr "" -#: reference/expressions.rst:307 +#: reference/expressions.rst:306 msgid "" "A set display is denoted by curly braces and distinguishable from dictionary " "displays by the lack of colons separating keys and values:" msgstr "" -#: reference/expressions.rst:313 +#: reference/expressions.rst:312 msgid "" "A set display yields a new mutable set object, the contents being specified " "by either a sequence of expressions or a comprehension. When a comma-" @@ -360,27 +360,27 @@ msgid "" "comprehension." msgstr "" -#: reference/expressions.rst:319 +#: reference/expressions.rst:318 msgid "" "An empty set cannot be constructed with ``{}``; this literal constructs an " "empty dictionary." msgstr "" -#: reference/expressions.rst:326 +#: reference/expressions.rst:325 msgid "Dictionary displays" msgstr "" -#: reference/expressions.rst:337 +#: reference/expressions.rst:336 msgid "" "A dictionary display is a possibly empty series of dict items (key/value " "pairs) enclosed in curly braces:" msgstr "" -#: reference/expressions.rst:346 +#: reference/expressions.rst:345 msgid "A dictionary display yields a new dictionary object." msgstr "" -#: reference/expressions.rst:348 +#: reference/expressions.rst:347 msgid "" "If a comma-separated sequence of dict items is given, they are evaluated " "from left to right to define the entries of the dictionary: each key object " @@ -390,7 +390,7 @@ msgid "" "given." msgstr "" -#: reference/expressions.rst:358 +#: reference/expressions.rst:357 msgid "" "A double asterisk ``**`` denotes :dfn:`dictionary unpacking`. Its operand " "must be a :term:`mapping`. Each mapping item is added to the new " @@ -398,11 +398,11 @@ msgid "" "and earlier dictionary unpackings." msgstr "" -#: reference/expressions.rst:363 +#: reference/expressions.rst:362 msgid "Unpacking into dictionary displays, originally proposed by :pep:`448`." msgstr "" -#: reference/expressions.rst:366 +#: reference/expressions.rst:365 msgid "" "A dict comprehension, in contrast to list and set comprehensions, needs two " "expressions separated with a colon followed by the usual \"for\" and \"if\" " @@ -410,7 +410,7 @@ msgid "" "are inserted in the new dictionary in the order they are produced." msgstr "" -#: reference/expressions.rst:374 +#: reference/expressions.rst:373 msgid "" "Restrictions on the types of the key values are listed earlier in section :" "ref:`types`. (To summarize, the key type should be :term:`hashable`, which " @@ -419,7 +419,7 @@ msgid "" "given key value prevails." msgstr "" -#: reference/expressions.rst:380 +#: reference/expressions.rst:379 msgid "" "Prior to Python 3.8, in dict comprehensions, the evaluation order of key and " "value was not well-defined. In CPython, the value was evaluated before the " @@ -427,33 +427,34 @@ msgid "" "by :pep:`572`." msgstr "" -#: reference/expressions.rst:390 +#: reference/expressions.rst:389 msgid "Generator expressions" msgstr "" -#: reference/expressions.rst:397 +#: reference/expressions.rst:396 msgid "A generator expression is a compact generator notation in parentheses:" msgstr "" -#: reference/expressions.rst:402 +#: reference/expressions.rst:401 msgid "" "A generator expression yields a new generator object. Its syntax is the " "same as for comprehensions, except that it is enclosed in parentheses " "instead of brackets or curly braces." msgstr "" -#: reference/expressions.rst:406 +#: reference/expressions.rst:405 msgid "" "Variables used in the generator expression are evaluated lazily when the :" "meth:`~generator.__next__` method is called for the generator object (in the " "same fashion as normal generators). However, the iterable expression in the " -"leftmost :keyword:`!for` clause is immediately evaluated, so that an error " -"produced by it will be emitted at the point where the generator expression " -"is defined, rather than at the point where the first value is retrieved. " -"Subsequent :keyword:`!for` clauses and any filter condition in the leftmost :" -"keyword:`!for` clause cannot be evaluated in the enclosing scope as they may " -"depend on the values obtained from the leftmost iterable. For example: " -"``(x*y for x in range(10) for y in range(x, x+10))``." +"leftmost :keyword:`!for` clause is immediately evaluated, and the :term:" +"`iterator` is immediately created for that iterable, so that an error " +"produced while creating the iterator will be emitted at the point where the " +"generator expression is defined, rather than at the point where the first " +"value is retrieved. Subsequent :keyword:`!for` clauses and any filter " +"condition in the leftmost :keyword:`!for` clause cannot be evaluated in the " +"enclosing scope as they may depend on the values obtained from the leftmost " +"iterable. For example: ``(x*y for x in range(10) for y in range(x, x+10))``." msgstr "" #: reference/expressions.rst:417 @@ -2424,7 +2425,7 @@ msgid "" "applies." msgstr "" -#: reference/expressions.rst:392 reference/expressions.rst:1781 +#: reference/expressions.rst:391 reference/expressions.rst:1781 #: reference/expressions.rst:1872 reference/expressions.rst:1926 msgid "expression" msgstr "" @@ -2479,39 +2480,39 @@ msgstr "" msgid "literal" msgstr "" -#: reference/expressions.rst:371 +#: reference/expressions.rst:370 msgid "immutable" msgstr "" -#: reference/expressions.rst:145 +#: reference/expressions.rst:144 msgid "data" msgstr "" -#: reference/expressions.rst:145 +#: reference/expressions.rst:144 msgid "type" msgstr "" -#: reference/expressions.rst:274 reference/expressions.rst:328 -#: reference/expressions.rst:392 reference/expressions.rst:742 +#: reference/expressions.rst:273 reference/expressions.rst:327 +#: reference/expressions.rst:391 reference/expressions.rst:742 #: reference/expressions.rst:883 reference/expressions.rst:1004 #: reference/expressions.rst:1166 reference/expressions.rst:1187 #: reference/expressions.rst:1938 msgid "object" msgstr "" -#: reference/expressions.rst:161 +#: reference/expressions.rst:160 msgid "parenthesized form" msgstr "" -#: reference/expressions.rst:392 reference/expressions.rst:1004 +#: reference/expressions.rst:391 reference/expressions.rst:1004 msgid "() (parentheses)" msgstr "" -#: reference/expressions.rst:161 +#: reference/expressions.rst:160 msgid "tuple display" msgstr "" -#: reference/expressions.rst:274 +#: reference/expressions.rst:273 msgid "empty" msgstr "" @@ -2523,20 +2524,20 @@ msgstr "" msgid "comma" msgstr "" -#: reference/expressions.rst:274 reference/expressions.rst:328 +#: reference/expressions.rst:273 reference/expressions.rst:327 #: reference/expressions.rst:1004 reference/expressions.rst:1926 msgid ", (comma)" msgstr "" -#: reference/expressions.rst:274 reference/expressions.rst:328 +#: reference/expressions.rst:273 reference/expressions.rst:327 msgid "comprehensions" msgstr "" -#: reference/expressions.rst:205 +#: reference/expressions.rst:204 msgid "for" msgstr "" -#: reference/expressions.rst:240 +#: reference/expressions.rst:239 msgid "in comprehensions" msgstr "" @@ -2544,7 +2545,7 @@ msgstr "" msgid "if" msgstr "" -#: reference/expressions.rst:205 +#: reference/expressions.rst:204 msgid "async for" msgstr "" @@ -2557,7 +2558,7 @@ msgstr "" msgid "list" msgstr "" -#: reference/expressions.rst:300 reference/expressions.rst:328 +#: reference/expressions.rst:299 reference/expressions.rst:327 msgid "display" msgstr "" @@ -2565,43 +2566,43 @@ msgstr "" msgid "[] (square brackets)" msgstr "" -#: reference/expressions.rst:274 +#: reference/expressions.rst:273 msgid "list expression" msgstr "" -#: reference/expressions.rst:300 reference/expressions.rst:1926 +#: reference/expressions.rst:299 reference/expressions.rst:1926 msgid "expression list" msgstr "" -#: reference/expressions.rst:300 +#: reference/expressions.rst:299 msgid "set" msgstr "" -#: reference/expressions.rst:328 +#: reference/expressions.rst:327 msgid "{} (curly brackets)" msgstr "" -#: reference/expressions.rst:300 +#: reference/expressions.rst:299 msgid "set expression" msgstr "" -#: reference/expressions.rst:354 reference/expressions.rst:883 +#: reference/expressions.rst:353 reference/expressions.rst:883 msgid "dictionary" msgstr "" -#: reference/expressions.rst:328 +#: reference/expressions.rst:327 msgid "key" msgstr "" -#: reference/expressions.rst:328 +#: reference/expressions.rst:327 msgid "value" msgstr "" -#: reference/expressions.rst:328 +#: reference/expressions.rst:327 msgid "key/value pair" msgstr "" -#: reference/expressions.rst:328 +#: reference/expressions.rst:327 msgid "dictionary expression" msgstr "" @@ -2609,11 +2610,11 @@ msgstr "" msgid ": (colon)" msgstr "" -#: reference/expressions.rst:328 +#: reference/expressions.rst:327 msgid "in dictionary expressions" msgstr "" -#: reference/expressions.rst:354 +#: reference/expressions.rst:353 msgid "in dictionary displays" msgstr "" @@ -2625,7 +2626,7 @@ msgstr "" msgid "**" msgstr "" -#: reference/expressions.rst:371 +#: reference/expressions.rst:370 msgid "hashable" msgstr "" @@ -2633,7 +2634,7 @@ msgstr "" msgid "generator" msgstr "" -#: reference/expressions.rst:392 +#: reference/expressions.rst:391 msgid "generator expression" msgstr "" diff --git a/reference/grammar.po b/reference/grammar.po index 64e879da..5905f6d3 100644 --- a/reference/grammar.po +++ b/reference/grammar.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-04 22:25+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" @@ -34,27 +34,30 @@ msgstr "" #: reference/grammar.rst:11 msgid "" -"The notation is a mixture of `EBNF `_ and `PEG `_. In particular, ``&`` followed by a symbol, " -"token or parenthesized group indicates a positive lookahead (i.e., is " -"required to match but not consumed), while ``!`` indicates a negative " -"lookahead (i.e., is required *not* to match). We use the ``|`` separator to " -"mean PEG's \"ordered choice\" (written as ``/`` in traditional PEG " -"grammars). See :pep:`617` for more details on the grammar's syntax." +"The notation used here is the same as in the preceding docs, and is " +"described in the :ref:`notation ` section, except for a few extra " +"complications:" +msgstr "" + +#: reference/grammar.rst:15 +msgid "" +"``&e``: a positive lookahead (that is, ``e`` is required to match but not " +"consumed)" +msgstr "" + +#: reference/grammar.rst:17 +msgid "" +"``!e``: a negative lookahead (that is, ``e`` is required *not* to match)" +msgstr "" + +#: reference/grammar.rst:18 +msgid "" +"``~`` (\"cut\"): commit to the current alternative and fail the rule even if " +"this fails to parse" msgstr "" -"Η σημειογραφία είναι ένα μείγμα από `EBNF `_ και `PEG `_. Συγκεκριμένα, το ``&`` που ακολουθείται από " -"ένα σύμβολο, ένα token ή μια παρενθετική ομάδα υποδηλώνει θετική " -"προεπισκόπηση (δηλαδή απαιτείται να ταιριάζει αλλά δεν καταναλώνεται), ενώ " -"το ``!`` υποδηλώνει αρνητική προεπισκόπηση (δηλαδή απαιτείται *να μην* " -"ταιριάζει). Χρησιμοποιούμε τον τελεστή ``|`` για να εκφράσουμε την " -"\"ταξινομημένη επιλογή\" του PEG (που γράφεται ως ``/`` στις παραδοσιακές " -"γραμματικές PEG). Δείτε το :pep:`617` για περισσότερες λεπτομέρειες σχετικά " -"με τη σύνταξη της γραμματικής." #: reference/grammar.rst:21 +#, fuzzy msgid "" "# PEG grammar for Python\n" "\n" @@ -167,12 +170,12 @@ msgid "" "statements[asdl_stmt_seq*]: a=statement+ { _PyPegen_register_stmts(p, " "(asdl_stmt_seq*)_PyPegen_seq_flatten(p, a)) }\n" "\n" -"statement[asdl_stmt_seq*]: \n" -" | a=compound_stmt { (asdl_stmt_seq*)_PyPegen_singleton_seq(p, a) } \n" +"statement[asdl_stmt_seq*]:\n" +" | a=compound_stmt { (asdl_stmt_seq*)_PyPegen_singleton_seq(p, a) }\n" " | a[asdl_stmt_seq*]=simple_stmts { a }\n" "\n" "single_compound_stmt[asdl_stmt_seq*]:\n" -" | a=compound_stmt { \n" +" | a=compound_stmt {\n" " _PyPegen_register_stmts(p, (asdl_stmt_seq*)_PyPegen_singleton_seq(p, " "a)) }\n" "\n" @@ -583,9 +586,9 @@ msgid "" " _PyAST_ExceptHandler(e, ((expr_ty) t)->v.Name.id, b, EXTRA) }\n" " | 'except' e=expressions ':' b=block {\n" " CHECK_VERSION(\n" -" excepthandler_ty, \n" -" 14, \n" -" \"except expressions without parentheses are\", \n" +" excepthandler_ty,\n" +" 14,\n" +" \"except expressions without parentheses are\",\n" " _PyAST_ExceptHandler(e, NULL, b, EXTRA)) }\n" " | 'except' ':' b=block { _PyAST_ExceptHandler(NULL, NULL, b, EXTRA) }\n" " | invalid_except_stmt\n" @@ -597,9 +600,9 @@ msgid "" " _PyAST_ExceptHandler(e, ((expr_ty) t)->v.Name.id, b, EXTRA) }\n" " | 'except' '*' e=expressions ':' b=block {\n" " CHECK_VERSION(\n" -" excepthandler_ty, \n" -" 14, \n" -" \"except expressions without parentheses are\", \n" +" excepthandler_ty,\n" +" 14,\n" +" \"except expressions without parentheses are\",\n" " _PyAST_ExceptHandler(e, NULL, b, EXTRA)) }\n" " | invalid_except_star_stmt\n" "finally_block[asdl_stmt_seq*]:\n" @@ -1180,11 +1183,11 @@ msgid "" " | tstring_replacement_field\n" " | t=TSTRING_MIDDLE { _PyPegen_constant_from_token(p, t) }\n" "tstring[expr_ty] (memo):\n" -" | a=TSTRING_START b=tstring_middle* c=TSTRING_END { \n" +" | a=TSTRING_START b=tstring_middle* c=TSTRING_END {\n" " CHECK_VERSION(\n" -" expr_ty, \n" -" 14, \n" -" \"t-strings are\", \n" +" expr_ty,\n" +" 14,\n" +" \"t-strings are\",\n" " _PyPegen_template_str(p, a, (asdl_expr_seq*)b, c)) }\n" "\n" "string[expr_ty]: s[Token*]=STRING { _PyPegen_constant_from_string(p, s) }\n" @@ -1701,12 +1704,12 @@ msgid "" "after 'import'\") }\n" "invalid_dotted_as_name:\n" " | dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) a=expression {\n" -" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a,\n" " \"cannot use %s as import target\", " "_PyPegen_get_expr_name(a)) }\n" "invalid_import_from_as_name:\n" " | NAME 'as' !(NAME (',' | ')' | NEWLINE)) a=expression {\n" -" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a,\n" " \"cannot use %s as import target\", " "_PyPegen_get_expr_name(a)) }\n" "\n" @@ -1754,7 +1757,7 @@ msgid "" " | a='except' expression ['as' NAME ] NEWLINE " "{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" " | a='except' NEWLINE { RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" -" | 'except' expression 'as' a=expression {\n" +" | 'except' expression 'as' a=expression ':' block {\n" " RAISE_SYNTAX_ERROR_KNOWN_LOCATION(\n" " a, \"cannot use except statement with %s\", " "_PyPegen_get_expr_name(a)) }\n" @@ -1766,7 +1769,7 @@ msgid "" "{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" " | a='except' '*' (NEWLINE | ':') { RAISE_SYNTAX_ERROR(\"expected one or " "more exception types\") }\n" -" | 'except' '*' expression 'as' a=expression {\n" +" | 'except' '*' expression 'as' a=expression ':' block {\n" " RAISE_SYNTAX_ERROR_KNOWN_LOCATION(\n" " a, \"cannot use except* statement with %s\", " "_PyPegen_get_expr_name(a)) }\n" @@ -3865,3 +3868,25 @@ msgstr "" " RAISE_SYNTAX_ERROR_STARTING_FROM(\n" " token,\n" " \"Type parameter list cannot be empty\")}\n" + +#~ msgid "" +#~ "The notation is a mixture of `EBNF `_ and `PEG `_. In particular, ``&`` followed by a " +#~ "symbol, token or parenthesized group indicates a positive lookahead (i." +#~ "e., is required to match but not consumed), while ``!`` indicates a " +#~ "negative lookahead (i.e., is required *not* to match). We use the ``|`` " +#~ "separator to mean PEG's \"ordered choice\" (written as ``/`` in " +#~ "traditional PEG grammars). See :pep:`617` for more details on the " +#~ "grammar's syntax." +#~ msgstr "" +#~ "Η σημειογραφία είναι ένα μείγμα από `EBNF `_ και `PEG `_. Συγκεκριμένα, το ``&`` που " +#~ "ακολουθείται από ένα σύμβολο, ένα token ή μια παρενθετική ομάδα " +#~ "υποδηλώνει θετική προεπισκόπηση (δηλαδή απαιτείται να ταιριάζει αλλά δεν " +#~ "καταναλώνεται), ενώ το ``!`` υποδηλώνει αρνητική προεπισκόπηση (δηλαδή " +#~ "απαιτείται *να μην* ταιριάζει). Χρησιμοποιούμε τον τελεστή ``|`` για να " +#~ "εκφράσουμε την \"ταξινομημένη επιλογή\" του PEG (που γράφεται ως ``/`` " +#~ "στις παραδοσιακές γραμματικές PEG). Δείτε το :pep:`617` για περισσότερες " +#~ "λεπτομέρειες σχετικά με τη σύνταξη της γραμματικής." diff --git a/reference/import.po b/reference/import.po index a8d2550c..1b9f6636 100644 --- a/reference/import.po +++ b/reference/import.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/reference/index.po b/reference/index.po index 4f11cdfa..94c8b08f 100644 --- a/reference/index.po +++ b/reference/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/reference/introduction.po b/reference/introduction.po index 34cd608f..22e2cbb2 100644 --- a/reference/introduction.po +++ b/reference/introduction.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-11-25 12:27+0200\n" "Last-Translator: Stelios Rotas \n" "Language-Team: PyGreece \n" @@ -216,10 +216,12 @@ msgid "Notation" msgstr "Σημειογραφία" #: reference/introduction.rst:93 +#, fuzzy msgid "" -"The descriptions of lexical analysis and syntax use a modified `Backus–Naur " -"form (BNF) `_ " -"grammar notation. This uses the following style of definition:" +"The descriptions of lexical analysis and syntax use a grammar notation that " +"is a mixture of `EBNF `_ and `PEG `_. For example:" msgstr "" "Οι περιγραφές στην λεξιλογική ανάλυση και σύνταξη χρησιμοποιούν έναν " "τροποποιημένο γραμματικό συμβολισμό στην `μορφή Μπάκους-Νάουρ (BNF) " @@ -228,13 +230,14 @@ msgstr "" "%CE%9D%CE%AC%CE%BF%CF%85%CF%81>`_. Αυτό χρησιμοποιεί τον ακόλουθο τρόπο " "ορισμού:" -#: reference/introduction.rst:101 +#: reference/introduction.rst:106 +#, fuzzy msgid "" -"The first line says that a ``name`` is an ``lc_letter`` followed by a " -"sequence of zero or more ``lc_letter``\\ s and underscores. An " -"``lc_letter`` in turn is any of the single characters ``'a'`` through " -"``'z'``. (This rule is actually adhered to for the names defined in lexical " -"and grammar rules in this document.)" +"In this example, the first line says that a ``name`` is a ``letter`` " +"followed by a sequence of zero or more ``letter``\\ s, ``digit``\\ s, and " +"underscores. A ``letter`` in turn is any of the single characters ``'a'`` " +"through ``'z'`` and ``A`` through ``Z``; a ``digit`` is a single character " +"from ``0`` to ``9``." msgstr "" "Η πρώτη γραμμή λέει ότι ένα ``name`` είναι ένα ``lc_letter`` ακολουθούμενο " "από μία σειρά από μηδέν ή περισσότερα ``lc_letter``\\ s και κάτω παύλες. Ένα " @@ -243,61 +246,145 @@ msgstr "" "ονόματα που ορίζονται στους λεξιλογικούς και γραμματικούς κανόνες αυτού του " "εγγράφου.)" -#: reference/introduction.rst:106 +#: reference/introduction.rst:112 +msgid "" +"Each rule begins with a name (which identifies the rule that's being " +"defined) followed by a colon, ``:``. The definition to the right of the " +"colon uses the following syntax elements:" +msgstr "" + +#: reference/introduction.rst:116 +msgid "" +"``name``: A name refers to another rule. Where possible, it is a link to the " +"rule's definition." +msgstr "" + +#: reference/introduction.rst:119 msgid "" -"Each rule begins with a name (which is the name defined by the rule) and ``::" -"=``. A vertical bar (``|``) is used to separate alternatives; it is the " -"least binding operator in this notation. A star (``*``) means zero or more " -"repetitions of the preceding item; likewise, a plus (``+``) means one or " -"more repetitions, and a phrase enclosed in square brackets (``[ ]``) means " -"zero or one occurrences (in other words, the enclosed phrase is optional). " -"The ``*`` and ``+`` operators bind as tightly as possible; parentheses are " -"used for grouping. Literal strings are enclosed in quotes. White space is " -"only meaningful to separate tokens. Rules are normally contained on a single " -"line; rules with many alternatives may be formatted alternatively with each " -"line after the first beginning with a vertical bar." -msgstr "" -"Κάθε κανόνας ξεκινά με ένα όνομα (το οποίο είναι ένα όνομα ορισμένο από τον " -"κανόνα) και ``::=``. Μία κάθετη γραμμή (``|``) χρησιμοποιείται για να " -"διαχωρίσει τις εναλλακτικές· έχει την μικρότερη προτεραιότητα στην σειρά " -"προτεραιότητας πράξεων αυτού του συμβολισμού. Ένας αστερίσκος (``*``) " -"σημαίνει μηδέν ή περισσότερες επαναλήψεις του προηγούμενου αντικειμένου· " -"παρομοίως, το συν (``+``) σημαίνει μία ή περισσότερες επαναλήψεις, και μία " -"φράση περιφραγμένη από αγκύλες (``[ ]``) σημαίνει μηδέν ή μία περίπτωση (με " -"άλλα λόγια, η περιφραγμένη φράση είναι προαιρετική). Οι τελεστές ``*`` και " -"``+`` ενώνονται όσο το δυνατόν πιο σφιχτά· οι παρενθέσεις χρησιμοποιούνται " -"για ομαδοποίηση. Οι συμβολοσειρές είναι περιφραγμένες από εισαγωγικά. Οι " -"κενοί χαρακτήρες είναι μόνο σημαντικοί για να διαχωρίσουν τα *tokens*. Οι " -"κανόνες συνήθως περιέχονται σε μία μονή γραμμή· οι κανόνες με πολλές " -"εναλλακτικές μπορεί να μορφοποιηθούν εναλλακτικά με κάθε γραμμή μετά την " -"πρώτη να ξεκινάει με μια κάθετη γραμμή." - -#: reference/introduction.rst:120 -msgid "" -"In lexical definitions (as the example above), two more conventions are " -"used: Two literal characters separated by three dots mean a choice of any " -"single character in the given (inclusive) range of ASCII characters. A " -"phrase between angular brackets (``<...>``) gives an informal description of " -"the symbol defined; e.g., this could be used to describe the notion of " -"'control character' if needed." -msgstr "" -"Στους λεξιλογικούς ορισμούς (όπως στο παραπάνω παράδειγμα), δύο περισσότεροι " -"κανόνες χρησιμοποιούνται: Δύο χαρακτήρες χωρισμένοι από τρεις τελείες " -"σημαίνει επιλογή όποιου μονού χαρακτήρα στο συγκεκριμένο (κλειστό) εύρος " -"*ASCII* χαρακτήρων. Η φράση ανάμεσα σε γωνιακές παρενθέσεις (``<...>``) " -"δίνει μία άτυπη περιγραφή του ορισμένου συμβόλου· π.χ., αυτό θα μπορούσε να " -"χρησιμοποιηθεί για να περιγράψει την ιδέα του 'χαρακτήρα ελέγχου' (control " -"character) αν χρειαστεί." +"``TOKEN``: An uppercase name refers to a :term:`token`. For the purposes of " +"grammar definitions, tokens are the same as rules." +msgstr "" + +#: reference/introduction.rst:122 +msgid "" +"``\"text\"``, ``'text'``: Text in single or double quotes must match " +"literally (without the quotes). The type of quote is chosen according to the " +"meaning of ``text``:" +msgstr "" + +#: reference/introduction.rst:126 +msgid "``'if'``: A name in single quotes denotes a :ref:`keyword `." +msgstr "" #: reference/introduction.rst:127 msgid "" -"Even though the notation used is almost the same, there is a big difference " -"between the meaning of lexical and syntactic definitions: a lexical " -"definition operates on the individual characters of the input source, while " -"a syntax definition operates on the stream of tokens generated by the " -"lexical analysis. All uses of BNF in the next chapter (\"Lexical Analysis\") " -"are lexical definitions; uses in subsequent chapters are syntactic " -"definitions." +"``\"case\"``: A name in double quotes denotes a :ref:`soft-keyword `." +msgstr "" + +#: reference/introduction.rst:129 +msgid "" +"``'@'``: A non-letter symbol in single quotes denotes an :py:data:`~token." +"OP` token, that is, a :ref:`delimiter ` or :ref:`operator " +"`." +msgstr "" + +#: reference/introduction.rst:133 +msgid "" +"``e1 e2``: Items separated only by whitespace denote a sequence. Here, " +"``e1`` must be followed by ``e2``." +msgstr "" + +#: reference/introduction.rst:135 +msgid "" +"``e1 | e2``: A vertical bar is used to separate alternatives. It denotes " +"PEG's \"ordered choice\": if ``e1`` matches, ``e2`` is not considered. In " +"traditional PEG grammars, this is written as a slash, ``/``, rather than a " +"vertical bar. See :pep:`617` for more background and details." +msgstr "" + +#: reference/introduction.rst:141 +msgid "``e*``: A star means zero or more repetitions of the preceding item." +msgstr "" + +#: reference/introduction.rst:142 +msgid "``e+``: Likewise, a plus means one or more repetitions." +msgstr "" + +#: reference/introduction.rst:143 +msgid "" +"``[e]``: A phrase enclosed in square brackets means zero or one occurrences. " +"In other words, the enclosed phrase is optional." +msgstr "" + +#: reference/introduction.rst:145 +msgid "" +"``e?``: A question mark has exactly the same meaning as square brackets: the " +"preceding item is optional." +msgstr "" + +#: reference/introduction.rst:147 +msgid "``(e)``: Parentheses are used for grouping." +msgstr "" + +#: reference/introduction.rst:148 +msgid "" +"``\"a\"...\"z\"``: Two literal characters separated by three dots mean a " +"choice of any single character in the given (inclusive) range of ASCII " +"characters. This notation is only used in :ref:`lexical definitions " +"`." +msgstr "" + +#: reference/introduction.rst:152 +msgid "" +"``<...>``: A phrase between angular brackets gives an informal description " +"of the matched symbol (for example, ````), or an abbreviation that is defined in nearby text (for example, " +"````). This notation is only used in :ref:`lexical definitions `." +msgstr "" + +#: reference/introduction.rst:158 +msgid "" +"The unary operators (``*``, ``+``, ``?``) bind as tightly as possible; the " +"vertical bar (``|``) binds most loosely." +msgstr "" + +#: reference/introduction.rst:161 +msgid "White space is only meaningful to separate tokens." +msgstr "" + +#: reference/introduction.rst:163 +msgid "" +"Rules are normally contained on a single line, but rules that are too long " +"may be wrapped:" +msgstr "" + +#: reference/introduction.rst:172 +msgid "" +"Alternatively, rules may be formatted with the first line ending at the " +"colon, and each alternative beginning with a vertical bar on a new line. For " +"example:" +msgstr "" + +#: reference/introduction.rst:187 +msgid "This does *not* mean that there is an empty first alternative." +msgstr "" + +#: reference/introduction.rst:194 +#, fuzzy +msgid "Lexical and Syntactic definitions" +msgstr "λεξιλογικοί ορισμοί" + +#: reference/introduction.rst:196 +#, fuzzy +msgid "" +"There is some difference between *lexical* and *syntactic* analysis: the :" +"term:`lexical analyzer` operates on the individual characters of the input " +"source, while the *parser* (syntactic analyzer) operates on the stream of :" +"term:`tokens ` generated by the lexical analysis. However, in some " +"cases the exact boundary between the two phases is a CPython implementation " +"detail." msgstr "" "Αν και η σημειογραφία που χρησιμοποιείται είναι σχεδόν η ίδια, υπάρχει " "μεγάλη διαφορά ανάμεσα στη σημασία των λεξιλογικών και των συντακτικών " @@ -307,6 +394,22 @@ msgstr "" "επόμενο κεφάλαιο (\"Λεξιλογική Ανάλυση\") είναι λεξιλογικοί ορισμοί· οι " "χρήσεις στα ακόλουθα κεφάλαια είναι συντακτικοί ορισμοί." +#: reference/introduction.rst:203 +msgid "" +"The practical difference between the two is that in *lexical* definitions, " +"all whitespace is significant. The lexical analyzer :ref:`discards " +"` all whitespace that is not converted to tokens like :data:" +"`token.INDENT` or :data:`~token.NEWLINE`. *Syntactic* definitions then use " +"these tokens, rather than source characters." +msgstr "" + +#: reference/introduction.rst:209 +msgid "" +"This documentation uses the same BNF grammar for both styles of definitions. " +"All uses of BNF in the next chapter (:ref:`lexical`) are lexical " +"definitions; uses in subsequent chapters are syntactic definitions." +msgstr "" + #: reference/introduction.rst:91 msgid "BNF" msgstr "BNF" @@ -323,10 +426,55 @@ msgstr "συντακτικό" msgid "notation" msgstr "σημειογραφία" -#: reference/introduction.rst:118 +#: reference/introduction.rst:189 msgid "lexical definitions" msgstr "λεξιλογικοί ορισμοί" -#: reference/introduction.rst:118 -msgid "ASCII" -msgstr "ASCII" +#~ msgid "" +#~ "Each rule begins with a name (which is the name defined by the rule) and " +#~ "``::=``. A vertical bar (``|``) is used to separate alternatives; it is " +#~ "the least binding operator in this notation. A star (``*``) means zero " +#~ "or more repetitions of the preceding item; likewise, a plus (``+``) means " +#~ "one or more repetitions, and a phrase enclosed in square brackets " +#~ "(``[ ]``) means zero or one occurrences (in other words, the enclosed " +#~ "phrase is optional). The ``*`` and ``+`` operators bind as tightly as " +#~ "possible; parentheses are used for grouping. Literal strings are " +#~ "enclosed in quotes. White space is only meaningful to separate tokens. " +#~ "Rules are normally contained on a single line; rules with many " +#~ "alternatives may be formatted alternatively with each line after the " +#~ "first beginning with a vertical bar." +#~ msgstr "" +#~ "Κάθε κανόνας ξεκινά με ένα όνομα (το οποίο είναι ένα όνομα ορισμένο από " +#~ "τον κανόνα) και ``::=``. Μία κάθετη γραμμή (``|``) χρησιμοποιείται για να " +#~ "διαχωρίσει τις εναλλακτικές· έχει την μικρότερη προτεραιότητα στην σειρά " +#~ "προτεραιότητας πράξεων αυτού του συμβολισμού. Ένας αστερίσκος (``*``) " +#~ "σημαίνει μηδέν ή περισσότερες επαναλήψεις του προηγούμενου αντικειμένου· " +#~ "παρομοίως, το συν (``+``) σημαίνει μία ή περισσότερες επαναλήψεις, και " +#~ "μία φράση περιφραγμένη από αγκύλες (``[ ]``) σημαίνει μηδέν ή μία " +#~ "περίπτωση (με άλλα λόγια, η περιφραγμένη φράση είναι προαιρετική). Οι " +#~ "τελεστές ``*`` και ``+`` ενώνονται όσο το δυνατόν πιο σφιχτά· οι " +#~ "παρενθέσεις χρησιμοποιούνται για ομαδοποίηση. Οι συμβολοσειρές είναι " +#~ "περιφραγμένες από εισαγωγικά. Οι κενοί χαρακτήρες είναι μόνο σημαντικοί " +#~ "για να διαχωρίσουν τα *tokens*. Οι κανόνες συνήθως περιέχονται σε μία " +#~ "μονή γραμμή· οι κανόνες με πολλές εναλλακτικές μπορεί να μορφοποιηθούν " +#~ "εναλλακτικά με κάθε γραμμή μετά την πρώτη να ξεκινάει με μια κάθετη " +#~ "γραμμή." + +#~ msgid "" +#~ "In lexical definitions (as the example above), two more conventions are " +#~ "used: Two literal characters separated by three dots mean a choice of any " +#~ "single character in the given (inclusive) range of ASCII characters. A " +#~ "phrase between angular brackets (``<...>``) gives an informal description " +#~ "of the symbol defined; e.g., this could be used to describe the notion of " +#~ "'control character' if needed." +#~ msgstr "" +#~ "Στους λεξιλογικούς ορισμούς (όπως στο παραπάνω παράδειγμα), δύο " +#~ "περισσότεροι κανόνες χρησιμοποιούνται: Δύο χαρακτήρες χωρισμένοι από " +#~ "τρεις τελείες σημαίνει επιλογή όποιου μονού χαρακτήρα στο συγκεκριμένο " +#~ "(κλειστό) εύρος *ASCII* χαρακτήρων. Η φράση ανάμεσα σε γωνιακές " +#~ "παρενθέσεις (``<...>``) δίνει μία άτυπη περιγραφή του ορισμένου συμβόλου· " +#~ "π.χ., αυτό θα μπορούσε να χρησιμοποιηθεί για να περιγράψει την ιδέα του " +#~ "'χαρακτήρα ελέγχου' (control character) αν χρειαστεί." + +#~ msgid "ASCII" +#~ msgstr "ASCII" diff --git a/reference/lexical_analysis.po b/reference/lexical_analysis.po index 371962d6..7770b633 100644 --- a/reference/lexical_analysis.po +++ b/reference/lexical_analysis.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -360,117 +360,150 @@ msgid "" msgstr "" #: reference/lexical_analysis.rst:292 -msgid "Identifiers and keywords" +msgid "Names (identifiers and keywords)" msgstr "" #: reference/lexical_analysis.rst:296 msgid "" -"Identifiers (also referred to as *names*) are described by the following " -"lexical definitions." +":data:`~token.NAME` tokens represent *identifiers*, *keywords*, and *soft " +"keywords*." msgstr "" #: reference/lexical_analysis.rst:299 msgid "" -"The syntax of identifiers in Python is based on the Unicode standard annex " -"UAX-31, with elaboration and changes as defined below; see also :pep:`3131` " -"for further details." +"Within the ASCII range (U+0001..U+007F), the valid characters for names " +"include the uppercase and lowercase letters (``A-Z`` and ``a-z``), the " +"underscore ``_`` and, except for the first character, the digits ``0`` " +"through ``9``." msgstr "" -#: reference/lexical_analysis.rst:303 +#: reference/lexical_analysis.rst:304 msgid "" -"Within the ASCII range (U+0001..U+007F), the valid characters for " -"identifiers include the uppercase and lowercase letters ``A`` through ``Z``, " -"the underscore ``_`` and, except for the first character, the digits ``0`` " -"through ``9``. Python 3.0 introduced additional characters from outside the " -"ASCII range (see :pep:`3131`). For these characters, the classification " -"uses the version of the Unicode Character Database as included in the :mod:" -"`unicodedata` module." +"Names must contain at least one character, but have no upper length limit. " +"Case is significant." msgstr "" -#: reference/lexical_analysis.rst:311 -msgid "Identifiers are unlimited in length. Case is significant." +#: reference/lexical_analysis.rst:307 +msgid "" +"Besides ``A-Z``, ``a-z``, ``_`` and ``0-9``, names can also use \"letter-" +"like\" and \"number-like\" characters from outside the ASCII range, as " +"detailed below." msgstr "" -#: reference/lexical_analysis.rst:320 -msgid "The Unicode category codes mentioned above stand for:" +#: reference/lexical_analysis.rst:310 +msgid "" +"All identifiers are converted into the `normalization form`_ NFKC while " +"parsing; comparison of identifiers is based on NFKC." msgstr "" -#: reference/lexical_analysis.rst:322 -msgid "*Lu* - uppercase letters" +#: reference/lexical_analysis.rst:313 +msgid "" +"Formally, the first character of a normalized identifier must belong to the " +"set ``id_start``, which is the union of:" msgstr "" -#: reference/lexical_analysis.rst:323 -msgid "*Ll* - lowercase letters" +#: reference/lexical_analysis.rst:316 +msgid "Unicode category ```` - uppercase letters (includes ``A`` to ``Z``)" msgstr "" -#: reference/lexical_analysis.rst:324 -msgid "*Lt* - titlecase letters" +#: reference/lexical_analysis.rst:317 +msgid "Unicode category ```` - lowercase letters (includes ``a`` to ``z``)" msgstr "" -#: reference/lexical_analysis.rst:325 -msgid "*Lm* - modifier letters" +#: reference/lexical_analysis.rst:318 +msgid "Unicode category ```` - titlecase letters" msgstr "" -#: reference/lexical_analysis.rst:326 -msgid "*Lo* - other letters" +#: reference/lexical_analysis.rst:319 +msgid "Unicode category ```` - modifier letters" +msgstr "" + +#: reference/lexical_analysis.rst:320 +msgid "Unicode category ```` - other letters" +msgstr "" + +#: reference/lexical_analysis.rst:321 +msgid "Unicode category ```` - letter numbers" msgstr "" -#: reference/lexical_analysis.rst:327 -msgid "*Nl* - letter numbers" +#: reference/lexical_analysis.rst:322 +msgid "{``\"_\"``} - the underscore" +msgstr "" + +#: reference/lexical_analysis.rst:323 +msgid "" +"```` - an explicit set of characters in `PropList.txt`_ to " +"support backwards compatibility" msgstr "" -#: reference/lexical_analysis.rst:328 -msgid "*Mn* - nonspacing marks" +#: reference/lexical_analysis.rst:326 +msgid "" +"The remaining characters must belong to the set ``id_continue``, which is " +"the union of:" msgstr "" #: reference/lexical_analysis.rst:329 -msgid "*Mc* - spacing combining marks" +msgid "all characters in ``id_start``" msgstr "" #: reference/lexical_analysis.rst:330 -msgid "*Nd* - decimal numbers" +msgid "Unicode category ```` - decimal numbers (includes ``0`` to ``9``)" msgstr "" #: reference/lexical_analysis.rst:331 -msgid "*Pc* - connector punctuations" +msgid "Unicode category ```` - connector punctuations" msgstr "" #: reference/lexical_analysis.rst:332 -msgid "" -"*Other_ID_Start* - explicit list of characters in `PropList.txt `_ to support backwards " -"compatibility" +msgid "Unicode category ```` - nonspacing marks" +msgstr "" + +#: reference/lexical_analysis.rst:333 +msgid "Unicode category ```` - spacing combining marks" msgstr "" -#: reference/lexical_analysis.rst:335 -msgid "*Other_ID_Continue* - likewise" +#: reference/lexical_analysis.rst:334 +msgid "" +"```` - another explicit set of characters in `PropList." +"txt`_ to support backwards compatibility" msgstr "" #: reference/lexical_analysis.rst:337 msgid "" -"All identifiers are converted into the normal form NFKC while parsing; " -"comparison of identifiers is based on NFKC." +"Unicode categories use the version of the Unicode Character Database as " +"included in the :mod:`unicodedata` module." msgstr "" #: reference/lexical_analysis.rst:340 msgid "" -"A non-normative HTML file listing all valid identifier characters for " -"Unicode 16.0.0 can be found at https://www.unicode.org/Public/16.0.0/ucd/" -"DerivedCoreProperties.txt" +"These sets are based on the Unicode standard annex `UAX-31`_. See also :pep:" +"`3131` for further details." +msgstr "" + +#: reference/lexical_analysis.rst:343 +msgid "" +"Even more formally, names are described by the following lexical definitions:" +msgstr "" + +#: reference/lexical_analysis.rst:357 +msgid "" +"A non-normative listing of all valid identifier characters as defined by " +"Unicode is available in the `DerivedCoreProperties.txt`_ file in the Unicode " +"Character Database." msgstr "" -#: reference/lexical_analysis.rst:348 +#: reference/lexical_analysis.rst:371 msgid "Keywords" msgstr "" -#: reference/lexical_analysis.rst:354 +#: reference/lexical_analysis.rst:377 msgid "" -"The following identifiers are used as reserved words, or *keywords* of the " +"The following names are used as reserved words, or *keywords* of the " "language, and cannot be used as ordinary identifiers. They must be spelled " "exactly as written here:" msgstr "" -#: reference/lexical_analysis.rst:358 +#: reference/lexical_analysis.rst:381 msgid "" "False await else import pass\n" "None break except in raise\n" @@ -481,94 +514,101 @@ msgid "" "async elif if or yield" msgstr "" -#: reference/lexical_analysis.rst:372 +#: reference/lexical_analysis.rst:395 msgid "Soft Keywords" msgstr "" -#: reference/lexical_analysis.rst:378 +#: reference/lexical_analysis.rst:401 msgid "" -"Some identifiers are only reserved under specific contexts. These are known " -"as *soft keywords*. The identifiers ``match``, ``case``, ``type`` and ``_`` " -"can syntactically act as keywords in certain contexts, but this distinction " -"is done at the parser level, not when tokenizing." +"Some names are only reserved under specific contexts. These are known as " +"*soft keywords*:" msgstr "" -#: reference/lexical_analysis.rst:383 +#: reference/lexical_analysis.rst:404 msgid "" -"As soft keywords, their use in the grammar is possible while still " -"preserving compatibility with existing code that uses these names as " -"identifier names." +"``match``, ``case``, and ``_``, when used in the :keyword:`match` statement." +msgstr "" + +#: reference/lexical_analysis.rst:405 +msgid "``type``, when used in the :keyword:`type` statement." msgstr "" -#: reference/lexical_analysis.rst:387 +#: reference/lexical_analysis.rst:407 msgid "" -"``match``, ``case``, and ``_`` are used in the :keyword:`match` statement. " -"``type`` is used in the :keyword:`type` statement." +"These syntactically act as keywords in their specific contexts, but this " +"distinction is done at the parser level, not when tokenizing." msgstr "" -#: reference/lexical_analysis.rst:390 +#: reference/lexical_analysis.rst:410 +msgid "" +"As soft keywords, their use in the grammar is possible while still " +"preserving compatibility with existing code that uses these names as " +"identifier names." +msgstr "" + +#: reference/lexical_analysis.rst:414 msgid "``type`` is now a soft keyword." msgstr "" -#: reference/lexical_analysis.rst:399 +#: reference/lexical_analysis.rst:423 msgid "Reserved classes of identifiers" msgstr "" -#: reference/lexical_analysis.rst:401 +#: reference/lexical_analysis.rst:425 msgid "" "Certain classes of identifiers (besides keywords) have special meanings. " "These classes are identified by the patterns of leading and trailing " "underscore characters:" msgstr "" -#: reference/lexical_analysis.rst:405 +#: reference/lexical_analysis.rst:429 msgid "``_*``" msgstr "" -#: reference/lexical_analysis.rst:406 +#: reference/lexical_analysis.rst:430 msgid "Not imported by ``from module import *``." msgstr "" -#: reference/lexical_analysis.rst:408 +#: reference/lexical_analysis.rst:432 msgid "``_``" msgstr "" -#: reference/lexical_analysis.rst:409 +#: reference/lexical_analysis.rst:433 msgid "" "In a ``case`` pattern within a :keyword:`match` statement, ``_`` is a :ref:" "`soft keyword ` that denotes a :ref:`wildcard `." msgstr "" -#: reference/lexical_analysis.rst:413 +#: reference/lexical_analysis.rst:437 msgid "" "Separately, the interactive interpreter makes the result of the last " "evaluation available in the variable ``_``. (It is stored in the :mod:" "`builtins` module, alongside built-in functions like ``print``.)" msgstr "" -#: reference/lexical_analysis.rst:418 +#: reference/lexical_analysis.rst:442 msgid "" "Elsewhere, ``_`` is a regular identifier. It is often used to name " "\"special\" items, but it is not special to Python itself." msgstr "" -#: reference/lexical_analysis.rst:423 +#: reference/lexical_analysis.rst:447 msgid "" "The name ``_`` is often used in conjunction with internationalization; refer " "to the documentation for the :mod:`gettext` module for more information on " "this convention." msgstr "" -#: reference/lexical_analysis.rst:427 +#: reference/lexical_analysis.rst:451 msgid "It is also commonly used for unused variables." msgstr "" -#: reference/lexical_analysis.rst:429 +#: reference/lexical_analysis.rst:453 msgid "``__*__``" msgstr "" -#: reference/lexical_analysis.rst:430 +#: reference/lexical_analysis.rst:454 msgid "" "System-defined names, informally known as \"dunder\" names. These names are " "defined by the interpreter and its implementation (including the standard " @@ -578,11 +618,11 @@ msgid "" "explicitly documented use, is subject to breakage without warning." msgstr "" -#: reference/lexical_analysis.rst:437 +#: reference/lexical_analysis.rst:461 msgid "``__*``" msgstr "" -#: reference/lexical_analysis.rst:438 +#: reference/lexical_analysis.rst:462 msgid "" "Class-private names. Names in this category, when used within the context " "of a class definition, are re-written to use a mangled form to help avoid " @@ -590,23 +630,23 @@ msgid "" "section :ref:`atom-identifiers`." msgstr "" -#: reference/lexical_analysis.rst:447 +#: reference/lexical_analysis.rst:471 msgid "Literals" msgstr "" -#: reference/lexical_analysis.rst:451 +#: reference/lexical_analysis.rst:475 msgid "Literals are notations for constant values of some built-in types." msgstr "" -#: reference/lexical_analysis.rst:462 +#: reference/lexical_analysis.rst:486 msgid "String and Bytes literals" msgstr "" -#: reference/lexical_analysis.rst:464 +#: reference/lexical_analysis.rst:488 msgid "String literals are described by the following lexical definitions:" msgstr "" -#: reference/lexical_analysis.rst:489 +#: reference/lexical_analysis.rst:514 msgid "" "One syntactic restriction not indicated by these productions is that " "whitespace is not allowed between the :token:`~python-grammar:stringprefix` " @@ -616,7 +656,7 @@ msgid "" "`encodings`." msgstr "" -#: reference/lexical_analysis.rst:499 +#: reference/lexical_analysis.rst:524 msgid "" "In plain English: Both types of literals can be enclosed in matching single " "quotes (``'``) or double quotes (``\"``). They can also be enclosed in " @@ -629,7 +669,7 @@ msgid "" "sequences>` below for examples." msgstr "" -#: reference/lexical_analysis.rst:512 +#: reference/lexical_analysis.rst:537 msgid "" "Bytes literals are always prefixed with ``'b'`` or ``'B'``; they produce an " "instance of the :class:`bytes` type instead of the :class:`str` type. They " @@ -637,7 +677,7 @@ msgid "" "greater must be expressed with escapes." msgstr "" -#: reference/lexical_analysis.rst:521 +#: reference/lexical_analysis.rst:546 msgid "" "Both string and bytes literals may optionally be prefixed with a letter " "``'r'`` or ``'R'``; such constructs are called :dfn:`raw string literals` " @@ -646,20 +686,20 @@ msgid "" "escapes are not treated specially." msgstr "" -#: reference/lexical_analysis.rst:527 +#: reference/lexical_analysis.rst:552 msgid "" "The ``'rb'`` prefix of raw bytes literals has been added as a synonym of " "``'br'``." msgstr "" -#: reference/lexical_analysis.rst:531 +#: reference/lexical_analysis.rst:556 msgid "" "Support for the unicode legacy literal (``u'value'``) was reintroduced to " "simplify the maintenance of dual Python 2.x and 3.x codebases. See :pep:" "`414` for more information." msgstr "" -#: reference/lexical_analysis.rst:539 +#: reference/lexical_analysis.rst:564 msgid "" "A string literal with ``'f'`` or ``'F'`` in its prefix is a :dfn:`formatted " "string literal`; see :ref:`f-strings`. The ``'f'`` may be combined with " @@ -667,7 +707,7 @@ msgid "" "are possible, but formatted bytes literals are not." msgstr "" -#: reference/lexical_analysis.rst:544 +#: reference/lexical_analysis.rst:569 msgid "" "In triple-quoted literals, unescaped newlines and quotes are allowed (and " "are retained), except that three unescaped quotes in a row terminate the " @@ -675,250 +715,250 @@ msgid "" "either ``'`` or ``\"``.)" msgstr "" -#: reference/lexical_analysis.rst:567 +#: reference/lexical_analysis.rst:592 msgid "Escape sequences" msgstr "" -#: reference/lexical_analysis.rst:569 +#: reference/lexical_analysis.rst:594 msgid "" "Unless an ``'r'`` or ``'R'`` prefix is present, escape sequences in string " "and bytes literals are interpreted according to rules similar to those used " "by Standard C. The recognized escape sequences are:" msgstr "" -#: reference/lexical_analysis.rst:574 reference/lexical_analysis.rst:607 +#: reference/lexical_analysis.rst:599 reference/lexical_analysis.rst:632 msgid "Escape Sequence" msgstr "" -#: reference/lexical_analysis.rst:574 reference/lexical_analysis.rst:607 +#: reference/lexical_analysis.rst:599 reference/lexical_analysis.rst:632 msgid "Meaning" msgstr "" -#: reference/lexical_analysis.rst:574 reference/lexical_analysis.rst:607 +#: reference/lexical_analysis.rst:599 reference/lexical_analysis.rst:632 msgid "Notes" msgstr "" -#: reference/lexical_analysis.rst:576 +#: reference/lexical_analysis.rst:601 msgid "``\\``\\ " msgstr "" -#: reference/lexical_analysis.rst:576 +#: reference/lexical_analysis.rst:601 msgid "Backslash and newline ignored" msgstr "" -#: reference/lexical_analysis.rst:576 +#: reference/lexical_analysis.rst:601 msgid "\\(1)" msgstr "" -#: reference/lexical_analysis.rst:578 +#: reference/lexical_analysis.rst:603 msgid "``\\\\``" msgstr "" -#: reference/lexical_analysis.rst:578 +#: reference/lexical_analysis.rst:603 msgid "Backslash (``\\``)" msgstr "" -#: reference/lexical_analysis.rst:580 +#: reference/lexical_analysis.rst:605 msgid "``\\'``" msgstr "" -#: reference/lexical_analysis.rst:580 +#: reference/lexical_analysis.rst:605 msgid "Single quote (``'``)" msgstr "" -#: reference/lexical_analysis.rst:582 +#: reference/lexical_analysis.rst:607 msgid "``\\\"``" msgstr "" -#: reference/lexical_analysis.rst:582 +#: reference/lexical_analysis.rst:607 msgid "Double quote (``\"``)" msgstr "" -#: reference/lexical_analysis.rst:584 +#: reference/lexical_analysis.rst:609 msgid "``\\a``" msgstr "" -#: reference/lexical_analysis.rst:584 +#: reference/lexical_analysis.rst:609 msgid "ASCII Bell (BEL)" msgstr "" -#: reference/lexical_analysis.rst:586 +#: reference/lexical_analysis.rst:611 msgid "``\\b``" msgstr "" -#: reference/lexical_analysis.rst:586 +#: reference/lexical_analysis.rst:611 msgid "ASCII Backspace (BS)" msgstr "" -#: reference/lexical_analysis.rst:588 +#: reference/lexical_analysis.rst:613 msgid "``\\f``" msgstr "" -#: reference/lexical_analysis.rst:588 +#: reference/lexical_analysis.rst:613 msgid "ASCII Formfeed (FF)" msgstr "" -#: reference/lexical_analysis.rst:590 +#: reference/lexical_analysis.rst:615 msgid "``\\n``" msgstr "" -#: reference/lexical_analysis.rst:590 +#: reference/lexical_analysis.rst:615 msgid "ASCII Linefeed (LF)" msgstr "" -#: reference/lexical_analysis.rst:592 +#: reference/lexical_analysis.rst:617 msgid "``\\r``" msgstr "" -#: reference/lexical_analysis.rst:592 +#: reference/lexical_analysis.rst:617 msgid "ASCII Carriage Return (CR)" msgstr "" -#: reference/lexical_analysis.rst:594 +#: reference/lexical_analysis.rst:619 msgid "``\\t``" msgstr "" -#: reference/lexical_analysis.rst:594 +#: reference/lexical_analysis.rst:619 msgid "ASCII Horizontal Tab (TAB)" msgstr "" -#: reference/lexical_analysis.rst:596 +#: reference/lexical_analysis.rst:621 msgid "``\\v``" msgstr "" -#: reference/lexical_analysis.rst:596 +#: reference/lexical_analysis.rst:621 msgid "ASCII Vertical Tab (VT)" msgstr "" -#: reference/lexical_analysis.rst:598 +#: reference/lexical_analysis.rst:623 msgid ":samp:`\\\\\\\\{ooo}`" msgstr "" -#: reference/lexical_analysis.rst:598 +#: reference/lexical_analysis.rst:623 msgid "Character with octal value *ooo*" msgstr "" -#: reference/lexical_analysis.rst:598 +#: reference/lexical_analysis.rst:623 msgid "(2,4)" msgstr "" -#: reference/lexical_analysis.rst:601 +#: reference/lexical_analysis.rst:626 msgid ":samp:`\\\\x{hh}`" msgstr "" -#: reference/lexical_analysis.rst:601 +#: reference/lexical_analysis.rst:626 msgid "Character with hex value *hh*" msgstr "" -#: reference/lexical_analysis.rst:601 +#: reference/lexical_analysis.rst:626 msgid "(3,4)" msgstr "" -#: reference/lexical_analysis.rst:604 +#: reference/lexical_analysis.rst:629 msgid "Escape sequences only recognized in string literals are:" msgstr "" -#: reference/lexical_analysis.rst:609 +#: reference/lexical_analysis.rst:634 msgid ":samp:`\\\\N\\\\{{name}\\\\}`" msgstr "" -#: reference/lexical_analysis.rst:609 +#: reference/lexical_analysis.rst:634 msgid "Character named *name* in the Unicode database" msgstr "" -#: reference/lexical_analysis.rst:609 +#: reference/lexical_analysis.rst:634 msgid "\\(5)" msgstr "" -#: reference/lexical_analysis.rst:612 +#: reference/lexical_analysis.rst:637 msgid ":samp:`\\\\u{xxxx}`" msgstr "" -#: reference/lexical_analysis.rst:612 +#: reference/lexical_analysis.rst:637 msgid "Character with 16-bit hex value *xxxx*" msgstr "" -#: reference/lexical_analysis.rst:612 +#: reference/lexical_analysis.rst:637 msgid "\\(6)" msgstr "" -#: reference/lexical_analysis.rst:615 +#: reference/lexical_analysis.rst:640 msgid ":samp:`\\\\U{xxxxxxxx}`" msgstr "" -#: reference/lexical_analysis.rst:615 +#: reference/lexical_analysis.rst:640 msgid "Character with 32-bit hex value *xxxxxxxx*" msgstr "" -#: reference/lexical_analysis.rst:615 +#: reference/lexical_analysis.rst:640 msgid "\\(7)" msgstr "" -#: reference/lexical_analysis.rst:619 +#: reference/lexical_analysis.rst:644 msgid "Notes:" msgstr "" -#: reference/lexical_analysis.rst:622 +#: reference/lexical_analysis.rst:647 msgid "A backslash can be added at the end of a line to ignore the newline::" msgstr "" -#: reference/lexical_analysis.rst:624 +#: reference/lexical_analysis.rst:649 msgid "" ">>> 'This string will not include \\\n" "... backslashes or newline characters.'\n" "'This string will not include backslashes or newline characters.'" msgstr "" -#: reference/lexical_analysis.rst:628 +#: reference/lexical_analysis.rst:653 msgid "" "The same result can be achieved using :ref:`triple-quoted strings " "`, or parentheses and :ref:`string literal concatenation `." msgstr "" -#: reference/lexical_analysis.rst:633 +#: reference/lexical_analysis.rst:658 msgid "As in Standard C, up to three octal digits are accepted." msgstr "" -#: reference/lexical_analysis.rst:635 +#: reference/lexical_analysis.rst:660 msgid "" "Octal escapes with value larger than ``0o377`` produce a :exc:" "`DeprecationWarning`." msgstr "" -#: reference/lexical_analysis.rst:639 +#: reference/lexical_analysis.rst:664 msgid "" "Octal escapes with value larger than ``0o377`` produce a :exc:" "`SyntaxWarning`. In a future Python version they will be eventually a :exc:" "`SyntaxError`." msgstr "" -#: reference/lexical_analysis.rst:645 +#: reference/lexical_analysis.rst:670 msgid "Unlike in Standard C, exactly two hex digits are required." msgstr "" -#: reference/lexical_analysis.rst:648 +#: reference/lexical_analysis.rst:673 msgid "" "In a bytes literal, hexadecimal and octal escapes denote the byte with the " "given value. In a string literal, these escapes denote a Unicode character " "with the given value." msgstr "" -#: reference/lexical_analysis.rst:653 +#: reference/lexical_analysis.rst:678 msgid "Support for name aliases [#]_ has been added." msgstr "" -#: reference/lexical_analysis.rst:657 +#: reference/lexical_analysis.rst:682 msgid "Exactly four hex digits are required." msgstr "" -#: reference/lexical_analysis.rst:660 +#: reference/lexical_analysis.rst:685 msgid "" "Any Unicode character can be encoded this way. Exactly eight hex digits are " "required." msgstr "" -#: reference/lexical_analysis.rst:666 +#: reference/lexical_analysis.rst:691 msgid "" "Unlike Standard C, all unrecognized escape sequences are left in the string " "unchanged, i.e., *the backslash is left in the result*. (This behavior is " @@ -928,17 +968,17 @@ msgid "" "category of unrecognized escapes for bytes literals." msgstr "" -#: reference/lexical_analysis.rst:673 +#: reference/lexical_analysis.rst:698 msgid "Unrecognized escape sequences produce a :exc:`DeprecationWarning`." msgstr "" -#: reference/lexical_analysis.rst:676 +#: reference/lexical_analysis.rst:701 msgid "" "Unrecognized escape sequences produce a :exc:`SyntaxWarning`. In a future " "Python version they will be eventually a :exc:`SyntaxError`." msgstr "" -#: reference/lexical_analysis.rst:680 +#: reference/lexical_analysis.rst:705 msgid "" "Even in a raw literal, quotes can be escaped with a backslash, but the " "backslash remains in the result; for example, ``r\"\\\"\"`` is a valid " @@ -951,11 +991,11 @@ msgid "" "continuation." msgstr "" -#: reference/lexical_analysis.rst:693 +#: reference/lexical_analysis.rst:718 msgid "String literal concatenation" msgstr "" -#: reference/lexical_analysis.rst:695 +#: reference/lexical_analysis.rst:720 msgid "" "Multiple adjacent string or bytes literals (delimited by whitespace), " "possibly using different quoting conventions, are allowed, and their meaning " @@ -965,14 +1005,14 @@ msgid "" "lines, or even to add comments to parts of strings, for example::" msgstr "" -#: reference/lexical_analysis.rst:702 +#: reference/lexical_analysis.rst:727 msgid "" "re.compile(\"[A-Za-z_]\" # letter or underscore\n" " \"[A-Za-z0-9_]*\" # letter, digit or underscore\n" " )" msgstr "" -#: reference/lexical_analysis.rst:706 +#: reference/lexical_analysis.rst:731 msgid "" "Note that this feature is defined at the syntactical level, but implemented " "at compile time. The '+' operator must be used to concatenate string " @@ -982,11 +1022,11 @@ msgid "" "with plain string literals." msgstr "" -#: reference/lexical_analysis.rst:729 +#: reference/lexical_analysis.rst:754 msgid "f-strings" msgstr "" -#: reference/lexical_analysis.rst:733 +#: reference/lexical_analysis.rst:758 msgid "" "A :dfn:`formatted string literal` or :dfn:`f-string` is a string literal " "that is prefixed with ``'f'`` or ``'F'``. These strings may contain " @@ -995,14 +1035,14 @@ msgid "" "are really expressions evaluated at run time." msgstr "" -#: reference/lexical_analysis.rst:739 +#: reference/lexical_analysis.rst:764 msgid "" "Escape sequences are decoded like in ordinary string literals (except when a " "literal is also marked as a raw string). After decoding, the grammar for " "the contents of the string is:" msgstr "" -#: reference/lexical_analysis.rst:753 +#: reference/lexical_analysis.rst:778 msgid "" "The parts of the string outside curly braces are treated literally, except " "that any doubled curly braces ``'{{'`` or ``'}}'`` are replaced with the " @@ -1015,7 +1055,7 @@ msgid "" "replacement field ends with a closing curly bracket ``'}'``." msgstr "" -#: reference/lexical_analysis.rst:763 +#: reference/lexical_analysis.rst:788 msgid "" "Expressions in formatted string literals are treated like regular Python " "expressions surrounded by parentheses, with a few exceptions. An empty " @@ -1029,27 +1069,27 @@ msgid "" "replacement fields must be closed in a different line." msgstr "" -#: reference/lexical_analysis.rst:774 +#: reference/lexical_analysis.rst:799 msgid "" ">>> f\"abc{a # This is a comment }\"\n" "... + 3}\"\n" "'abc5'" msgstr "" -#: reference/lexical_analysis.rst:780 +#: reference/lexical_analysis.rst:805 msgid "" "Prior to Python 3.7, an :keyword:`await` expression and comprehensions " "containing an :keyword:`async for` clause were illegal in the expressions in " "formatted string literals due to a problem with the implementation." msgstr "" -#: reference/lexical_analysis.rst:785 +#: reference/lexical_analysis.rst:810 msgid "" "Prior to Python 3.12, comments were not allowed inside f-string replacement " "fields." msgstr "" -#: reference/lexical_analysis.rst:789 +#: reference/lexical_analysis.rst:814 msgid "" "When the equal sign ``'='`` is provided, the output will have the expression " "text, the ``'='`` and the evaluated value. Spaces after the opening brace " @@ -1060,18 +1100,18 @@ msgid "" "r'`` is declared." msgstr "" -#: reference/lexical_analysis.rst:797 +#: reference/lexical_analysis.rst:822 msgid "The equal sign ``'='``." msgstr "" -#: reference/lexical_analysis.rst:800 +#: reference/lexical_analysis.rst:825 msgid "" "If a conversion is specified, the result of evaluating the expression is " "converted before formatting. Conversion ``'!s'`` calls :func:`str` on the " "result, ``'!r'`` calls :func:`repr`, and ``'!a'`` calls :func:`ascii`." msgstr "" -#: reference/lexical_analysis.rst:804 +#: reference/lexical_analysis.rst:829 msgid "" "The result is then formatted using the :func:`format` protocol. The format " "specifier is passed to the :meth:`~object.__format__` method of the " @@ -1080,7 +1120,7 @@ msgid "" "value of the whole string." msgstr "" -#: reference/lexical_analysis.rst:810 +#: reference/lexical_analysis.rst:835 msgid "" "Top-level format specifiers may include nested replacement fields. These " "nested fields may include their own conversion fields and :ref:`format " @@ -1089,17 +1129,17 @@ msgid "" "as that used by the :meth:`str.format` method." msgstr "" -#: reference/lexical_analysis.rst:816 +#: reference/lexical_analysis.rst:841 msgid "" "Formatted string literals may be concatenated, but replacement fields cannot " "be split across literals." msgstr "" -#: reference/lexical_analysis.rst:819 +#: reference/lexical_analysis.rst:844 msgid "Some examples of formatted string literals::" msgstr "" -#: reference/lexical_analysis.rst:821 +#: reference/lexical_analysis.rst:846 msgid "" ">>> name = \"Fred\"\n" ">>> f\"He said his name is {name!r}.\"\n" @@ -1131,32 +1171,32 @@ msgid "" "'line = \"The mill\\'s closed\" '" msgstr "" -#: reference/lexical_analysis.rst:851 +#: reference/lexical_analysis.rst:876 msgid "" "Reusing the outer f-string quoting type inside a replacement field is " "permitted::" msgstr "" -#: reference/lexical_analysis.rst:854 +#: reference/lexical_analysis.rst:879 msgid "" ">>> a = dict(x=2)\n" ">>> f\"abc {a[\"x\"]} def\"\n" "'abc 2 def'" msgstr "" -#: reference/lexical_analysis.rst:858 +#: reference/lexical_analysis.rst:883 msgid "" "Prior to Python 3.12, reuse of the same quoting type of the outer f-string " "inside a replacement field was not possible." msgstr "" -#: reference/lexical_analysis.rst:862 +#: reference/lexical_analysis.rst:887 msgid "" "Backslashes are also allowed in replacement fields and are evaluated the " "same way as in any other context::" msgstr "" -#: reference/lexical_analysis.rst:865 +#: reference/lexical_analysis.rst:890 msgid "" ">>> a = [\"a\", \"b\", \"c\"]\n" ">>> print(f\"List a contains:\\n{\"\\n\".join(a)}\")\n" @@ -1166,19 +1206,19 @@ msgid "" "c" msgstr "" -#: reference/lexical_analysis.rst:872 +#: reference/lexical_analysis.rst:897 msgid "" "Prior to Python 3.12, backslashes were not permitted inside an f-string " "replacement field." msgstr "" -#: reference/lexical_analysis.rst:876 +#: reference/lexical_analysis.rst:901 msgid "" "Formatted string literals cannot be used as docstrings, even if they do not " "include expressions." msgstr "" -#: reference/lexical_analysis.rst:881 +#: reference/lexical_analysis.rst:906 msgid "" ">>> def foo():\n" "... f\"Not a docstring\"\n" @@ -1187,144 +1227,315 @@ msgid "" "True" msgstr "" -#: reference/lexical_analysis.rst:887 +#: reference/lexical_analysis.rst:912 msgid "" "See also :pep:`498` for the proposal that added formatted string literals, " "and :meth:`str.format`, which uses a related format string mechanism." msgstr "" -#: reference/lexical_analysis.rst:894 +#: reference/lexical_analysis.rst:919 msgid "Numeric literals" msgstr "" -#: reference/lexical_analysis.rst:900 +#: reference/lexical_analysis.rst:925 +msgid "" +":data:`~token.NUMBER` tokens represent numeric literals, of which there are " +"three types: integers, floating-point numbers, and imaginary numbers." +msgstr "" + +#: reference/lexical_analysis.rst:933 msgid "" -"There are three types of numeric literals: integers, floating-point numbers, " -"and imaginary numbers. There are no complex literals (complex numbers can " -"be formed by adding a real number and an imaginary number)." +"The numeric value of a numeric literal is the same as if it were passed as a " +"string to the :class:`int`, :class:`float` or :class:`complex` class " +"constructor, respectively. Note that not all valid inputs for those " +"constructors are also valid literals." msgstr "" -#: reference/lexical_analysis.rst:904 +#: reference/lexical_analysis.rst:938 msgid "" -"Note that numeric literals do not include a sign; a phrase like ``-1`` is " -"actually an expression composed of the unary operator '``-``' and the " -"literal ``1``." +"Numeric literals do not include a sign; a phrase like ``-1`` is actually an " +"expression composed of the unary operator '``-``' and the literal ``1``." msgstr "" -#: reference/lexical_analysis.rst:918 +#: reference/lexical_analysis.rst:952 msgid "Integer literals" msgstr "" -#: reference/lexical_analysis.rst:920 -msgid "Integer literals are described by the following lexical definitions:" +#: reference/lexical_analysis.rst:954 +msgid "Integer literals denote whole numbers. For example::" msgstr "" -#: reference/lexical_analysis.rst:934 +#: reference/lexical_analysis.rst:956 +msgid "" +"7\n" +"3\n" +"2147483647" +msgstr "" + +#: reference/lexical_analysis.rst:960 msgid "" "There is no limit for the length of integer literals apart from what can be " -"stored in available memory." +"stored in available memory::" +msgstr "" + +#: reference/lexical_analysis.rst:963 +msgid "7922816251426433759354395033679228162514264337593543950336" +msgstr "" + +#: reference/lexical_analysis.rst:965 +msgid "" +"Underscores can be used to group digits for enhanced readability, and are " +"ignored for determining the numeric value of the literal. For example, the " +"following literals are equivalent::" +msgstr "" + +#: reference/lexical_analysis.rst:969 +msgid "" +"100_000_000_000\n" +"100000000000\n" +"1_00_00_00_00_000" +msgstr "" + +#: reference/lexical_analysis.rst:973 +msgid "" +"Underscores can only occur between digits. For example, ``_123``, ``321_``, " +"and ``123__321`` are *not* valid literals." +msgstr "" + +#: reference/lexical_analysis.rst:976 +msgid "" +"Integers can be specified in binary (base 2), octal (base 8), or hexadecimal " +"(base 16) using the prefixes ``0b``, ``0o`` and ``0x``, respectively. " +"Hexadecimal digits 10 through 15 are represented by letters ``A``-``F``, " +"case-insensitive. For example::" msgstr "" -#: reference/lexical_analysis.rst:937 +#: reference/lexical_analysis.rst:981 msgid "" -"Underscores are ignored for determining the numeric value of the literal. " -"They can be used to group digits for enhanced readability. One underscore " -"can occur between digits, and after base specifiers like ``0x``." +"0b100110111\n" +"0b_1110_0101\n" +"0o177\n" +"0o377\n" +"0xdeadbeef\n" +"0xDead_Beef" msgstr "" -#: reference/lexical_analysis.rst:941 +#: reference/lexical_analysis.rst:988 msgid "" -"Note that leading zeros in a non-zero decimal number are not allowed. This " -"is for disambiguation with C-style octal literals, which Python used before " -"version 3.0." +"An underscore can follow the base specifier. For example, ``0x_1f`` is a " +"valid literal, but ``0_x1f`` and ``0x__1f`` are not." msgstr "" -#: reference/lexical_analysis.rst:945 -msgid "Some examples of integer literals::" +#: reference/lexical_analysis.rst:992 +msgid "" +"Leading zeros in a non-zero decimal number are not allowed. For example, " +"``0123`` is not a valid literal. This is for disambiguation with C-style " +"octal literals, which Python used before version 3.0." msgstr "" -#: reference/lexical_analysis.rst:947 +#: reference/lexical_analysis.rst:997 msgid "" -"7 2147483647 0o177 0b100110111\n" -"3 79228162514264337593543950336 0o377 0xdeadbeef\n" -" 100_000_000_000 0b_1110_0101" +"Formally, integer literals are described by the following lexical " +"definitions:" msgstr "" -#: reference/lexical_analysis.rst:951 reference/lexical_analysis.rst:983 +#: reference/lexical_analysis.rst:1014 reference/lexical_analysis.rst:1078 msgid "Underscores are now allowed for grouping purposes in literals." msgstr "" -#: reference/lexical_analysis.rst:962 +#: reference/lexical_analysis.rst:1025 msgid "Floating-point literals" msgstr "" -#: reference/lexical_analysis.rst:964 +#: reference/lexical_analysis.rst:1027 msgid "" -"Floating-point literals are described by the following lexical definitions:" +"Floating-point (float) literals, such as ``3.14`` or ``1.5``, denote :ref:" +"`approximations of real numbers `." msgstr "" -#: reference/lexical_analysis.rst:974 +#: reference/lexical_analysis.rst:1030 msgid "" -"Note that the integer and exponent parts are always interpreted using radix " -"10. For example, ``077e010`` is legal, and denotes the same number as " -"``77e10``. The allowed range of floating-point literals is implementation-" -"dependent. As in integer literals, underscores are supported for digit " -"grouping." +"They consist of *integer* and *fraction* parts, each composed of decimal " +"digits. The parts are separated by a decimal point, ``.``::" msgstr "" -#: reference/lexical_analysis.rst:979 -msgid "Some examples of floating-point literals::" +#: reference/lexical_analysis.rst:1033 +msgid "" +"2.71828\n" +"4.0" msgstr "" -#: reference/lexical_analysis.rst:981 -msgid "3.14 10. .001 1e100 3.14e-10 0e0 3.14_15_93" +#: reference/lexical_analysis.rst:1036 +msgid "" +"Unlike in integer literals, leading zeros are allowed in the numeric parts. " +"For example, ``077.010`` is legal, and denotes the same number as ``77.10``." msgstr "" -#: reference/lexical_analysis.rst:992 +#: reference/lexical_analysis.rst:1039 +msgid "" +"As in integer literals, single underscores may occur between digits to help " +"readability::" +msgstr "" + +#: reference/lexical_analysis.rst:1042 +msgid "" +"96_485.332_123\n" +"3.14_15_93" +msgstr "" + +#: reference/lexical_analysis.rst:1045 +msgid "Either of these parts, but not both, can be empty. For example::" +msgstr "" + +#: reference/lexical_analysis.rst:1047 +msgid "" +"10. # (equivalent to 10.0)\n" +".001 # (equivalent to 0.001)" +msgstr "" + +#: reference/lexical_analysis.rst:1050 +msgid "" +"Optionally, the integer and fraction may be followed by an *exponent*: the " +"letter ``e`` or ``E``, followed by an optional sign, ``+`` or ``-``, and a " +"number in the same format as the integer and fraction parts. The ``e`` or " +"``E`` represents \"times ten raised to the power of\"::" +msgstr "" + +#: reference/lexical_analysis.rst:1055 +msgid "" +"1.0e3 # (represents 1.0×10³, or 1000.0)\n" +"1.166e-5 # (represents 1.166×10⁻⁵, or 0.00001166)\n" +"6.02214076e+23 # (represents 6.02214076×10²³, or 602214076000000000000000.)" +msgstr "" + +#: reference/lexical_analysis.rst:1059 +msgid "" +"In floats with only integer and exponent parts, the decimal point may be " +"omitted::" +msgstr "" + +#: reference/lexical_analysis.rst:1062 +msgid "" +"1e3 # (equivalent to 1.e3 and 1.0e3)\n" +"0e0 # (equivalent to 0.)" +msgstr "" + +#: reference/lexical_analysis.rst:1065 +msgid "" +"Formally, floating-point literals are described by the following lexical " +"definitions:" +msgstr "" + +#: reference/lexical_analysis.rst:1087 msgid "Imaginary literals" msgstr "" -#: reference/lexical_analysis.rst:994 -msgid "Imaginary literals are described by the following lexical definitions:" +#: reference/lexical_analysis.rst:1089 +msgid "" +"Python has :ref:`complex number ` objects, but no complex " +"literals. Instead, *imaginary literals* denote complex numbers with a zero " +"real part." +msgstr "" + +#: reference/lexical_analysis.rst:1094 +msgid "" +"For example, in math, the complex number 3+4.2\\ *i* is written as the real " +"number 3 added to the imaginary number 4.2\\ *i*. Python uses a similar " +"syntax, except the imaginary unit is written as ``j`` rather than *i*::" +msgstr "" + +#: reference/lexical_analysis.rst:1099 +msgid "3+4.2j" +msgstr "" + +#: reference/lexical_analysis.rst:1101 +msgid "" +"This is an expression composed of the :ref:`integer literal ` " +"``3``, the :ref:`operator ` '``+``', and the :ref:`imaginary " +"literal ` ``4.2j``. Since these are three separate tokens, " +"whitespace is allowed between them::" +msgstr "" + +#: reference/lexical_analysis.rst:1107 +msgid "3 + 4.2j" msgstr "" -#: reference/lexical_analysis.rst:999 +#: reference/lexical_analysis.rst:1109 msgid "" -"An imaginary literal yields a complex number with a real part of 0.0. " -"Complex numbers are represented as a pair of floating-point numbers and have " -"the same restrictions on their range. To create a complex number with a " -"nonzero real part, add a floating-point number to it, e.g., ``(3+4j)``. " -"Some examples of imaginary literals::" +"No whitespace is allowed *within* each token. In particular, the ``j`` " +"suffix, may not be separated from the number before it." msgstr "" -#: reference/lexical_analysis.rst:1005 -msgid "3.14j 10.j 10j .001j 1e100j 3.14e-10j 3.14_15_93j" +#: reference/lexical_analysis.rst:1113 +msgid "" +"The number before the ``j`` has the same syntax as a floating-point literal. " +"Thus, the following are valid imaginary literals::" msgstr "" -#: reference/lexical_analysis.rst:1011 +#: reference/lexical_analysis.rst:1116 +msgid "" +"4.2j\n" +"3.14j\n" +"10.j\n" +".001j\n" +"1e100j\n" +"3.14e-10j\n" +"3.14_15_93j" +msgstr "" + +#: reference/lexical_analysis.rst:1124 +msgid "" +"Unlike in a floating-point literal the decimal point can be omitted if the " +"imaginary number only has an integer part. The number is still evaluated as " +"a floating-point number, not an integer::" +msgstr "" + +#: reference/lexical_analysis.rst:1128 +msgid "" +"10j\n" +"0j\n" +"1000000000000000000000000j # equivalent to 1e+24j" +msgstr "" + +#: reference/lexical_analysis.rst:1132 +msgid "" +"The ``j`` suffix is case-insensitive. That means you can use ``J`` instead::" +msgstr "" + +#: reference/lexical_analysis.rst:1135 +msgid "3.14J # equivalent to 3.14j" +msgstr "" + +#: reference/lexical_analysis.rst:1137 +msgid "" +"Formally, imaginary literals are described by the following lexical " +"definition:" +msgstr "" + +#: reference/lexical_analysis.rst:1148 msgid "Operators" msgstr "" -#: reference/lexical_analysis.rst:1015 +#: reference/lexical_analysis.rst:1152 msgid "The following tokens are operators:" msgstr "" -#: reference/lexical_analysis.rst:1017 +#: reference/lexical_analysis.rst:1154 msgid "" "+ - * ** / // % @\n" "<< >> & | ^ ~ :=\n" "< > <= >= == !=" msgstr "" -#: reference/lexical_analysis.rst:1028 +#: reference/lexical_analysis.rst:1165 msgid "Delimiters" msgstr "" -#: reference/lexical_analysis.rst:1032 +#: reference/lexical_analysis.rst:1169 msgid "The following tokens serve as delimiters in the grammar:" msgstr "" -#: reference/lexical_analysis.rst:1034 +#: reference/lexical_analysis.rst:1171 msgid "" "( ) [ ] { }\n" ", : ! . ; @ =\n" @@ -1332,7 +1543,7 @@ msgid "" "@= &= |= ^= >>= <<= **=" msgstr "" -#: reference/lexical_analysis.rst:1041 +#: reference/lexical_analysis.rst:1178 msgid "" "The period can also occur in floating-point and imaginary literals. A " "sequence of three periods has a special meaning as an ellipsis literal. The " @@ -1340,31 +1551,31 @@ msgid "" "as delimiters, but also perform an operation." msgstr "" -#: reference/lexical_analysis.rst:1046 +#: reference/lexical_analysis.rst:1183 msgid "" "The following printing ASCII characters have special meaning as part of " "other tokens or are otherwise significant to the lexical analyzer:" msgstr "" -#: reference/lexical_analysis.rst:1049 +#: reference/lexical_analysis.rst:1186 msgid "' \" # \\" msgstr "" -#: reference/lexical_analysis.rst:1053 +#: reference/lexical_analysis.rst:1190 msgid "" "The following printing ASCII characters are not used in Python. Their " "occurrence outside string literals and comments is an unconditional error:" msgstr "" -#: reference/lexical_analysis.rst:1056 +#: reference/lexical_analysis.rst:1193 msgid "$ ? `" msgstr "" -#: reference/lexical_analysis.rst:1062 +#: reference/lexical_analysis.rst:1199 msgid "Footnotes" msgstr "" -#: reference/lexical_analysis.rst:1063 +#: reference/lexical_analysis.rst:1200 msgid "https://www.unicode.org/Public/16.0.0/ucd/NameAliases.txt" msgstr "" @@ -1389,7 +1600,7 @@ msgid "logical line" msgstr "" #: reference/lexical_analysis.rst:36 reference/lexical_analysis.rst:115 -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "physical line" msgstr "" @@ -1477,307 +1688,307 @@ msgstr "" msgid "name" msgstr "" -#: reference/lexical_analysis.rst:350 reference/lexical_analysis.rst:374 +#: reference/lexical_analysis.rst:373 reference/lexical_analysis.rst:397 msgid "keyword" msgstr "" -#: reference/lexical_analysis.rst:350 +#: reference/lexical_analysis.rst:373 msgid "reserved word" msgstr "" -#: reference/lexical_analysis.rst:374 +#: reference/lexical_analysis.rst:397 msgid "soft keyword" msgstr "" -#: reference/lexical_analysis.rst:393 +#: reference/lexical_analysis.rst:417 msgid "_, identifiers" msgstr "" -#: reference/lexical_analysis.rst:393 +#: reference/lexical_analysis.rst:417 msgid "__, identifiers" msgstr "" -#: reference/lexical_analysis.rst:449 +#: reference/lexical_analysis.rst:473 msgid "literal" msgstr "" -#: reference/lexical_analysis.rst:449 +#: reference/lexical_analysis.rst:473 msgid "constant" msgstr "" -#: reference/lexical_analysis.rst:454 reference/lexical_analysis.rst:495 +#: reference/lexical_analysis.rst:478 reference/lexical_analysis.rst:520 msgid "string literal" msgstr "" -#: reference/lexical_analysis.rst:454 reference/lexical_analysis.rst:508 +#: reference/lexical_analysis.rst:478 reference/lexical_analysis.rst:533 msgid "bytes literal" msgstr "" -#: reference/lexical_analysis.rst:454 +#: reference/lexical_analysis.rst:478 msgid "ASCII" msgstr "" -#: reference/lexical_analysis.rst:454 +#: reference/lexical_analysis.rst:478 msgid "' (single quote)" msgstr "" -#: reference/lexical_analysis.rst:454 +#: reference/lexical_analysis.rst:478 msgid "\" (double quote)" msgstr "" -#: reference/lexical_analysis.rst:454 +#: reference/lexical_analysis.rst:478 msgid "u'" msgstr "" -#: reference/lexical_analysis.rst:454 +#: reference/lexical_analysis.rst:478 msgid "u\"" msgstr "" -#: reference/lexical_analysis.rst:495 +#: reference/lexical_analysis.rst:520 msgid "triple-quoted string" msgstr "" -#: reference/lexical_analysis.rst:495 +#: reference/lexical_analysis.rst:520 msgid "Unicode Consortium" msgstr "" -#: reference/lexical_analysis.rst:495 +#: reference/lexical_analysis.rst:520 msgid "raw string" msgstr "" -#: reference/lexical_analysis.rst:495 +#: reference/lexical_analysis.rst:520 msgid "\"\"\"" msgstr "" -#: reference/lexical_analysis.rst:495 +#: reference/lexical_analysis.rst:520 msgid "'''" msgstr "" -#: reference/lexical_analysis.rst:508 +#: reference/lexical_analysis.rst:533 msgid "b'" msgstr "" -#: reference/lexical_analysis.rst:508 +#: reference/lexical_analysis.rst:533 msgid "b\"" msgstr "" -#: reference/lexical_analysis.rst:517 +#: reference/lexical_analysis.rst:542 msgid "r'" msgstr "" -#: reference/lexical_analysis.rst:517 +#: reference/lexical_analysis.rst:542 msgid "raw string literal" msgstr "" -#: reference/lexical_analysis.rst:517 +#: reference/lexical_analysis.rst:542 msgid "r\"" msgstr "" -#: reference/lexical_analysis.rst:535 +#: reference/lexical_analysis.rst:560 msgid "f'" msgstr "" -#: reference/lexical_analysis.rst:535 reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:560 reference/lexical_analysis.rst:738 msgid "formatted string literal" msgstr "" -#: reference/lexical_analysis.rst:535 +#: reference/lexical_analysis.rst:560 msgid "f\"" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "escape sequence" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "Standard C" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "C" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\ (backslash)" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\\\" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\a" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\b" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\f" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\n" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\r" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\t" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\v" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\x" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\N" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\u" msgstr "" -#: reference/lexical_analysis.rst:548 +#: reference/lexical_analysis.rst:573 msgid "\\U" msgstr "" -#: reference/lexical_analysis.rst:664 +#: reference/lexical_analysis.rst:689 msgid "unrecognized escape sequence" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "interpolated string literal" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "string" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "formatted literal" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "interpolated literal" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "f-string" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "fstring" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "{} (curly brackets)" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "in formatted string literal" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "! (exclamation)" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid ": (colon)" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "= (equals)" msgstr "" -#: reference/lexical_analysis.rst:713 +#: reference/lexical_analysis.rst:738 msgid "for help in debugging using string literals" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "number" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "numeric literal" msgstr "" -#: reference/lexical_analysis.rst:896 reference/lexical_analysis.rst:909 +#: reference/lexical_analysis.rst:921 reference/lexical_analysis.rst:943 msgid "integer literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "floating-point literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "hexadecimal literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "octal literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "binary literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "decimal literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "imaginary literal" msgstr "" -#: reference/lexical_analysis.rst:896 +#: reference/lexical_analysis.rst:921 msgid "complex literal" msgstr "" -#: reference/lexical_analysis.rst:909 +#: reference/lexical_analysis.rst:943 msgid "0b" msgstr "" -#: reference/lexical_analysis.rst:909 +#: reference/lexical_analysis.rst:943 msgid "0o" msgstr "" -#: reference/lexical_analysis.rst:909 +#: reference/lexical_analysis.rst:943 msgid "0x" msgstr "" -#: reference/lexical_analysis.rst:909 reference/lexical_analysis.rst:955 +#: reference/lexical_analysis.rst:943 reference/lexical_analysis.rst:1018 msgid "_ (underscore)" msgstr "" -#: reference/lexical_analysis.rst:909 reference/lexical_analysis.rst:955 -#: reference/lexical_analysis.rst:987 +#: reference/lexical_analysis.rst:943 reference/lexical_analysis.rst:1018 +#: reference/lexical_analysis.rst:1082 msgid "in numeric literal" msgstr "" -#: reference/lexical_analysis.rst:955 +#: reference/lexical_analysis.rst:1018 msgid ". (dot)" msgstr "" -#: reference/lexical_analysis.rst:955 +#: reference/lexical_analysis.rst:1018 msgid "e" msgstr "" -#: reference/lexical_analysis.rst:987 +#: reference/lexical_analysis.rst:1082 msgid "j" msgstr "" -#: reference/lexical_analysis.rst:1013 +#: reference/lexical_analysis.rst:1150 msgid "operators" msgstr "" -#: reference/lexical_analysis.rst:1030 +#: reference/lexical_analysis.rst:1167 msgid "delimiters" msgstr "" diff --git a/reference/simple_stmts.po b/reference/simple_stmts.po index 1d189089..63bb47b5 100644 --- a/reference/simple_stmts.po +++ b/reference/simple_stmts.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/reference/toplevel_components.po b/reference/toplevel_components.po index 92f2e6f3..f605736a 100644 --- a/reference/toplevel_components.po +++ b/reference/toplevel_components.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx.po b/sphinx.po index f92e05e1..e0daedec 100644 --- a/sphinx.po +++ b/sphinx.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-08 09:17+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" @@ -27,15 +27,18 @@ msgid "In development" msgstr "Υπό ανάπτυξη" #: tools/templates/customsourcelink.html:3 -msgid "This Page" +#, fuzzy +msgid "This page" msgstr "Αυτή η Σελίδα" #: tools/templates/customsourcelink.html:5 -msgid "Report a Bug" +#, fuzzy +msgid "Report a bug" msgstr "Ανέφερε ένα Bug" #: tools/templates/customsourcelink.html:8 -msgid "Show Source" +#, fuzzy +msgid "Show source" msgstr "Εμφάνιση Πηγής" #: tools/templates/download.html:2 tools/templates/indexsidebar.html:1 @@ -43,7 +46,8 @@ msgid "Download" msgstr "Κατεβάστε" #: tools/templates/download.html:30 -msgid "Download Python %(dl_version)s Documentation" +#, fuzzy +msgid "Download Python %(dl_version)s documentation" msgstr "Κατεβάστε την τεκμηρίωση της Python %(dl_version)s" #: tools/templates/download.html:32 @@ -467,7 +471,8 @@ msgid "Reporting issues" msgstr "Αναφορά ζητημάτων" #: tools/templates/indexcontent.html:75 -msgid "Contributing to Docs" +#, fuzzy +msgid "Contributing to docs" msgstr "Συμβολή στην Τεκμηρίωση" #: tools/templates/indexcontent.html:76 @@ -503,23 +508,28 @@ msgid "Other resources" msgstr "Άλλες πηγές" #: tools/templates/indexsidebar.html:12 -msgid "PEP Index" +#, fuzzy +msgid "PEP index" msgstr "Ευρετήριο PEP" #: tools/templates/indexsidebar.html:13 -msgid "Beginner's Guide" +#, fuzzy +msgid "Beginner's guide" msgstr "Οδηγός για αρχάριους" #: tools/templates/indexsidebar.html:14 -msgid "Book List" +#, fuzzy +msgid "Book list" msgstr "Λίστα Βιβλίων" #: tools/templates/indexsidebar.html:15 -msgid "Audio/Visual Talks" +#, fuzzy +msgid "Audio/visual talks" msgstr "Οπτικοακουστικές Ομιλίες" #: tools/templates/indexsidebar.html:16 -msgid "Python Developer’s Guide" +#, fuzzy +msgid "Python developer’s guide" msgstr "Οδηγός Προγραμματιστή Python" #: tools/templates/layout.html:6 diff --git a/tutorial/appendix.po b/tutorial/appendix.po index 460b1fa4..e65836f3 100644 --- a/tutorial/appendix.po +++ b/tutorial/appendix.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-05-03 22:21+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/appetite.po b/tutorial/appetite.po index 7b385225..2521fea3 100644 --- a/tutorial/appetite.po +++ b/tutorial/appetite.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-08-02 13:10+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: LANGUAGE \n" diff --git a/tutorial/classes.po b/tutorial/classes.po index 9ce24ab7..b0412875 100644 --- a/tutorial/classes.po +++ b/tutorial/classes.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-13 19:53+0200\n" "Last-Translator: Anastasios Louka \n" "Language-Team: PyGreece \n" diff --git a/tutorial/controlflow.po b/tutorial/controlflow.po index 33ff5adb..46906efb 100644 --- a/tutorial/controlflow.po +++ b/tutorial/controlflow.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-09-30 23:13+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" @@ -2219,15 +2219,17 @@ msgstr "" "43" #: tutorial/controlflow.rst:1001 +#, fuzzy msgid "" "The above example uses a lambda expression to return a function. Another " -"use is to pass a small function as an argument::" +"use is to pass a small function as an argument. For instance, :meth:`list." +"sort` takes a sorting key function *key* which can be a lambda function::" msgstr "" "Το παραπάνω παράδειγμα χρησιμοποιεί μια έκφραση lambda για να επιστρέψει μια " "συνάρτηση. Μια άλλη χρήση είναι η μετάδοση μιας μικρής συνάρτησης ως " "όρισμα::" -#: tutorial/controlflow.rst:1004 +#: tutorial/controlflow.rst:1005 msgid "" ">>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]\n" ">>> pairs.sort(key=lambda pair: pair[1])\n" @@ -2239,11 +2241,11 @@ msgstr "" ">>> pairs\n" "[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]" -#: tutorial/controlflow.rst:1013 +#: tutorial/controlflow.rst:1014 msgid "Documentation Strings" msgstr "Συμβολοσειρές Τεκμηρίωσης" -#: tutorial/controlflow.rst:1020 +#: tutorial/controlflow.rst:1021 msgid "" "Here are some conventions about the content and formatting of documentation " "strings." @@ -2251,7 +2253,7 @@ msgstr "" "Ακολουθούν ορισμένες συμβάσεις σχετικά με το περιεχόμενο και τη μορφοποίηση " "των συμβολοσειρών τεκμηρίωσης." -#: tutorial/controlflow.rst:1023 +#: tutorial/controlflow.rst:1024 msgid "" "The first line should always be a short, concise summary of the object's " "purpose. For brevity, it should not explicitly state the object's name or " @@ -2265,7 +2267,7 @@ msgstr "" "εάν το όνομα είναι ρήμα που περιγράφει τη λειτουργία της συνάρτησης). Αυτή " "η γραμμή πρέπει να ξεκινά με κεφαλαίο γράμμα και να τελειώνει με τελεία." -#: tutorial/controlflow.rst:1029 +#: tutorial/controlflow.rst:1030 msgid "" "If there are more lines in the documentation string, the second line should " "be blank, visually separating the summary from the rest of the description. " @@ -2278,7 +2280,7 @@ msgstr "" "παράγραφοι που περιγράφουν τις συμβάσεις κλήσης του αντικειμένου, τις " "παρενέργειές του κ.λπ.." -#: tutorial/controlflow.rst:1034 +#: tutorial/controlflow.rst:1035 msgid "" "The Python parser does not strip indentation from multi-line string literals " "in Python, so tools that process documentation have to strip indentation if " @@ -2306,11 +2308,12 @@ msgstr "" "αρχικό κενό τους. Η ισοδυναμία των κενών διαστημάτων θα πρέπει να ελέγχεται " "μετά την επέκταση των καρτελών (σε 8 κενά, κανονικά)." -#: tutorial/controlflow.rst:1046 +#: tutorial/controlflow.rst:1047 msgid "Here is an example of a multi-line docstring::" msgstr "Ακολουθεί ένα παράδειγμα ενός πολλαπλών γραμμών docstring::" -#: tutorial/controlflow.rst:1048 +#: tutorial/controlflow.rst:1049 +#, fuzzy msgid "" ">>> def my_function():\n" "... \"\"\"Do nothing, but document it.\n" @@ -2322,7 +2325,7 @@ msgid "" ">>> print(my_function.__doc__)\n" "Do nothing, but document it.\n" "\n" -" No, really, it doesn't do anything." +"No, really, it doesn't do anything." msgstr "" ">>> def my_function():\n" "... \"\"\"Do nothing, but document it.\n" @@ -2336,11 +2339,11 @@ msgstr "" "\n" " No, really, it doesn't do anything." -#: tutorial/controlflow.rst:1064 +#: tutorial/controlflow.rst:1065 msgid "Function Annotations" msgstr "Annotations Συναρτήσεων" -#: tutorial/controlflow.rst:1072 +#: tutorial/controlflow.rst:1073 msgid "" ":ref:`Function annotations ` are completely optional metadata " "information about the types used by user-defined functions (see :pep:`3107` " @@ -2351,7 +2354,7 @@ msgstr "" "συναρτήσεις που καθορίζονται από το χρήστη (δείτε :pep:`3107` και :pep:`484` " "για περισσότερες πληροφορίες)." -#: tutorial/controlflow.rst:1076 +#: tutorial/controlflow.rst:1077 msgid "" ":term:`Annotations ` are stored in the :attr:`!" "__annotations__` attribute of the function as a dictionary and have no " @@ -2373,7 +2376,7 @@ msgstr "" "ένα απαιτούμενο όρισμα, ένα προαιρετικό όρισμα και την επιστρεφόμενη τιμή σε " "annotations::" -#: tutorial/controlflow.rst:1085 +#: tutorial/controlflow.rst:1086 msgid "" ">>> def f(ham: str, eggs: str = 'eggs') -> str:\n" "... print(\"Annotations:\", f.__annotations__)\n" @@ -2397,11 +2400,11 @@ msgstr "" "Arguments: spam eggs\n" "'spam and eggs'" -#: tutorial/controlflow.rst:1098 +#: tutorial/controlflow.rst:1099 msgid "Intermezzo: Coding Style" msgstr "Intermezzo: Στυλ Κώδικα" -#: tutorial/controlflow.rst:1103 +#: tutorial/controlflow.rst:1104 msgid "" "Now that you are about to write longer, more complex pieces of Python, it is " "a good time to talk about *coding style*. Most languages can be written (or " @@ -2417,7 +2420,7 @@ msgstr "" "πάντα μια καλή ιδέα και η υιοθέτηση ενός ωραίου στυλ κώδικα βοηθάει πάρα " "πολύ σε αυτό." -#: tutorial/controlflow.rst:1109 +#: tutorial/controlflow.rst:1110 msgid "" "For Python, :pep:`8` has emerged as the style guide that most projects " "adhere to; it promotes a very readable and eye-pleasing coding style. Every " @@ -2429,11 +2432,11 @@ msgstr "" "κώδικα. Κάθε προγραμματιστής Python θα πρέπει να το διαβάσει κάποια στιγμή· " "εδώ είναι τα πιο σημαντικό σημεία που εξάγονται για εσάς:" -#: tutorial/controlflow.rst:1114 +#: tutorial/controlflow.rst:1115 msgid "Use 4-space indentation, and no tabs." msgstr "Χρησιμοποιήστε εσοχή 4 διαστημάτων και όχι tabs." -#: tutorial/controlflow.rst:1116 +#: tutorial/controlflow.rst:1117 msgid "" "4 spaces are a good compromise between small indentation (allows greater " "nesting depth) and large indentation (easier to read). Tabs introduce " @@ -2444,11 +2447,11 @@ msgstr "" "ανάγνωση). Τα tabs δημιουργούν σύγχυση, και είναι καλύτερο να παραμείνουν " "απέξω." -#: tutorial/controlflow.rst:1120 +#: tutorial/controlflow.rst:1121 msgid "Wrap lines so that they don't exceed 79 characters." msgstr "Τυλίξτε τις γραμμές έτσι ώστε να μην υπερβαίνουν τους 79 χαρακτήρες." -#: tutorial/controlflow.rst:1122 +#: tutorial/controlflow.rst:1123 msgid "" "This helps users with small displays and makes it possible to have several " "code files side-by-side on larger displays." @@ -2456,7 +2459,7 @@ msgstr "" "Αυτό βοηθά του χρήστες με μικρές οθόνες και καθιστά δυνατή την ύπαρξη πολλών " "αρχείων κώδικα δίπλα-δίπλα σε μεγαλύτερες οθόνες." -#: tutorial/controlflow.rst:1125 +#: tutorial/controlflow.rst:1126 msgid "" "Use blank lines to separate functions and classes, and larger blocks of code " "inside functions." @@ -2464,15 +2467,15 @@ msgstr "" "Χρησιμοποιείστε κενές γραμμές για να διαχωρίσετε συναρτήσεις και κλάσεις και " "μεγαλύτερα μπλοκ κώδικα μέσα συναρτήσεις." -#: tutorial/controlflow.rst:1128 +#: tutorial/controlflow.rst:1129 msgid "When possible, put comments on a line of their own." msgstr "Όταν είναι δυνατόν, βάλτε σχόλια σε μια δική τους γραμμή." -#: tutorial/controlflow.rst:1130 +#: tutorial/controlflow.rst:1131 msgid "Use docstrings." msgstr "Χρησιμοποιήστε docstrings." -#: tutorial/controlflow.rst:1132 +#: tutorial/controlflow.rst:1133 msgid "" "Use spaces around operators and after commas, but not directly inside " "bracketing constructs: ``a = f(1, 2) + g(3, 4)``." @@ -2480,7 +2483,7 @@ msgstr "" "Χρησιμοποιήστε κενά γύρω από τελεστές και μετά από κόμματα, αλλά όχι " "απευθείας μέσα δε δομές αγκύλων: ``a = f(1, 2) + g(3, 4)``." -#: tutorial/controlflow.rst:1135 +#: tutorial/controlflow.rst:1136 msgid "" "Name your classes and functions consistently; the convention is to use " "``UpperCamelCase`` for classes and ``lowercase_with_underscores`` for " @@ -2494,7 +2497,7 @@ msgstr "" "(δείτε :ref:`tut-firstclasses` για περισσότερα σχετικά με τις κλάσεις και " "τις μεθόδους)." -#: tutorial/controlflow.rst:1140 +#: tutorial/controlflow.rst:1141 msgid "" "Don't use fancy encodings if your code is meant to be used in international " "environments. Python's default, UTF-8, or even plain ASCII work best in any " @@ -2504,7 +2507,7 @@ msgstr "" "να χρησιμοποιηθεί σε διεθνή περιβάλλοντα. Η προεπιλογή της Python, UTF-8, ή " "ακόμα και το απλό ASCII λειτουργούν καλύτερα σε κάθε περίπτωση." -#: tutorial/controlflow.rst:1144 +#: tutorial/controlflow.rst:1145 msgid "" "Likewise, don't use non-ASCII characters in identifiers if there is only the " "slightest chance people speaking a different language will read or maintain " @@ -2514,11 +2517,11 @@ msgstr "" "εάν υπάρχει μόνο η παραμικρή πιθανότητα οι άνθρωποι που μιλούν διαφορετική " "γλώσσα να διαβάσουν ή να διατηρήσουν τον κώδικα." -#: tutorial/controlflow.rst:1150 +#: tutorial/controlflow.rst:1151 msgid "Footnotes" msgstr "Υποσημειώσεις" -#: tutorial/controlflow.rst:1151 +#: tutorial/controlflow.rst:1152 msgid "" "Actually, *call by object reference* would be a better description, since if " "a mutable object is passed, the caller will see any changes the callee makes " @@ -2537,15 +2540,15 @@ msgstr "statement" msgid "for" msgstr "for" -#: tutorial/controlflow.rst:1015 +#: tutorial/controlflow.rst:1016 msgid "documentation strings" msgstr "documentation strings" -#: tutorial/controlflow.rst:1015 +#: tutorial/controlflow.rst:1016 msgid "docstrings" msgstr "docstrings" -#: tutorial/controlflow.rst:1015 +#: tutorial/controlflow.rst:1016 msgid "strings, documentation" msgstr "strings, documentation" @@ -2561,31 +2564,31 @@ msgstr "in function calls" msgid "**" msgstr "**" -#: tutorial/controlflow.rst:1067 +#: tutorial/controlflow.rst:1068 msgid "function" msgstr "function" -#: tutorial/controlflow.rst:1067 +#: tutorial/controlflow.rst:1068 msgid "annotations" msgstr "annotations" -#: tutorial/controlflow.rst:1067 +#: tutorial/controlflow.rst:1068 msgid "->" msgstr "->" -#: tutorial/controlflow.rst:1067 +#: tutorial/controlflow.rst:1068 msgid "function annotations" msgstr "function annotations" -#: tutorial/controlflow.rst:1067 +#: tutorial/controlflow.rst:1068 msgid ": (colon)" msgstr ": (colon)" -#: tutorial/controlflow.rst:1101 +#: tutorial/controlflow.rst:1102 msgid "coding" msgstr "coding" -#: tutorial/controlflow.rst:1101 +#: tutorial/controlflow.rst:1102 msgid "style" msgstr "style" diff --git a/tutorial/datastructures.po b/tutorial/datastructures.po index 05e9fc14..f3973b8d 100644 --- a/tutorial/datastructures.po +++ b/tutorial/datastructures.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-09-18 17:32+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/errors.po b/tutorial/errors.po index 44e8f65a..46df48b5 100644 --- a/tutorial/errors.po +++ b/tutorial/errors.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-04 22:12+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: LANGUAGE \n" diff --git a/tutorial/floatingpoint.po b/tutorial/floatingpoint.po index f8f26489..df753392 100644 --- a/tutorial/floatingpoint.po +++ b/tutorial/floatingpoint.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-08-04 20:25+0000\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/index.po b/tutorial/index.po index 4f6b9032..928241f8 100644 --- a/tutorial/index.po +++ b/tutorial/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-12-10 22:14+0300\n" "Last-Translator: Dimitrios Papadopoulos\n" "Language-Team: PyGreece \n" @@ -23,6 +23,12 @@ msgstr "Το Python Tutorial" #: tutorial/index.rst:7 msgid "" +"This tutorial is designed for *programmers* that are new to the Python " +"language, **not** *beginners* who are new to programming." +msgstr "" + +#: tutorial/index.rst:11 +msgid "" "Python is an easy to learn, powerful programming language. It has efficient " "high-level data structures and a simple but effective approach to object-" "oriented programming. Python's elegant syntax and dynamic typing, together " @@ -36,7 +42,7 @@ msgstr "" "διερμηνευμένη φύση της, την καθιστούν ιδανική γλώσσα για scripting και " "ταχεία ανάπτυξη εφαρμογών σε πολλούς τομείς στις περισσότερες πλατφόρμες." -#: tutorial/index.rst:13 +#: tutorial/index.rst:17 msgid "" "The Python interpreter and the extensive standard library are freely " "available in source or binary form for all major platforms from the Python " @@ -51,7 +57,7 @@ msgstr "" "και δείκτες σε πολλά δωρεάν modules τρίτων, προγράμματα και εργαλεία Python, " "καθώς και πρόσθετη τεκμηρίωση." -#: tutorial/index.rst:19 +#: tutorial/index.rst:23 msgid "" "The Python interpreter is easily extended with new functions and data types " "implemented in C or C++ (or other languages callable from C). Python is also " @@ -62,11 +68,13 @@ msgstr "" "κληθούν από τη C). Η Python είναι επίσης κατάλληλη ως γλώσσα επέκτασης για " "προσαρμόσιμες εφαρμογές." -#: tutorial/index.rst:23 +#: tutorial/index.rst:27 +#, fuzzy msgid "" "This tutorial introduces the reader informally to the basic concepts and " -"features of the Python language and system. It helps to have a Python " -"interpreter handy for hands-on experience, but all examples are self-" +"features of the Python language and system. Be aware that it expects you to " +"have a basic understanding of programming in general. It helps to have a " +"Python interpreter handy for hands-on experience, but all examples are self-" "contained, so the tutorial can be read off-line as well." msgstr "" "Αυτό το tutorial εισάγει τον αναγνώστη ανεπίσημα στις βασικές έννοιες και " @@ -74,7 +82,7 @@ msgstr "" "έναν διερμηνέα Python για πρακτική εμπειρία, αλλά όλα τα παραδείγματα είναι " "αυτοτελή, οπότε το tutorial μπορεί να διαβαστεί και εκτός σύνδεσης." -#: tutorial/index.rst:28 +#: tutorial/index.rst:33 msgid "" "For a description of standard objects and modules, see :ref:`library-" "index`. :ref:`reference-index` gives a more formal definition of the " @@ -87,7 +95,7 @@ msgstr "" "index` και το :ref:`c-api-index`. Υπάρχουν επίσης αρκετά βιβλία που " "καλύπτουν την Python σε βάθος." -#: tutorial/index.rst:33 +#: tutorial/index.rst:38 msgid "" "This tutorial does not attempt to be comprehensive and cover every single " "feature, or even every commonly used feature. Instead, it introduces many of " @@ -105,6 +113,6 @@ msgstr "" "για τα διάφoρα modules βιβλιοθηκών Python που περιγράφονται στο :ref:" "`library-index`." -#: tutorial/index.rst:40 +#: tutorial/index.rst:45 msgid "The :ref:`glossary` is also worth going through." msgstr "Αξίζει επίσης να διαβάσετε το :ref:`glossary`." diff --git a/tutorial/inputoutput.po b/tutorial/inputoutput.po index 2f9f1b8f..ec1187a3 100644 --- a/tutorial/inputoutput.po +++ b/tutorial/inputoutput.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-09-20 11:10+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/interactive.po b/tutorial/interactive.po index 911d5bd3..29be1743 100644 --- a/tutorial/interactive.po +++ b/tutorial/interactive.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-03 17:14+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/interpreter.po b/tutorial/interpreter.po index c2d79dde..9f45c3f3 100644 --- a/tutorial/interpreter.po +++ b/tutorial/interpreter.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-04 22:16+0000\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: LANGUAGE \n" diff --git a/tutorial/introduction.po b/tutorial/introduction.po index 9976c34a..080906f1 100644 --- a/tutorial/introduction.po +++ b/tutorial/introduction.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-02-13 17:17+0001\n" "Last-Translator: Lysandros Nikolaou \n" "Language-Team: PyGreece \n" @@ -39,18 +39,18 @@ msgstr "" "γραμμή∙ αυτό χρησιμοποιείται για να τερματίσετε μια εντολή πολλών γραμμών." #: tutorial/introduction.rst:16 +#, fuzzy msgid "" -"You can toggle the display of prompts and output by clicking on ``>>>`` in " -"the upper-right corner of an example box. If you hide the prompts and " -"output for an example, then you can easily copy and paste the input lines " -"into your interpreter." +"You can use the \"Copy\" button (it appears in the upper-right corner when " +"hovering over or tapping a code example), which strips prompts and omits " +"output, to copy and paste the input lines into your interpreter." msgstr "" "Μπορείτε να αλλάξετε την εμφάνιση των prompts και της εξόδου κάνοντας κλικ " "στο ``>>>>`` στην επάνω δεξιά γωνία ενός πλαισίου παραδείγματος. Εάν " "αποκρύψετε τα prompts και την έξοδο για ένα παράδειγμα, τότε μπορείτε εύκολα " "να αντιγράψετε και να επικολλήσετε τις γραμμές εισαγωγής στον διερμηνέα σας." -#: tutorial/introduction.rst:23 +#: tutorial/introduction.rst:22 msgid "" "Many of the examples in this manual, even those entered at the interactive " "prompt, include comments. Comments in Python start with the hash character, " @@ -70,11 +70,11 @@ msgstr "" "ερμηνεύονται από την Python, μπορούν να παραλείπονται κατά την πληκτρολόγηση " "παραδειγμάτων." -#: tutorial/introduction.rst:31 +#: tutorial/introduction.rst:30 msgid "Some examples::" msgstr "Μερικά παραδείγματα::" -#: tutorial/introduction.rst:33 +#: tutorial/introduction.rst:32 msgid "" "# this is the first comment\n" "spam = 1 # and this is the second comment\n" @@ -86,11 +86,11 @@ msgstr "" " # ... and now a third!\n" "text = \"# This is not a comment because it's inside quotes.\"" -#: tutorial/introduction.rst:42 +#: tutorial/introduction.rst:41 msgid "Using Python as a Calculator" msgstr "Χρησιμοποιώντας την Python ως Αριθμομηχανή" -#: tutorial/introduction.rst:44 +#: tutorial/introduction.rst:43 msgid "" "Let's try some simple Python commands. Start the interpreter and wait for " "the primary prompt, ``>>>``. (It shouldn't take long.)" @@ -98,11 +98,11 @@ msgstr "" "Ας δοκιμάσουμε μερικές απλές εντολές της Python. Ξεκινήστε τον διερμηνέα και " "περιμένετε το πρώτο prompt, ```>>>```. (Δεν θα πάρει πολύ χρόνο.)" -#: tutorial/introduction.rst:51 +#: tutorial/introduction.rst:50 msgid "Numbers" msgstr "Αριθμοί" -#: tutorial/introduction.rst:53 +#: tutorial/introduction.rst:52 msgid "" "The interpreter acts as a simple calculator: you can type an expression at " "it and it will write the value. Expression syntax is straightforward: the " @@ -115,7 +115,7 @@ msgstr "" "να χρησιμοποιηθούν για την εκτέλεση αριθμητικών πράξεων∙ οι παρενθέσεις " "(``()``) μπορούν να χρησιμοποιηθούν για ομαδοποίηση. Για παράδειγμα::" -#: tutorial/introduction.rst:59 +#: tutorial/introduction.rst:58 msgid "" ">>> 2 + 2\n" "4\n" @@ -135,7 +135,7 @@ msgstr "" ">>> 8 / 5 # division always returns a floating-point number\n" "1.6" -#: tutorial/introduction.rst:68 +#: tutorial/introduction.rst:67 msgid "" "The integer numbers (e.g. ``2``, ``4``, ``20``) have type :class:`int`, the " "ones with a fractional part (e.g. ``5.0``, ``1.6``) have type :class:" @@ -146,7 +146,7 @@ msgstr "" "`float`. Θα δούμε περισσότερα για τους αριθμητικούς τύπους αργότερα σε " "αυτόν τον οδηγό." -#: tutorial/introduction.rst:72 +#: tutorial/introduction.rst:71 msgid "" "Division (``/``) always returns a float. To do :term:`floor division` and " "get an integer result you can use the ``//`` operator; to calculate the " @@ -157,7 +157,7 @@ msgstr "" "να χρησιμοποιήσετε τον τελεστή ``//``∙ για να υπολογίσετε το το υπόλοιπο " "μίας διαίρεσης, χρησιμοποιήστε τον τελεστή ``%``::" -#: tutorial/introduction.rst:76 +#: tutorial/introduction.rst:75 msgid "" ">>> 17 / 3 # classic division returns a float\n" "5.666666666666667\n" @@ -179,7 +179,7 @@ msgstr "" ">>> 5 * 3 + 2 # floored quotient * divisor + remainder\n" "17" -#: tutorial/introduction.rst:86 +#: tutorial/introduction.rst:85 msgid "" "With Python, it is possible to use the ``**`` operator to calculate powers " "[#]_::" @@ -187,7 +187,7 @@ msgstr "" "Στην Python, είναι εφικτό να χρησιμοποιήσετε τον τελεστή ``**`` για να " "υπολογίσετε δυνάμεις [#]_::" -#: tutorial/introduction.rst:88 +#: tutorial/introduction.rst:87 msgid "" ">>> 5 ** 2 # 5 squared\n" "25\n" @@ -199,7 +199,7 @@ msgstr "" ">>> 2 ** 7 # 2 to the power of 7\n" "128" -#: tutorial/introduction.rst:93 +#: tutorial/introduction.rst:92 msgid "" "The equal sign (``=``) is used to assign a value to a variable. Afterwards, " "no result is displayed before the next interactive prompt::" @@ -208,7 +208,7 @@ msgstr "" "σε μια μεταβλητή. Στη συνέχεια, δεν εμφανίζεται αποτέλεσμα πριν από το " "επόμενο διαδραστικό prompt::" -#: tutorial/introduction.rst:96 +#: tutorial/introduction.rst:95 msgid "" ">>> width = 20\n" ">>> height = 5 * 9\n" @@ -220,7 +220,7 @@ msgstr "" ">>> width * height\n" "900" -#: tutorial/introduction.rst:101 +#: tutorial/introduction.rst:100 msgid "" "If a variable is not \"defined\" (assigned a value), trying to use it will " "give you an error::" @@ -228,7 +228,7 @@ msgstr "" "Αν μία μεταβλητή δεν έχει «οριστεί» (δεν της έχει αποδοθεί κάποια τιμή), η " "προσπάθεια χρήσης της θα σας δώσει ένα σφάλμα::" -#: tutorial/introduction.rst:104 +#: tutorial/introduction.rst:103 msgid "" ">>> n # try to access an undefined variable\n" "Traceback (most recent call last):\n" @@ -240,7 +240,7 @@ msgstr "" " File \"\", line 1, in \n" "NameError: name 'n' is not defined" -#: tutorial/introduction.rst:109 +#: tutorial/introduction.rst:108 msgid "" "There is full support for floating point; operators with mixed type operands " "convert the integer operand to floating point::" @@ -248,7 +248,7 @@ msgstr "" "Υπάρχει πλήρης υποστήριξη για δεκαδικά ψηφία∙ τελεστές με τελεστέους μικτού " "τύπου μετατρέπουν τον ακέραιο τελεστέο σε δεκαδικό::" -#: tutorial/introduction.rst:112 +#: tutorial/introduction.rst:111 msgid "" ">>> 4 * 3.75 - 1\n" "14.0" @@ -256,7 +256,7 @@ msgstr "" ">>> 4 * 3.75 - 1\n" "14.0" -#: tutorial/introduction.rst:115 +#: tutorial/introduction.rst:114 msgid "" "In interactive mode, the last printed expression is assigned to the variable " "``_``. This means that when you are using Python as a desk calculator, it " @@ -267,7 +267,7 @@ msgstr "" "αριθμομηχανή γραφείου, είναι κάπως πιο εύκολο να συνεχίσετε προηγούμενους " "υπολογισμούς, για παράδειγμα:" -#: tutorial/introduction.rst:119 +#: tutorial/introduction.rst:118 msgid "" ">>> tax = 12.5 / 100\n" ">>> price = 100.50\n" @@ -287,7 +287,7 @@ msgstr "" ">>> round(_, 2)\n" "113.06" -#: tutorial/introduction.rst:128 +#: tutorial/introduction.rst:127 msgid "" "This variable should be treated as read-only by the user. Don't explicitly " "assign a value to it --- you would create an independent local variable with " @@ -298,7 +298,7 @@ msgstr "" "ανεξάρτητη τοπική μεταβλητή με το ίδιο όνομα αποκρύπτοντας την ενσωματωμένη " "μεταβλητή με τη μαγική της συμπεριφορά." -#: tutorial/introduction.rst:132 +#: tutorial/introduction.rst:131 msgid "" "In addition to :class:`int` and :class:`float`, Python supports other types " "of numbers, such as :class:`~decimal.Decimal` and :class:`~fractions." @@ -312,11 +312,11 @@ msgstr "" "numbers ` (μιγαδικούς αριθμούς), και χρησιμοποιεί την κατάληξη " "``j`` ή ``J`` για να δηλώσει το φανταστικό μέρος (π.χ. ``3+5j``)." -#: tutorial/introduction.rst:142 +#: tutorial/introduction.rst:141 msgid "Text" msgstr "Κείμενο" -#: tutorial/introduction.rst:144 +#: tutorial/introduction.rst:143 msgid "" "Python can manipulate text (represented by type :class:`str`, so-called " "\"strings\") as well as numbers. This includes characters \"``!``\", words " @@ -331,7 +331,7 @@ msgstr "" "περικλείονται σε μονά εισαγωγικά (``'...'``) ή διπλά εισαγωγικά (``\"..." "\"``) με το ίδιο αποτέλεσμα [#]_." -#: tutorial/introduction.rst:150 +#: tutorial/introduction.rst:149 msgid "" ">>> 'spam eggs' # single quotes\n" "'spam eggs'\n" @@ -347,7 +347,7 @@ msgstr "" ">>> '1975' # digits and numerals enclosed in quotes are also strings\n" "'1975'" -#: tutorial/introduction.rst:159 +#: tutorial/introduction.rst:158 msgid "" "To quote a quote, we need to \"escape\" it, by preceding it with ``\\``. " "Alternatively, we can use the other type of quotation marks::" @@ -356,7 +356,7 @@ msgstr "" "προτάσσοντάς του μία ``\\``. Εναλλακτικά, μπορούμε να χρησιμοποιήσουμε τον " "άλλο τύπο εισαγωγικών::" -#: tutorial/introduction.rst:162 +#: tutorial/introduction.rst:161 msgid "" ">>> 'doesn\\'t' # use \\' to escape the single quote...\n" "\"doesn't\"\n" @@ -380,7 +380,7 @@ msgstr "" ">>> '\"Isn\\'t,\" they said.'\n" "'\"Isn\\'t,\" they said.'" -#: tutorial/introduction.rst:173 +#: tutorial/introduction.rst:172 msgid "" "In the Python shell, the string definition and output string can look " "different. The :func:`print` function produces a more readable output, by " @@ -392,7 +392,7 @@ msgstr "" "ευανάγνωστη έξοδο, παραλείποντας τα εισαγωγικά που περικλείουν την " "συμβολοσειρά και εκτυπώνοντας escaped και ειδικούς χαρακτήρες::" -#: tutorial/introduction.rst:177 +#: tutorial/introduction.rst:176 msgid "" ">>> s = 'First line.\\nSecond line.' # \\n means newline\n" ">>> s # without print(), special characters are included in the string\n" @@ -410,7 +410,7 @@ msgstr "" "First line.\n" "Second line." -#: tutorial/introduction.rst:184 +#: tutorial/introduction.rst:183 msgid "" "If you don't want characters prefaced by ``\\`` to be interpreted as special " "characters, you can use *raw strings* by adding an ``r`` before the first " @@ -420,7 +420,7 @@ msgstr "" "ως ειδικοί χαρακτήρες, μπορείτε να χρησιμοποιήσετε *ακατέργαστες " "συμβολοσειρές* προσθέτοντας ένα ``r`` πριν από το πρώτο εισαγωγικό::" -#: tutorial/introduction.rst:188 +#: tutorial/introduction.rst:187 msgid "" ">>> print('C:\\some\\name') # here \\n means newline!\n" "C:\\some\n" @@ -434,7 +434,7 @@ msgstr "" ">>> print(r'C:\\some\\name') # note the r before the quote\n" "C:\\some\\name" -#: tutorial/introduction.rst:194 +#: tutorial/introduction.rst:193 msgid "" "There is one subtle aspect to raw strings: a raw string may not end in an " "odd number of ``\\`` characters; see :ref:`the FAQ entry ` για περισσότερες πληροφορίες και λύσεις." -#: tutorial/introduction.rst:199 +#: tutorial/introduction.rst:198 msgid "" "String literals can span multiple lines. One way is using triple-quotes: " "``\"\"\"...\"\"\"`` or ``'''...'''``. End-of-line characters are " @@ -460,7 +460,7 @@ msgstr "" "προσθέτοντας μία ``\\`` στο τέλος της γραμμής. Στο ακόλουθο παράδειγμα, η " "αρχική νέα γραμμή δεν περιλαμβάνεται::" -#: tutorial/introduction.rst:205 +#: tutorial/introduction.rst:204 msgid "" ">>> print(\"\"\"\\\n" "... Usage: thingy [OPTIONS]\n" @@ -484,7 +484,7 @@ msgstr "" "\n" ">>>" -#: tutorial/introduction.rst:216 +#: tutorial/introduction.rst:215 msgid "" "Strings can be concatenated (glued together) with the ``+`` operator, and " "repeated with ``*``::" @@ -492,7 +492,7 @@ msgstr "" "Οι συμβολοσειρές μπορούν να συνδεθούν (κολληθούν η μία στην άλλη) με τον " "τελεστή ``+``, και να επαναληφθούν με τον τελεστή ``*``::" -#: tutorial/introduction.rst:219 +#: tutorial/introduction.rst:218 msgid "" ">>> # 3 times 'un', followed by 'ium'\n" ">>> 3 * 'un' + 'ium'\n" @@ -502,7 +502,7 @@ msgstr "" ">>> 3 * 'un' + 'ium'\n" "'unununium'" -#: tutorial/introduction.rst:223 +#: tutorial/introduction.rst:222 msgid "" "Two or more *string literals* (i.e. the ones enclosed between quotes) next " "to each other are automatically concatenated. ::" @@ -510,7 +510,7 @@ msgstr "" "Δύο ή παραπάνω *συμβολοσειρές* (που περικλείονται σε εισαγωγικά) η μία δίπλα " "στην άλλη συνδέονται αυτόματα. ::" -#: tutorial/introduction.rst:226 +#: tutorial/introduction.rst:225 msgid "" ">>> 'Py' 'thon'\n" "'Python'" @@ -518,14 +518,14 @@ msgstr "" ">>> 'Py' 'thon'\n" "'Python'" -#: tutorial/introduction.rst:229 +#: tutorial/introduction.rst:228 msgid "" "This feature is particularly useful when you want to break long strings::" msgstr "" "Αυτή η λειτουργία είναι ιδιαίτερα χρήσιμη όταν θέλετε να σπάσετε μεγάλες " "συμβολοσειρές::" -#: tutorial/introduction.rst:231 +#: tutorial/introduction.rst:230 msgid "" ">>> text = ('Put several strings within parentheses '\n" "... 'to have them joined together.')\n" @@ -537,14 +537,14 @@ msgstr "" ">>> text\n" "'Put several strings within parentheses to have them joined together.'" -#: tutorial/introduction.rst:236 +#: tutorial/introduction.rst:235 msgid "" "This only works with two literals though, not with variables or expressions::" msgstr "" "Ωστόσο, αυτό λειτουργεί μόνο με κυριολεκτικές συμβολοσειρές, όχι με " "μεταβλητές ή εκφράσεις::" -#: tutorial/introduction.rst:238 +#: tutorial/introduction.rst:237 msgid "" ">>> prefix = 'Py'\n" ">>> prefix 'thon' # can't concatenate a variable and a string literal\n" @@ -570,14 +570,14 @@ msgstr "" " ^^^^^\n" "SyntaxError: invalid syntax" -#: tutorial/introduction.rst:250 +#: tutorial/introduction.rst:249 msgid "" "If you want to concatenate variables or a variable and a literal, use ``+``::" msgstr "" "Αν θέλετε να συνδέσετε μεταβλητές ή μία μεταβλητή και μία κυριολεκτική " "συμβολοσειρά, χρησιμοποιήστε το ``+``::" -#: tutorial/introduction.rst:252 +#: tutorial/introduction.rst:251 msgid "" ">>> prefix + 'thon'\n" "'Python'" @@ -585,7 +585,7 @@ msgstr "" ">>> prefix + 'thon'\n" "'Python'" -#: tutorial/introduction.rst:255 +#: tutorial/introduction.rst:254 msgid "" "Strings can be *indexed* (subscripted), with the first character having " "index 0. There is no separate character type; a character is simply a string " @@ -595,7 +595,7 @@ msgstr "" "πρώτο χαρακτήρα να έχει τον δείκτη 0. Δεν υπάρχει ξεχωριστός τύπος για " "χαρακτήρες∙ ένας χαρακτήρας είναι απλώς μία συμβολοσειρά με μέγεθος ένα::" -#: tutorial/introduction.rst:259 +#: tutorial/introduction.rst:258 msgid "" ">>> word = 'Python'\n" ">>> word[0] # character in position 0\n" @@ -609,14 +609,14 @@ msgstr "" ">>> word[5] # character in position 5\n" "'n'" -#: tutorial/introduction.rst:265 +#: tutorial/introduction.rst:264 msgid "" "Indices may also be negative numbers, to start counting from the right::" msgstr "" "Οι δείκτες μπορούν να είναι και αρνητικοί αριθμοί, για να ξεκινήσετε την " "αρίθμηση από τα δεξιά::" -#: tutorial/introduction.rst:267 +#: tutorial/introduction.rst:266 msgid "" ">>> word[-1] # last character\n" "'n'\n" @@ -632,13 +632,13 @@ msgstr "" ">>> word[-6]\n" "'P'" -#: tutorial/introduction.rst:274 +#: tutorial/introduction.rst:273 msgid "Note that since -0 is the same as 0, negative indices start from -1." msgstr "" "Σημειώστε ότι αφού το -0 είναι το ίδιο με το 0, οι αρνητικοί δείκτες " "ξεκινούν από το -1." -#: tutorial/introduction.rst:276 +#: tutorial/introduction.rst:275 msgid "" "In addition to indexing, *slicing* is also supported. While indexing is " "used to obtain individual characters, *slicing* allows you to obtain a " @@ -648,7 +648,7 @@ msgstr "" "ευρετηρίαση χρησιμοποιείται για την απόκτηση μεμονομένων χαρακτήρων, ο " "*τεμαχισμός* σας επιτρέπει να αποκτήσετε ένας μέρος της συμβολοσειράς::" -#: tutorial/introduction.rst:279 +#: tutorial/introduction.rst:278 msgid "" ">>> word[0:2] # characters from position 0 (included) to 2 (excluded)\n" "'Py'\n" @@ -660,7 +660,7 @@ msgstr "" ">>> word[2:5] # characters from position 2 (included) to 5 (excluded)\n" "'tho'" -#: tutorial/introduction.rst:284 +#: tutorial/introduction.rst:283 msgid "" "Slice indices have useful defaults; an omitted first index defaults to zero, " "an omitted second index defaults to the size of the string being sliced. ::" @@ -669,7 +669,7 @@ msgstr "" "πρώτου δείκτη έχει ως προεπιλογή το μηδέν, η παράλειψη του δεύτερου δείκτη " "έχει ως προεπιλογή το μέγεθος της συμβολοσειράς που τεμαχίζεται. ::" -#: tutorial/introduction.rst:287 +#: tutorial/introduction.rst:286 msgid "" ">>> word[:2] # character from the beginning to position 2 (excluded)\n" "'Py'\n" @@ -685,7 +685,7 @@ msgstr "" ">>> word[-2:] # characters from the second-last (included) to the end\n" "'on'" -#: tutorial/introduction.rst:294 +#: tutorial/introduction.rst:293 msgid "" "Note how the start is always included, and the end always excluded. This " "makes sure that ``s[:i] + s[i:]`` is always equal to ``s``::" @@ -693,7 +693,7 @@ msgstr "" "Προσέξτε πώς η αρχή περιλαμβάνεται πάντα, ενώ το τέλος πάντα εξαιρείται. " "Αυτό εξασφαλίζει ότι το ``s[:i] + s[i:]`` είναι πάντα ίσο με ``s``::" -#: tutorial/introduction.rst:297 +#: tutorial/introduction.rst:296 msgid "" ">>> word[:2] + word[2:]\n" "'Python'\n" @@ -705,7 +705,7 @@ msgstr "" ">>> word[:4] + word[4:]\n" "'Python'" -#: tutorial/introduction.rst:302 +#: tutorial/introduction.rst:301 msgid "" "One way to remember how slices work is to think of the indices as pointing " "*between* characters, with the left edge of the first character numbered 0. " @@ -717,7 +717,7 @@ msgstr "" "χαρακτήρα να αριθμείται με 0. Τότε το δεξιό άκρο του τελευταίου χαρακτήρα " "μιας συμβολοσειράς *ν* χαρακτήρων έχει δείκτη *ν*, για παράδειγμα::" -#: tutorial/introduction.rst:307 +#: tutorial/introduction.rst:306 msgid "" " +---+---+---+---+---+---+\n" " | P | y | t | h | o | n |\n" @@ -731,7 +731,7 @@ msgstr "" " 0 1 2 3 4 5 6\n" "-6 -5 -4 -3 -2 -1" -#: tutorial/introduction.rst:313 +#: tutorial/introduction.rst:312 msgid "" "The first row of numbers gives the position of the indices 0...6 in the " "string; the second row gives the corresponding negative indices. The slice " @@ -743,7 +743,7 @@ msgstr "" "*i* έως *j* αποτελείται από όλους τους χαρακτήρες μεταξύ των άκρων με " "ετικέτες *i* και *j*, αντίστοιχα." -#: tutorial/introduction.rst:318 +#: tutorial/introduction.rst:317 msgid "" "For non-negative indices, the length of a slice is the difference of the " "indices, if both are within bounds. For example, the length of " @@ -753,11 +753,11 @@ msgstr "" "δεικτών, εάν και οι δύο είναι εντός των ορίων. Για παράδειγμα, το μήκος του " "``word[1:3]`` είναι 2." -#: tutorial/introduction.rst:322 +#: tutorial/introduction.rst:321 msgid "Attempting to use an index that is too large will result in an error::" msgstr "Η απόπειρα χρήσης ενός πολύ μεγάλου δείκτη θα οδηγήσει σε σφάλμα::" -#: tutorial/introduction.rst:324 +#: tutorial/introduction.rst:323 msgid "" ">>> word[42] # the word only has 6 characters\n" "Traceback (most recent call last):\n" @@ -769,7 +769,7 @@ msgstr "" " File \"\", line 1, in \n" "IndexError: string index out of range" -#: tutorial/introduction.rst:329 +#: tutorial/introduction.rst:328 msgid "" "However, out of range slice indexes are handled gracefully when used for " "slicing::" @@ -777,7 +777,7 @@ msgstr "" "Ωστόσο, οι δείκτες εκτός εύρους αντιμετωπίζονται χωρίς σφάλμα όταν " "χρησιμοποιούνται για τεμαχισμούς::" -#: tutorial/introduction.rst:332 +#: tutorial/introduction.rst:331 msgid "" ">>> word[4:42]\n" "'on'\n" @@ -789,7 +789,7 @@ msgstr "" ">>> word[42:]\n" "''" -#: tutorial/introduction.rst:337 +#: tutorial/introduction.rst:336 msgid "" "Python strings cannot be changed --- they are :term:`immutable`. Therefore, " "assigning to an indexed position in the string results in an error::" @@ -798,7 +798,7 @@ msgstr "" "`immutable`. Επομένως, η ανάθεση σε μια συγκεκριμένη θέση στη συμβολοσειρά " "οδηγεί σε σφάλμα::" -#: tutorial/introduction.rst:340 +#: tutorial/introduction.rst:339 msgid "" ">>> word[0] = 'J'\n" "Traceback (most recent call last):\n" @@ -818,13 +818,13 @@ msgstr "" " File \"\", line 1, in \n" "TypeError: 'str' object does not support item assignment" -#: tutorial/introduction.rst:349 +#: tutorial/introduction.rst:348 msgid "If you need a different string, you should create a new one::" msgstr "" "Εάν χρειάζεστε μια διαφορετική συμβολοσειρά, θα πρέπει να δημιουργήσετε μια " "νέα::" -#: tutorial/introduction.rst:351 +#: tutorial/introduction.rst:350 msgid "" ">>> 'J' + word[1:]\n" "'Jython'\n" @@ -836,12 +836,12 @@ msgstr "" ">>> word[:2] + 'py'\n" "'Pypy'" -#: tutorial/introduction.rst:356 +#: tutorial/introduction.rst:355 msgid "The built-in function :func:`len` returns the length of a string::" msgstr "" "Η ενσωματωμένη συνάρτηση :func:`len` επιστρέφει το μήκος μιας συμβολοσειράς::" -#: tutorial/introduction.rst:358 +#: tutorial/introduction.rst:357 msgid "" ">>> s = 'supercalifragilisticexpialidocious'\n" ">>> len(s)\n" @@ -851,11 +851,11 @@ msgstr "" ">>> len(s)\n" "34" -#: tutorial/introduction.rst:365 +#: tutorial/introduction.rst:364 msgid ":ref:`textseq`" msgstr ":ref:`textseq`" -#: tutorial/introduction.rst:366 +#: tutorial/introduction.rst:365 msgid "" "Strings are examples of *sequence types*, and support the common operations " "supported by such types." @@ -863,11 +863,11 @@ msgstr "" "Οι συμβολοσειρές είναι παραδείγματα *τύπων ακολουθίας* και υποστηρίζουν τις " "κοινές πράξεις που υποστηρίζονται από τέτοιους τύπους." -#: tutorial/introduction.rst:369 +#: tutorial/introduction.rst:368 msgid ":ref:`string-methods`" msgstr ":ref:`string-methods`" -#: tutorial/introduction.rst:370 +#: tutorial/introduction.rst:369 msgid "" "Strings support a large number of methods for basic transformations and " "searching." @@ -875,29 +875,29 @@ msgstr "" "Οι συμβολοσειρές υποστηρίζουν έναν μεγάλο αριθμό μεθόδων για βασικούς " "μετασχηματισμούς και αναζήτηση." -#: tutorial/introduction.rst:373 +#: tutorial/introduction.rst:372 msgid ":ref:`f-strings`" msgstr ":ref:`f-strings`" -#: tutorial/introduction.rst:374 +#: tutorial/introduction.rst:373 msgid "String literals that have embedded expressions." msgstr "Κυριολεκτικές συμβολοσειρές που έχουν ενσωματωμένες εκφράσεις." -#: tutorial/introduction.rst:376 +#: tutorial/introduction.rst:375 msgid ":ref:`formatstrings`" msgstr ":ref:`formatstrings`" -#: tutorial/introduction.rst:377 +#: tutorial/introduction.rst:376 msgid "Information about string formatting with :meth:`str.format`." msgstr "" "Πληροφορίες σχετικά με τη μορφοποίηση συμβολοσειρών με τη μέθοδο :meth:`str." "format`." -#: tutorial/introduction.rst:379 +#: tutorial/introduction.rst:378 msgid ":ref:`old-string-formatting`" msgstr ":ref:`old-string-formatting`" -#: tutorial/introduction.rst:380 +#: tutorial/introduction.rst:379 msgid "" "The old formatting operations invoked when strings are the left operand of " "the ``%`` operator are described in more detail here." @@ -905,11 +905,11 @@ msgstr "" "Οι παλιές λειτουργίες μορφοποίησης που καλούνται όταν οι συμβολοσειρές είναι " "ο αριστερός τελεστέος του τελεστή ``%`` περιγράφονται λεπτομερέστερα εδώ." -#: tutorial/introduction.rst:387 +#: tutorial/introduction.rst:386 msgid "Lists" msgstr "Λίστες" -#: tutorial/introduction.rst:389 +#: tutorial/introduction.rst:388 msgid "" "Python knows a number of *compound* data types, used to group together other " "values. The most versatile is the *list*, which can be written as a list of " @@ -923,7 +923,7 @@ msgstr "" "περιέχουν στοιχεία διαφορετικών τύπων, αλλά συνήθως όλα τα στοιχεία έχουν " "τον ίδιο τύπο. ::" -#: tutorial/introduction.rst:394 +#: tutorial/introduction.rst:393 msgid "" ">>> squares = [1, 4, 9, 16, 25]\n" ">>> squares\n" @@ -933,7 +933,7 @@ msgstr "" ">>> squares\n" "[1, 4, 9, 16, 25]" -#: tutorial/introduction.rst:398 +#: tutorial/introduction.rst:397 msgid "" "Like strings (and all other built-in :term:`sequence` types), lists can be " "indexed and sliced::" @@ -941,7 +941,7 @@ msgstr "" "Όπως οι συμβολοσειρές (και όλοι οι άλλοι ενσωματωμένοι τύποι :term:" "`sequence`), οι λίστες μπορούν να δεικτοδοτηθούν και να τεμαχιστούν::" -#: tutorial/introduction.rst:401 +#: tutorial/introduction.rst:400 msgid "" ">>> squares[0] # indexing returns the item\n" "1\n" @@ -957,11 +957,11 @@ msgstr "" ">>> squares[-3:] # slicing returns a new list\n" "[9, 16, 25]" -#: tutorial/introduction.rst:408 +#: tutorial/introduction.rst:407 msgid "Lists also support operations like concatenation::" msgstr "Οι λίστες υποστηρίζουν επίσης λειτουργίες όπως σύνδεση::" -#: tutorial/introduction.rst:410 +#: tutorial/introduction.rst:409 msgid "" ">>> squares + [36, 49, 64, 81, 100]\n" "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]" @@ -969,7 +969,7 @@ msgstr "" ">>> squares + [36, 49, 64, 81, 100]\n" "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]" -#: tutorial/introduction.rst:413 +#: tutorial/introduction.rst:412 msgid "" "Unlike strings, which are :term:`immutable`, lists are a :term:`mutable` " "type, i.e. it is possible to change their content::" @@ -978,7 +978,7 @@ msgstr "" "λίστες είναι :term:`mutable` τύπος, δηλαδή είναι δυνατόν να αλλάξετε το " "περιεχόμενό τους::" -#: tutorial/introduction.rst:416 +#: tutorial/introduction.rst:415 msgid "" ">>> cubes = [1, 8, 27, 65, 125] # something's wrong here\n" ">>> 4 ** 3 # the cube of 4 is 64, not 65!\n" @@ -994,7 +994,7 @@ msgstr "" ">>> cubes\n" "[1, 8, 27, 64, 125]" -#: tutorial/introduction.rst:423 +#: tutorial/introduction.rst:422 msgid "" "You can also add new items at the end of the list, by using the :meth:`!list." "append` *method* (we will see more about methods later)::" @@ -1003,7 +1003,7 @@ msgstr "" "χρησιμοποιώντας την *μέθοδο* :meth:`!list.append` (θα δούμε περισσότερα για " "τις μεθόδους αργότερα)::" -#: tutorial/introduction.rst:426 +#: tutorial/introduction.rst:425 msgid "" ">>> cubes.append(216) # add the cube of 6\n" ">>> cubes.append(7 ** 3) # and the cube of 7\n" @@ -1015,7 +1015,7 @@ msgstr "" ">>> cubes\n" "[1, 8, 27, 64, 125, 216, 343]" -#: tutorial/introduction.rst:431 +#: tutorial/introduction.rst:430 msgid "" "Simple assignment in Python never copies data. When you assign a list to a " "variable, the variable refers to the *existing list*. Any changes you make " @@ -1027,7 +1027,7 @@ msgstr "" "Οποιεσδήποτε αλλαγές κάνετε στη λίστα μέσω μιας μεταβλητής θα γίνουν " "αντιληπτές από όλες τις άλλες μεταβλητές που αναφέρονται σε αυτήν::" -#: tutorial/introduction.rst:436 +#: tutorial/introduction.rst:435 msgid "" ">>> rgb = [\"Red\", \"Green\", \"Blue\"]\n" ">>> rgba = rgb\n" @@ -1045,7 +1045,7 @@ msgstr "" ">>> rgb\n" "[\"Red\", \"Green\", \"Blue\", \"Alph\"]" -#: tutorial/introduction.rst:444 +#: tutorial/introduction.rst:443 msgid "" "All slice operations return a new list containing the requested elements. " "This means that the following slice returns a :ref:`shallow copy " @@ -1055,7 +1055,7 @@ msgstr "" "στοιχεία. Αυτό σημαίνει ότι ο ακόλουθος τεμαχισμός επιστρέφει ένα :ref:" "`shallow copy ` (ρηχό αντίγραφο) της λίστας::" -#: tutorial/introduction.rst:448 +#: tutorial/introduction.rst:447 msgid "" ">>> correct_rgba = rgba[:]\n" ">>> correct_rgba[-1] = \"Alpha\"\n" @@ -1071,7 +1071,7 @@ msgstr "" ">>> rgba\n" "[\"Red\", \"Green\", \"Blue\", \"Alph\"]" -#: tutorial/introduction.rst:455 +#: tutorial/introduction.rst:454 msgid "" "Assignment to slices is also possible, and this can even change the size of " "the list or clear it entirely::" @@ -1079,7 +1079,7 @@ msgstr "" "Η ανάθεση σε τεμαχισμούς είναι επίσης δυνατή, και αυτό μπορεί ακόμη και να " "αλλάξει το μέγεθος της λίστας ή να τη διαγράψει εντελώς::" -#: tutorial/introduction.rst:458 +#: tutorial/introduction.rst:457 msgid "" ">>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']\n" ">>> letters\n" @@ -1113,11 +1113,11 @@ msgstr "" ">>> letters\n" "[]" -#: tutorial/introduction.rst:474 +#: tutorial/introduction.rst:473 msgid "The built-in function :func:`len` also applies to lists::" msgstr "Η ενσωματωμένη συνάρτηση :func:`len` εφαρμόζεται επίσης στις λίστες::" -#: tutorial/introduction.rst:476 +#: tutorial/introduction.rst:475 msgid "" ">>> letters = ['a', 'b', 'c', 'd']\n" ">>> len(letters)\n" @@ -1127,7 +1127,7 @@ msgstr "" ">>> len(letters)\n" "4" -#: tutorial/introduction.rst:480 +#: tutorial/introduction.rst:479 msgid "" "It is possible to nest lists (create lists containing other lists), for " "example::" @@ -1135,7 +1135,7 @@ msgstr "" "Είναι δυνατό να εμφωλεύσετε λίστες (να δημιουργήσετε λίστες που περιέχουν " "άλλες λίστες), για παράδειγμα::" -#: tutorial/introduction.rst:483 +#: tutorial/introduction.rst:482 msgid "" ">>> a = ['a', 'b', 'c']\n" ">>> n = [1, 2, 3]\n" @@ -1157,11 +1157,11 @@ msgstr "" ">>> x[0][1]\n" "'b'" -#: tutorial/introduction.rst:496 +#: tutorial/introduction.rst:495 msgid "First Steps Towards Programming" msgstr "Πρώτα Βήματα Προς Τον Προγραμματισμό" -#: tutorial/introduction.rst:498 +#: tutorial/introduction.rst:497 msgid "" "Of course, we can use Python for more complicated tasks than adding two and " "two together. For instance, we can write an initial sub-sequence of the " @@ -1173,7 +1173,7 @@ msgstr "" "αρχική υπο-σειρά της `Σειράς Fibonacci `_ ως ακολουθεί::" -#: tutorial/introduction.rst:503 +#: tutorial/introduction.rst:502 msgid "" ">>> # Fibonacci series:\n" ">>> # the sum of two elements defines the next\n" @@ -1205,11 +1205,11 @@ msgstr "" "5\n" "8" -#: tutorial/introduction.rst:518 +#: tutorial/introduction.rst:517 msgid "This example introduces several new features." msgstr "Αυτό το παράδειγμα εισάγει διάφορα νέα χαρακτηριστικά." -#: tutorial/introduction.rst:520 +#: tutorial/introduction.rst:519 msgid "" "The first line contains a *multiple assignment*: the variables ``a`` and " "``b`` simultaneously get the new values 0 and 1. On the last line this is " @@ -1223,7 +1223,7 @@ msgstr "" "αξιολογούνται όλες πρώτα πριν γίνει οποιαδήποτε ανάθεση. Οι εκφράσεις στην " "δεξιά πλευρά αξιολογούνται από αριστερά προς τα δεξιά." -#: tutorial/introduction.rst:526 +#: tutorial/introduction.rst:525 msgid "" "The :keyword:`while` loop executes as long as the condition (here: ``a < " "10``) remains true. In Python, like in C, any non-zero integer value is " @@ -1244,7 +1244,7 @@ msgstr "" "(μικρότερο από), ``>`` (μεγαλύτερο από), ``==`` (ίσο με), ``<=`` (μικρότερο " "ή ίσο με), ``>=`` (μεγαλύτερο ή ίσο με) και ``!=`` (μη ίσο με)." -#: tutorial/introduction.rst:535 +#: tutorial/introduction.rst:534 msgid "" "The *body* of the loop is *indented*: indentation is Python's way of " "grouping statements. At the interactive prompt, you have to type a tab or " @@ -1266,7 +1266,7 @@ msgstr "" "τελευταία γραμμή). Σημείωση ότι κάθε γραμμή μέσα σε ένα βασικό μπλοκ πρέπει " "να έχει την ίδια εσοχή." -#: tutorial/introduction.rst:544 +#: tutorial/introduction.rst:543 msgid "" "The :func:`print` function writes the value of the argument(s) it is given. " "It differs from just writing the expression you want to write (as we did " @@ -1283,7 +1283,7 @@ msgstr "" "παρεμβάλλεται μεταξύ των στοιχείων, ώστε να μπορείτε να μορφοποιήσετε τα " "πράγματα όμορφα, όπως εδώ::" -#: tutorial/introduction.rst:551 +#: tutorial/introduction.rst:550 msgid "" ">>> i = 256*256\n" ">>> print('The value of i is', i)\n" @@ -1293,7 +1293,7 @@ msgstr "" ">>> print('The value of i is', i)\n" "The value of i is 65536" -#: tutorial/introduction.rst:555 +#: tutorial/introduction.rst:554 msgid "" "The keyword argument *end* can be used to avoid the newline after the " "output, or end the output with a different string::" @@ -1302,7 +1302,7 @@ msgstr "" "γραμμής μετά την έξοδο, ή για να τελειώσετε την έξοδο με μια διαφορετική " "συμβολοσειρά::" -#: tutorial/introduction.rst:558 +#: tutorial/introduction.rst:557 msgid "" ">>> a, b = 0, 1\n" ">>> while a < 1000:\n" @@ -1318,11 +1318,11 @@ msgstr "" "...\n" "0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987," -#: tutorial/introduction.rst:567 +#: tutorial/introduction.rst:566 msgid "Footnotes" msgstr "Υποσημειώσεις" -#: tutorial/introduction.rst:568 +#: tutorial/introduction.rst:567 msgid "" "Since ``**`` has higher precedence than ``-``, ``-3**2`` will be interpreted " "as ``-(3**2)`` and thus result in ``-9``. To avoid this and get ``9``, you " @@ -1333,7 +1333,7 @@ msgstr "" "το αποφύγετε αυτό και να πάρετε ``9``, μπορείτε να χρησιμοποιήσετε " "``(-3)**2``." -#: tutorial/introduction.rst:572 +#: tutorial/introduction.rst:571 msgid "" "Unlike other languages, special characters such as ``\\n`` have the same " "meaning with both single (``'...'``) and double (``\"...\"``) quotes. The " @@ -1346,11 +1346,11 @@ msgstr "" "δεν χρειάζεται να αποφύγετε το ``\"`` (αλλά πρέπει να αποφύγετε το ``\\'``) " "και το αντίστροφο." -#: tutorial/introduction.rst:21 +#: tutorial/introduction.rst:20 msgid "# (hash)" msgstr "# (hash)" -#: tutorial/introduction.rst:21 +#: tutorial/introduction.rst:20 msgid "comment" msgstr "σχόλιο" diff --git a/tutorial/modules.po b/tutorial/modules.po index e5a1f6f8..20e73c13 100644 --- a/tutorial/modules.po +++ b/tutorial/modules.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-03 17:11+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" @@ -76,17 +76,20 @@ msgstr "" "περιεχόμενα::" #: tutorial/modules.rst:28 +#, fuzzy msgid "" "# Fibonacci numbers module\n" "\n" -"def fib(n): # write Fibonacci series up to n\n" +"def fib(n):\n" +" \"\"\"Write Fibonacci series up to n.\"\"\"\n" " a, b = 0, 1\n" " while a < n:\n" " print(a, end=' ')\n" " a, b = b, a+b\n" " print()\n" "\n" -"def fib2(n): # return Fibonacci series up to n\n" +"def fib2(n):\n" +" \"\"\"Return Fibonacci series up to n.\"\"\"\n" " result = []\n" " a, b = 0, 1\n" " while a < n:\n" @@ -111,7 +114,7 @@ msgstr "" " a, b = b, a+b\n" " return result" -#: tutorial/modules.rst:45 +#: tutorial/modules.rst:47 msgid "" "Now enter the Python interpreter and import this module with the following " "command::" @@ -119,11 +122,11 @@ msgstr "" "Τώρα εισάγετε τον Python interpreter και εισάγετε αυτό το module με την " "ακόλουθη εντολή::" -#: tutorial/modules.rst:48 +#: tutorial/modules.rst:50 msgid ">>> import fibo" msgstr ">>> import fibo" -#: tutorial/modules.rst:50 +#: tutorial/modules.rst:52 msgid "" "This does not add the names of the functions defined in ``fibo`` directly " "to the current :term:`namespace` (see :ref:`tut-scopes` for more details); " @@ -136,7 +139,7 @@ msgstr "" "εκεί. Χρησιμοποιώντας το όνομα του module μπορείτε να αποκτήσετε πρόσβαση " "στις λειτουργίες::" -#: tutorial/modules.rst:55 +#: tutorial/modules.rst:57 msgid "" ">>> fibo.fib(1000)\n" "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987\n" @@ -152,14 +155,14 @@ msgstr "" ">>> fibo.__name__\n" "'fibo'" -#: tutorial/modules.rst:62 +#: tutorial/modules.rst:64 msgid "" "If you intend to use a function often you can assign it to a local name::" msgstr "" "Εάν σκοπεύετε να χρησιμοποιείτε συχνά μια συνάρτηση, μπορείτε να την " "αντιστοιχίσετε σε ένα τοπικό όνομα::" -#: tutorial/modules.rst:64 +#: tutorial/modules.rst:66 msgid "" ">>> fib = fibo.fib\n" ">>> fib(500)\n" @@ -169,11 +172,11 @@ msgstr "" ">>> fib(500)\n" "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377" -#: tutorial/modules.rst:72 +#: tutorial/modules.rst:74 msgid "More on Modules" msgstr "Περισσότερα για τα Modules" -#: tutorial/modules.rst:74 +#: tutorial/modules.rst:76 msgid "" "A module can contain executable statements as well as function definitions. " "These statements are intended to initialize the module. They are executed " @@ -186,7 +189,7 @@ msgstr "" "δήλωση εισαγωγής. [#]_ (Εκτελούνται επίσης εάν το αρχείο εκτελείται ως " "script.)" -#: tutorial/modules.rst:79 +#: tutorial/modules.rst:81 msgid "" "Each module has its own private namespace, which is used as the global " "namespace by all functions defined in the module. Thus, the author of a " @@ -203,7 +206,7 @@ msgstr "" "global μεταβλητές ενός module με το ίδιο notation που χρησιμοποιείται για να " "αναφέρεται στις συναρτήσεις, ``modname.itemname``." -#: tutorial/modules.rst:86 +#: tutorial/modules.rst:88 msgid "" "Modules can import other modules. It is customary but not required to place " "all :keyword:`import` statements at the beginning of a module (or script, " @@ -218,7 +221,7 @@ msgstr "" "οποιωνδήποτε συναρτήσεων ή κλάσεων), προστίθενται στον global namespace του " "module." -#: tutorial/modules.rst:91 +#: tutorial/modules.rst:93 msgid "" "There is a variant of the :keyword:`import` statement that imports names " "from a module directly into the importing module's namespace. For example::" @@ -227,7 +230,7 @@ msgstr "" "ένα module απευθείας στον χώρο στα importing module's namespace. Για " "παράδειγμα::" -#: tutorial/modules.rst:94 +#: tutorial/modules.rst:96 msgid "" ">>> from fibo import fib, fib2\n" ">>> fib(500)\n" @@ -237,7 +240,7 @@ msgstr "" ">>> fib(500)\n" "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377" -#: tutorial/modules.rst:98 +#: tutorial/modules.rst:100 msgid "" "This does not introduce the module name from which the imports are taken in " "the local namespace (so in the example, ``fibo`` is not defined)." @@ -245,13 +248,13 @@ msgstr "" "Αυτό δεν εισάγει το όνομα ενός module από το οποίο λαμβάνονται οι εισαγωγές " "στο τοπικό namespace (αρά στο παράδειγμα, το ``fibo`` δεν ορίζεται)." -#: tutorial/modules.rst:101 +#: tutorial/modules.rst:103 msgid "There is even a variant to import all names that a module defines::" msgstr "" "Υπάρχει ακόμη και μια παραλλαγή για την εισαγωγή όλων των ονομάτων που " "ορίζει μια ενότητα::" -#: tutorial/modules.rst:103 +#: tutorial/modules.rst:105 msgid "" ">>> from fibo import *\n" ">>> fib(500)\n" @@ -261,7 +264,7 @@ msgstr "" ">>> fib(500)\n" "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377" -#: tutorial/modules.rst:107 +#: tutorial/modules.rst:109 msgid "" "This imports all names except those beginning with an underscore (``_``). In " "most cases Python programmers do not use this facility since it introduces " @@ -274,7 +277,7 @@ msgstr "" "ονομάτων στον interpreter, κρύβοντας πιθανώς κάποια πράγματα που έχετε ήδη " "ορίσει." -#: tutorial/modules.rst:112 +#: tutorial/modules.rst:114 msgid "" "Note that in general the practice of importing ``*`` from a module or " "package is frowned upon, since it often causes poorly readable code. " @@ -285,7 +288,7 @@ msgstr "" "είναι εντάξει να τον χρησιμοποιήσετε για να αποθηκεύσετε την πληκτρολόγηση " "σε διαδραστικές περιόδους σύνδεσης." -#: tutorial/modules.rst:116 +#: tutorial/modules.rst:118 msgid "" "If the module name is followed by :keyword:`!as`, then the name following :" "keyword:`!as` is bound directly to the imported module." @@ -293,7 +296,7 @@ msgstr "" "Εάν το όνομα του module ακολουθείται από :keyword:`!as`, τότε το όνομα που " "ακολουθεί :keyword:`!as` συνδέεται απευθείας με το εισαγόμενο module." -#: tutorial/modules.rst:121 +#: tutorial/modules.rst:123 msgid "" ">>> import fibo as fib\n" ">>> fib.fib(500)\n" @@ -303,7 +306,7 @@ msgstr "" ">>> fib.fib(500)\n" "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377" -#: tutorial/modules.rst:125 +#: tutorial/modules.rst:127 msgid "" "This is effectively importing the module in the same way that ``import " "fibo`` will do, with the only difference of it being available as ``fib``." @@ -311,14 +314,14 @@ msgstr "" "Αυτό ουσιαστικά εισάγει το module με τον ίδιο τρόπο που θα κάνει το ``import " "fibo`` , με τη μόνη διαφορά ότι είναι διαθέσιμο ως ``fib``." -#: tutorial/modules.rst:128 +#: tutorial/modules.rst:130 msgid "" "It can also be used when utilising :keyword:`from` with similar effects::" msgstr "" "Μπορεί επίσης να χρησιμοποιηθεί όταν χρησιμοποιείτε :keyword:`from` με " "παρόμοια εφέ::" -#: tutorial/modules.rst:130 +#: tutorial/modules.rst:132 msgid "" ">>> from fibo import fib as fibonacci\n" ">>> fibonacci(500)\n" @@ -328,7 +331,7 @@ msgstr "" ">>> fibonacci(500)\n" "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377" -#: tutorial/modules.rst:137 +#: tutorial/modules.rst:139 msgid "" "For efficiency reasons, each module is only imported once per interpreter " "session. Therefore, if you change your modules, you must restart the " @@ -342,19 +345,19 @@ msgstr "" "θέλετε να δοκιμάσετε διαδραστικά, χρησιμοποιήστε το :func:`importlib." "reload`, π.χ. ``import importlib; importlib.reload(modulename)``." -#: tutorial/modules.rst:147 +#: tutorial/modules.rst:149 msgid "Executing modules as scripts" msgstr "Εκτέλεση modules ως scripts" -#: tutorial/modules.rst:149 +#: tutorial/modules.rst:151 msgid "When you run a Python module with ::" msgstr "Όταν εκτελείτε ένα Python module με::" -#: tutorial/modules.rst:151 +#: tutorial/modules.rst:153 msgid "python fibo.py " msgstr "python fibo.py " -#: tutorial/modules.rst:153 +#: tutorial/modules.rst:155 msgid "" "the code in the module will be executed, just as if you imported it, but " "with the ``__name__`` set to ``\"__main__\"``. That means that by adding " @@ -364,7 +367,7 @@ msgstr "" "το ``name`` να έχει οριστεί σε ``\"__main__\"``. Αυτό σημαίνει ότι " "προσθέτοντας αυτόν τον κώδικα στο τέλος του module σας::" -#: tutorial/modules.rst:157 +#: tutorial/modules.rst:159 msgid "" "if __name__ == \"__main__\":\n" " import sys\n" @@ -374,7 +377,7 @@ msgstr "" " import sys\n" " fib(int(sys.argv[1]))" -#: tutorial/modules.rst:161 +#: tutorial/modules.rst:163 msgid "" "you can make the file usable as a script as well as an importable module, " "because the code that parses the command line only runs if the module is " @@ -384,7 +387,7 @@ msgstr "" "που μπορεί να εισαχθεί, επειδή ο κώδικας που αναλύει την γραμμή εντολών " "εκτελείται μόνο εάν το module εκτελείται ως το \"main\" αρχείο:" -#: tutorial/modules.rst:165 +#: tutorial/modules.rst:167 msgid "" "$ python fibo.py 50\n" "0 1 1 2 3 5 8 13 21 34" @@ -392,11 +395,11 @@ msgstr "" "$ python fibo.py 50\n" "0 1 1 2 3 5 8 13 21 34" -#: tutorial/modules.rst:170 +#: tutorial/modules.rst:172 msgid "If the module is imported, the code is not run::" msgstr "Εάν το module έχει εισαχθεί, ο κώδικας δεν εκτελείται::" -#: tutorial/modules.rst:172 +#: tutorial/modules.rst:174 msgid "" ">>> import fibo\n" ">>>" @@ -404,7 +407,7 @@ msgstr "" ">>> import fibo\n" ">>>" -#: tutorial/modules.rst:175 +#: tutorial/modules.rst:177 msgid "" "This is often used either to provide a convenient user interface to a " "module, or for testing purposes (running the module as a script executes a " @@ -414,11 +417,11 @@ msgstr "" "σε ένα module, είτε για σκοπούς δοκιμής (η εκτέλεση του module ως script " "εκτελεί μια δοκιμαστική σουίτα)." -#: tutorial/modules.rst:182 +#: tutorial/modules.rst:184 msgid "The Module Search Path" msgstr "Το Search Path του Module" -#: tutorial/modules.rst:186 +#: tutorial/modules.rst:188 msgid "" "When a module named :mod:`!spam` is imported, the interpreter first searches " "for a built-in module with that name. These module names are listed in :data:" @@ -433,7 +436,7 @@ msgstr "" "δίνονται από τη μεταβλητή :data:`sys.path`. Το :data:`sys.path` " "αρχικοποιείται από αυτές τις θέσεις:" -#: tutorial/modules.rst:192 +#: tutorial/modules.rst:194 msgid "" "The directory containing the input script (or the current directory when no " "file is specified)." @@ -441,7 +444,7 @@ msgstr "" "Ο κατάλογος που περιέχει το input script (ή τον τρέχοντα κατάλογο όταν δεν " "έχει καθοριστεί αρχείο)." -#: tutorial/modules.rst:194 +#: tutorial/modules.rst:196 msgid "" ":envvar:`PYTHONPATH` (a list of directory names, with the same syntax as the " "shell variable :envvar:`PATH`)." @@ -449,7 +452,7 @@ msgstr "" ":envvar:`PYTHONPATH` (μια λίστα ονομάτων καταλόγου, με την ίδια σύνταξη με " "τη μεταβλητή του shell :envvar:`PATH`)." -#: tutorial/modules.rst:196 +#: tutorial/modules.rst:198 msgid "" "The installation-dependent default (by convention including a ``site-" "packages`` directory, handled by the :mod:`site` module)." @@ -458,11 +461,11 @@ msgstr "" "συμπεριλαμβανομένου ενός καταλόγου ``site-packages``, που χειρίζεται το " "module :mod:`site`." -#: tutorial/modules.rst:199 +#: tutorial/modules.rst:201 msgid "More details are at :ref:`sys-path-init`." msgstr "Περισσότερες λεπτομέρειες βρίσκονται στο :ref:`sys-path-init`." -#: tutorial/modules.rst:202 +#: tutorial/modules.rst:204 msgid "" "On file systems which support symlinks, the directory containing the input " "script is calculated after the symlink is followed. In other words the " @@ -473,7 +476,7 @@ msgstr "" "κατάλογος που περιέχει το symlink **δεν** προστίθεται στη διαδρομή " "αναζήτησης του module." -#: tutorial/modules.rst:206 +#: tutorial/modules.rst:208 msgid "" "After initialization, Python programs can modify :data:`sys.path`. The " "directory containing the script being run is placed at the beginning of the " @@ -490,11 +493,11 @@ msgstr "" "βιβλιοθήκης. Αυτό είναι ένα σφάλμα, εκτός εάν προορίζεται η αντικατάσταση. " "Βλ. την ενότητα :ref:`tut-standardmodules` για περισσότερες πληροφορίες." -#: tutorial/modules.rst:219 +#: tutorial/modules.rst:221 msgid "\"Compiled\" Python files" msgstr "\"Compiled\" Python αρχεία" -#: tutorial/modules.rst:221 +#: tutorial/modules.rst:223 msgid "" "To speed up loading modules, Python caches the compiled version of each " "module in the ``__pycache__`` directory under the name :file:`module." @@ -513,7 +516,7 @@ msgstr "" "compiled modules από διαφορετικές εκδόσεις και διαφορετικές εκδόσεις της " "Python να συνυπάρχουν." -#: tutorial/modules.rst:229 +#: tutorial/modules.rst:231 msgid "" "Python checks the modification date of the source against the compiled " "version to see if it's out of date and needs to be recompiled. This is a " @@ -527,7 +530,7 @@ msgstr "" "modules είναι ανεξάρτητες από πλατφόρμα, επομένως η ίδια βιβλιοθήκη μπορεί " "να κοινοποιηθεί ανάμεσα σε συστήματα με διαφορετικές αρχιτεκτονικές." -#: tutorial/modules.rst:234 +#: tutorial/modules.rst:236 msgid "" "Python does not check the cache in two circumstances. First, it always " "recompiles and does not store the result for the module that's loaded " @@ -543,11 +546,11 @@ msgstr "" "(compiled μόνο), το compiled module πρέπει να βρίσκεται στον source κατάλογο " "και δεν πρέπει να υπάρχει source module." -#: tutorial/modules.rst:241 +#: tutorial/modules.rst:243 msgid "Some tips for experts:" msgstr "Μερικές συμβουλές για ειδικούς:" -#: tutorial/modules.rst:243 +#: tutorial/modules.rst:245 msgid "" "You can use the :option:`-O` or :option:`-OO` switches on the Python command " "to reduce the size of a compiled module. The ``-O`` switch removes assert " @@ -567,7 +570,7 @@ msgstr "" "Οι μελλοντικές εκδόσεις μπορεί να αλλάξουν τα αποτελέσματα της " "βελτιστοποίησης." -#: tutorial/modules.rst:251 +#: tutorial/modules.rst:253 msgid "" "A program doesn't run any faster when it is read from a ``.pyc`` file than " "when it is read from a ``.py`` file; the only thing that's faster about ``." @@ -578,7 +581,7 @@ msgstr "" "είναι πιο γρήγορο από τα αρχεία ``.pyc`` είναι η ταχύτητα με την οποία " "φορτώνονται." -#: tutorial/modules.rst:255 +#: tutorial/modules.rst:257 msgid "" "The module :mod:`compileall` can create .pyc files for all modules in a " "directory." @@ -586,7 +589,7 @@ msgstr "" "Το module :mod:`compileall` μπορεί να δημιουργήσει αρχεία .pyc για όλα τα " "modules σε ένα κατάλογο." -#: tutorial/modules.rst:258 +#: tutorial/modules.rst:260 msgid "" "There is more detail on this process, including a flow chart of the " "decisions, in :pep:`3147`." @@ -594,11 +597,11 @@ msgstr "" "Υπάρχουν περισσότερες λεπτομέρειες σχετικά με αυτή τη διαδικασία, " "συμπεριλαμβανομένου ενός διαγράμματος ροής των αποφάσεων, στο :pep:`3147`." -#: tutorial/modules.rst:265 +#: tutorial/modules.rst:267 msgid "Standard Modules" msgstr "Standard Modules" -#: tutorial/modules.rst:269 +#: tutorial/modules.rst:271 msgid "" "Python comes with a library of standard modules, described in a separate " "document, the Python Library Reference (\"Library Reference\" hereafter). " @@ -626,7 +629,7 @@ msgstr "" "της Python. Οι μεταβλητές ``sys.ps1`` και ``sys.ps2`` ορίζουν τις " "συμβολοσειρές που χρησιμοποιούνται ως κύρια και δευτερεύοντα prompts::" -#: tutorial/modules.rst:281 +#: tutorial/modules.rst:283 msgid "" ">>> import sys\n" ">>> sys.ps1\n" @@ -648,7 +651,7 @@ msgstr "" "Yuck!\n" "C>" -#: tutorial/modules.rst:292 +#: tutorial/modules.rst:294 msgid "" "These two variables are only defined if the interpreter is in interactive " "mode." @@ -656,7 +659,7 @@ msgstr "" "Αυτές οι δύο μεταβλητές ορίζονται μόνο εάν ο interpreter βρίσκεται σε " "διαδραστική λειτουργία." -#: tutorial/modules.rst:294 +#: tutorial/modules.rst:296 msgid "" "The variable ``sys.path`` is a list of strings that determines the " "interpreter's search path for modules. It is initialized to a default path " @@ -671,7 +674,7 @@ msgstr "" "δεν έχει οριστεί. Μπορείτε να το τροποποιήσετε χρησιμοποιώντας τυπικές " "λειτουργίες λίστας::" -#: tutorial/modules.rst:300 +#: tutorial/modules.rst:302 msgid "" ">>> import sys\n" ">>> sys.path.append('/ufs/guido/lib/python')" @@ -679,11 +682,11 @@ msgstr "" ">>> import sys\n" ">>> sys.path.append('/ufs/guido/lib/python')" -#: tutorial/modules.rst:307 +#: tutorial/modules.rst:309 msgid "The :func:`dir` Function" msgstr "Η συνάρτηση :func:`dir`" -#: tutorial/modules.rst:309 +#: tutorial/modules.rst:311 msgid "" "The built-in function :func:`dir` is used to find out which names a module " "defines. It returns a sorted list of strings::" @@ -691,7 +694,7 @@ msgstr "" "Η ενσωματωμένη συνάρτηση :func:`dir` χρησιμοποιείται για να ανακαλύψει ποια " "ονόματα ορίζει ένα module. Επιστρέφει μια ταξινομημένη λίστα συμβολοσειρών::" -#: tutorial/modules.rst:312 +#: tutorial/modules.rst:314 msgid "" ">>> import fibo, sys\n" ">>> dir(fibo)\n" @@ -759,14 +762,14 @@ msgstr "" "'version_info',\n" " 'warnoptions']" -#: tutorial/modules.rst:338 +#: tutorial/modules.rst:340 msgid "" "Without arguments, :func:`dir` lists the names you have defined currently::" msgstr "" "Χωρίς ορίσματα, η :func:`dir` παραθέτει τα ονόματα που έχετε ορίσει αυτήν τη " "στιγμή::" -#: tutorial/modules.rst:340 +#: tutorial/modules.rst:342 msgid "" ">>> a = [1, 2, 3, 4, 5]\n" ">>> import fibo\n" @@ -780,14 +783,14 @@ msgstr "" ">>> dir()\n" "['__builtins__', '__name__', 'a', 'fib', 'fibo', 'sys']" -#: tutorial/modules.rst:346 +#: tutorial/modules.rst:348 msgid "" "Note that it lists all types of names: variables, modules, functions, etc." msgstr "" "Λάβετε υπόψη ότι παραθέτει όλους τους τύπους ονομάτων: μεταβλητές, modules, " "συναρτήσεις, κ.λπ." -#: tutorial/modules.rst:350 +#: tutorial/modules.rst:352 msgid "" ":func:`dir` does not list the names of built-in functions and variables. If " "you want a list of those, they are defined in the standard module :mod:" @@ -797,7 +800,7 @@ msgstr "" "μεταβλητών. Εάν θέλετε μια λίστα από αυτές, ορίζονται στην τυπική ενότητα :" "mod:`builtins`::" -#: tutorial/modules.rst:354 +#: tutorial/modules.rst:356 msgid "" ">>> import builtins\n" ">>> dir(builtins)\n" @@ -865,11 +868,11 @@ msgstr "" " 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars',\n" " 'zip']" -#: tutorial/modules.rst:389 +#: tutorial/modules.rst:391 msgid "Packages" msgstr "Πακέτα" -#: tutorial/modules.rst:391 +#: tutorial/modules.rst:393 msgid "" "Packages are a way of structuring Python's module namespace by using " "\"dotted module names\". For example, the module name :mod:`!A.B` " @@ -888,7 +891,7 @@ msgstr "" "το NumbPY ή το Pillow από το να χρειάζεται να ανησυχούν ο ένας για τα module " "ονόματα του άλλου." -#: tutorial/modules.rst:399 +#: tutorial/modules.rst:401 msgid "" "Suppose you want to design a collection of modules (a \"package\") for the " "uniform handling of sound files and sound data. There are many different " @@ -915,7 +918,7 @@ msgstr "" "αυτές τις λειτουργίες. Ακολουθεί μια πιθανή δομή για το πακέτο σας (που " "εκφράζεται ως ιεραρχικό σύστημα αρχείων):" -#: tutorial/modules.rst:410 +#: tutorial/modules.rst:412 msgid "" "sound/ Top-level package\n" " __init__.py Initialize the sound package\n" @@ -965,7 +968,7 @@ msgstr "" " karaoke.py\n" " ..." -#: tutorial/modules.rst:436 +#: tutorial/modules.rst:438 msgid "" "When importing the package, Python searches through the directories on ``sys." "path`` looking for the package subdirectory." @@ -973,7 +976,7 @@ msgstr "" "Κατά την εισαγωγή του πακέτου, η Python πραγματοποιεί αναζήτηση στους " "καταλόγους στο ``sys.path`` αναζητώντας τον υποκατάλογο του πακέτου." -#: tutorial/modules.rst:439 +#: tutorial/modules.rst:441 msgid "" "The :file:`__init__.py` files are required to make Python treat directories " "containing the file as packages (unless using a :term:`namespace package`, a " @@ -993,7 +996,7 @@ msgstr "" "εκτελέσει initialization κώδικα για το πακέτο ή να ορίσει την μεταβλητή " "``__all__``, που περιγράφεται αργότερα." -#: tutorial/modules.rst:447 +#: tutorial/modules.rst:449 msgid "" "Users of the package can import individual modules from the package, for " "example::" @@ -1001,11 +1004,11 @@ msgstr "" "Οι χρήστες του πακέτου μπορούν να εισάγουν μεμονωμένα module από το πακέτο, " "για παράδειγμα::" -#: tutorial/modules.rst:450 +#: tutorial/modules.rst:452 msgid "import sound.effects.echo" msgstr "import sound.effects.echo" -#: tutorial/modules.rst:452 +#: tutorial/modules.rst:454 msgid "" "This loads the submodule :mod:`!sound.effects.echo`. It must be referenced " "with its full name. ::" @@ -1013,19 +1016,19 @@ msgstr "" "Αυτό φορτώνει το submodule :mod:`!sound.effects.echo`. Πρέπει να αναφέρεται " "με το πλήρες όνομά του. ::" -#: tutorial/modules.rst:455 +#: tutorial/modules.rst:457 msgid "sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)" msgstr "sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)" -#: tutorial/modules.rst:457 +#: tutorial/modules.rst:459 msgid "An alternative way of importing the submodule is::" msgstr "Ένα εναλλακτικός τρόπος για την εισαγωγή του submodule είναι::" -#: tutorial/modules.rst:459 +#: tutorial/modules.rst:461 msgid "from sound.effects import echo" msgstr "from sound.effects import echo" -#: tutorial/modules.rst:461 +#: tutorial/modules.rst:463 msgid "" "This also loads the submodule :mod:`!echo`, and makes it available without " "its package prefix, so it can be used as follows::" @@ -1033,11 +1036,11 @@ msgstr "" "Αυτό φορτώνει επίσης το submodule :mod:`!echo`, και την καθιστά διαθέσιμη " "χωρίς το πρόθεμα πακέτου, ώστε να μπορεί να χρησιμοποιηθεί ως εξής::" -#: tutorial/modules.rst:464 +#: tutorial/modules.rst:466 msgid "echo.echofilter(input, output, delay=0.7, atten=4)" msgstr "echo.echofilter(input, output, delay=0.7, atten=4)" -#: tutorial/modules.rst:466 +#: tutorial/modules.rst:468 msgid "" "Yet another variation is to import the desired function or variable " "directly::" @@ -1045,11 +1048,11 @@ msgstr "" "Μια άλλη παραλλαγή είναι η απευθείας εισαγωγή της επιθυμητής συνάρτησης ή " "μεταβλητής::" -#: tutorial/modules.rst:468 +#: tutorial/modules.rst:470 msgid "from sound.effects.echo import echofilter" msgstr "from sound.effects.echo import echofilter" -#: tutorial/modules.rst:470 +#: tutorial/modules.rst:472 msgid "" "Again, this loads the submodule :mod:`!echo`, but this makes its function :" "func:`!echofilter` directly available::" @@ -1057,11 +1060,11 @@ msgstr "" "Και πάλι, αυτό φορτώνει το submodule :mod:`!echo`, αλλά αυτό κάνει τη " "συνάρτηση της :func:`!echofilter` άμεσα διαθέσιμη::" -#: tutorial/modules.rst:473 +#: tutorial/modules.rst:475 msgid "echofilter(input, output, delay=0.7, atten=4)" msgstr "echofilter(input, output, delay=0.7, atten=4)" -#: tutorial/modules.rst:475 +#: tutorial/modules.rst:477 msgid "" "Note that when using ``from package import item``, the item can be either a " "submodule (or subpackage) of the package, or some other name defined in the " @@ -1077,7 +1080,7 @@ msgstr "" "όχι, υποθέτει ότι είναι ένα module και επιχειρεί να το φορτώσει , αν δεν το " "βρει δημιουργεί η εξαίρεση :exc:`ImportError`." -#: tutorial/modules.rst:482 +#: tutorial/modules.rst:484 msgid "" "Contrarily, when using syntax like ``import item.subitem.subsubitem``, each " "item except for the last must be a package; the last item can be a module or " @@ -1090,11 +1093,11 @@ msgstr "" "δεν μπορεί να είναι μια κλάση ή συνάρτηση ή μεταβλητή που ορίζεται από " "προηγούμενο στοιχείο." -#: tutorial/modules.rst:491 +#: tutorial/modules.rst:493 msgid "Importing \\* From a Package" msgstr "Εισάγοντας \\* από ένα Πακέτο" -#: tutorial/modules.rst:495 +#: tutorial/modules.rst:497 msgid "" "Now what happens when the user writes ``from sound.effects import *``? " "Ideally, one would hope that this somehow goes out to the filesystem, finds " @@ -1109,7 +1112,7 @@ msgstr "" "μπορεί να έχει ανεπιθύμητες παρενέργειες που θα έπρεπε να συμβούν όταν το " "submodule εισάγεται ρητά." -#: tutorial/modules.rst:501 +#: tutorial/modules.rst:503 msgid "" "The only solution is for the package author to provide an explicit index of " "the package. The :keyword:`import` statement uses the following convention: " @@ -1133,11 +1136,11 @@ msgstr "" "παράδειγμα το αρχείο :file:`sound/effects/__init__.py` θα μπορούσε να " "περιέχει τον ακόλουθο κώδικα::" -#: tutorial/modules.rst:511 +#: tutorial/modules.rst:513 msgid "__all__ = [\"echo\", \"surround\", \"reverse\"]" msgstr "__all__ = [\"echo\", \"surround\", \"reverse\"]" -#: tutorial/modules.rst:513 +#: tutorial/modules.rst:515 msgid "" "This would mean that ``from sound.effects import *`` would import the three " "named submodules of the :mod:`!sound.effects` package." @@ -1145,7 +1148,7 @@ msgstr "" "Αυτό θα σήμαινε ότι ``from sound.effects import *`` θα εισαγάγει τα τρία " "submodules με το όνομα του πακέτου :mod:`!sound.effects`." -#: tutorial/modules.rst:516 +#: tutorial/modules.rst:518 msgid "" "Be aware that submodules might become shadowed by locally defined names. For " "example, if you added a ``reverse`` function to the :file:`sound/effects/" @@ -1161,7 +1164,7 @@ msgstr "" "``surround``, αλλά *όχι* το submodule ``reverse``, επειδή επισκιάζεται από " "την τοπικά καθορισμένη συνάρτηση ``reverse``::" -#: tutorial/modules.rst:523 +#: tutorial/modules.rst:525 msgid "" "__all__ = [\n" " \"echo\", # refers to the 'echo.py' file\n" @@ -1181,7 +1184,7 @@ msgstr "" "def reverse(msg: str): # <-- this name shadows the 'reverse.py' submodule\n" " return msg[::-1] # in the case of a 'from sound.effects import *'" -#: tutorial/modules.rst:532 +#: tutorial/modules.rst:534 msgid "" "If ``__all__`` is not defined, the statement ``from sound.effects import *`` " "does *not* import all submodules from the package :mod:`!sound.effects` into " @@ -1203,7 +1206,7 @@ msgstr "" "Περιλαμβάνει επίσης τυχόν submodules του πακέτου που φορτώθηκαν ρητά από " "προηγούμενες δηλώσεις :keyword:`import`. Σκεφτείτε αυτόν τον κώδικα::" -#: tutorial/modules.rst:541 +#: tutorial/modules.rst:543 msgid "" "import sound.effects.echo\n" "import sound.effects.surround\n" @@ -1213,7 +1216,7 @@ msgstr "" "import sound.effects.surround\n" "from sound.effects import *" -#: tutorial/modules.rst:545 +#: tutorial/modules.rst:547 msgid "" "In this example, the :mod:`!echo` and :mod:`!surround` modules are imported " "in the current namespace because they are defined in the :mod:`!sound." @@ -1225,7 +1228,7 @@ msgstr "" "effects`όταν η δήλωση ``from...import`` εκτελείται. (Αυτό λειτουργεί επίσης " "όταν ορίζεται το ``__all__``)." -#: tutorial/modules.rst:550 +#: tutorial/modules.rst:552 msgid "" "Although certain modules are designed to export only names that follow " "certain patterns when you use ``import *``, it is still considered bad " @@ -1235,7 +1238,7 @@ msgstr "" "ακολουθούν ορισμένα μοτίβα όταν χρησιμοποιείτε το ``import *``, εξακολουθεί " "να θεωρείται κακή πρακτική στον κώδικα παραγωγής." -#: tutorial/modules.rst:554 +#: tutorial/modules.rst:556 msgid "" "Remember, there is nothing wrong with using ``from package import " "specific_submodule``! In fact, this is the recommended notation unless the " @@ -1247,11 +1250,11 @@ msgstr "" "σημείωση, εκτός εάν το module εισαγωγής χρειάζεται να χρησιμοποιήσει " "submodules με το ίδιο όνομα από διαφορετικά πακέτα." -#: tutorial/modules.rst:563 +#: tutorial/modules.rst:565 msgid "Intra-package References" msgstr "Intra-package αναφορές" -#: tutorial/modules.rst:565 +#: tutorial/modules.rst:567 msgid "" "When packages are structured into subpackages (as with the :mod:`!sound` " "package in the example), you can use absolute imports to refer to submodules " @@ -1266,7 +1269,7 @@ msgstr "" "στο πακέτο :mod:`!sound.effects` , μπορεί να χρησιμοποιήσει το ``from sound." "effects import echo``." -#: tutorial/modules.rst:571 +#: tutorial/modules.rst:573 msgid "" "You can also write relative imports, with the ``from module import name`` " "form of import statement. These imports use leading dots to indicate the " @@ -1279,7 +1282,7 @@ msgstr "" "στη σχετική εισαγωγή. Από το :mod:`!surround` module για παράδειγμα, μπορεί " "να χρησιμοποιήσετε::" -#: tutorial/modules.rst:576 +#: tutorial/modules.rst:578 msgid "" "from . import echo\n" "from .. import formats\n" @@ -1289,7 +1292,7 @@ msgstr "" "from .. import formats\n" "from ..filters import equalizer" -#: tutorial/modules.rst:580 +#: tutorial/modules.rst:582 msgid "" "Note that relative imports are based on the name of the current module. " "Since the name of the main module is always ``\"__main__\"``, modules " @@ -1301,11 +1304,11 @@ msgstr "" "modules που προορίζονται για χρήση ως κύριο module μιας εφαρμογής Python " "πρέπει πάντα να χρησιμοποιούν απόλυτες εισαγωγές." -#: tutorial/modules.rst:586 +#: tutorial/modules.rst:588 msgid "Packages in Multiple Directories" msgstr "Πακέτα σε Πολλαπλούς Καταλόγους" -#: tutorial/modules.rst:588 +#: tutorial/modules.rst:590 msgid "" "Packages support one more special attribute, :attr:`~module.__path__`. This " "is initialized to be a :term:`sequence` of strings containing the name of " @@ -1320,7 +1323,7 @@ msgstr "" "μεταβλητή μπορεί να τροποποιηθεί, αυτό επηρεάζει τις μελλοντικές αναζητήσεις " "για modules και υποπακέτα που περιέχονται στο πακέτο." -#: tutorial/modules.rst:595 +#: tutorial/modules.rst:597 msgid "" "While this feature is not often needed, it can be used to extend the set of " "modules found in a package." @@ -1328,11 +1331,11 @@ msgstr "" "Ενώ αυτή η δυνατότητα δεν χρειάζεται συχνά, μπορεί να χρησιμοποιηθεί για την " "επέκταση του συνόλου των modules που βρίσκονται σε ένα πακέτο." -#: tutorial/modules.rst:600 +#: tutorial/modules.rst:602 msgid "Footnotes" msgstr "Υποσημειώσεις" -#: tutorial/modules.rst:601 +#: tutorial/modules.rst:603 msgid "" "In fact function definitions are also 'statements' that are 'executed'; the " "execution of a module-level function definition adds the function name to " @@ -1342,26 +1345,26 @@ msgstr "" "'εκτελούνται'∙ η εκτέλεση ενός ορισμού συνάρτησης σε επίπεδο module " "προσθέτει το όνομα της συνάρτησης στον καθολικό namespace του module." -#: tutorial/modules.rst:267 tutorial/modules.rst:348 +#: tutorial/modules.rst:269 tutorial/modules.rst:350 msgid "module" msgstr "module" -#: tutorial/modules.rst:184 +#: tutorial/modules.rst:186 msgid "search" msgstr "αναζήτηση" -#: tutorial/modules.rst:184 +#: tutorial/modules.rst:186 msgid "path" msgstr "path" -#: tutorial/modules.rst:267 +#: tutorial/modules.rst:269 msgid "sys" msgstr "sys" -#: tutorial/modules.rst:348 +#: tutorial/modules.rst:350 msgid "builtins" msgstr "builtins" -#: tutorial/modules.rst:493 +#: tutorial/modules.rst:495 msgid "__all__" msgstr "__all__" diff --git a/tutorial/stdlib.po b/tutorial/stdlib.po index e4215bc7..e1a8faae 100644 --- a/tutorial/stdlib.po +++ b/tutorial/stdlib.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-13 19:39+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/stdlib2.po b/tutorial/stdlib2.po index ba67af54..0a373b70 100644 --- a/tutorial/stdlib2.po +++ b/tutorial/stdlib2.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-13 19:38+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/venv.po b/tutorial/venv.po index 21601439..491b1f15 100644 --- a/tutorial/venv.po +++ b/tutorial/venv.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-06-13 23:10+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/tutorial/whatnow.po b/tutorial/whatnow.po index 31be85f1..c4558457 100644 --- a/tutorial/whatnow.po +++ b/tutorial/whatnow.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2024-06-12 09:07+0300\n" "Last-Translator: Panagiotis Skias \n" "Language-Team: PyGreece \n" diff --git a/using/android.po b/using/android.po index 6f5697c4..ddf47479 100644 --- a/using/android.po +++ b/using/android.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -142,3 +142,16 @@ msgid "" "testbed/app/src/main/c/main_activity.c>`. This will need to be C code called " "via JNI." msgstr "" + +#: using/android.rst:68 +msgid "Building a Python package for Android" +msgstr "" + +#: using/android.rst:70 +msgid "" +"Python packages can be built for Android as wheels and released on PyPI. The " +"recommended tool for doing this is `cibuildwheel `__, which automates all the details of " +"setting up a cross-compilation environment, building the wheel, and testing " +"it on an emulator." +msgstr "" diff --git a/using/cmdline.po b/using/cmdline.po index 6c2cefb8..07f85362 100644 --- a/using/cmdline.po +++ b/using/cmdline.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/using/configure.po b/using/configure.po index 13d82e67..64da2224 100644 --- a/using/configure.po +++ b/using/configure.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -361,7 +361,7 @@ msgid "" "cleared." msgstr "" -#: using/configure.rst:741 +#: using/configure.rst:749 msgid "Effects:" msgstr "" @@ -517,8 +517,8 @@ msgstr "" #: using/configure.rst:293 msgid "" -"Enables **experimental** support for running Python without the :term:" -"`global interpreter lock` (GIL): free threading build." +"Enables support for running Python without the :term:`global interpreter " +"lock` (GIL): free threading build." msgstr "" #: using/configure.rst:296 @@ -586,11 +586,11 @@ msgstr "" msgid "C compiler options" msgstr "" -#: using/configure.rst:1308 +#: using/configure.rst:1316 msgid "C compiler command." msgstr "" -#: using/configure.rst:1320 +#: using/configure.rst:1328 msgid "C compiler flags." msgstr "" @@ -602,7 +602,7 @@ msgstr "" msgid "C preprocessor flags, e.g. :samp:`-I{include_dir}`." msgstr "" -#: using/configure.rst:812 +#: using/configure.rst:820 msgid "Linker options" msgstr "" @@ -693,128 +693,134 @@ msgid "" msgstr "" #: using/configure.rst:451 +msgid "" +"C compiler and linker flags for ``libzstd``, used by :mod:`compression.zstd` " +"module, overriding ``pkg-config``." +msgstr "" + +#: using/configure.rst:459 msgid "C compiler and linker flags for PANEL, overriding ``pkg-config``." msgstr "" -#: using/configure.rst:453 +#: using/configure.rst:461 msgid "" "C compiler and linker flags for ``libpanel`` or ``libpanelw``, used by :mod:" "`curses.panel` module, overriding ``pkg-config``." msgstr "" -#: using/configure.rst:459 +#: using/configure.rst:467 msgid "C compiler and linker flags for TCLTK, overriding ``pkg-config``." msgstr "" -#: using/configure.rst:464 +#: using/configure.rst:472 msgid "" "C compiler and linker flags for ``libzlib``, used by :mod:`gzip` module, " "overriding ``pkg-config``." msgstr "" -#: using/configure.rst:469 +#: using/configure.rst:477 msgid "WebAssembly Options" msgstr "" -#: using/configure.rst:473 +#: using/configure.rst:481 msgid "Turn on dynamic linking support for WASM." msgstr "" -#: using/configure.rst:475 +#: using/configure.rst:483 msgid "" "Dynamic linking enables ``dlopen``. File size of the executable increases " "due to limited dead code elimination and additional features." msgstr "" -#: using/configure.rst:482 +#: using/configure.rst:490 msgid "Turn on pthreads support for WASM." msgstr "" -#: using/configure.rst:488 +#: using/configure.rst:496 msgid "Install Options" msgstr "" -#: using/configure.rst:492 +#: using/configure.rst:500 msgid "" "Install architecture-independent files in PREFIX. On Unix, it defaults to :" "file:`/usr/local`." msgstr "" -#: using/configure.rst:495 +#: using/configure.rst:503 msgid "This value can be retrieved at runtime using :data:`sys.prefix`." msgstr "" -#: using/configure.rst:497 +#: using/configure.rst:505 msgid "" "As an example, one can use ``--prefix=\"$HOME/.local/\"`` to install a " "Python in its home directory." msgstr "" -#: using/configure.rst:502 +#: using/configure.rst:510 msgid "" "Install architecture-dependent files in EPREFIX, defaults to :option:`--" "prefix`." msgstr "" -#: using/configure.rst:504 +#: using/configure.rst:512 msgid "This value can be retrieved at runtime using :data:`sys.exec_prefix`." msgstr "" -#: using/configure.rst:508 +#: using/configure.rst:516 msgid "" "Don't build nor install test modules, like the :mod:`test` package or the :" "mod:`!_testcapi` extension module (built and installed by default)." msgstr "" -#: using/configure.rst:515 +#: using/configure.rst:523 msgid "Select the :mod:`ensurepip` command run on Python installation:" msgstr "" -#: using/configure.rst:517 +#: using/configure.rst:525 msgid "" "``upgrade`` (default): run ``python -m ensurepip --altinstall --upgrade`` " "command." msgstr "" -#: using/configure.rst:519 +#: using/configure.rst:527 msgid "``install``: run ``python -m ensurepip --altinstall`` command;" msgstr "" -#: using/configure.rst:520 +#: using/configure.rst:528 msgid "``no``: don't run ensurepip;" msgstr "" -#: using/configure.rst:526 +#: using/configure.rst:534 msgid "Performance options" msgstr "" -#: using/configure.rst:528 +#: using/configure.rst:536 msgid "" "Configuring Python using ``--enable-optimizations --with-lto`` (PGO + LTO) " "is recommended for best performance. The experimental ``--enable-bolt`` flag " "can also be used to improve performance." msgstr "" -#: using/configure.rst:534 +#: using/configure.rst:542 msgid "" "Enable Profile Guided Optimization (PGO) using :envvar:`PROFILE_TASK` " "(disabled by default)." msgstr "" -#: using/configure.rst:537 +#: using/configure.rst:545 msgid "" "The C compiler Clang requires ``llvm-profdata`` program for PGO. On macOS, " "GCC also requires it: GCC is just an alias to Clang on macOS." msgstr "" -#: using/configure.rst:540 +#: using/configure.rst:548 msgid "" "Disable also semantic interposition in libpython if ``--enable-shared`` and " "GCC is used: add ``-fno-semantic-interposition`` to the compiler and linker " "flags." msgstr "" -#: using/configure.rst:546 +#: using/configure.rst:554 msgid "" "During the build, you may encounter compiler warnings about profile data not " "being available for some source files. These warnings are harmless, as only " @@ -823,58 +829,58 @@ msgid "" "profile-instr-unprofiled`` to :envvar:`CFLAGS`." msgstr "" -#: using/configure.rst:555 +#: using/configure.rst:563 msgid "Use ``-fno-semantic-interposition`` on GCC." msgstr "" -#: using/configure.rst:560 +#: using/configure.rst:568 msgid "" "Environment variable used in the Makefile: Python command line arguments for " "the PGO generation task." msgstr "" -#: using/configure.rst:563 +#: using/configure.rst:571 msgid "Default: ``-m test --pgo --timeout=$(TESTTIMEOUT)``." msgstr "" -#: using/configure.rst:567 +#: using/configure.rst:575 msgid "Task failure is no longer ignored silently." msgstr "" -#: using/configure.rst:572 +#: using/configure.rst:580 msgid "Enable Link Time Optimization (LTO) in any build (disabled by default)." msgstr "" -#: using/configure.rst:574 +#: using/configure.rst:582 msgid "" "The C compiler Clang requires ``llvm-ar`` for LTO (``ar`` on macOS), as well " "as an LTO-aware linker (``ld.gold`` or ``lld``)." msgstr "" -#: using/configure.rst:579 +#: using/configure.rst:587 msgid "To use ThinLTO feature, use ``--with-lto=thin`` on Clang." msgstr "" -#: using/configure.rst:582 +#: using/configure.rst:590 msgid "" "Use ThinLTO as the default optimization policy on Clang if the compiler " "accepts the flag." msgstr "" -#: using/configure.rst:587 +#: using/configure.rst:595 msgid "" "Enable usage of the `BOLT post-link binary optimizer `_ (disabled by default)." msgstr "" -#: using/configure.rst:591 +#: using/configure.rst:599 msgid "" "BOLT is part of the LLVM project but is not always included in their binary " "distributions. This flag requires that ``llvm-bolt`` and ``merge-fdata`` are " "available." msgstr "" -#: using/configure.rst:595 +#: using/configure.rst:603 msgid "" "BOLT is still a fairly new project so this flag should be considered " "experimental for now. Because this tool operates on machine code its success " @@ -885,7 +891,7 @@ msgid "" "encouraged." msgstr "" -#: using/configure.rst:603 +#: using/configure.rst:611 msgid "" "The :envvar:`!BOLT_INSTRUMENT_FLAGS` and :envvar:`!BOLT_APPLY_FLAGS` :" "program:`configure` variables can be defined to override the default set of " @@ -893,23 +899,23 @@ msgid "" "binaries, respectively." msgstr "" -#: using/configure.rst:612 +#: using/configure.rst:620 msgid "" "Arguments to ``llvm-bolt`` when creating a `BOLT optimized binary `_." msgstr "" -#: using/configure.rst:619 +#: using/configure.rst:627 msgid "Arguments to ``llvm-bolt`` when instrumenting binaries." msgstr "" -#: using/configure.rst:625 +#: using/configure.rst:633 msgid "" "Enable computed gotos in evaluation loop (enabled by default on supported " "compilers)." msgstr "" -#: using/configure.rst:630 +#: using/configure.rst:638 msgid "" "Enable interpreters using tail calls in CPython. If enabled, enabling PGO (:" "option:`--enable-optimizations`) is highly recommended. This option " @@ -919,46 +925,46 @@ msgid "" "feature." msgstr "" -#: using/configure.rst:640 +#: using/configure.rst:648 msgid "" "Disable the fast :ref:`mimalloc ` allocator (enabled by default)." msgstr "" -#: using/configure.rst:650 +#: using/configure.rst:658 msgid "See also :envvar:`PYTHONMALLOC` environment variable." msgstr "" -#: using/configure.rst:647 +#: using/configure.rst:655 msgid "" "Disable the specialized Python memory allocator :ref:`pymalloc ` " "(enabled by default)." msgstr "" -#: using/configure.rst:654 +#: using/configure.rst:662 msgid "" "Disable static documentation strings to reduce the memory footprint (enabled " "by default). Documentation strings defined in Python are not affected." msgstr "" -#: using/configure.rst:657 +#: using/configure.rst:665 msgid "Don't define the ``WITH_DOC_STRINGS`` macro." msgstr "" -#: using/configure.rst:659 +#: using/configure.rst:667 msgid "See the ``PyDoc_STRVAR()`` macro." msgstr "" -#: using/configure.rst:663 +#: using/configure.rst:671 msgid "Enable C-level code profiling with ``gprof`` (disabled by default)." msgstr "" -#: using/configure.rst:667 +#: using/configure.rst:675 msgid "" "Add ``-fstrict-overflow`` to the C compiler flags (by default we add ``-fno-" "strict-overflow`` instead)." msgstr "" -#: using/configure.rst:672 +#: using/configure.rst:680 msgid "" "Deactivate remote debugging support described in :pep:`768` (enabled by " "default). When this flag is provided the code that allows the interpreter to " @@ -968,61 +974,61 @@ msgid "" "executed." msgstr "" -#: using/configure.rst:685 +#: using/configure.rst:693 msgid "Python Debug Build" msgstr "" -#: using/configure.rst:687 +#: using/configure.rst:695 msgid "" "A debug build is Python built with the :option:`--with-pydebug` configure " "option." msgstr "" -#: using/configure.rst:690 +#: using/configure.rst:698 msgid "Effects of a debug build:" msgstr "" -#: using/configure.rst:692 +#: using/configure.rst:700 msgid "" "Display all warnings by default: the list of default warning filters is " "empty in the :mod:`warnings` module." msgstr "" -#: using/configure.rst:694 +#: using/configure.rst:702 msgid "Add ``d`` to :data:`sys.abiflags`." msgstr "" -#: using/configure.rst:695 +#: using/configure.rst:703 msgid "Add :func:`!sys.gettotalrefcount` function." msgstr "" -#: using/configure.rst:696 +#: using/configure.rst:704 msgid "Add :option:`-X showrefcount <-X>` command line option." msgstr "" -#: using/configure.rst:697 +#: using/configure.rst:705 msgid "" "Add :option:`-d` command line option and :envvar:`PYTHONDEBUG` environment " "variable to debug the parser." msgstr "" -#: using/configure.rst:699 +#: using/configure.rst:707 msgid "" "Add support for the ``__lltrace__`` variable: enable low-level tracing in " "the bytecode evaluation loop if the variable is defined." msgstr "" -#: using/configure.rst:701 +#: using/configure.rst:709 msgid "" "Install :ref:`debug hooks on memory allocators ` " "to detect buffer overflow and other memory errors." msgstr "" -#: using/configure.rst:703 +#: using/configure.rst:711 msgid "Define ``Py_DEBUG`` and ``Py_REF_DEBUG`` macros." msgstr "" -#: using/configure.rst:704 +#: using/configure.rst:712 msgid "" "Add runtime checks: code surrounded by ``#ifdef Py_DEBUG`` and ``#endif``. " "Enable ``assert(...)`` and ``_PyObject_ASSERT(...)`` assertions: don't set " @@ -1030,317 +1036,317 @@ msgid "" "option). Main runtime checks:" msgstr "" -#: using/configure.rst:709 +#: using/configure.rst:717 msgid "Add sanity checks on the function arguments." msgstr "" -#: using/configure.rst:710 +#: using/configure.rst:718 msgid "" "Unicode and int objects are created with their memory filled with a pattern " "to detect usage of uninitialized objects." msgstr "" -#: using/configure.rst:712 +#: using/configure.rst:720 msgid "" "Ensure that functions which can clear or replace the current exception are " "not called with an exception raised." msgstr "" -#: using/configure.rst:714 +#: using/configure.rst:722 msgid "Check that deallocator functions don't change the current exception." msgstr "" -#: using/configure.rst:715 +#: using/configure.rst:723 msgid "" "The garbage collector (:func:`gc.collect` function) runs some basic checks " "on objects consistency." msgstr "" -#: using/configure.rst:717 +#: using/configure.rst:725 msgid "" "The :c:macro:`!Py_SAFE_DOWNCAST()` macro checks for integer underflow and " "overflow when downcasting from wide types to narrow types." msgstr "" -#: using/configure.rst:720 +#: using/configure.rst:728 msgid "" "See also the :ref:`Python Development Mode ` and the :option:`--" "with-trace-refs` configure option." msgstr "" -#: using/configure.rst:723 +#: using/configure.rst:731 msgid "" "Release builds and debug builds are now ABI compatible: defining the " "``Py_DEBUG`` macro no longer implies the ``Py_TRACE_REFS`` macro (see the :" "option:`--with-trace-refs` option)." msgstr "" -#: using/configure.rst:730 +#: using/configure.rst:738 msgid "Debug options" msgstr "" -#: using/configure.rst:734 +#: using/configure.rst:742 msgid "" ":ref:`Build Python in debug mode `: define the ``Py_DEBUG`` " "macro (disabled by default)." msgstr "" -#: using/configure.rst:739 +#: using/configure.rst:747 msgid "Enable tracing references for debugging purpose (disabled by default)." msgstr "" -#: using/configure.rst:743 +#: using/configure.rst:751 msgid "Define the ``Py_TRACE_REFS`` macro." msgstr "" -#: using/configure.rst:744 +#: using/configure.rst:752 msgid "Add :func:`sys.getobjects` function." msgstr "" -#: using/configure.rst:745 +#: using/configure.rst:753 msgid "Add :envvar:`PYTHONDUMPREFS` environment variable." msgstr "" -#: using/configure.rst:747 +#: using/configure.rst:755 msgid "" "The :envvar:`PYTHONDUMPREFS` environment variable can be used to dump " "objects and reference counts still alive at Python exit." msgstr "" -#: using/configure.rst:750 +#: using/configure.rst:758 msgid ":ref:`Statically allocated objects ` are not traced." msgstr "" -#: using/configure.rst:754 +#: using/configure.rst:762 msgid "" "This build is now ABI compatible with release build and :ref:`debug build " "`." msgstr "" -#: using/configure.rst:760 +#: using/configure.rst:768 msgid "" "Build with C assertions enabled (default is no): ``assert(...);`` and " "``_PyObject_ASSERT(...);``." msgstr "" -#: using/configure.rst:763 +#: using/configure.rst:771 msgid "" "If set, the ``NDEBUG`` macro is not defined in the :envvar:`OPT` compiler " "variable." msgstr "" -#: using/configure.rst:766 +#: using/configure.rst:774 msgid "" "See also the :option:`--with-pydebug` option (:ref:`debug build `) which also enables assertions." msgstr "" -#: using/configure.rst:773 +#: using/configure.rst:781 msgid "Enable Valgrind support (default is no)." msgstr "" -#: using/configure.rst:777 +#: using/configure.rst:785 msgid "Enable DTrace support (default is no)." msgstr "" -#: using/configure.rst:779 +#: using/configure.rst:787 msgid "" "See :ref:`Instrumenting CPython with DTrace and SystemTap `." msgstr "" -#: using/configure.rst:786 +#: using/configure.rst:794 msgid "" "Enable AddressSanitizer memory error detector, ``asan`` (default is no)." msgstr "" -#: using/configure.rst:792 +#: using/configure.rst:800 msgid "" "Enable MemorySanitizer allocation error detector, ``msan`` (default is no)." msgstr "" -#: using/configure.rst:798 +#: using/configure.rst:806 msgid "" "Enable UndefinedBehaviorSanitizer undefined behaviour detector, ``ubsan`` " "(default is no)." msgstr "" -#: using/configure.rst:805 +#: using/configure.rst:813 msgid "Enable ThreadSanitizer data race detector, ``tsan`` (default is no)." msgstr "" -#: using/configure.rst:816 +#: using/configure.rst:824 msgid "Enable building a shared Python library: ``libpython`` (default is no)." msgstr "" -#: using/configure.rst:820 +#: using/configure.rst:828 msgid "" "Do not build ``libpythonMAJOR.MINOR.a`` and do not install ``python.o`` " "(built and enabled by default)." msgstr "" -#: using/configure.rst:827 +#: using/configure.rst:835 msgid "Libraries options" msgstr "" -#: using/configure.rst:831 +#: using/configure.rst:839 msgid "Link against additional libraries (default is no)." msgstr "" -#: using/configure.rst:835 +#: using/configure.rst:843 msgid "" "Build the :mod:`!pyexpat` module using an installed ``expat`` library " "(default is no)." msgstr "" -#: using/configure.rst:840 +#: using/configure.rst:848 msgid "" "Build the ``_decimal`` extension module using an installed ``mpdecimal`` " "library, see the :mod:`decimal` module (default is yes)." msgstr "" -#: using/configure.rst:845 +#: using/configure.rst:853 msgid "Default to using the installed ``mpdecimal`` library." msgstr "" -#: using/configure.rst:848 +#: using/configure.rst:856 msgid "" "A copy of the ``mpdecimal`` library sources will no longer be distributed " "with Python 3.15." msgstr "" -#: using/configure.rst:852 +#: using/configure.rst:860 msgid ":option:`LIBMPDEC_CFLAGS` and :option:`LIBMPDEC_LIBS`." msgstr "" -#: using/configure.rst:856 +#: using/configure.rst:864 msgid "Designate a backend library for the :mod:`readline` module." msgstr "" -#: using/configure.rst:858 +#: using/configure.rst:866 msgid "readline: Use readline as the backend." msgstr "" -#: using/configure.rst:859 +#: using/configure.rst:867 msgid "editline: Use editline as the backend." msgstr "" -#: using/configure.rst:865 +#: using/configure.rst:873 msgid "Don't build the :mod:`readline` module (built by default)." msgstr "" -#: using/configure.rst:867 +#: using/configure.rst:875 msgid "Don't define the ``HAVE_LIBREADLINE`` macro." msgstr "" -#: using/configure.rst:873 +#: using/configure.rst:881 msgid "" "Override ``libm`` math library to *STRING* (default is system-dependent)." msgstr "" -#: using/configure.rst:877 +#: using/configure.rst:885 msgid "Override ``libc`` C library to *STRING* (default is system-dependent)." msgstr "" -#: using/configure.rst:881 +#: using/configure.rst:889 msgid "Root of the OpenSSL directory." msgstr "" -#: using/configure.rst:887 +#: using/configure.rst:895 msgid "Set runtime library directory (rpath) for OpenSSL libraries:" msgstr "" -#: using/configure.rst:889 +#: using/configure.rst:897 msgid "``no`` (default): don't set rpath;" msgstr "" -#: using/configure.rst:890 +#: using/configure.rst:898 msgid "" "``auto``: auto-detect rpath from :option:`--with-openssl` and ``pkg-config``;" msgstr "" -#: using/configure.rst:892 +#: using/configure.rst:900 msgid "*DIR*: set an explicit rpath." msgstr "" -#: using/configure.rst:898 +#: using/configure.rst:906 msgid "Security Options" msgstr "" -#: using/configure.rst:902 +#: using/configure.rst:910 msgid "Select hash algorithm for use in ``Python/pyhash.c``:" msgstr "" -#: using/configure.rst:904 +#: using/configure.rst:912 msgid "``siphash13`` (default);" msgstr "" -#: using/configure.rst:905 +#: using/configure.rst:913 msgid "``siphash24``;" msgstr "" -#: using/configure.rst:906 +#: using/configure.rst:914 msgid "``fnv``." msgstr "" -#: using/configure.rst:910 +#: using/configure.rst:918 msgid "``siphash13`` is added and it is the new default." msgstr "" -#: using/configure.rst:915 +#: using/configure.rst:923 msgid "Built-in hash modules:" msgstr "" -#: using/configure.rst:917 +#: using/configure.rst:925 msgid "``md5``;" msgstr "" -#: using/configure.rst:918 +#: using/configure.rst:926 msgid "``sha1``;" msgstr "" -#: using/configure.rst:919 +#: using/configure.rst:927 msgid "``sha256``;" msgstr "" -#: using/configure.rst:920 +#: using/configure.rst:928 msgid "``sha512``;" msgstr "" -#: using/configure.rst:921 +#: using/configure.rst:929 msgid "``sha3`` (with shake);" msgstr "" -#: using/configure.rst:922 +#: using/configure.rst:930 msgid "``blake2``." msgstr "" -#: using/configure.rst:928 +#: using/configure.rst:936 msgid "Override the OpenSSL default cipher suites string:" msgstr "" -#: using/configure.rst:930 +#: using/configure.rst:938 msgid "``python`` (default): use Python's preferred selection;" msgstr "" -#: using/configure.rst:931 +#: using/configure.rst:939 msgid "``openssl``: leave OpenSSL's defaults untouched;" msgstr "" -#: using/configure.rst:932 +#: using/configure.rst:940 msgid "*STRING*: use a custom string" msgstr "" -#: using/configure.rst:934 +#: using/configure.rst:942 msgid "See the :mod:`ssl` module." msgstr "" -#: using/configure.rst:940 +#: using/configure.rst:948 msgid "" "The settings ``python`` and *STRING* also set TLS 1.2 as minimum protocol " "version." msgstr "" -#: using/configure.rst:945 +#: using/configure.rst:953 msgid "" "Disable compiler options that are `recommended by OpenSSF`_ for security " "reasons with no performance overhead. If this option is not enabled, CPython " @@ -1349,24 +1355,24 @@ msgid "" "listed below." msgstr "" -#: using/configure.rst:949 +#: using/configure.rst:957 msgid "" "The following compiler options are disabled with :option:`!--disable-safety`:" msgstr "" -#: using/configure.rst:951 +#: using/configure.rst:959 msgid "" "`-fstack-protector-strong`_: Enable run-time checks for stack-based buffer " "overflows." msgstr "" -#: using/configure.rst:952 +#: using/configure.rst:960 msgid "" "`-Wtrampolines`_: Enable warnings about trampolines that require executable " "stacks." msgstr "" -#: using/configure.rst:962 +#: using/configure.rst:970 msgid "" "Enable compiler options that are `recommended by OpenSSF`_ for security " "reasons which require overhead. If this option is not enabled, CPython will " @@ -1375,81 +1381,81 @@ msgid "" "listed below." msgstr "" -#: using/configure.rst:966 +#: using/configure.rst:974 msgid "" "The following compiler options are enabled with :option:`!--enable-slower-" "safety`:" msgstr "" -#: using/configure.rst:968 +#: using/configure.rst:976 msgid "" "`-D_FORTIFY_SOURCE=3`_: Fortify sources with compile- and run-time checks " "for unsafe libc usage and buffer overflows." msgstr "" -#: using/configure.rst:976 +#: using/configure.rst:984 msgid "macOS Options" msgstr "" -#: using/configure.rst:978 +#: using/configure.rst:986 msgid "See :source:`Mac/README.rst`." msgstr "" -#: using/configure.rst:983 +#: using/configure.rst:991 msgid "" "Create a universal binary build. *SDKDIR* specifies which macOS SDK should " "be used to perform the build (default is no)." msgstr "" -#: using/configure.rst:989 +#: using/configure.rst:997 msgid "" "Create a Python.framework rather than a traditional Unix install. Optional " "*INSTALLDIR* specifies the installation path (default is no)." msgstr "" -#: using/configure.rst:994 +#: using/configure.rst:1002 msgid "" "Specify the kind of universal binary that should be created. This option is " "only valid when :option:`--enable-universalsdk` is set." msgstr "" -#: using/configure.rst:997 +#: using/configure.rst:1005 msgid "Options:" msgstr "" -#: using/configure.rst:999 +#: using/configure.rst:1007 msgid "``universal2`` (x86-64 and arm64);" msgstr "" -#: using/configure.rst:1000 +#: using/configure.rst:1008 msgid "``32-bit`` (PPC and i386);" msgstr "" -#: using/configure.rst:1001 +#: using/configure.rst:1009 msgid "``64-bit`` (PPC64 and x86-64);" msgstr "" -#: using/configure.rst:1002 +#: using/configure.rst:1010 msgid "``3-way`` (i386, PPC and x86-64);" msgstr "" -#: using/configure.rst:1003 +#: using/configure.rst:1011 msgid "``intel`` (i386 and x86-64);" msgstr "" -#: using/configure.rst:1004 +#: using/configure.rst:1012 msgid "``intel-32`` (i386);" msgstr "" -#: using/configure.rst:1005 +#: using/configure.rst:1013 msgid "``intel-64`` (x86-64);" msgstr "" -#: using/configure.rst:1006 +#: using/configure.rst:1014 msgid "``all`` (PPC, i386, PPC64 and x86-64)." msgstr "" -#: using/configure.rst:1008 +#: using/configure.rst:1016 msgid "" "Note that values for this configuration item are *not* the same as the " "identifiers used for universal binary wheels on macOS. See the Python " @@ -1458,13 +1464,13 @@ msgid "" "platform-compatibility-tags/#macos>`_" msgstr "" -#: using/configure.rst:1016 +#: using/configure.rst:1024 msgid "" "Specify the name for the python framework on macOS only valid when :option:" "`--enable-framework` is set (default: ``Python``)." msgstr "" -#: using/configure.rst:1022 +#: using/configure.rst:1030 msgid "" "The Python standard library contains strings that are known to trigger " "automated inspection tool errors when submitted for distribution by the " @@ -1473,29 +1479,29 @@ msgid "" "can also be specified. This option is disabled by default." msgstr "" -#: using/configure.rst:1031 +#: using/configure.rst:1039 msgid "iOS Options" msgstr "" -#: using/configure.rst:1033 +#: using/configure.rst:1041 msgid "See :source:`iOS/README.rst`." msgstr "" -#: using/configure.rst:1037 +#: using/configure.rst:1045 msgid "" "Create a Python.framework. Unlike macOS, the *INSTALLDIR* argument " "specifying the installation path is mandatory." msgstr "" -#: using/configure.rst:1042 +#: using/configure.rst:1050 msgid "Specify the name for the framework (default: ``Python``)." msgstr "" -#: using/configure.rst:1046 +#: using/configure.rst:1054 msgid "Cross Compiling Options" msgstr "" -#: using/configure.rst:1048 +#: using/configure.rst:1056 msgid "" "Cross compiling, also known as cross building, can be used to build Python " "for another CPU architecture or platform. Cross compiling requires a Python " @@ -1503,28 +1509,28 @@ msgid "" "match the version of the cross compiled host Python." msgstr "" -#: using/configure.rst:1055 +#: using/configure.rst:1063 msgid "" "configure for building on BUILD, usually guessed by :program:`config.guess`." msgstr "" -#: using/configure.rst:1059 +#: using/configure.rst:1067 msgid "cross-compile to build programs to run on HOST (target platform)" msgstr "" -#: using/configure.rst:1063 +#: using/configure.rst:1071 msgid "path to build ``python`` binary for cross compiling" msgstr "" -#: using/configure.rst:1069 +#: using/configure.rst:1077 msgid "An environment variable that points to a file with configure overrides." msgstr "" -#: using/configure.rst:1071 +#: using/configure.rst:1079 msgid "Example *config.site* file:" msgstr "" -#: using/configure.rst:1073 +#: using/configure.rst:1081 msgid "" "# config.site-aarch64\n" "ac_cv_buggy_getaddrinfo=no\n" @@ -1532,15 +1538,15 @@ msgid "" "ac_cv_file__dev_ptc=no" msgstr "" -#: using/configure.rst:1082 +#: using/configure.rst:1090 msgid "Program to run CPython for the host platform for cross-compilation." msgstr "" -#: using/configure.rst:1087 +#: using/configure.rst:1095 msgid "Cross compiling example::" msgstr "" -#: using/configure.rst:1089 +#: using/configure.rst:1097 msgid "" "CONFIG_SITE=config.site-aarch64 ../configure \\\n" " --build=x86_64-pc-linux-gnu \\\n" @@ -1548,64 +1554,64 @@ msgid "" " --with-build-python=../x86_64/python" msgstr "" -#: using/configure.rst:1096 +#: using/configure.rst:1104 msgid "Python Build System" msgstr "" -#: using/configure.rst:1099 +#: using/configure.rst:1107 msgid "Main files of the build system" msgstr "" -#: using/configure.rst:1101 +#: using/configure.rst:1109 msgid ":file:`configure.ac` => :file:`configure`;" msgstr "" -#: using/configure.rst:1102 +#: using/configure.rst:1110 msgid "" ":file:`Makefile.pre.in` => :file:`Makefile` (created by :file:`configure`);" msgstr "" -#: using/configure.rst:1103 +#: using/configure.rst:1111 msgid ":file:`pyconfig.h` (created by :file:`configure`);" msgstr "" -#: using/configure.rst:1104 +#: using/configure.rst:1112 msgid "" ":file:`Modules/Setup`: C extensions built by the Makefile using :file:" "`Module/makesetup` shell script;" msgstr "" -#: using/configure.rst:1108 +#: using/configure.rst:1116 msgid "Main build steps" msgstr "" -#: using/configure.rst:1110 +#: using/configure.rst:1118 msgid "C files (``.c``) are built as object files (``.o``)." msgstr "" -#: using/configure.rst:1111 +#: using/configure.rst:1119 msgid "A static ``libpython`` library (``.a``) is created from objects files." msgstr "" -#: using/configure.rst:1112 +#: using/configure.rst:1120 msgid "" "``python.o`` and the static ``libpython`` library are linked into the final " "``python`` program." msgstr "" -#: using/configure.rst:1114 +#: using/configure.rst:1122 msgid "C extensions are built by the Makefile (see :file:`Modules/Setup`)." msgstr "" -#: using/configure.rst:1117 +#: using/configure.rst:1125 msgid "Main Makefile targets" msgstr "" -#: using/configure.rst:1120 +#: using/configure.rst:1128 msgid "make" msgstr "" -#: using/configure.rst:1122 +#: using/configure.rst:1130 msgid "" "For the most part, when rebuilding after editing some code or refreshing " "your checkout from upstream, all you need to do is execute ``make``, which " @@ -1616,22 +1622,22 @@ msgid "" "all`` will build. The three choices are:" msgstr "" -#: using/configure.rst:1131 +#: using/configure.rst:1139 msgid "``profile-opt`` (configured with ``--enable-optimizations``)" msgstr "" -#: using/configure.rst:1132 +#: using/configure.rst:1140 msgid "" "``build_wasm`` (chosen if the host platform matches ``wasm32-wasi*`` or " "``wasm32-emscripten``)" msgstr "" -#: using/configure.rst:1134 +#: using/configure.rst:1142 msgid "" "``build_all`` (configured without explicitly using either of the others)" msgstr "" -#: using/configure.rst:1136 +#: using/configure.rst:1144 msgid "" "Depending on the most recent source file changes, Make will rebuild any " "targets (object files and executables) deemed out-of-date, including running " @@ -1644,11 +1650,11 @@ msgid "" "problems, at the expense of longer build times." msgstr "" -#: using/configure.rst:1149 +#: using/configure.rst:1157 msgid "make platform" msgstr "" -#: using/configure.rst:1151 +#: using/configure.rst:1159 msgid "" "Build the ``python`` program, but don't build the standard library extension " "modules. This generates a file named ``platform`` which contains a single " @@ -1656,91 +1662,91 @@ msgid "" "arm64-3.12`` or ``linux-x86_64-3.13``." msgstr "" -#: using/configure.rst:1158 +#: using/configure.rst:1166 msgid "make profile-opt" msgstr "" -#: using/configure.rst:1160 +#: using/configure.rst:1168 msgid "" "Build Python using profile-guided optimization (PGO). You can use the " "configure :option:`--enable-optimizations` option to make this the default " "target of the ``make`` command (``make all`` or just ``make``)." msgstr "" -#: using/configure.rst:1168 +#: using/configure.rst:1176 msgid "make clean" msgstr "" -#: using/configure.rst:1170 +#: using/configure.rst:1178 msgid "Remove built files." msgstr "" -#: using/configure.rst:1174 +#: using/configure.rst:1182 msgid "make distclean" msgstr "" -#: using/configure.rst:1176 +#: using/configure.rst:1184 msgid "" "In addition to the work done by ``make clean``, remove files created by the " "configure script. ``configure`` will have to be run before building again. " "[#]_" msgstr "" -#: using/configure.rst:1182 +#: using/configure.rst:1190 msgid "make install" msgstr "" -#: using/configure.rst:1184 +#: using/configure.rst:1192 msgid "Build the ``all`` target and install Python." msgstr "" -#: using/configure.rst:1188 +#: using/configure.rst:1196 msgid "make test" msgstr "" -#: using/configure.rst:1190 +#: using/configure.rst:1198 msgid "" "Build the ``all`` target and run the Python test suite with the ``--fast-" "ci`` option without GUI tests. Variables:" msgstr "" -#: using/configure.rst:1193 +#: using/configure.rst:1201 msgid "``TESTOPTS``: additional regrtest command-line options." msgstr "" -#: using/configure.rst:1194 +#: using/configure.rst:1202 msgid "``TESTPYTHONOPTS``: additional Python command-line options." msgstr "" -#: using/configure.rst:1195 +#: using/configure.rst:1203 msgid "``TESTTIMEOUT``: timeout in seconds (default: 10 minutes)." msgstr "" -#: using/configure.rst:1199 +#: using/configure.rst:1207 msgid "make ci" msgstr "" -#: using/configure.rst:1201 +#: using/configure.rst:1209 msgid "" "This is similar to ``make test``, but uses the ``-ugui`` to also run GUI " "tests." msgstr "" -#: using/configure.rst:1207 +#: using/configure.rst:1215 msgid "make buildbottest" msgstr "" -#: using/configure.rst:1209 +#: using/configure.rst:1217 msgid "" "This is similar to ``make test``, but uses the ``--slow-ci`` option and " "default timeout of 20 minutes, instead of ``--fast-ci`` option." msgstr "" -#: using/configure.rst:1214 +#: using/configure.rst:1222 msgid "make regen-all" msgstr "" -#: using/configure.rst:1216 +#: using/configure.rst:1224 msgid "" "Regenerate (almost) all generated files. These include (but are not limited " "to) bytecode cases, and parser generator file. ``make regen-stdlib-module-" @@ -1748,18 +1754,18 @@ msgid "" "files <#generated-files>`_." msgstr "" -#: using/configure.rst:1223 +#: using/configure.rst:1231 msgid "C extensions" msgstr "" -#: using/configure.rst:1225 +#: using/configure.rst:1233 msgid "" "Some C extensions are built as built-in modules, like the ``sys`` module. " "They are built with the ``Py_BUILD_CORE_BUILTIN`` macro defined. Built-in " "modules have no ``__file__`` attribute:" msgstr "" -#: using/configure.rst:1229 +#: using/configure.rst:1237 msgid "" ">>> import sys\n" ">>> sys\n" @@ -1770,14 +1776,14 @@ msgid "" "AttributeError: module 'sys' has no attribute '__file__'" msgstr "" -#: using/configure.rst:1239 +#: using/configure.rst:1247 msgid "" "Other C extensions are built as dynamic libraries, like the ``_asyncio`` " "module. They are built with the ``Py_BUILD_CORE_MODULE`` macro defined. " "Example on Linux x86-64:" msgstr "" -#: using/configure.rst:1243 +#: using/configure.rst:1251 msgid "" ">>> import _asyncio\n" ">>> _asyncio\n" @@ -1787,7 +1793,7 @@ msgid "" "'/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'" msgstr "" -#: using/configure.rst:1251 +#: using/configure.rst:1259 msgid "" ":file:`Modules/Setup` is used to generate Makefile targets to build C " "extensions. At the beginning of the files, C extensions are built as built-" @@ -1795,304 +1801,304 @@ msgid "" "dynamic libraries." msgstr "" -#: using/configure.rst:1255 +#: using/configure.rst:1263 msgid "" "The :c:macro:`!PyAPI_FUNC()`, :c:macro:`!PyAPI_DATA()` and :c:macro:" "`PyMODINIT_FUNC` macros of :file:`Include/exports.h` are defined differently " "depending if the ``Py_BUILD_CORE_MODULE`` macro is defined:" msgstr "" -#: using/configure.rst:1259 +#: using/configure.rst:1267 msgid "Use ``Py_EXPORTED_SYMBOL`` if the ``Py_BUILD_CORE_MODULE`` is defined" msgstr "" -#: using/configure.rst:1260 +#: using/configure.rst:1268 msgid "Use ``Py_IMPORTED_SYMBOL`` otherwise." msgstr "" -#: using/configure.rst:1262 +#: using/configure.rst:1270 msgid "" "If the ``Py_BUILD_CORE_BUILTIN`` macro is used by mistake on a C extension " "built as a shared library, its :samp:`PyInit_{xxx}()` function is not " "exported, causing an :exc:`ImportError` on import." msgstr "" -#: using/configure.rst:1268 +#: using/configure.rst:1276 msgid "Compiler and linker flags" msgstr "" -#: using/configure.rst:1270 +#: using/configure.rst:1278 msgid "" "Options set by the ``./configure`` script and environment variables and used " "by ``Makefile``." msgstr "" -#: using/configure.rst:1274 +#: using/configure.rst:1282 msgid "Preprocessor flags" msgstr "" -#: using/configure.rst:1278 +#: using/configure.rst:1286 msgid "" "Value of :envvar:`CPPFLAGS` variable passed to the ``./configure`` script." msgstr "" -#: using/configure.rst:1284 +#: using/configure.rst:1292 msgid "" "(Objective) C/C++ preprocessor flags, e.g. :samp:`-I{include_dir}` if you " "have headers in a nonstandard directory *include_dir*." msgstr "" -#: using/configure.rst:1477 +#: using/configure.rst:1485 msgid "" "Both :envvar:`CPPFLAGS` and :envvar:`LDFLAGS` need to contain the shell's " "value to be able to build extension modules using the directories specified " "in the environment variables." msgstr "" -#: using/configure.rst:1297 +#: using/configure.rst:1305 msgid "" "Extra preprocessor flags added for building the interpreter object files." msgstr "" -#: using/configure.rst:1299 +#: using/configure.rst:1307 msgid "" "Default: ``$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) " "$(CPPFLAGS)``." msgstr "" -#: using/configure.rst:1304 +#: using/configure.rst:1312 msgid "Compiler flags" msgstr "" -#: using/configure.rst:1310 +#: using/configure.rst:1318 msgid "Example: ``gcc -pthread``." msgstr "" -#: using/configure.rst:1314 +#: using/configure.rst:1322 msgid "C++ compiler command." msgstr "" -#: using/configure.rst:1316 +#: using/configure.rst:1324 msgid "Example: ``g++ -pthread``." msgstr "" -#: using/configure.rst:1324 +#: using/configure.rst:1332 msgid "" ":envvar:`CFLAGS_NODIST` is used for building the interpreter and stdlib C " "extensions. Use it when a compiler flag should *not* be part of :envvar:" "`CFLAGS` once Python is installed (:gh:`65320`)." msgstr "" -#: using/configure.rst:1328 +#: using/configure.rst:1336 msgid "In particular, :envvar:`CFLAGS` should not contain:" msgstr "" -#: using/configure.rst:1330 +#: using/configure.rst:1338 msgid "" "the compiler flag ``-I`` (for setting the search path for include files). " "The ``-I`` flags are processed from left to right, and any flags in :envvar:" "`CFLAGS` would take precedence over user- and package-supplied ``-I`` flags." msgstr "" -#: using/configure.rst:1335 +#: using/configure.rst:1343 msgid "" "hardening flags such as ``-Werror`` because distributions cannot control " "whether packages installed by users conform to such heightened standards." msgstr "" -#: using/configure.rst:1343 +#: using/configure.rst:1351 msgid "" "Options passed to the :mod:`compileall` command line when building PYC files " "in ``make install``. Default: ``-j0``." msgstr "" -#: using/configure.rst:1350 +#: using/configure.rst:1358 msgid "Extra C compiler flags." msgstr "" -#: using/configure.rst:1354 +#: using/configure.rst:1362 msgid "" "Value of :envvar:`CFLAGS` variable passed to the ``./configure`` script." msgstr "" -#: using/configure.rst:1361 +#: using/configure.rst:1369 msgid "" "Value of :envvar:`CFLAGS_NODIST` variable passed to the ``./configure`` " "script." msgstr "" -#: using/configure.rst:1368 +#: using/configure.rst:1376 msgid "Base compiler flags." msgstr "" -#: using/configure.rst:1372 +#: using/configure.rst:1380 msgid "Optimization flags." msgstr "" -#: using/configure.rst:1376 +#: using/configure.rst:1384 msgid "Strict or non-strict aliasing flags used to compile ``Python/dtoa.c``." msgstr "" -#: using/configure.rst:1382 +#: using/configure.rst:1390 msgid "Compiler flags used to build a shared library." msgstr "" -#: using/configure.rst:1384 +#: using/configure.rst:1392 msgid "For example, ``-fPIC`` is used on Linux and on BSD." msgstr "" -#: using/configure.rst:1388 +#: using/configure.rst:1396 msgid "Extra C flags added for building the interpreter object files." msgstr "" -#: using/configure.rst:1390 +#: using/configure.rst:1398 msgid "" "Default: ``$(CCSHARED)`` when :option:`--enable-shared` is used, or an empty " "string otherwise." msgstr "" -#: using/configure.rst:1395 +#: using/configure.rst:1403 msgid "" "Default: ``$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) " "$(EXTRA_CFLAGS)``." msgstr "" -#: using/configure.rst:1399 +#: using/configure.rst:1407 msgid "" "Default: ``$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/" "internal``." msgstr "" -#: using/configure.rst:1405 +#: using/configure.rst:1413 msgid "C flags used for building the interpreter object files." msgstr "" -#: using/configure.rst:1407 +#: using/configure.rst:1415 msgid "" "Default: ``$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) " "$(CFLAGSFORSHARED)``." msgstr "" -#: using/configure.rst:1413 +#: using/configure.rst:1421 msgid "Default: ``$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE``." msgstr "" -#: using/configure.rst:1419 +#: using/configure.rst:1427 msgid "" "Compiler flags to build a standard library extension module as a built-in " "module, like the :mod:`posix` module." msgstr "" -#: using/configure.rst:1422 +#: using/configure.rst:1430 msgid "Default: ``$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN``." msgstr "" -#: using/configure.rst:1428 +#: using/configure.rst:1436 msgid "Purify command. Purify is a memory debugger program." msgstr "" -#: using/configure.rst:1430 +#: using/configure.rst:1438 msgid "Default: empty string (not used)." msgstr "" -#: using/configure.rst:1434 +#: using/configure.rst:1442 msgid "Linker flags" msgstr "" -#: using/configure.rst:1438 +#: using/configure.rst:1446 msgid "" "Linker command used to build programs like ``python`` and ``_testembed``." msgstr "" -#: using/configure.rst:1440 +#: using/configure.rst:1448 msgid "Default: ``$(PURIFY) $(CC)``." msgstr "" -#: using/configure.rst:1444 +#: using/configure.rst:1452 msgid "" "Value of :envvar:`LDFLAGS` variable passed to the ``./configure`` script." msgstr "" -#: using/configure.rst:1446 +#: using/configure.rst:1454 msgid "" "Avoid assigning :envvar:`CFLAGS`, :envvar:`LDFLAGS`, etc. so users can use " "them on the command line to append to these values without stomping the pre-" "set values." msgstr "" -#: using/configure.rst:1454 +#: using/configure.rst:1462 msgid "" ":envvar:`LDFLAGS_NODIST` is used in the same manner as :envvar:" "`CFLAGS_NODIST`. Use it when a linker flag should *not* be part of :envvar:" "`LDFLAGS` once Python is installed (:gh:`65320`)." msgstr "" -#: using/configure.rst:1458 +#: using/configure.rst:1466 msgid "In particular, :envvar:`LDFLAGS` should not contain:" msgstr "" -#: using/configure.rst:1460 +#: using/configure.rst:1468 msgid "" "the compiler flag ``-L`` (for setting the search path for libraries). The ``-" "L`` flags are processed from left to right, and any flags in :envvar:" "`LDFLAGS` would take precedence over user- and package-supplied ``-L`` flags." msgstr "" -#: using/configure.rst:1467 +#: using/configure.rst:1475 msgid "" "Value of :envvar:`LDFLAGS_NODIST` variable passed to the ``./configure`` " "script." msgstr "" -#: using/configure.rst:1474 +#: using/configure.rst:1482 msgid "" "Linker flags, e.g. :samp:`-L{lib_dir}` if you have libraries in a " "nonstandard directory *lib_dir*." msgstr "" -#: using/configure.rst:1483 +#: using/configure.rst:1491 msgid "" "Linker flags to pass libraries to the linker when linking the Python " "executable." msgstr "" -#: using/configure.rst:1486 +#: using/configure.rst:1494 msgid "Example: ``-lrt``." msgstr "" -#: using/configure.rst:1490 +#: using/configure.rst:1498 msgid "Command to build a shared library." msgstr "" -#: using/configure.rst:1492 +#: using/configure.rst:1500 msgid "Default: ``@LDSHARED@ $(PY_LDFLAGS)``." msgstr "" -#: using/configure.rst:1496 +#: using/configure.rst:1504 msgid "Command to build ``libpython`` shared library." msgstr "" -#: using/configure.rst:1498 +#: using/configure.rst:1506 msgid "Default: ``@BLDSHARED@ $(PY_CORE_LDFLAGS)``." msgstr "" -#: using/configure.rst:1502 +#: using/configure.rst:1510 msgid "Default: ``$(CONFIGURE_LDFLAGS) $(LDFLAGS)``." msgstr "" -#: using/configure.rst:1506 +#: using/configure.rst:1514 msgid "Default: ``$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)``." msgstr "" -#: using/configure.rst:1512 +#: using/configure.rst:1520 msgid "Linker flags used for building the interpreter object files." msgstr "" -#: using/configure.rst:1518 +#: using/configure.rst:1526 msgid "Footnotes" msgstr "" -#: using/configure.rst:1519 +#: using/configure.rst:1527 msgid "" "``git clean -fdx`` is an even more extreme way to \"clean\" your checkout. " "It removes all files not known to Git. When bug hunting using ``git " diff --git a/using/editors.po b/using/editors.po index 5681b70f..68b563ee 100644 --- a/using/editors.po +++ b/using/editors.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-04-05 19:20+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" diff --git a/using/index.po b/using/index.po index 22515d4c..2b64048b 100644 --- a/using/index.po +++ b/using/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-04-06 10:11+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece Language: \n" diff --git a/using/ios.po b/using/ios.po index 6a433af0..2e677cdd 100644 --- a/using/ios.po +++ b/using/ios.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/using/mac.po b/using/mac.po index b1072a2d..bce68be9 100644 --- a/using/mac.po +++ b/using/mac.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-21 21:25+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" @@ -50,15 +50,15 @@ msgstr "" "CPython για λήψη από την ιστοσελίδα `python.org `_. Δείτε :ref:`alternative_bundles` για μερικές άλλες επιλογές." -#: using/mac.rst:34 +#: using/mac.rst:27 msgid "Using Python for macOS from ``python.org``" msgstr "Χρησιμοποιώντας Python για macOS από το ``python.org``" -#: using/mac.rst:37 +#: using/mac.rst:30 msgid "Installation steps" msgstr "Βήματα εγκατάστασης" -#: using/mac.rst:39 +#: using/mac.rst:32 msgid "" "For `current Python versions `_ (other " "than those in ``security`` status), the release team produces a **Python for " @@ -81,7 +81,7 @@ msgstr "" "Silicon και Intel) που υποστηρίζονται από μια ευρεία γκάμα εκδόσεων macOS, " "αυτή τη στιγμή συνήθως από τουλάχιστον **macOS 10.13 High Sierra** και μετά." -#: using/mac.rst:51 +#: using/mac.rst:44 msgid "" "The downloaded file is a standard macOS installer package file (``.pkg``). " "File integrity information (checksum, size, sigstore signature, etc) for " @@ -98,7 +98,7 @@ msgstr "" "Developer ID πιστοποιητικά για να ικανοποιούν τις απαιτήσεις `macOS " "Gatekeeper `_." -#: using/mac.rst:57 +#: using/mac.rst:50 msgid "" "For a default installation, double-click on the downloaded installer package " "file. This should launch the standard macOS Installer app and display the " @@ -108,14 +108,15 @@ msgstr "" "που κατεβάσατε. Αυτό θα πρέπει να εκκινήσει την τυπική εφαρμογή εγκατάστασης " "macOS και να εμφανίσει το πρώτο από αρκετά βήματα παραθύρου εγκατάστασης." -#: using/mac.rst:63 +#: using/mac.rst:56 +#, fuzzy msgid "" "Clicking on the **Continue** button brings up the **Read Me** for this " "installer. Besides other important information, the **Read Me** documents " "which Python version is going to be installed and on what versions of macOS " "it is supported. You may need to scroll through to read the whole file. By " "default, this **Read Me** will also be installed in |" -"usemac_applications_folder_version| and available to read anytime." +"applications_python_version_literal| and available to read anytime." msgstr "" "Κάνοντας κλικ στο κουμπί **Continue** εμφανίζεται το **Read Me** για αυτόν " "τον εγκαταστάτη. Εκτός από άλλες σημαντικές πληροφορίες, το **Read Me** " @@ -125,7 +126,7 @@ msgstr "" "εγκατασταθεί επίσης στο |usemac_applications_folder_version| και θα είναι " "διαθέσιμο για ανάγνωση οποιαδήποτε στιγμή." -#: using/mac.rst:71 +#: using/mac.rst:64 msgid "" "Clicking on **Continue** proceeds to display the license for Python and for " "other included software. You will then need to **Agree** to the license " @@ -138,7 +139,7 @@ msgstr "" "το αρχείο άδειας θα εγκατασταθεί επίσης και θα είναι διαθέσιμο για ανάγνωση " "αργότερα." -#: using/mac.rst:78 +#: using/mac.rst:71 msgid "" "After the license terms are accepted, the next step is the **Installation " "Type** display. For most uses, the standard set of installation operations " @@ -148,13 +149,13 @@ msgstr "" "**Τύπος Εγκατάστασης**. Για τις περισσότερες χρήσεις, το τυπικό σύνολο " "λειτουργιών εγκατάστασης είναι κατάλληλο." -#: using/mac.rst:83 +#: using/mac.rst:76 +#, fuzzy msgid "" "By pressing the **Customize** button, you can choose to omit or select " "certain package components of the installer. Click on each package name to " "see a description of what it installs. To also install support for the " -"optional experimental free-threaded feature, see :ref:`install-freethreaded-" -"macos`." +"optional free-threaded feature, see :ref:`install-freethreaded-macos`." msgstr "" "Πατώντας το κουμπί **Customize**, μπορείτε να επιλέξετε να παραλείψετε ή να " "επιλέξετε ορισμένα πακέτα του εγκαταστάτη. Κάντε κλικ σε κάθε όνομα πακέτου " @@ -162,7 +163,7 @@ msgstr "" "υποστήριξη για την προαιρετική πειραματική δυνατότητα χωρίς νήματα, δείτε :" "ref:`install-freethreaded-macos`." -#: using/mac.rst:91 +#: using/mac.rst:84 msgid "" "In either case, clicking **Install** will begin the install process by " "asking permission to install new software. A macOS user name with " @@ -174,21 +175,23 @@ msgstr "" "χρήστη macOS με ``Administrator`` δικαιώματα είναι απαραίτητο καθώς η " "εγκατεστημένη Python θα είναι διαθέσιμη σε όλους τους χρήστες του Mac." -#: using/mac.rst:95 +#: using/mac.rst:88 msgid "When the installation is complete, the **Summary** window will appear." msgstr "" "Όταν ολοκληρωθεί η εγκατάσταση, θα εμφανιστεί το παράθυρο **Περίληψη**." -#: using/mac.rst:99 +#: using/mac.rst:92 +#, fuzzy msgid "" "Double-click on the :command:`Install Certificates.command` icon or file in " -"the |usemac_applications_folder_version| window to complete the installation." +"the |applications_python_version_literal| window to complete the " +"installation." msgstr "" "Διπλό κλικ στο εικονίδιο ή το αρχείο :command:`Install Certificates.command` " "στο παράθυρο |usemac_applications_folder_version| για να ολοκληρώσετε την " "εγκατάσταση." -#: using/mac.rst:105 +#: using/mac.rst:98 msgid "" "This will open a temporary :program:`Terminal` shell window that will use " "the new Python to download and install SSL root certificates for its use." @@ -197,7 +200,7 @@ msgstr "" "χρησιμοποιήσει τη νέα Python για να κατεβάσει και να εγκαταστήσει ριζικούς " "πιστοποιητικούς SSL για τη χρήση του." -#: using/mac.rst:111 +#: using/mac.rst:104 msgid "" "If ``Successfully installed certifi`` and ``update complete`` appears in the " "terminal window, the installation is complete. Close this terminal window " @@ -207,15 +210,16 @@ msgstr "" "στο παράθυρο τερματικού, η εγκατάσταση είναι ολοκληρωμένη. Κλείστε αυτό το " "παράθυρο τερματικού και το παράθυρο εγκαταστάτη." -#: using/mac.rst:115 +#: using/mac.rst:108 msgid "A default install will include:" msgstr "Μια προεπιλεγμένη εγκατάσταση θα περιλαμβάνει:" -#: using/mac.rst:117 +#: using/mac.rst:110 +#, fuzzy msgid "" -"A |usemac_applications_folder_name| folder in your :file:`Applications` " -"folder. In here you find :program:`IDLE`, the development environment that " -"is a standard part of official Python distributions; and :program:`Python " +"A |python_version_literal| folder in your :file:`Applications` folder. In " +"here you find :program:`IDLE`, the development environment that is a " +"standard part of official Python distributions; and :program:`Python " "Launcher`, which handles double-clicking Python scripts from the macOS " "`Finder `_." msgstr "" @@ -225,7 +229,7 @@ msgstr "" "Launcher`, το οποίο χειρίζεται τα διπλά κλικ σε Python scripts από το macOS " "`Finder `_." -#: using/mac.rst:122 +#: using/mac.rst:115 msgid "" "A framework :file:`/Library/Frameworks/Python.framework`, which includes the " "Python executable and libraries. The installer adds this location to your " @@ -239,7 +243,7 @@ msgstr "" "Symlinks στον εκτελέσιμο κώδικα Python τοποθετούνται στο :file:`/usr/local/" "bin/`." -#: using/mac.rst:129 +#: using/mac.rst:122 msgid "" "Recent versions of macOS include a :command:`python3` command in :file:`/usr/" "bin/python3` that links to a usually older and incomplete version of Python " @@ -265,16 +269,17 @@ msgstr "" "διασφαλίσουν ότι η :command:`python3` θα χρησιμοποιηθεί αντί της συστήματος :" "command:`python3`." -#: using/mac.rst:140 +#: using/mac.rst:133 msgid "How to run a Python script" msgstr "Πώς να εκτελέσετε ένα σενάριο Python" -#: using/mac.rst:142 +#: using/mac.rst:135 +#, fuzzy msgid "" "There are two ways to invoke the Python interpreter. If you are familiar " "with using a Unix shell in a terminal window, you can invoke |" -"usemac_python_x_dot_y_literal| or ``python3`` optionally followed by one or " -"more command line options (described in :ref:`using-on-general`). The Python " +"python_x_dot_y_literal| or ``python3`` optionally followed by one or more " +"command line options (described in :ref:`using-on-general`). The Python " "tutorial also has a useful section on :ref:`using Python interactively from " "a shell `." msgstr "" @@ -286,7 +291,7 @@ msgstr "" "μια χρήσιμη ενότητα σχετικά με :ref:`using Python interactively from a shell " "`." -#: using/mac.rst:149 +#: using/mac.rst:142 msgid "" "You can also invoke the interpreter through an integrated development " "environment. :ref:`idle` is a basic editor and interpreter environment which " @@ -303,7 +308,7 @@ msgstr "" "Python, μπορείτε να διαβάσετε την εισαγωγή του εγχειριδίου σε αυτό το " "έγγραφο." -#: using/mac.rst:157 +#: using/mac.rst:150 msgid "" "There are many other editors and IDEs available, see :ref:`editors` for more " "information." @@ -311,7 +316,7 @@ msgstr "" "Υπάρχουν πολλοί άλλοι επεξεργαστές και IDE διαθέσιμοι, δείτε :ref:`editors` " "για περισσότερες πληροφορίες." -#: using/mac.rst:160 +#: using/mac.rst:153 msgid "" "To run a Python script file from the terminal window, you can invoke the " "interpreter with the name of the script file:" @@ -319,19 +324,20 @@ msgstr "" "Για να εκτελέσετε ένα αρχείο script Python από το παράθυρο τερματικού, " "μπορείτε να καλέσετε τον ερμηνευτή με το όνομα του αρχείου script:" -#: using/mac.rst:163 -msgid "|usemac_python_x_dot_y_literal| ``myscript.py``" +#: using/mac.rst:156 +#, fuzzy +msgid "|python_x_dot_y_literal| ``myscript.py``" msgstr "|usemac_python_x_dot_y_literal| ``myscript.py``" -#: using/mac.rst:165 +#: using/mac.rst:158 msgid "To run your script from the Finder, you can either:" msgstr "Για να εκτελέσετε το script σας από το Finder, μπορείτε είτε:" -#: using/mac.rst:167 +#: using/mac.rst:160 msgid "Drag it to :program:`Python Launcher`." msgstr "Σύρετε το στο :program:`Python Launcher`." -#: using/mac.rst:169 +#: using/mac.rst:162 msgid "" "Select :program:`Python Launcher` as the default application to open your " "script (or any ``.py`` script) through the Finder Info window and double-" @@ -347,7 +353,7 @@ msgstr "" "χρησιμοποιήστε το μενού ``Προτιμήσεις`` για να αλλάξετε τα πράγματα " "παγκοσμίως." -#: using/mac.rst:175 +#: using/mac.rst:168 msgid "" "Be aware that running the script directly from the macOS Finder might " "produce different results than when running from a terminal window as the " @@ -362,11 +368,11 @@ msgstr "" "κελύφους. Και, όπως με οποιοδήποτε άλλο script ή πρόγραμμα, να είστε " "σίγουροι για το τι πρόκειται να εκτελέσετε." -#: using/mac.rst:185 +#: using/mac.rst:178 msgid "Alternative Distributions" msgstr "Εναλλακτικές Διανομές" -#: using/mac.rst:187 +#: using/mac.rst:180 msgid "" "Besides the standard ``python.org`` for macOS installer, there are third-" "party distributions for macOS that may include additional functionality. " @@ -376,19 +382,19 @@ msgstr "" "διανομές για macOS που μπορεί να περιλαμβάνουν πρόσθετη λειτουργικότητα. " "Ορισμένες δημοφιλείς διανομές και τα βασικά χαρακτηριστικά τους:" -#: using/mac.rst:191 +#: using/mac.rst:184 msgid "`ActivePython `_" msgstr "`ActivePython `_" -#: using/mac.rst:192 +#: using/mac.rst:185 msgid "Installer with multi-platform compatibility, documentation" msgstr "Εγκαταστάτης με συμβατότητα πολλών πλατφορμών, τεκμηρίωση" -#: using/mac.rst:194 +#: using/mac.rst:187 msgid "`Anaconda `_" msgstr "`Anaconda `_" -#: using/mac.rst:195 +#: using/mac.rst:188 msgid "" "Popular scientific modules (such as numpy, scipy, and pandas) and the " "``conda`` package manager." @@ -396,11 +402,11 @@ msgstr "" "Δημοφιλή επιστημονικά modules (όπως numpy, scipy και pandas) και ο ``conda`` " "διαχειριστής πακέτων." -#: using/mac.rst:198 +#: using/mac.rst:191 msgid "`Homebrew `_" msgstr "`Homebrew `_" -#: using/mac.rst:199 +#: using/mac.rst:192 msgid "" "Package manager for macOS including multiple versions of Python and many " "third-party Python-based packages (including numpy, scipy, and pandas)." @@ -408,11 +414,11 @@ msgstr "" "Διαχειριστής πακέτων για macOS που περιλαμβάνει πολλές εκδόσεις Python και " "πολλά τρίτα πακέτα Python (συμπεριλαμβανομένων των numpy, scipy και pandas)." -#: using/mac.rst:202 +#: using/mac.rst:195 msgid "`MacPorts `_" msgstr "`MacPorts `_" -#: using/mac.rst:203 +#: using/mac.rst:196 msgid "" "Another package manager for macOS including multiple versions of Python and " "many third-party Python-based packages. May include pre-built versions of " @@ -423,7 +429,7 @@ msgstr "" "κατασκευασμένες εκδόσεις της Python και πολλά πακέτα για παλαιότερες " "εκδόσεις του macOS." -#: using/mac.rst:207 +#: using/mac.rst:200 msgid "" "Note that distributions might not include the latest versions of Python or " "other libraries, and are not maintained or supported by the core Python team." @@ -432,27 +438,27 @@ msgstr "" "εκδόσεις της Python ή άλλων βιβλιοθηκών και δεν υποστηρίζονται ή " "συντηρούνται από την κύρια ομάδα Python." -#: using/mac.rst:213 +#: using/mac.rst:206 msgid "Installing Additional Python Packages" msgstr "Εγκατάσταση πρόσθετων πακέτων Python" -#: using/mac.rst:215 +#: using/mac.rst:208 msgid "Refer to the `Python Packaging User Guide`_ for more information." msgstr "" "Ανατρέξτε στον `Python Packaging User Guide`_ για περισσότερες πληροφορίες." -#: using/mac.rst:225 +#: using/mac.rst:218 msgid "GUI Programming" msgstr "Προγραμματισμός GUI" -#: using/mac.rst:227 +#: using/mac.rst:220 msgid "" "There are several options for building GUI applications on the Mac with " "Python." msgstr "" "Υπάρχουν πολλές επιλογές για την κατασκευή εφαρμογών GUI στον Mac με Python." -#: using/mac.rst:229 +#: using/mac.rst:222 msgid "" "The standard Python GUI toolkit is :mod:`tkinter`, based on the cross-" "platform Tk toolkit (https://www.tcl.tk). A macOS-native version of Tk is " @@ -462,7 +468,7 @@ msgstr "" "διαλειτουργικό εργαλείο Tk (https://www.tcl.tk). Μια εγγενής έκδοση Tk macOS " "περιλαμβάνεται με τον εγκαταστάτη." -#: using/mac.rst:233 +#: using/mac.rst:226 msgid "" "*PyObjC* is a Python binding to Apple's Objective-C/Cocoa framework. " "Information on PyObjC is available from :pypi:`pyobjc`." @@ -470,13 +476,13 @@ msgstr "" "Το *PyObjC* είναι ένα Python binding στο πλαίσιο Objective-C/Cocoa της " "Apple. Πληροφορίες σχετικά με το PyObjC είναι διαθέσιμες από :pypi:`pyobjc`." -#: using/mac.rst:236 +#: using/mac.rst:229 msgid "A number of alternative macOS GUI toolkits are available including:" msgstr "" "Ένας αριθμός εναλλακτικών εργαλείων GUI macOS είναι διαθέσιμος, " "συμπεριλαμβανομένων:" -#: using/mac.rst:238 +#: using/mac.rst:231 msgid "" "`PySide `_: Official Python bindings to the " "`Qt GUI toolkit `_." @@ -484,7 +490,7 @@ msgstr "" "`PySide `_: Επίσημα Python bindings στο `Qt " "GUI toolkit `_." -#: using/mac.rst:241 +#: using/mac.rst:234 msgid "" "`PyQt `_: Alternative Python " "bindings to Qt." @@ -492,7 +498,7 @@ msgstr "" "`PyQt `_: Εναλλακτικά Python " "bindings στο Qt." -#: using/mac.rst:244 +#: using/mac.rst:237 msgid "" "`Kivy `_: A cross-platform GUI toolkit that supports " "desktop and mobile platforms." @@ -500,7 +506,7 @@ msgstr "" "`Kivy `_: Ένα διαλειτουργικό εργαλείο GUI που υποστηρίζει " "desktop και mobile πλατφόρμες." -#: using/mac.rst:247 +#: using/mac.rst:240 msgid "" "`Toga `_: Part of the `BeeWare Project `_; supports desktop, mobile, web and console apps." @@ -509,7 +515,7 @@ msgstr "" "beeware.org>`_; υποστηρίζει εφαρμογές desktop, mobile, web και κονσόλας " "εφαρμογές." -#: using/mac.rst:250 +#: using/mac.rst:243 msgid "" "`wxPython `_: A cross-platform toolkit that supports " "desktop operating systems." @@ -517,34 +523,22 @@ msgstr "" "`wxPython `_: Ένα διαλειτουργικό εργαλείο που " "υποστηρίζει desktop πλατφόρμες." -#: using/mac.rst:255 +#: using/mac.rst:248 msgid "Advanced Topics" msgstr "Προχωρημένα θέματα" -#: using/mac.rst:260 +#: using/mac.rst:253 msgid "Installing Free-threaded Binaries" msgstr "Εγκατάσταση εκδόσεων Free-threaded" -#: using/mac.rst:262 -msgid "(Experimental)" -msgstr "(Πειραματικό)" - -#: using/mac.rst:266 -msgid "" -"Everything described in this section is considered experimental, and should " -"be expected to change in future releases." -msgstr "" -"Όλα όσα περιγράφονται σε αυτήν την ενότητα θεωρούνται πειραματικά και θα " -"πρέπει να αναμένονται να αλλάξουν σε μελλοντικές εκδόσεις." - -#: using/mac.rst:269 +#: using/mac.rst:257 +#, fuzzy msgid "" "The ``python.org`` :ref:`Python for macOS ` installer package can optionally install an additional build of " -"Python |usemac_x_dot_y| that supports :pep:`703`, the experimental free-" -"threading feature (running with the :term:`global interpreter lock` " -"disabled). Check the release page on ``python.org`` for possible updated " -"information." +"Python |version| that supports :pep:`703`, the free-threading feature " +"(running with the :term:`global interpreter lock` disabled). Check the " +"release page on ``python.org`` for possible updated information." msgstr "" "Το πακέτο εγκατάστασης ``python.org`` :ref:`Python for macOS ` μπορεί προαιρετικά να εγκαταστήσει μια επιπλέον " @@ -553,27 +547,33 @@ msgstr "" "term:`global interpreter lock` απενεργοποιημένο). Ελέγξτε τη σελίδα " "κυκλοφορίας στο ``python.org`` για πιθανές ενημερωμένες πληροφορίες." -#: using/mac.rst:275 +#: using/mac.rst:263 +#, fuzzy msgid "" -"Because this feature is still considered experimental, the support for it is " -"not installed by default. It is packaged as a separate install option, " -"available by clicking the **Customize** button on the **Installation Type** " -"step of the installer as described above." +"The free-threaded mode is working and continues to be improved, but there is " +"some additional overhead in single-threaded workloads compared to the " +"regular build. Additionally, third-party packages, in particular ones with " +"an :term:`extension module`, may not be ready for use in a free-threaded " +"build, and will re-enable the :term:`GIL`. Therefore, the support for free-" +"threading is not installed by default. It is packaged as a separate install " +"option, available by clicking the **Customize** button on the **Installation " +"Type** step of the installer as described above." msgstr "" "Επειδή αυτή η δυνατότητα εξακολουθεί να θεωρείται πειραματική, η υποστήριξή " "της δεν εγκαθίσταται από προεπιλογή. Είναι συσκευασμένο ως ξεχωριστή επιλογή " "εγκατάστασης, διαθέσιμη κάνοντας κλικ στο κουμπί **Προσαρμογή** στο βήμα " "**Τύπος εγκατάστασης** του εγκαταστάτη όπως περιγράφεται παραπάνω." -#: using/mac.rst:282 +#: using/mac.rst:275 +#, fuzzy msgid "" "If the box next to the **Free-threaded Python** package name is checked, a " "separate :file:`PythonT.framework` will also be installed alongside the " "normal :file:`Python.framework` in :file:`/Library/Frameworks`. This " -"configuration allows a free-threaded Python |usemac_x_dot_y| build to co-" -"exist on your system with a traditional (GIL only) Python |usemac_x_dot_y| " -"build with minimal risk while installing or testing. This installation " -"layout is itself experimental and is subject to change in future releases." +"configuration allows a free-threaded Python |version| build to co-exist on " +"your system with a traditional (GIL only) Python |version| build with " +"minimal risk while installing or testing. This installation layout may " +"change in future releases." msgstr "" "Εάν το πλαίσιο δίπλα στο όνομα πακέτου **Free-threaded Python** είναι " "επιλεγμένο, θα εγκατασταθεί επίσης ένα ξεχωριστό :file:`PythonT.framework` " @@ -584,20 +584,20 @@ msgstr "" "δοκιμή. Αυτή η διάταξη εγκατάστασης είναι πειραματική και υπόκειται σε " "αλλαγές σε μελλοντικές εκδόσεις." -#: using/mac.rst:290 +#: using/mac.rst:283 msgid "Known cautions and limitations:" msgstr "Γνωστές προφυλάξεις και περιορισμοί:" -#: using/mac.rst:292 +#: using/mac.rst:285 +#, fuzzy msgid "" "The **UNIX command-line tools** package, which is selected by default, will " -"install links in :file:`/usr/local/bin` for |" -"usemac_python_x_dot_y_t_literal|, the free-threaded interpreter, and |" -"usemac_python_x_dot_y_t_literal_config|, a configuration utility which may " -"be useful for package builders. Since :file:`/usr/local/bin` is typically " -"included in your shell ``PATH``, in most cases no changes to your ``PATH`` " -"environment variables should be needed to use |" -"usemac_python_x_dot_y_t_literal|." +"install links in :file:`/usr/local/bin` for |python_x_dot_y_t_literal|, the " +"free-threaded interpreter, and |python_x_dot_y_t_literal_config|, a " +"configuration utility which may be useful for package builders. Since :file:" +"`/usr/local/bin` is typically included in your shell ``PATH``, in most cases " +"no changes to your ``PATH`` environment variables should be needed to use |" +"python_x_dot_y_t_literal|." msgstr "" "To **UNIX command-line tools** πακέτο, το οποίο επιλέγεται από προεπιλογή, " "θα εγκαταστήσει συνδέσμους στο :file:`/usr/local/bin` για |" @@ -609,23 +609,25 @@ msgstr "" "αλλαγές στις μεταβλητές περιβάλλοντος ``PATH`` για να χρησιμοποιήσετε |" "usemac_python_x_dot_y_t_literal|." -#: using/mac.rst:300 +#: using/mac.rst:293 +#, fuzzy msgid "" "For this release, the **Shell profile updater** package and the :file:" -"`Update Shell Profile.command` in |usemac_applications_folder_version| do " +"`Update Shell Profile.command` in |applications_python_version_literal| do " "not support the free-threaded package." msgstr "" "Για αυτήν την έκδοση, το πακέτο **Shell profile updater** και το :file:" "`Update Shell Profile.command` στο |usemac_applications_folder_version| δεν " "υποστηρίζουν το πακέτο ελεύθερης νηματοποίησης." -#: using/mac.rst:304 +#: using/mac.rst:297 +#, fuzzy msgid "" "The free-threaded build and the traditional build have separate search paths " "and separate :file:`site-packages` directories so, by default, if you need a " "package available in both builds, it may need to be installed in both. The " "free-threaded package will install a separate instance of :program:`pip` for " -"use with |usemac_python_x_dot_y_t_literal|." +"use with |python_x_dot_y_t_literal|." msgstr "" "Η έκδοση ελεύθερης νηματοποίησης και η παραδοσιακή έκδοση έχουν ξεχωριστές " "διαδρομές αναζήτησης και ξεχωριστούς καταλόγους :file:`site-packages`, " @@ -634,17 +636,18 @@ msgstr "" "ελεύθερης νηματοποίησης θα εγκαταστήσει μια ξεχωριστή έκδοση του :program:" "`pip` για χρήση με |usemac_python_x_dot_y_t_literal|." -#: using/mac.rst:310 +#: using/mac.rst:303 msgid "To install a package using :command:`pip` without a :command:`venv`:" msgstr "" "Για να εγκαταστήσετε ένα πακέτο χρησιμοποιώντας :command:`pip` χωρίς :" "command:`venv`:" -#: using/mac.rst:312 -msgid "|usemac_python_x_dot_y_t_literal| ``-m pip install ``" +#: using/mac.rst:307 +#, fuzzy +msgid "python\\ |version|\\ t -m pip install " msgstr "|usemac_python_x_dot_y_t_literal| ``-m pip install ``" -#: using/mac.rst:314 +#: using/mac.rst:309 msgid "" "When working with multiple Python environments, it is usually safest and " "easiest to :ref:`create and use virtual environments `. This can " @@ -656,23 +659,23 @@ msgstr "" "μπορεί να αποφύγει πιθανά ονόματα εντολών συγκρούσεων και σύγχυση σχετικά με " "το ποια Python είναι σε χρήση:" -#: using/mac.rst:318 -msgid "|usemac_python_x_dot_y_t_literal| ``-m venv ``" -msgstr "|usemac_python_x_dot_y_t_literal| ``-m venv ``" +#: using/mac.rst:315 +msgid "python\\ |version|\\ t -m venv " +msgstr "" -#: using/mac.rst:320 +#: using/mac.rst:318 msgid "then :command:`activate`." msgstr "τότε :command:`activate`." -#: using/mac.rst:322 +#: using/mac.rst:320 msgid "To run a free-threaded version of IDLE:" msgstr "Για να εκτελέσετε μια έκδοση ελεύθερης νηματοποίησης του IDLE:" #: using/mac.rst:324 -msgid "|usemac_python_x_dot_y_t_literal| ``-m idlelib``" -msgstr "|usemac_python_x_dot_y_t_literal| ``-m idlelib``" +msgid "python\\ |version|\\ t -m idlelib" +msgstr "" -#: using/mac.rst:326 +#: using/mac.rst:327 msgid "" "The interpreters in both builds respond to the same :ref:`PYTHON environment " "variables ` which may have unexpected results, for " @@ -687,7 +690,7 @@ msgstr "" "` όπως ``-E`` για να αγνοήσετε αυτές τις " "μεταβλητές περιβάλλοντος." -#: using/mac.rst:333 +#: using/mac.rst:334 msgid "" "The free-threaded build links to the third-party shared libraries, such as " "``OpenSSL`` and ``Tk``, installed in the traditional framework. This means " @@ -702,13 +705,14 @@ msgstr "" "command:`Install Certificates.command` script, επομένως χρειάζεται να " "εκτελείται μόνο μία φορά." -#: using/mac.rst:339 +#: using/mac.rst:340 +#, fuzzy msgid "" "If you cannot depend on the link in ``/usr/local/bin`` pointing to the " -"``python.org`` free-threaded |usemac_python_x_dot_y_t_literal| (for example, " -"if you want to install your own version there or some other distribution " -"does), you can explicitly set your shell ``PATH`` environment variable to " -"include the ``PythonT`` framework ``bin`` directory:" +"``python.org`` free-threaded |python_x_dot_y_t_literal| (for example, if you " +"want to install your own version there or some other distribution does), you " +"can explicitly set your shell ``PATH`` environment variable to include the " +"``PythonT`` framework ``bin`` directory:" msgstr "" "Εάν δεν μπορείτε να εξαρτηθείτε από το σύνδεσμο στο ``/usr/local/bin`` που " "δείχνει στην έκδοση |usemac_python_x_dot_y_t_literal| ελεύθερης " @@ -717,24 +721,26 @@ msgstr "" "μεταβλητή περιβάλλοντος ``PATH`` του κελύφους σας για να περιλαμβάνει το " "κατάλογο ``bin`` του πλαισίου ``PythonT``:" -#: using/mac.rst:345 +#: using/mac.rst:348 +#, fuzzy msgid "" -"export PATH=\"/Library/Frameworks/PythonT.framework/Versions/3.13/bin\":" -"\"$PATH\"" +"export PATH=\"/Library/Frameworks/PythonT.framework/Versions/\\ |version|\\ /" +"bin\":\"$PATH\"" msgstr "" "export PATH=\"/Library/Frameworks/PythonT.framework/Versions/3.13/bin\":" "\"$PATH\"" -#: using/mac.rst:349 +#: using/mac.rst:350 +#, fuzzy msgid "" "The traditional framework installation by default does something similar, " "except for :file:`Python.framework`. Be aware that having both framework " "``bin`` directories in ``PATH`` can lead to confusion if there are duplicate " -"names like ``python3.13`` in both; which one is actually used depends on the " -"order they appear in ``PATH``. The ``which python3.x`` or ``which python3." -"xt`` commands can show which path is being used. Using virtual environments " -"can help avoid such ambiguities. Another option might be to create a shell :" -"command:`alias` to the desired interpreter, like:" +"names like |python_x_dot_y_literal| in both; which one is actually used " +"depends on the order they appear in ``PATH``. The ``which python3.x`` or " +"``which python3.xt`` commands can show which path is being used. Using " +"virtual environments can help avoid such ambiguities. Another option might " +"be to create a shell :command:`alias` to the desired interpreter, like:" msgstr "" "Η παραδοσιακή εγκατάσταση πλαισίου από προεπιλογή κάνει κάτι παρόμοιο, εκτός " "από το :file:`Python.framework`. Να είστε προσεκτικοί ότι η παρουσία και των " @@ -747,23 +753,25 @@ msgstr "" "να είναι η δημιουργία ενός κελύφους :command:`alias` στον επιθυμητό " "ερμηνευτή, όπως:" -#: using/mac.rst:358 +#: using/mac.rst:361 +#, fuzzy msgid "" -"alias py3.13=\"/Library/Frameworks/Python.framework/Versions/3.13/bin/" -"python3.13\"\n" -"alias py3.13t=\"/Library/Frameworks/PythonT.framework/Versions/3.13/bin/" -"python3.13t\"" +"alias py\\ |version|\\ =\"/Library/Frameworks/Python.framework/Versions/\\ |" +"version|\\ /bin/python\\ |version|\\ \"\n" +"alias py\\ |version|\\ t=\"/Library/Frameworks/PythonT.framework/Versions/\\ " +"|version|\\ /bin/python\\ |version|\\ t\"" msgstr "" "alias py3.13=\"/Library/Frameworks/Python.framework/Versions/3.13/bin/" "python3.13\"\n" "alias py3.13t=\"/Library/Frameworks/PythonT.framework/Versions/3.13/bin/" "python3.13t\"" -#: using/mac.rst:364 +#: using/mac.rst:365 msgid "Installing using the command line" msgstr "Εγκατάσταση χρησιμοποιώντας τη γραμμή εντολών" -#: using/mac.rst:366 +#: using/mac.rst:367 +#, fuzzy msgid "" "If you want to use automation to install the ``python.org`` installer " "package (rather than by using the familiar macOS :program:`Installer` GUI " @@ -771,7 +779,7 @@ msgid "" "non-default options, too. If you are not familiar with :command:`installer`, " "it can be somewhat cryptic (see :command:`man installer` for more " "information). As an example, the following shell snippet shows one way to do " -"it, using the ``3.13.0b2`` release and selecting the free-threaded " +"it, using the |x_dot_y_b2_literal| release and selecting the free-threaded " "interpreter option:" msgstr "" "Εάν θέλετε να χρησιμοποιήσετε αυτοματισμό για να εγκαταστήσετε το πακέτο " @@ -784,19 +792,20 @@ msgstr "" "να το κάνετε, χρησιμοποιώντας την έκδοση ``3.13.0b2`` και επιλέγοντας την " "επιλογή ερμηνευτή ελεύθερης νηματοποίησης:" -#: using/mac.rst:375 +#: using/mac.rst:378 +#, fuzzy msgid "" -"RELEASE=\"python-3.13.0b2-macos11.pkg\"\n" +"RELEASE=\"python-\\ |version|\\ 0b2-macos11.pkg\"\n" "\n" "# download installer pkg\n" -"curl -O https://www.python.org/ftp/python/3.13.0/${RELEASE}\n" +"curl -O \\https://www.python.org/ftp/python/\\ |version|\\ .0/${RELEASE}\n" "\n" "# create installer choicechanges to customize the install:\n" -"# enable the PythonTFramework-3.13 package\n" +"# enable the PythonTFramework-\\ |version|\\ package\n" "# while accepting the other defaults (install all other packages)\n" "cat > ./choicechanges.plist <\n" -"\n" "\n" "\n" @@ -806,7 +815,8 @@ msgid "" " choiceAttribute\n" " selected\n" " choiceIdentifier\n" -" org.python.Python.PythonTFramework-3.13\n" +" org.python.Python.PythonTFramework-\\ |version|\\ \n" " \n" "\n" "\n" @@ -844,7 +854,7 @@ msgstr "" "sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges." "plist -target /" -#: using/mac.rst:405 +#: using/mac.rst:406 msgid "" "You can then test that both installer builds are now available with " "something like:" @@ -852,25 +862,28 @@ msgstr "" "Μπορείτε στη συνέχεια να ελέγξετε ότι και οι δύο εγκαταστάτες είναι " "διαθέσιμοι με κάτι σαν:" -#: using/mac.rst:407 +#: using/mac.rst:410 +#, fuzzy msgid "" "$ # test that the free-threaded interpreter was installed if the Unix " "Command Tools package was enabled\n" -"$ /usr/local/bin/python3.13t -VV\n" -"Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, " -"Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)]\n" -"$ # and the traditional interpreter\n" -"$ /usr/local/bin/python3.13 -VV\n" -"Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 " +"$ /usr/local/bin/python\\ |version|\\ t -VV\n" +"Python \\ |version|\\ .0b2 free-threading build (v\\ |version|" +"\\ .0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 " "(clang-1500.3.9.4)]\n" +"$ # and the traditional interpreter\n" +"$ /usr/local/bin/python\\ |version|\\ -VV\n" +"Python \\ |version|\\ .0b2 (v\\ |version|\\ .0b2:3a83b172af, Jun 5 2024, " +"12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]\n" "$ # test that they are also available without the prefix if /usr/local/bin " "is on $PATH\n" -"$ python3.13t -VV\n" -"Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, " -"Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)]\n" -"$ python3.13 -VV\n" -"Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 " -"(clang-1500.3.9.4)]" +"$ python\\ |version|\\ t -VV\n" +"Python \\ |version|\\ .0b2 free-threading build (v\\ |version|" +"\\ .0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 " +"(clang-1500.3.9.4)]\n" +"$ python\\ |version|\\ -VV\n" +"Python \\ |version|\\ .0b2 (v\\ |version|\\ .0b2:3a83b172af, Jun 5 2024, " +"12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]" msgstr "" "$ # test that the free-threaded interpreter was installed if the Unix " "Command Tools package was enabled\n" @@ -890,7 +903,7 @@ msgstr "" "Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 " "(clang-1500.3.9.4)]" -#: using/mac.rst:423 +#: using/mac.rst:424 msgid "" "Current ``python.org`` installers only install to fixed locations like :file:" "`/Library/Frameworks/`, :file:`/Applications`, and :file:`/usr/local/bin`. " @@ -903,11 +916,11 @@ msgstr "" "την επιλογή ``-domain`` του :command:`installer` για να εγκαταστήσετε σε " "άλλες τοποθεσίες." -#: using/mac.rst:431 +#: using/mac.rst:432 msgid "Distributing Python Applications" msgstr "Διανομή εφαρμογών Python" -#: using/mac.rst:433 +#: using/mac.rst:434 msgid "" "A range of tools exist for converting your Python code into a standalone " "distributable application:" @@ -915,7 +928,7 @@ msgstr "" "Υπάρχει μια σειρά εργαλείων για τη μετατροπή του κώδικα Python σας σε μια " "αυτόνομη διανεμόμενη εφαρμογή:" -#: using/mac.rst:436 +#: using/mac.rst:437 msgid "" ":pypi:`py2app`: Supports creating macOS ``.app`` bundles from a Python " "project." @@ -923,7 +936,7 @@ msgstr "" ":pypi:`py2app`: Υποστηρίζει τη δημιουργία macOS ``.app`` πακέτων από ένα " "έργο Python." -#: using/mac.rst:439 +#: using/mac.rst:440 msgid "" "`Briefcase `_: Part of the `BeeWare " "Project `_; a cross-platform packaging tool that " @@ -935,7 +948,7 @@ msgstr "" "υποστηρίζει τη δημιουργία ``.app`` πακέτων σε macOS, καθώς και τη διαχείριση " "υπογραφής και πιστοποίησης." -#: using/mac.rst:444 +#: using/mac.rst:445 msgid "" "`PyInstaller `_: A cross-platform packaging tool " "that creates a single file or folder as a distributable artifact." @@ -944,11 +957,11 @@ msgstr "" "πλατφορμών που δημιουργεί ένα μόνο αρχείο ή φάκελο ως διανεμόμενο " "αντικείμενο." -#: using/mac.rst:448 +#: using/mac.rst:449 msgid "App Store Compliance" msgstr "Συμμόρφωση App Store" -#: using/mac.rst:450 +#: using/mac.rst:451 msgid "" "Apps submitted for distribution through the macOS App Store must pass " "Apple's app review process. This process includes a set of automated " @@ -960,7 +973,7 @@ msgstr "" "περιλαμβάνει ένα σύνολο αυτοματοποιημένων κανόνων επικύρωσης που ελέγχουν το " "υποβληθέν πακέτο εφαρμογής για προβληματικό κώδικα." -#: using/mac.rst:454 +#: using/mac.rst:455 msgid "" "The Python standard library contains some code that is known to violate " "these automated rules. While these violations appear to be false positives, " @@ -974,7 +987,7 @@ msgstr "" "βιβλιοθήκη προτύπων Python για να περάσει μια εφαρμογή την αναθεώρηση του " "App Store." -#: using/mac.rst:459 +#: using/mac.rst:460 msgid "" "The Python source tree contains :source:`a patch file ` that will remove all code that is known to cause " @@ -988,7 +1001,7 @@ msgstr "" "επιδιόρθωση εφαρμόζεται αυτόματα όταν η CPython διαμορφώνεται με την :option:" "`--with-app-store-compliance` επιλογή." -#: using/mac.rst:465 +#: using/mac.rst:466 msgid "" "This patch is not normally required to use CPython on a Mac; nor is it " "required if you are distributing an app *outside* the macOS App Store. It is " @@ -999,11 +1012,11 @@ msgstr "" "Ούτε απαιτείται εάν διανέμετε μια εφαρμογή *εκτός* του macOS App Store. " "Απαιτείται *μόνο* εάν χρησιμοποιείτε το macOS App Store ως κανάλι διανομής." -#: using/mac.rst:470 +#: using/mac.rst:471 msgid "Other Resources" msgstr "Άλλοι πόροι" -#: using/mac.rst:472 +#: using/mac.rst:473 msgid "" "The `python.org Help page `_ has links " "to many useful resources. The `Pythonmac-SIG mailing list `_ είναι ένας " "άλλος πόρος υποστήριξης ειδικά για χρήστες και προγραμματιστές Python στο " "Mac." + +#~ msgid "(Experimental)" +#~ msgstr "(Πειραματικό)" + +#~ msgid "" +#~ "Everything described in this section is considered experimental, and " +#~ "should be expected to change in future releases." +#~ msgstr "" +#~ "Όλα όσα περιγράφονται σε αυτήν την ενότητα θεωρούνται πειραματικά και θα " +#~ "πρέπει να αναμένονται να αλλάξουν σε μελλοντικές εκδόσεις." + +#~ msgid "|usemac_python_x_dot_y_t_literal| ``-m venv ``" +#~ msgstr "|usemac_python_x_dot_y_t_literal| ``-m venv ``" + +#~ msgid "|usemac_python_x_dot_y_t_literal| ``-m idlelib``" +#~ msgstr "|usemac_python_x_dot_y_t_literal| ``-m idlelib``" diff --git a/using/unix.po b/using/unix.po index bca5f7f6..f3e8fce0 100644 --- a/using/unix.po +++ b/using/unix.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-03 17:10+0300\n" "Last-Translator: Kleopatra Karapanagiotou \n" "Language-Team: PyGreece \n" diff --git a/using/windows.po b/using/windows.po index 55c5af9e..596cd08a 100644 --- a/using/windows.po +++ b/using/windows.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -118,56 +118,49 @@ msgstr "" #: using/windows.rst:79 msgid "" "After installation, the ``python``, ``py``, and ``pymanager`` commands " -"should be available. If they are not, click Start and search for \"Manage " -"app execution aliases\". This settings page will let you enable the relevant " -"commands. They will be labelled \"Python (default)\", \"Python (default " -"windowed)\", and \"Python install manager\"." +"should be available. If you have existing installations of Python, or you " +"have modified your :envvar:`PATH` variable, you may need to remove them or " +"undo the modifications. See :ref:`pymanager-troubleshoot` for more help with " +"fixing non-working commands." msgstr "" #: using/windows.rst:85 msgid "" -"If you have existing installations of Python, or you have modified your :" -"envvar:`PATH` variable, you may need to remove them or undo the " -"modifications in order for the commands to work. Old versions of Python can " -"be reinstalled using the Python install manager." -msgstr "" - -#: using/windows.rst:90 -msgid "" "When you first install a runtime, you will likely be prompted to add a " "directory to your :envvar:`PATH`. This is optional, if you prefer to use the " "``py`` command, but is offered for those who prefer the full range of " "aliases (such as ``python3.14.exe``) to be available. The directory will be :" -"file:`%LocalAppData%\\Python\\bin` by default, but may be customized by an " -"administrator. Click Start and search for \"Edit environment variables for " -"your account\" for the system settings page to add the path." +"file:`%LocalAppData%\\\\Python\\\\bin` by default, but may be customized by " +"an administrator. Click Start and search for \"Edit environment variables " +"for your account\" for the system settings page to add the path." msgstr "" -#: using/windows.rst:98 +#: using/windows.rst:93 msgid "" "Each Python runtime you install will have its own directory for scripts. " "These also need to be added to :envvar:`PATH` if you want to use them." msgstr "" -#: using/windows.rst:101 +#: using/windows.rst:96 msgid "" "The Python install manager will be automatically updated to new releases. " "This does not affect any installs of Python runtimes. Uninstalling the " "Python install manager does not uninstall any Python runtimes." msgstr "" -#: using/windows.rst:105 +#: using/windows.rst:100 msgid "" "If you are not able to install an MSIX in your context, for example, you are " -"using automated deployment software that does not support it, please see :" -"ref:`pymanager-advancedinstall` below for more information." +"using automated deployment software that does not support it, or are " +"targeting Windows Server 2019, please see :ref:`pymanager-advancedinstall` " +"below for more information." msgstr "" -#: using/windows.rst:111 +#: using/windows.rst:107 msgid "Basic Use" msgstr "" -#: using/windows.rst:113 +#: using/windows.rst:109 msgid "" "The recommended command for launching Python is ``python``, which will " "either launch the version requested by the script being launched, an active " @@ -177,7 +170,7 @@ msgid "" "latest release will be installed automatically." msgstr "" -#: using/windows.rst:120 +#: using/windows.rst:116 msgid "" "For all scenarios involving multiple runtime versions, the recommended " "command is ``py``. This may be used anywhere in place of ``python`` or the " @@ -187,7 +180,7 @@ msgid "" "below." msgstr "" -#: using/windows.rst:126 +#: using/windows.rst:122 msgid "" "Because the ``py`` command may already be taken by the previous version, " "there is also an unambiguous ``pymanager`` command. Scripted installs that " @@ -199,7 +192,7 @@ msgid "" "provides equivalent behaviour to ``py ...``)." msgstr "" -#: using/windows.rst:135 +#: using/windows.rst:131 msgid "" "Each of these commands also has a windowed version that avoids creating a " "console window. These are ``pyw``, ``pythonw`` and ``pymanagerw``. A " @@ -208,14 +201,14 @@ msgid "" "Windows, but is not meant to be widely used or recommended." msgstr "" -#: using/windows.rst:141 +#: using/windows.rst:137 msgid "" "To launch your default runtime, run ``python`` or ``py`` with the arguments " "you want to be passed to the runtime (such as script files or the module to " "launch):" msgstr "" -#: using/windows.rst:144 +#: using/windows.rst:140 msgid "" "$> py\n" "...\n" @@ -225,6 +218,13 @@ msgid "" "..." msgstr "" +#: using/windows.rst:149 +msgid "" +"The default runtime can be overridden with the :envvar:" +"`PYTHON_MANAGER_DEFAULT` environment variable, or a configuration file. See :" +"ref:`pymanager-config` for information about configuration settings." +msgstr "" + #: using/windows.rst:153 msgid "" "To launch a specific runtime, the ``py`` command accepts a ``-V:`` " @@ -577,7 +577,7 @@ msgstr "" msgid "Environment Variable" msgstr "" -#: using/windows.rst:1247 using/windows.rst:1862 +#: using/windows.rst:1301 using/windows.rst:1916 msgid "Description" msgstr "" @@ -767,15 +767,15 @@ msgstr "" msgid "````" msgstr "" -#: using/windows.rst:1636 +#: using/windows.rst:1690 msgid "For example, if the first line of your script starts with" msgstr "" -#: using/windows.rst:1638 +#: using/windows.rst:1692 msgid "#! /usr/bin/python" msgstr "" -#: using/windows.rst:1642 +#: using/windows.rst:1696 msgid "" "The default Python or an active virtual environment will be located and " "used. As many Python scripts written to work on Unix will already have this " @@ -797,6 +797,13 @@ msgstr "" #: using/windows.rst:475 msgid "" +"If no runtimes are installed, or if automatic installation is enabled, the " +"requested runtime will be installed if necessary. See :ref:`pymanager-" +"config` for information about configuration settings." +msgstr "" + +#: using/windows.rst:479 +msgid "" "The ``/usr/bin/env`` form of shebang line will also search the :envvar:" "`PATH` environment variable for unrecognized commands. This corresponds to " "the behaviour of the Unix ``env`` program, which performs the same search, " @@ -805,7 +812,7 @@ msgid "" "``shebang_can_run_anything`` configuration option." msgstr "" -#: using/windows.rst:482 +#: using/windows.rst:486 msgid "" "Shebang lines that do not match any of patterns are treated as *Windows* " "executable paths that are absolute or relative to the directory containing " @@ -817,11 +824,11 @@ msgid "" "``shebang_can_run_anything`` configuration option." msgstr "" -#: using/windows.rst:506 +#: using/windows.rst:518 msgid "Advanced Installation" msgstr "" -#: using/windows.rst:508 +#: using/windows.rst:520 msgid "" "For situations where an MSIX cannot be installed, such as some older " "administrative distribution platforms, there is an MSI available from the " @@ -832,7 +839,13 @@ msgid "" "configuration." msgstr "" -#: using/windows.rst:515 +#: using/windows.rst:529 +msgid "" +"Windows Server 2019 is the only version of Windows that CPython supports " +"that does not support MSIX. For Windows Server 2019, you should use the MSI." +msgstr "" + +#: using/windows.rst:532 msgid "" "Be aware that the MSI package does not bundle any runtimes, and so is not " "suitable for installs into offline environments without also creating an " @@ -840,7 +853,7 @@ msgid "" "admin-config` for information on handling these scenarios." msgstr "" -#: using/windows.rst:520 +#: using/windows.rst:537 msgid "" "Runtimes installed by the MSI are shared with those installed by the MSIX, " "and are all per-user only. The Python install manager does not support " @@ -850,7 +863,7 @@ msgid "" "menu." msgstr "" -#: using/windows.rst:526 +#: using/windows.rst:543 msgid "" "When the MSIX is installed, but commands are not available in the :envvar:" "`PATH` environment variable, they can be found under :file:`%LocalAppData%\\" @@ -862,16 +875,45 @@ msgid "" "recommended." msgstr "" -#: using/windows.rst:535 +#: using/windows.rst:552 +msgid "" +"To programmatically install the Python install manager, it is easiest to use " +"WinGet, which is included with all supported versions of Windows:" +msgstr "" + +#: using/windows.rst:555 +msgid "" +"$> winget install 9NQ7512CXL7T -e --accept-package-agreements --disable-" +"interactivity\n" +"\n" +"# Optionally run the configuration checker and accept all changes\n" +"$> py install --configure -y" +msgstr "" + +#: using/windows.rst:562 +msgid "" +"To download the Python install manager and install on another machine, the " +"following WinGet command will download the required files from the Store to " +"your Downloads directory (add ``-d `` to customize the output " +"location). This also generates a YAML file that appears to be unnecessary, " +"as the downloaded MSIX can be installed by launching or using the commands " +"below." +msgstr "" + +#: using/windows.rst:568 +msgid "" +"$> winget download 9NQ7512CXL7T -e --skip-license --accept-package-" +"agreements --accept-source-agreements" +msgstr "" + +#: using/windows.rst:572 msgid "" -"To programmatically install or uninstall the MSIX without using your " -"distribution platform's native support, the `Add-AppxPackage `_ and `Remove-" -"AppxPackage `_ PowerShell cmdlets are simplest to use:" +"To programmatically install or uninstall an MSIX using only PowerShell, the " +"`Add-AppxPackage`_ and `Remove-AppxPackage`_ PowerShell cmdlets are " +"recommended:" msgstr "" -#: using/windows.rst:541 +#: using/windows.rst:575 msgid "" "$> Add-AppxPackage C:\\Downloads\\python-manager-25.0.msix\n" "...\n" @@ -879,23 +921,52 @@ msgid "" "AppxPackage" msgstr "" -#: using/windows.rst:547 +#: using/windows.rst:581 +msgid "" +"The latest release can be downloaded and installed by Windows by passing the " +"AppInstaller file to the Add-AppxPackage command. This installs using the " +"MSIX on python.org, and is only recommended for cases where installing via " +"the Store (interactively or using WinGet) is not possible." +msgstr "" + +#: using/windows.rst:586 +msgid "" +"$> Add-AppxPackage -AppInstallerFile https://www.python.org/ftp/python/" +"pymanager/pymanager.appinstaller" +msgstr "" + +#: using/windows.rst:590 +msgid "" +"Other tools and APIs may also be used to provision an MSIX package for all " +"users on a machine, but Python does not consider this a supported scenario. " +"We suggest looking into the PowerShell `Add-AppxProvisionedPackage`_ cmdlet, " +"the native Windows `PackageManager`_ class, or the documentation and support " +"for your deployment tool." +msgstr "" + +#: using/windows.rst:596 +msgid "" +"Regardless of the install method, users will still need to install their own " +"copies of Python itself, as there is no way to trigger those installs " +"without being a logged in user. When using the MSIX, the latest version of " +"Python will be available for all users to install without network access." +msgstr "" + +#: using/windows.rst:601 msgid "" -"The native APIs for package management may be found on the Windows " -"`PackageManager `_ class. The :func:`!AddPackageAsync` method " -"installs for the current user, or use :func:`!StagePackageAsync` followed " -"by :func:`!ProvisionPackageForAllUsersAsync` to install the Python install " -"manager for all users from the MSIX package. Users will still need to " -"install their own copies of Python itself, as there is no way to trigger " -"those installs without being a logged in user." +"Note that the MSIX downloadable from the Store and from the Python website " +"are subtly different and cannot be installed at the same time. Wherever " +"possible, we suggest using the above WinGet commands to download the package " +"from the Store to reduce the risk of setting up conflicting installs. There " +"are no licensing restrictions on the Python install manager that would " +"prevent using the Store package in this way." msgstr "" -#: using/windows.rst:558 +#: using/windows.rst:612 msgid "Administrative Configuration" msgstr "" -#: using/windows.rst:560 +#: using/windows.rst:614 msgid "" "There are a number of options that may be useful for administrators to " "override configuration of the Python install manager. These can be used to " @@ -904,7 +975,7 @@ msgid "" "below." msgstr "" -#: using/windows.rst:565 +#: using/windows.rst:619 msgid "" "Configuration options may be overridden in the registry by setting values " "under :file:`HKEY_LOCAL_MACHINE\\\\Software\\\\Policies\\\\Python\\" @@ -917,7 +988,7 @@ msgid "" "``base_config`` allows users to further modify settings they may need." msgstr "" -#: using/windows.rst:575 +#: using/windows.rst:629 msgid "" "Note that most settings with environment variables support those variables " "because their default setting specifies the variable. If you override them, " @@ -929,13 +1000,13 @@ msgid "" "environment variable will be used instead." msgstr "" -#: using/windows.rst:584 +#: using/windows.rst:638 msgid "" "Configuration settings that are paths are interpreted as relative to the " "directory containing the configuration file that specified them." msgstr "" -#: using/windows.rst:587 +#: using/windows.rst:641 msgid "Administrative configuration options" msgstr "" @@ -1053,34 +1124,34 @@ msgid "" "other than a Python runtime." msgstr "" -#: using/windows.rst:1426 +#: using/windows.rst:1480 msgid "Installing Free-threaded Binaries" msgstr "" -#: using/windows.rst:874 using/windows.rst:1428 +#: using/windows.rst:928 using/windows.rst:1482 msgid "(Experimental)" msgstr "" -#: using/windows.rst:878 using/windows.rst:1432 +#: using/windows.rst:932 using/windows.rst:1486 msgid "" "Everything described in this section is considered experimental, and should " "be expected to change in future releases." msgstr "" -#: using/windows.rst:640 +#: using/windows.rst:694 msgid "" "Pre-built distributions of the experimental free-threaded build are " "available by installing tags with the ``t`` suffix." msgstr "" -#: using/windows.rst:643 +#: using/windows.rst:697 msgid "" "$> py install 3.14t\n" "$> py install 3.14t-arm64\n" "$> py install 3.14t-32" msgstr "" -#: using/windows.rst:649 +#: using/windows.rst:703 msgid "" "This will install and register as normal. If you have no other runtimes " "installed, then ``python`` will launch this one. Otherwise, you will need to " @@ -1089,11 +1160,11 @@ msgid "" "commands." msgstr "" -#: using/windows.rst:665 +#: using/windows.rst:719 msgid "Troubleshooting" msgstr "" -#: using/windows.rst:659 +#: using/windows.rst:713 msgid "" "If your Python install manager does not seem to be working correctly, please " "work through these tests and fixes to see if it helps. If not, please report " @@ -1231,28 +1302,28 @@ msgid "" "for each runtime, and so you may need to add multiple paths." msgstr "" -#: using/windows.rst:734 +#: using/windows.rst:788 msgid "The embeddable package" msgstr "" -#: using/windows.rst:738 +#: using/windows.rst:792 msgid "" "The embedded distribution is a ZIP file containing a minimal Python " "environment. It is intended for acting as part of another application, " "rather than being directly accessed by end-users." msgstr "" -#: using/windows.rst:742 +#: using/windows.rst:796 msgid "" "To install an embedded distribution, we recommend using ``py install`` with " "the ``--target`` option:" msgstr "" -#: using/windows.rst:745 +#: using/windows.rst:799 msgid "$> py install 3.14-embed --target=runtime" msgstr "" -#: using/windows.rst:749 +#: using/windows.rst:803 msgid "" "When extracted, the embedded distribution is (almost) fully isolated from " "the user's system, including environment variables, system registry " @@ -1263,14 +1334,14 @@ msgid "" "documentation are not included." msgstr "" -#: using/windows.rst:756 +#: using/windows.rst:810 msgid "" "A default ``._pth`` file is included, which further restricts the default " "search paths (as described below in :ref:`windows_finding_modules`). This " "file is intended for embedders to modify as necessary." msgstr "" -#: using/windows.rst:760 +#: using/windows.rst:814 msgid "" "Third-party packages should be installed by the application installer " "alongside the embedded distribution. Using pip to manage dependencies as for " @@ -1281,16 +1352,16 @@ msgid "" "compatibility with newer versions before providing updates to users." msgstr "" -#: using/windows.rst:768 +#: using/windows.rst:822 msgid "" "The two recommended use cases for this distribution are described below." msgstr "" -#: using/windows.rst:771 +#: using/windows.rst:825 msgid "Python Application" msgstr "" -#: using/windows.rst:773 +#: using/windows.rst:827 msgid "" "An application written in Python does not necessarily require users to be " "aware of that fact. The embedded distribution may be used in this case to " @@ -1299,7 +1370,7 @@ msgid "" "there are two options." msgstr "" -#: using/windows.rst:779 +#: using/windows.rst:833 msgid "" "Using a specialized executable as a launcher requires some coding, but " "provides the most transparent experience for users. With a customized " @@ -1310,7 +1381,7 @@ msgid "" "line." msgstr "" -#: using/windows.rst:786 +#: using/windows.rst:840 msgid "" "The simpler approach is to provide a batch file or generated shortcut that " "directly calls the ``python.exe`` or ``pythonw.exe`` with the required " @@ -1319,7 +1390,7 @@ msgid "" "from other running Python processes or file associations." msgstr "" -#: using/windows.rst:792 +#: using/windows.rst:846 msgid "" "With the latter approach, packages should be installed as directories " "alongside the Python executable to ensure they are available on the path. " @@ -1328,11 +1399,11 @@ msgid "" "application." msgstr "" -#: using/windows.rst:798 +#: using/windows.rst:852 msgid "Embedding Python" msgstr "" -#: using/windows.rst:800 +#: using/windows.rst:854 msgid "" "Applications written in native code often require some form of scripting " "language, and the embedded Python distribution can be used for this purpose. " @@ -1343,7 +1414,7 @@ msgid "" "interpreter." msgstr "" -#: using/windows.rst:807 +#: using/windows.rst:861 msgid "" "As with the application use, packages can be installed to any location as " "there is an opportunity to specify search paths before initializing the " @@ -1351,11 +1422,11 @@ msgid "" "the embedded distribution and a regular installation." msgstr "" -#: using/windows.rst:816 +#: using/windows.rst:870 msgid "The nuget.org packages" msgstr "" -#: using/windows.rst:820 +#: using/windows.rst:874 msgid "" "The nuget.org package is a reduced size Python environment intended for use " "on continuous integration and build systems that do not have a system-wide " @@ -1363,14 +1434,14 @@ msgid "" "works perfectly fine for packages containing build-time tools." msgstr "" -#: using/windows.rst:825 +#: using/windows.rst:879 msgid "" "Visit `nuget.org `_ for the most up-to-date " "information on using nuget. What follows is a summary that is sufficient for " "Python developers." msgstr "" -#: using/windows.rst:829 +#: using/windows.rst:883 msgid "" "The ``nuget.exe`` command line tool may be downloaded directly from " "``https://aka.ms/nugetclidl``, for example, using curl or PowerShell. With " @@ -1378,13 +1449,13 @@ msgid "" "installed using::" msgstr "" -#: using/windows.rst:834 +#: using/windows.rst:888 msgid "" "nuget.exe install python -ExcludeVersion -OutputDirectory .\n" "nuget.exe install pythonx86 -ExcludeVersion -OutputDirectory ." msgstr "" -#: using/windows.rst:837 +#: using/windows.rst:891 msgid "" "To select a particular version, add a ``-Version 3.x.y``. The output " "directory may be changed from ``.``, and the package will be installed into " @@ -1394,7 +1465,7 @@ msgid "" "directory that contains the Python installation:" msgstr "" -#: using/windows.rst:844 +#: using/windows.rst:898 msgid "" "# Without -ExcludeVersion\n" "> .\\python.3.5.2\\tools\\python.exe -V\n" @@ -1405,7 +1476,7 @@ msgid "" "Python 3.5.2" msgstr "" -#: using/windows.rst:854 +#: using/windows.rst:908 msgid "" "In general, nuget packages are not upgradeable, and newer versions should be " "installed side-by-side and referenced using the full path. Alternatively, " @@ -1413,7 +1484,7 @@ msgid "" "will do this automatically if they do not preserve files between builds." msgstr "" -#: using/windows.rst:859 +#: using/windows.rst:913 msgid "" "Alongside the ``tools`` directory is a ``build\\native`` directory. This " "contains a MSBuild properties file ``python.props`` that can be used in a C+" @@ -1421,7 +1492,7 @@ msgid "" "automatically use the headers and import libraries in your build." msgstr "" -#: using/windows.rst:864 +#: using/windows.rst:918 msgid "" "The package information pages on nuget.org are `www.nuget.org/packages/" "python `_ for the 64-bit version, " @@ -1430,11 +1501,11 @@ msgid "" "`_ for the ARM64 version" msgstr "" -#: using/windows.rst:872 +#: using/windows.rst:926 msgid "Free-threaded packages" msgstr "" -#: using/windows.rst:881 +#: using/windows.rst:935 msgid "" "Packages containing free-threaded binaries are named `python-freethreaded " "`_ for the 64-bit " @@ -1445,45 +1516,45 @@ msgid "" "exe`` entry points, both of which run free threaded." msgstr "" -#: using/windows.rst:892 +#: using/windows.rst:946 msgid "Alternative bundles" msgstr "" -#: using/windows.rst:894 +#: using/windows.rst:948 msgid "" "Besides the standard CPython distribution, there are modified packages " "including additional functionality. The following is a list of popular " "versions and their key features:" msgstr "" -#: using/windows.rst:898 +#: using/windows.rst:952 msgid "`ActivePython `_" msgstr "" -#: using/windows.rst:899 +#: using/windows.rst:953 msgid "Installer with multi-platform compatibility, documentation, PyWin32" msgstr "" -#: using/windows.rst:901 +#: using/windows.rst:955 msgid "`Anaconda `_" msgstr "" -#: using/windows.rst:902 +#: using/windows.rst:956 msgid "" "Popular scientific modules (such as numpy, scipy and pandas) and the " "``conda`` package manager." msgstr "" -#: using/windows.rst:905 +#: using/windows.rst:959 msgid "" "`Enthought Deployment Manager `_" msgstr "" -#: using/windows.rst:906 +#: using/windows.rst:960 msgid "\"The Next Generation Python Environment and Package Manager\"." msgstr "" -#: using/windows.rst:908 +#: using/windows.rst:962 msgid "" "Previously Enthought provided Canopy, but it `reached end of life in 2016 " "`_." msgstr "" -#: using/windows.rst:911 +#: using/windows.rst:965 msgid "`WinPython `_" msgstr "" -#: using/windows.rst:912 +#: using/windows.rst:966 msgid "" "Windows-specific distribution with prebuilt scientific packages and tools " "for building packages." msgstr "" -#: using/windows.rst:915 +#: using/windows.rst:969 msgid "" "Note that these packages may not include the latest versions of Python or " "other libraries, and are not maintained or supported by the core Python team." msgstr "" -#: using/windows.rst:920 +#: using/windows.rst:974 msgid "Supported Windows versions" msgstr "" -#: using/windows.rst:922 +#: using/windows.rst:976 msgid "" "As specified in :pep:`11`, a Python release only supports a Windows platform " "while Microsoft considers the platform under extended support. This means " @@ -1520,17 +1591,17 @@ msgid "" "please install Python 3.12." msgstr "" -#: using/windows.rst:1213 +#: using/windows.rst:1267 msgid "Removing the MAX_PATH Limitation" msgstr "" -#: using/windows.rst:1215 +#: using/windows.rst:1269 msgid "" "Windows historically has limited path lengths to 260 characters. This meant " "that paths longer than this would not resolve and errors would result." msgstr "" -#: using/windows.rst:937 +#: using/windows.rst:991 msgid "" "In the latest versions of Windows, this limitation can be expanded to over " "32,000 characters. Your administrator will need to activate the \"Enable " @@ -1539,36 +1610,36 @@ msgid "" "``HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\FileSystem``." msgstr "" -#: using/windows.rst:1224 +#: using/windows.rst:1278 msgid "" "This allows the :func:`open` function, the :mod:`os` module and most other " "path functionality to accept and return paths longer than 260 characters." msgstr "" -#: using/windows.rst:945 +#: using/windows.rst:999 msgid "" "After changing the above option and rebooting, no further configuration is " "required." msgstr "" -#: using/windows.rst:952 +#: using/windows.rst:1006 msgid "UTF-8 mode" msgstr "" -#: using/windows.rst:956 +#: using/windows.rst:1010 msgid "" "Windows still uses legacy encodings for the system encoding (the ANSI Code " "Page). Python uses it for the default encoding of text files (e.g. :func:" "`locale.getencoding`)." msgstr "" -#: using/windows.rst:960 +#: using/windows.rst:1014 msgid "" "This may cause issues because UTF-8 is widely used on the internet and most " "Unix systems, including WSL (Windows Subsystem for Linux)." msgstr "" -#: using/windows.rst:963 +#: using/windows.rst:1017 msgid "" "You can use the :ref:`Python UTF-8 Mode ` to change the default " "text encoding to UTF-8. You can enable the :ref:`Python UTF-8 Mode ` is enabled, you can still use " "the system encoding (the ANSI Code Page) via the \"mbcs\" codec." msgstr "" -#: using/windows.rst:972 +#: using/windows.rst:1026 msgid "" "Note that adding ``PYTHONUTF8=1`` to the default environment variables will " "affect all Python 3.7+ applications on your system. If you have any Python " @@ -1592,45 +1663,45 @@ msgid "" "utf8`` command line option." msgstr "" -#: using/windows.rst:979 +#: using/windows.rst:1033 msgid "" "Even when UTF-8 mode is disabled, Python uses UTF-8 by default on Windows " "for:" msgstr "" -#: using/windows.rst:982 +#: using/windows.rst:1036 msgid "Console I/O including standard I/O (see :pep:`528` for details)." msgstr "" -#: using/windows.rst:983 +#: using/windows.rst:1037 msgid "" "The :term:`filesystem encoding ` " "(see :pep:`529` for details)." msgstr "" -#: using/windows.rst:990 +#: using/windows.rst:1044 msgid "Finding modules" msgstr "" -#: using/windows.rst:992 +#: using/windows.rst:1046 msgid "" "These notes supplement the description at :ref:`sys-path-init` with detailed " "Windows notes." msgstr "" -#: using/windows.rst:995 +#: using/windows.rst:1049 msgid "" "When no ``._pth`` file is found, this is how :data:`sys.path` is populated " "on Windows:" msgstr "" -#: using/windows.rst:998 +#: using/windows.rst:1052 msgid "" "An empty entry is added at the start, which corresponds to the current " "directory." msgstr "" -#: using/windows.rst:1001 +#: using/windows.rst:1055 msgid "" "If the environment variable :envvar:`PYTHONPATH` exists, as described in :" "ref:`using-on-envvars`, its entries are added next. Note that on Windows, " @@ -1638,7 +1709,7 @@ msgid "" "from the colon used in drive identifiers (``C:\\`` etc.)." msgstr "" -#: using/windows.rst:1006 +#: using/windows.rst:1060 msgid "" "Additional \"application paths\" can be added in the registry as subkeys of :" "samp:`\\\\SOFTWARE\\\\Python\\\\PythonCore\\\\{version}\\\\PythonPath` under " @@ -1648,7 +1719,7 @@ msgid "" "installers only use HKLM, so HKCU is typically empty.)" msgstr "" -#: using/windows.rst:1013 +#: using/windows.rst:1067 msgid "" "If the environment variable :envvar:`PYTHONHOME` is set, it is assumed as " "\"Python Home\". Otherwise, the path of the main Python executable is used " @@ -1659,31 +1730,31 @@ msgid "" "PythonPath stored in the registry." msgstr "" -#: using/windows.rst:1021 +#: using/windows.rst:1075 msgid "" "If the Python Home cannot be located, no :envvar:`PYTHONPATH` is specified " "in the environment, and no registry entries can be found, a default path " "with relative entries is used (e.g. ``.\\Lib;.\\plat-win``, etc)." msgstr "" -#: using/windows.rst:1025 +#: using/windows.rst:1079 msgid "" "If a ``pyvenv.cfg`` file is found alongside the main executable or in the " "directory one level above the executable, the following variations apply:" msgstr "" -#: using/windows.rst:1028 +#: using/windows.rst:1082 msgid "" "If ``home`` is an absolute path and :envvar:`PYTHONHOME` is not set, this " "path is used instead of the path to the main executable when deducing the " "home location." msgstr "" -#: using/windows.rst:1032 +#: using/windows.rst:1086 msgid "The end result of all this is:" msgstr "" -#: using/windows.rst:1034 +#: using/windows.rst:1088 msgid "" "When running :file:`python.exe`, or any other .exe in the main Python " "directory (either an installed version, or directly from the PCbuild " @@ -1691,7 +1762,7 @@ msgid "" "ignored. Other \"application paths\" in the registry are always read." msgstr "" -#: using/windows.rst:1039 +#: using/windows.rst:1093 msgid "" "When Python is hosted in another .exe (different directory, embedded via " "COM, etc), the \"Python Home\" will not be deduced, so the core path from " @@ -1699,20 +1770,20 @@ msgid "" "always read." msgstr "" -#: using/windows.rst:1043 +#: using/windows.rst:1097 msgid "" "If Python can't find its home and there are no registry value (frozen .exe, " "some very strange installation setup) you get a path with some default, but " "relative, paths." msgstr "" -#: using/windows.rst:1047 +#: using/windows.rst:1101 msgid "" "For those who want to bundle Python into their application or distribution, " "the following advice will prevent conflicts with other installations:" msgstr "" -#: using/windows.rst:1050 +#: using/windows.rst:1104 msgid "" "Include a ``._pth`` file alongside your executable containing the " "directories to include. This will ignore paths listed in the registry and " @@ -1720,20 +1791,20 @@ msgid "" "listed." msgstr "" -#: using/windows.rst:1055 +#: using/windows.rst:1109 msgid "" "If you are loading :file:`python3.dll` or :file:`python37.dll` in your own " "executable, explicitly set :c:member:`PyConfig.module_search_paths` before :" "c:func:`Py_InitializeFromConfig`." msgstr "" -#: using/windows.rst:1059 +#: using/windows.rst:1113 msgid "" "Clear and/or overwrite :envvar:`PYTHONPATH` and set :envvar:`PYTHONHOME` " "before launching :file:`python.exe` from your application." msgstr "" -#: using/windows.rst:1062 +#: using/windows.rst:1116 msgid "" "If you cannot use the previous suggestions (for example, you are a " "distribution that allows people to run :file:`python.exe` directly), ensure " @@ -1742,7 +1813,7 @@ msgid "" "correctly named ZIP file will be detected instead.)" msgstr "" -#: using/windows.rst:1068 +#: using/windows.rst:1122 msgid "" "These will ensure that the files in a system-wide installation will not take " "precedence over the copy of the standard library bundled with your " @@ -1752,19 +1823,19 @@ msgid "" "packages." msgstr "" -#: using/windows.rst:1076 +#: using/windows.rst:1130 msgid "" "Add ``._pth`` file support and removes ``applocal`` option from ``pyvenv." "cfg``." msgstr "" -#: using/windows.rst:1081 +#: using/windows.rst:1135 msgid "" "Add :file:`python{XX}.zip` as a potential landmark when directly adjacent to " "the executable." msgstr "" -#: using/windows.rst:1086 +#: using/windows.rst:1140 msgid "" "Modules specified in the registry under ``Modules`` (not ``PythonPath``) may " "be imported by :class:`importlib.machinery.WindowsRegistryFinder`. This " @@ -1772,86 +1843,86 @@ msgid "" "explicitly added to :data:`sys.meta_path` in the future." msgstr "" -#: using/windows.rst:1092 +#: using/windows.rst:1146 msgid "Additional modules" msgstr "" -#: using/windows.rst:1094 +#: using/windows.rst:1148 msgid "" "Even though Python aims to be portable among all platforms, there are " "features that are unique to Windows. A couple of modules, both in the " "standard library and external, and snippets exist to use these features." msgstr "" -#: using/windows.rst:1098 +#: using/windows.rst:1152 msgid "" "The Windows-specific standard modules are documented in :ref:`mswin-specific-" "services`." msgstr "" -#: using/windows.rst:1102 +#: using/windows.rst:1156 msgid "PyWin32" msgstr "" -#: using/windows.rst:1104 +#: using/windows.rst:1158 msgid "" "The :pypi:`PyWin32` module by Mark Hammond is a collection of modules for " "advanced Windows-specific support. This includes utilities for:" msgstr "" -#: using/windows.rst:1108 +#: using/windows.rst:1162 msgid "" "`Component Object Model `_ (COM)" msgstr "" -#: using/windows.rst:1111 +#: using/windows.rst:1165 msgid "Win32 API calls" msgstr "" -#: using/windows.rst:1112 +#: using/windows.rst:1166 msgid "Registry" msgstr "" -#: using/windows.rst:1113 +#: using/windows.rst:1167 msgid "Event log" msgstr "" -#: using/windows.rst:1114 +#: using/windows.rst:1168 msgid "" "`Microsoft Foundation Classes `_ (MFC) user interfaces" msgstr "" -#: using/windows.rst:1118 +#: using/windows.rst:1172 msgid "" "`PythonWin `_ is a sample MFC application shipped with PyWin32. " "It is an embeddable IDE with a built-in debugger." msgstr "" -#: using/windows.rst:1124 +#: using/windows.rst:1178 msgid "" "`Win32 How Do I...? `_" msgstr "" -#: using/windows.rst:1125 +#: using/windows.rst:1179 msgid "by Tim Golden" msgstr "" -#: using/windows.rst:1127 +#: using/windows.rst:1181 msgid "`Python and COM `_" msgstr "" -#: using/windows.rst:1128 +#: using/windows.rst:1182 msgid "by David and Paul Boddie" msgstr "" -#: using/windows.rst:1132 +#: using/windows.rst:1186 msgid "cx_Freeze" msgstr "" -#: using/windows.rst:1134 +#: using/windows.rst:1188 msgid "" "`cx_Freeze `_ wraps Python " "scripts into executable Windows programs (:file:`{*}.exe` files). When you " @@ -1859,11 +1930,11 @@ msgid "" "users to install Python." msgstr "" -#: using/windows.rst:1141 +#: using/windows.rst:1195 msgid "Compiling Python on Windows" msgstr "" -#: using/windows.rst:1143 +#: using/windows.rst:1197 msgid "" "If you want to compile CPython yourself, first thing you should do is get " "the `source `_. You can download " @@ -1871,38 +1942,38 @@ msgid "" "devguide.python.org/setup/#get-the-source-code>`_." msgstr "" -#: using/windows.rst:1148 +#: using/windows.rst:1202 msgid "" "The source tree contains a build solution and project files for Microsoft " "Visual Studio, which is the compiler used to build the official Python " "releases. These files are in the :file:`PCbuild` directory." msgstr "" -#: using/windows.rst:1152 +#: using/windows.rst:1206 msgid "" "Check :file:`PCbuild/readme.txt` for general information on the build " "process." msgstr "" -#: using/windows.rst:1154 +#: using/windows.rst:1208 msgid "For extension modules, consult :ref:`building-on-windows`." msgstr "" -#: using/windows.rst:1161 +#: using/windows.rst:1215 msgid "The full installer (deprecated)" msgstr "" -#: using/windows.rst:1165 +#: using/windows.rst:1219 msgid "" "This installer is deprecated since 3.14 and will not be produced for Python " "3.16 or later. See :ref:`pymanager` for the modern installer." msgstr "" -#: using/windows.rst:1170 +#: using/windows.rst:1224 msgid "Installation steps" msgstr "" -#: using/windows.rst:1172 +#: using/windows.rst:1226 msgid "" "Four Python |version| installers are available for download - two each for " "the 32-bit and 64-bit versions of the interpreter. The *web installer* is a " @@ -1913,43 +1984,43 @@ msgid "" "ways to avoid downloading during installation." msgstr "" -#: using/windows.rst:1180 +#: using/windows.rst:1234 msgid "After starting the installer, one of two options may be selected:" msgstr "" -#: using/windows.rst:1184 +#: using/windows.rst:1238 msgid "If you select \"Install Now\":" msgstr "" -#: using/windows.rst:1186 +#: using/windows.rst:1240 msgid "" "You will *not* need to be an administrator (unless a system update for the C " "Runtime Library is required or you install the :ref:`launcher` for all users)" msgstr "" -#: using/windows.rst:1189 +#: using/windows.rst:1243 msgid "Python will be installed into your user directory" msgstr "" -#: using/windows.rst:1190 +#: using/windows.rst:1244 msgid "" "The :ref:`launcher` will be installed according to the option at the bottom " "of the first page" msgstr "" -#: using/windows.rst:1192 +#: using/windows.rst:1246 msgid "The standard library, test suite, launcher and pip will be installed" msgstr "" -#: using/windows.rst:1193 +#: using/windows.rst:1247 msgid "If selected, the install directory will be added to your :envvar:`PATH`" msgstr "" -#: using/windows.rst:1194 +#: using/windows.rst:1248 msgid "Shortcuts will only be visible for the current user" msgstr "" -#: using/windows.rst:1196 +#: using/windows.rst:1250 msgid "" "Selecting \"Customize installation\" will allow you to select the features " "to install, the installation location and other options or post-install " @@ -1957,42 +2028,42 @@ msgid "" "option." msgstr "" -#: using/windows.rst:1200 +#: using/windows.rst:1254 msgid "" "To perform an all-users installation, you should select \"Customize " "installation\". In this case:" msgstr "" -#: using/windows.rst:1203 +#: using/windows.rst:1257 msgid "You may be required to provide administrative credentials or approval" msgstr "" -#: using/windows.rst:1204 +#: using/windows.rst:1258 msgid "Python will be installed into the Program Files directory" msgstr "" -#: using/windows.rst:1205 +#: using/windows.rst:1259 msgid "The :ref:`launcher` will be installed into the Windows directory" msgstr "" -#: using/windows.rst:1206 +#: using/windows.rst:1260 msgid "Optional features may be selected during installation" msgstr "" -#: using/windows.rst:1207 +#: using/windows.rst:1261 msgid "The standard library can be pre-compiled to bytecode" msgstr "" -#: using/windows.rst:1208 +#: using/windows.rst:1262 msgid "" "If selected, the install directory will be added to the system :envvar:`PATH`" msgstr "" -#: using/windows.rst:1209 +#: using/windows.rst:1263 msgid "Shortcuts are available for all users" msgstr "" -#: using/windows.rst:1218 +#: using/windows.rst:1272 msgid "" "In the latest versions of Windows, this limitation can be expanded to " "approximately 32,000 characters. Your administrator will need to activate " @@ -2001,19 +2072,19 @@ msgid "" "``HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\FileSystem``." msgstr "" -#: using/windows.rst:1227 +#: using/windows.rst:1281 msgid "After changing the above option, no further configuration is required." msgstr "" -#: using/windows.rst:1231 +#: using/windows.rst:1285 msgid "Support for long paths was enabled in Python." msgstr "" -#: using/windows.rst:1236 +#: using/windows.rst:1290 msgid "Installing Without UI" msgstr "" -#: using/windows.rst:1238 +#: using/windows.rst:1292 msgid "" "All of the options available in the installer UI can also be specified from " "the command line, allowing scripted installers to replicate an installation " @@ -2021,350 +2092,350 @@ msgid "" "without suppressing the UI in order to change some of the defaults." msgstr "" -#: using/windows.rst:1243 +#: using/windows.rst:1297 msgid "" "The following options (found by executing the installer with ``/?``) can be " "passed into the installer:" msgstr "" -#: using/windows.rst:1267 using/windows.rst:1862 +#: using/windows.rst:1321 using/windows.rst:1916 msgid "Name" msgstr "" -#: using/windows.rst:1249 +#: using/windows.rst:1303 msgid "/passive" msgstr "" -#: using/windows.rst:1249 +#: using/windows.rst:1303 msgid "to display progress without requiring user interaction" msgstr "" -#: using/windows.rst:1251 +#: using/windows.rst:1305 msgid "/quiet" msgstr "" -#: using/windows.rst:1251 +#: using/windows.rst:1305 msgid "to install/uninstall without displaying any UI" msgstr "" -#: using/windows.rst:1253 +#: using/windows.rst:1307 msgid "/simple" msgstr "" -#: using/windows.rst:1253 +#: using/windows.rst:1307 msgid "to prevent user customization" msgstr "" -#: using/windows.rst:1255 +#: using/windows.rst:1309 msgid "/uninstall" msgstr "" -#: using/windows.rst:1255 +#: using/windows.rst:1309 msgid "to remove Python (without confirmation)" msgstr "" -#: using/windows.rst:1257 +#: using/windows.rst:1311 msgid "/layout [directory]" msgstr "" -#: using/windows.rst:1257 +#: using/windows.rst:1311 msgid "to pre-download all components" msgstr "" -#: using/windows.rst:1259 +#: using/windows.rst:1313 msgid "/log [filename]" msgstr "" -#: using/windows.rst:1259 +#: using/windows.rst:1313 msgid "to specify log files location" msgstr "" -#: using/windows.rst:1262 +#: using/windows.rst:1316 msgid "" "All other options are passed as ``name=value``, where the value is usually " "``0`` to disable a feature, ``1`` to enable a feature, or a path. The full " "list of available options is shown below." msgstr "" -#: using/windows.rst:1267 +#: using/windows.rst:1321 msgid "Default" msgstr "" -#: using/windows.rst:1269 +#: using/windows.rst:1323 msgid "InstallAllUsers" msgstr "" -#: using/windows.rst:1269 +#: using/windows.rst:1323 msgid "Perform a system-wide installation." msgstr "" -#: using/windows.rst:1295 using/windows.rst:1302 using/windows.rst:1333 -#: using/windows.rst:1344 +#: using/windows.rst:1349 using/windows.rst:1356 using/windows.rst:1387 +#: using/windows.rst:1398 msgid "0" msgstr "" -#: using/windows.rst:1271 +#: using/windows.rst:1325 msgid "TargetDir" msgstr "" -#: using/windows.rst:1271 +#: using/windows.rst:1325 msgid "The installation directory" msgstr "" -#: using/windows.rst:1271 +#: using/windows.rst:1325 msgid "Selected based on InstallAllUsers" msgstr "" -#: using/windows.rst:1274 +#: using/windows.rst:1328 msgid "DefaultAllUsersTargetDir" msgstr "" -#: using/windows.rst:1274 +#: using/windows.rst:1328 msgid "The default installation directory for all-user installs" msgstr "" -#: using/windows.rst:1274 +#: using/windows.rst:1328 msgid "" ":file:`%ProgramFiles%\\\\\\ Python X.Y` or :file:`\\ %ProgramFiles(x86)%\\\\" "\\ Python X.Y`" msgstr "" -#: using/windows.rst:1279 +#: using/windows.rst:1333 msgid "DefaultJustForMeTargetDir" msgstr "" -#: using/windows.rst:1279 +#: using/windows.rst:1333 msgid "The default install directory for just-for-me installs" msgstr "" -#: using/windows.rst:1279 +#: using/windows.rst:1333 msgid "" ":file:`%LocalAppData%\\\\\\ Programs\\\\Python\\\\\\ PythonXY` or :file:" "`%LocalAppData%\\\\\\ Programs\\\\Python\\\\\\ PythonXY-32` or :file:" "`%LocalAppData%\\\\\\ Programs\\\\Python\\\\\\ PythonXY-64`" msgstr "" -#: using/windows.rst:1289 +#: using/windows.rst:1343 msgid "DefaultCustomTargetDir" msgstr "" -#: using/windows.rst:1289 +#: using/windows.rst:1343 msgid "The default custom install directory displayed in the UI" msgstr "" -#: using/windows.rst:1346 +#: using/windows.rst:1400 msgid "(empty)" msgstr "" -#: using/windows.rst:1292 +#: using/windows.rst:1346 msgid "AssociateFiles" msgstr "" -#: using/windows.rst:1292 +#: using/windows.rst:1346 msgid "Create file associations if the launcher is also installed." msgstr "" -#: using/windows.rst:1306 using/windows.rst:1313 using/windows.rst:1321 -#: using/windows.rst:1327 using/windows.rst:1335 using/windows.rst:1339 +#: using/windows.rst:1360 using/windows.rst:1367 using/windows.rst:1375 +#: using/windows.rst:1381 using/windows.rst:1389 using/windows.rst:1393 msgid "1" msgstr "" -#: using/windows.rst:1295 +#: using/windows.rst:1349 msgid "CompileAll" msgstr "" -#: using/windows.rst:1295 +#: using/windows.rst:1349 msgid "Compile all ``.py`` files to ``.pyc``." msgstr "" -#: using/windows.rst:1298 +#: using/windows.rst:1352 msgid "PrependPath" msgstr "" -#: using/windows.rst:1298 +#: using/windows.rst:1352 msgid "" "Prepend install and Scripts directories to :envvar:`PATH` and add ``.PY`` " "to :envvar:`PATHEXT`" msgstr "" -#: using/windows.rst:1302 +#: using/windows.rst:1356 msgid "AppendPath" msgstr "" -#: using/windows.rst:1302 +#: using/windows.rst:1356 msgid "" "Append install and Scripts directories to :envvar:`PATH` and add ``.PY`` " "to :envvar:`PATHEXT`" msgstr "" -#: using/windows.rst:1306 +#: using/windows.rst:1360 msgid "Shortcuts" msgstr "" -#: using/windows.rst:1306 +#: using/windows.rst:1360 msgid "" "Create shortcuts for the interpreter, documentation and IDLE if installed." msgstr "" -#: using/windows.rst:1309 +#: using/windows.rst:1363 msgid "Include_doc" msgstr "" -#: using/windows.rst:1309 +#: using/windows.rst:1363 msgid "Install Python manual" msgstr "" -#: using/windows.rst:1311 +#: using/windows.rst:1365 msgid "Include_debug" msgstr "" -#: using/windows.rst:1311 +#: using/windows.rst:1365 msgid "Install debug binaries" msgstr "" -#: using/windows.rst:1313 +#: using/windows.rst:1367 msgid "Include_dev" msgstr "" -#: using/windows.rst:1313 +#: using/windows.rst:1367 msgid "" "Install developer headers and libraries. Omitting this may lead to an " "unusable installation." msgstr "" -#: using/windows.rst:1317 +#: using/windows.rst:1371 msgid "Include_exe" msgstr "" -#: using/windows.rst:1317 +#: using/windows.rst:1371 msgid "" "Install :file:`python.exe` and related files. Omitting this may lead to an " "unusable installation." msgstr "" -#: using/windows.rst:1321 +#: using/windows.rst:1375 msgid "Include_launcher" msgstr "" -#: using/windows.rst:1321 +#: using/windows.rst:1375 msgid "Install :ref:`launcher`." msgstr "" -#: using/windows.rst:1323 +#: using/windows.rst:1377 msgid "InstallLauncherAllUsers" msgstr "" -#: using/windows.rst:1323 +#: using/windows.rst:1377 msgid "" "Installs the launcher for all users. Also requires ``Include_launcher`` to " "be set to 1" msgstr "" -#: using/windows.rst:1327 +#: using/windows.rst:1381 msgid "Include_lib" msgstr "" -#: using/windows.rst:1327 +#: using/windows.rst:1381 msgid "" "Install standard library and extension modules. Omitting this may lead to an " "unusable installation." msgstr "" -#: using/windows.rst:1331 +#: using/windows.rst:1385 msgid "Include_pip" msgstr "" -#: using/windows.rst:1331 +#: using/windows.rst:1385 msgid "Install bundled pip and setuptools" msgstr "" -#: using/windows.rst:1333 +#: using/windows.rst:1387 msgid "Include_symbols" msgstr "" -#: using/windows.rst:1333 +#: using/windows.rst:1387 msgid "Install debugging symbols (``*.pdb``)" msgstr "" -#: using/windows.rst:1335 +#: using/windows.rst:1389 msgid "Include_tcltk" msgstr "" -#: using/windows.rst:1335 +#: using/windows.rst:1389 msgid "Install Tcl/Tk support and IDLE" msgstr "" -#: using/windows.rst:1337 +#: using/windows.rst:1391 msgid "Include_test" msgstr "" -#: using/windows.rst:1337 +#: using/windows.rst:1391 msgid "Install standard library test suite" msgstr "" -#: using/windows.rst:1339 +#: using/windows.rst:1393 msgid "Include_tools" msgstr "" -#: using/windows.rst:1339 +#: using/windows.rst:1393 msgid "Install utility scripts" msgstr "" -#: using/windows.rst:1341 +#: using/windows.rst:1395 msgid "LauncherOnly" msgstr "" -#: using/windows.rst:1341 +#: using/windows.rst:1395 msgid "Only installs the launcher. This will override most other options." msgstr "" -#: using/windows.rst:1344 +#: using/windows.rst:1398 msgid "SimpleInstall" msgstr "" -#: using/windows.rst:1344 +#: using/windows.rst:1398 msgid "Disable most install UI" msgstr "" -#: using/windows.rst:1346 +#: using/windows.rst:1400 msgid "SimpleInstallDescription" msgstr "" -#: using/windows.rst:1346 +#: using/windows.rst:1400 msgid "A custom message to display when the simplified install UI is used." msgstr "" -#: using/windows.rst:1350 +#: using/windows.rst:1404 msgid "" "For example, to silently install a default, system-wide Python installation, " "you could use the following command (from an elevated command prompt)::" msgstr "" -#: using/windows.rst:1353 +#: using/windows.rst:1407 msgid "python-3.9.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0" msgstr "" -#: using/windows.rst:1355 +#: using/windows.rst:1409 msgid "" "To allow users to easily install a personal copy of Python without the test " "suite, you could provide a shortcut with the following command. This will " "display a simplified initial page and disallow customization::" msgstr "" -#: using/windows.rst:1359 +#: using/windows.rst:1413 msgid "" "python-3.9.0.exe InstallAllUsers=0 Include_launcher=0 Include_test=0\n" " SimpleInstall=1 SimpleInstallDescription=\"Just for me, no test suite.\"" msgstr "" -#: using/windows.rst:1362 +#: using/windows.rst:1416 msgid "" "(Note that omitting the launcher also omits file associations, and is only " "recommended for per-user installs when there is also a system-wide " "installation that included the launcher.)" msgstr "" -#: using/windows.rst:1366 +#: using/windows.rst:1420 msgid "" "The options listed above can also be provided in a file named ``unattend." "xml`` alongside the executable. This file specifies a list of options and " @@ -2373,7 +2444,7 @@ msgid "" "strings. This example file sets the same options as the previous example:" msgstr "" -#: using/windows.rst:1372 +#: using/windows.rst:1426 msgid "" "\n" " " msgstr "" -#: using/windows.rst:1385 +#: using/windows.rst:1439 msgid "Installing Without Downloading" msgstr "" -#: using/windows.rst:1387 +#: using/windows.rst:1441 msgid "" "As some features of Python are not included in the initial installer " "download, selecting those features may require an internet connection. To " @@ -2400,7 +2471,7 @@ msgid "" "to be performed it is very useful to have a locally cached copy." msgstr "" -#: using/windows.rst:1395 +#: using/windows.rst:1449 msgid "" "Execute the following command from Command Prompt to download all possible " "required files. Remember to substitute ``python-3.9.0.exe`` for the actual " @@ -2408,27 +2479,27 @@ msgid "" "avoid collisions between files with the same name." msgstr "" -#: using/windows.rst:1402 +#: using/windows.rst:1456 msgid "python-3.9.0.exe /layout [optional target directory]" msgstr "" -#: using/windows.rst:1404 +#: using/windows.rst:1458 msgid "" "You may also specify the ``/quiet`` option to hide the progress display." msgstr "" -#: using/windows.rst:1407 +#: using/windows.rst:1461 msgid "Modifying an install" msgstr "" -#: using/windows.rst:1409 +#: using/windows.rst:1463 msgid "" "Once Python has been installed, you can add or remove features through the " "Programs and Features tool that is part of Windows. Select the Python entry " "and choose \"Uninstall/Change\" to open the installer in maintenance mode." msgstr "" -#: using/windows.rst:1413 +#: using/windows.rst:1467 msgid "" "\"Modify\" allows you to add or remove features by modifying the checkboxes " "- unchanged checkboxes will not install or remove anything. Some options " @@ -2436,26 +2507,26 @@ msgid "" "these, you will need to remove and then reinstall Python completely." msgstr "" -#: using/windows.rst:1418 +#: using/windows.rst:1472 msgid "" "\"Repair\" will verify all the files that should be installed using the " "current settings and replace any that have been removed or modified." msgstr "" -#: using/windows.rst:1421 +#: using/windows.rst:1475 msgid "" "\"Uninstall\" will remove Python entirely, with the exception of the :ref:" "`launcher`, which has its own entry in Programs and Features." msgstr "" -#: using/windows.rst:1435 +#: using/windows.rst:1489 msgid "" "To install pre-built binaries with free-threading enabled (see :pep:`703`), " "you should select \"Customize installation\". The second page of options " "includes the \"Download free-threaded binaries\" checkbox." msgstr "" -#: using/windows.rst:1441 +#: using/windows.rst:1495 msgid "" "Selecting this option will download and install additional binaries to the " "same location as the main Python install. The main executable is called " @@ -2464,7 +2535,7 @@ msgid "" "are shared with the main install." msgstr "" -#: using/windows.rst:1447 +#: using/windows.rst:1501 msgid "" "The free-threaded version is registered as a regular Python install with the " "tag ``3.13t`` (with a ``-32`` or ``-arm64`` suffix as normal for those " @@ -2476,7 +2547,7 @@ msgid "" "not install the free-threaded binaries at this time." msgstr "" -#: using/windows.rst:1456 +#: using/windows.rst:1510 msgid "" "To specify the install option at the command line, use " "``Include_freethreaded=1``. See :ref:`install-layout-option` for " @@ -2485,24 +2556,24 @@ msgid "" "apply to the free-threaded builds." msgstr "" -#: using/windows.rst:1462 +#: using/windows.rst:1516 msgid "" "Free-threaded binaries are also available :ref:`on nuget.org `." msgstr "" -#: using/windows.rst:1466 +#: using/windows.rst:1520 msgid "Python Launcher for Windows (Deprecated)" msgstr "" -#: using/windows.rst:1470 +#: using/windows.rst:1524 msgid "" "The launcher and this documentation have been superseded by the Python " "Install Manager described above. This is preserved temporarily for " "historical interest." msgstr "" -#: using/windows.rst:1476 +#: using/windows.rst:1530 msgid "" "The Python launcher for Windows is a utility which aids in locating and " "executing of different Python versions. It allows scripts (or the command-" @@ -2510,7 +2581,7 @@ msgid "" "locate and execute that version." msgstr "" -#: using/windows.rst:1481 +#: using/windows.rst:1535 msgid "" "Unlike the :envvar:`PATH` variable, the launcher will correctly select the " "most appropriate version of Python. It will prefer per-user installations " @@ -2518,19 +2589,19 @@ msgid "" "most recently installed version." msgstr "" -#: using/windows.rst:1486 +#: using/windows.rst:1540 msgid "The launcher was originally specified in :pep:`397`." msgstr "" -#: using/windows.rst:1489 +#: using/windows.rst:1543 msgid "Getting started" msgstr "" -#: using/windows.rst:1492 +#: using/windows.rst:1546 msgid "From the command-line" msgstr "" -#: using/windows.rst:1496 +#: using/windows.rst:1550 msgid "" "System-wide installations of Python 3.3 and later will put the launcher on " "your :envvar:`PATH`. The launcher is compatible with all available versions " @@ -2538,62 +2609,62 @@ msgid "" "the launcher is available, execute the following command in Command Prompt::" msgstr "" -#: using/windows.rst:1501 +#: using/windows.rst:1555 msgid "py" msgstr "" -#: using/windows.rst:1503 +#: using/windows.rst:1557 msgid "" "You should find that the latest version of Python you have installed is " "started - it can be exited as normal, and any additional command-line " "arguments specified will be sent directly to Python." msgstr "" -#: using/windows.rst:1507 +#: using/windows.rst:1561 msgid "" "If you have multiple versions of Python installed (e.g., 3.7 and |version|) " "you will have noticed that Python |version| was started - to launch Python " "3.7, try the command::" msgstr "" -#: using/windows.rst:1511 +#: using/windows.rst:1565 msgid "py -3.7" msgstr "" -#: using/windows.rst:1513 +#: using/windows.rst:1567 msgid "" "If you want the latest version of Python 2 you have installed, try the " "command::" msgstr "" -#: using/windows.rst:1516 +#: using/windows.rst:1570 msgid "py -2" msgstr "" -#: using/windows.rst:1518 +#: using/windows.rst:1572 msgid "" "If you see the following error, you do not have the launcher installed::" msgstr "" -#: using/windows.rst:1520 +#: using/windows.rst:1574 msgid "" "'py' is not recognized as an internal or external command,\n" "operable program or batch file." msgstr "" -#: using/windows.rst:1523 +#: using/windows.rst:1577 msgid "The command::" msgstr "" -#: using/windows.rst:1525 +#: using/windows.rst:1579 msgid "py --list" msgstr "" -#: using/windows.rst:1527 +#: using/windows.rst:1581 msgid "displays the currently installed version(s) of Python." msgstr "" -#: using/windows.rst:1529 +#: using/windows.rst:1583 msgid "" "The ``-x.y`` argument is the short form of the ``-V:Company/Tag`` argument, " "which allows selecting a specific Python runtime, including those that may " @@ -2602,14 +2673,14 @@ msgid "" "available runtimes using the ``-V:`` format." msgstr "" -#: using/windows.rst:1535 +#: using/windows.rst:1589 msgid "" "When using the ``-V:`` argument, specifying the Company will limit selection " "to runtimes from that provider, while specifying only the Tag will select " "from all providers. Note that omitting the slash implies a tag::" msgstr "" -#: using/windows.rst:1539 +#: using/windows.rst:1593 msgid "" "# Select any '3.*' tagged runtime\n" "py -V:3\n" @@ -2621,14 +2692,14 @@ msgid "" "py -V:PythonCore/3" msgstr "" -#: using/windows.rst:1548 +#: using/windows.rst:1602 msgid "" "The short form of the argument (``-3``) only ever selects from core Python " "releases, and not other distributions. However, the longer form (``-V:3``) " "will select from any." msgstr "" -#: using/windows.rst:1552 +#: using/windows.rst:1606 msgid "" "The Company is matched on the full string, case-insensitive. The Tag is " "matched on either the full string, or a prefix, provided the next character " @@ -2637,11 +2708,11 @@ msgid "" "``3.1``), but are compared using text (``-V:3.01`` does not match ``3.1``)." msgstr "" -#: using/windows.rst:1560 +#: using/windows.rst:1614 msgid "Virtual environments" msgstr "" -#: using/windows.rst:1564 +#: using/windows.rst:1618 msgid "" "If the launcher is run with no explicit Python version specification, and a " "virtual environment (created with the standard library :mod:`venv` module or " @@ -2651,42 +2722,42 @@ msgid "" "specify the global Python version." msgstr "" -#: using/windows.rst:1572 +#: using/windows.rst:1626 msgid "From a script" msgstr "" -#: using/windows.rst:1574 +#: using/windows.rst:1628 msgid "" "Let's create a test Python script - create a file called ``hello.py`` with " "the following contents" msgstr "" -#: using/windows.rst:1577 +#: using/windows.rst:1631 msgid "" "#! python\n" "import sys\n" "sys.stdout.write(\"hello from Python %s\\n\" % (sys.version,))" msgstr "" -#: using/windows.rst:1583 +#: using/windows.rst:1637 msgid "From the directory in which hello.py lives, execute the command::" msgstr "" -#: using/windows.rst:1585 +#: using/windows.rst:1639 msgid "py hello.py" msgstr "" -#: using/windows.rst:1587 +#: using/windows.rst:1641 msgid "" "You should notice the version number of your latest Python 2.x installation " "is printed. Now try changing the first line to be:" msgstr "" -#: using/windows.rst:1590 +#: using/windows.rst:1644 msgid "#! python3" msgstr "" -#: using/windows.rst:1594 +#: using/windows.rst:1648 msgid "" "Re-executing the command should now print the latest Python 3.x information. " "As with the above command-line examples, you can specify a more explicit " @@ -2695,7 +2766,7 @@ msgid "" "information printed." msgstr "" -#: using/windows.rst:1600 +#: using/windows.rst:1654 msgid "" "Note that unlike interactive use, a bare \"python\" will use the latest " "version of Python 2.x that you have installed. This is for backward " @@ -2703,11 +2774,11 @@ msgid "" "typically refers to Python 2." msgstr "" -#: using/windows.rst:1606 +#: using/windows.rst:1660 msgid "From file associations" msgstr "" -#: using/windows.rst:1608 +#: using/windows.rst:1662 msgid "" "The launcher should have been associated with Python files (i.e. ``.py``, ``." "pyw``, ``.pyc`` files) when it was installed. This means that when you " @@ -2716,17 +2787,17 @@ msgid "" "have the script specify the version which should be used." msgstr "" -#: using/windows.rst:1614 +#: using/windows.rst:1668 msgid "" "The key benefit of this is that a single launcher can support multiple " "Python versions at the same time depending on the contents of the first line." msgstr "" -#: using/windows.rst:1618 +#: using/windows.rst:1672 msgid "Shebang Lines" msgstr "" -#: using/windows.rst:1620 +#: using/windows.rst:1674 msgid "" "If the first line of a script file starts with ``#!``, it is known as a " "\"shebang\" line. Linux and other Unix like operating systems have native " @@ -2736,30 +2807,30 @@ msgid "" "demonstrate their use." msgstr "" -#: using/windows.rst:1627 +#: using/windows.rst:1681 msgid "" "To allow shebang lines in Python scripts to be portable between Unix and " "Windows, this launcher supports a number of 'virtual' commands to specify " "which interpreter to use. The supported virtual commands are:" msgstr "" -#: using/windows.rst:1631 +#: using/windows.rst:1685 msgid "``/usr/bin/env``" msgstr "" -#: using/windows.rst:1632 +#: using/windows.rst:1686 msgid "``/usr/bin/python``" msgstr "" -#: using/windows.rst:1633 +#: using/windows.rst:1687 msgid "``/usr/local/bin/python``" msgstr "" -#: using/windows.rst:1634 +#: using/windows.rst:1688 msgid "``python``" msgstr "" -#: using/windows.rst:1648 +#: using/windows.rst:1702 msgid "" "Any of the above virtual commands can be suffixed with an explicit version " "(either just the major version, or the major and minor version). Furthermore " @@ -2769,21 +2840,21 @@ msgid "" "and the environment will be used." msgstr "" -#: using/windows.rst:1657 +#: using/windows.rst:1711 msgid "" "Beginning with python launcher 3.7 it is possible to request 64-bit version " "by the \"-64\" suffix. Furthermore it is possible to specify a major and " "architecture without minor (i.e. ``/usr/bin/python3-64``)." msgstr "" -#: using/windows.rst:1663 +#: using/windows.rst:1717 msgid "" "The \"-64\" suffix is deprecated, and now implies \"any architecture that is " "not provably i386/32-bit\". To request a specific environment, use the new :" "samp:`-V:{TAG}` argument with the complete tag." msgstr "" -#: using/windows.rst:1669 +#: using/windows.rst:1723 msgid "" "Virtual commands referencing ``python`` now prefer an active virtual " "environment rather than searching :envvar:`PATH`. This handles cases where " @@ -2791,7 +2862,7 @@ msgid "" "not present in the active environment." msgstr "" -#: using/windows.rst:1674 +#: using/windows.rst:1728 msgid "" "The ``/usr/bin/env`` form of shebang line has one further special property. " "Before looking for installed Python interpreters, this form will search the " @@ -2805,7 +2876,7 @@ msgid "" "of :envvar:`PATH`." msgstr "" -#: using/windows.rst:1685 +#: using/windows.rst:1739 msgid "" "Shebang lines that do not match any of these patterns are looked up in the " "``[commands]`` section of the launcher's :ref:`.INI file `. " @@ -2816,13 +2887,13 @@ msgid "" "part of the filename)." msgstr "" -#: using/windows.rst:1693 +#: using/windows.rst:1747 msgid "" "[commands]\n" "/bin/xpython=C:\\Program Files\\XPython\\python.exe" msgstr "" -#: using/windows.rst:1698 +#: using/windows.rst:1752 msgid "" "Any commands not found in the .INI file are treated as **Windows** " "executable paths that are absolute or relative to the directory containing " @@ -2833,33 +2904,33 @@ msgid "" "will be appended." msgstr "" -#: using/windows.rst:1707 +#: using/windows.rst:1761 msgid "Arguments in shebang lines" msgstr "" -#: using/windows.rst:1709 +#: using/windows.rst:1763 msgid "" "The shebang lines can also specify additional options to be passed to the " "Python interpreter. For example, if you have a shebang line:" msgstr "" -#: using/windows.rst:1712 +#: using/windows.rst:1766 msgid "#! /usr/bin/python -v" msgstr "" -#: using/windows.rst:1716 +#: using/windows.rst:1770 msgid "Then Python will be started with the ``-v`` option" msgstr "" -#: using/windows.rst:1719 +#: using/windows.rst:1773 msgid "Customization" msgstr "" -#: using/windows.rst:1724 +#: using/windows.rst:1778 msgid "Customization via INI files" msgstr "" -#: using/windows.rst:1726 +#: using/windows.rst:1780 msgid "" "Two .ini files will be searched by the launcher - ``py.ini`` in the current " "user's application data directory (``%LOCALAPPDATA%`` or ``$env:" @@ -2868,7 +2939,7 @@ msgid "" "e. py.exe) and for the 'windows' version (i.e. pyw.exe)." msgstr "" -#: using/windows.rst:1732 +#: using/windows.rst:1786 msgid "" "Customization specified in the \"application directory\" will have " "precedence over the one next to the executable, so a user, who may not have " @@ -2876,11 +2947,11 @@ msgid "" "that global .ini file." msgstr "" -#: using/windows.rst:1737 +#: using/windows.rst:1791 msgid "Customizing default Python versions" msgstr "" -#: using/windows.rst:1739 +#: using/windows.rst:1793 msgid "" "In some cases, a version qualifier can be included in a command to dictate " "which version of Python will be used by the command. A version qualifier " @@ -2890,13 +2961,13 @@ msgid "" "\"-32\" or \"-64\"." msgstr "" -#: using/windows.rst:1745 +#: using/windows.rst:1799 msgid "" "For example, a shebang line of ``#!python`` has no version qualifier, while " "``#!python3`` has a version qualifier which specifies only a major version." msgstr "" -#: using/windows.rst:1748 +#: using/windows.rst:1802 msgid "" "If no version qualifiers are found in a command, the environment variable :" "envvar:`PY_PYTHON` can be set to specify the default version qualifier. If " @@ -2906,7 +2977,7 @@ msgid "" "launcher included with Python 3.7 or newer.)" msgstr "" -#: using/windows.rst:1755 +#: using/windows.rst:1809 msgid "" "If no minor version qualifiers are found, the environment variable " "``PY_PYTHON{major}`` (where ``{major}`` is the current major version " @@ -2917,7 +2988,7 @@ msgid "" "version in that family." msgstr "" -#: using/windows.rst:1763 +#: using/windows.rst:1817 msgid "" "On 64-bit Windows with both 32-bit and 64-bit implementations of the same " "(major.minor) Python version installed, the 64-bit version will always be " @@ -2931,30 +3002,30 @@ msgid "" "suffix can be used on a version specifier to change this behaviour." msgstr "" -#: using/windows.rst:1774 +#: using/windows.rst:1828 msgid "Examples:" msgstr "" -#: using/windows.rst:1776 +#: using/windows.rst:1830 msgid "" "If no relevant options are set, the commands ``python`` and ``python2`` will " "use the latest Python 2.x version installed and the command ``python3`` will " "use the latest Python 3.x installed." msgstr "" -#: using/windows.rst:1780 +#: using/windows.rst:1834 msgid "" "The command ``python3.7`` will not consult any options at all as the " "versions are fully specified." msgstr "" -#: using/windows.rst:1783 +#: using/windows.rst:1837 msgid "" "If ``PY_PYTHON=3``, the commands ``python`` and ``python3`` will both use " "the latest installed Python 3 version." msgstr "" -#: using/windows.rst:1786 +#: using/windows.rst:1840 msgid "" "If ``PY_PYTHON=3.7-32``, the command ``python`` will use the 32-bit " "implementation of 3.7 whereas the command ``python3`` will use the latest " @@ -2962,13 +3033,13 @@ msgid "" "specified.)" msgstr "" -#: using/windows.rst:1791 +#: using/windows.rst:1845 msgid "" "If ``PY_PYTHON=3`` and ``PY_PYTHON3=3.7``, the commands ``python`` and " "``python3`` will both use specifically 3.7" msgstr "" -#: using/windows.rst:1794 +#: using/windows.rst:1848 msgid "" "In addition to environment variables, the same settings can be configured in " "the .INI file used by the launcher. The section in the INI file is called " @@ -2978,38 +3049,38 @@ msgid "" "will override things specified in the INI file." msgstr "" -#: using/windows.rst:1801 +#: using/windows.rst:1855 msgid "For example:" msgstr "" -#: using/windows.rst:1803 +#: using/windows.rst:1857 msgid "Setting ``PY_PYTHON=3.7`` is equivalent to the INI file containing:" msgstr "" -#: using/windows.rst:1805 +#: using/windows.rst:1859 msgid "" "[defaults]\n" "python=3.7" msgstr "" -#: using/windows.rst:1810 +#: using/windows.rst:1864 msgid "" "Setting ``PY_PYTHON=3`` and ``PY_PYTHON3=3.7`` is equivalent to the INI file " "containing:" msgstr "" -#: using/windows.rst:1813 +#: using/windows.rst:1867 msgid "" "[defaults]\n" "python=3\n" "python3=3.7" msgstr "" -#: using/windows.rst:1820 +#: using/windows.rst:1874 msgid "Diagnostics" msgstr "" -#: using/windows.rst:1822 +#: using/windows.rst:1876 msgid "" "If an environment variable :envvar:`PYLAUNCHER_DEBUG` is set (to any value), " "the launcher will print diagnostic information to stderr (i.e. to the " @@ -3019,11 +3090,11 @@ msgid "" "the target Python. It is primarily intended for testing and debugging." msgstr "" -#: using/windows.rst:1830 +#: using/windows.rst:1884 msgid "Dry Run" msgstr "" -#: using/windows.rst:1832 +#: using/windows.rst:1886 msgid "" "If an environment variable :envvar:`PYLAUNCHER_DRYRUN` is set (to any " "value), the launcher will output the command it would have run, but will not " @@ -3033,11 +3104,11 @@ msgid "" "correctly in the console." msgstr "" -#: using/windows.rst:1840 +#: using/windows.rst:1894 msgid "Install on demand" msgstr "" -#: using/windows.rst:1842 +#: using/windows.rst:1896 msgid "" "If an environment variable :envvar:`PYLAUNCHER_ALLOW_INSTALL` is set (to any " "value), and the requested Python version is not installed but is available " @@ -3046,7 +3117,7 @@ msgid "" "again." msgstr "" -#: using/windows.rst:1847 +#: using/windows.rst:1901 msgid "" "An additional :envvar:`PYLAUNCHER_ALWAYS_INSTALL` variable causes the " "launcher to always try to install Python, even if it is detected. This is " @@ -3054,110 +3125,110 @@ msgid "" "`PYLAUNCHER_DRYRUN`)." msgstr "" -#: using/windows.rst:1852 +#: using/windows.rst:1906 msgid "Return codes" msgstr "" -#: using/windows.rst:1854 +#: using/windows.rst:1908 msgid "" "The following exit codes may be returned by the Python launcher. " "Unfortunately, there is no way to distinguish these from the exit code of " "Python itself." msgstr "" -#: using/windows.rst:1857 +#: using/windows.rst:1911 msgid "" "The names of codes are as used in the sources, and are only for reference. " "There is no way to access or resolve them apart from reading this page. " "Entries are listed in alphabetical order of names." msgstr "" -#: using/windows.rst:1862 +#: using/windows.rst:1916 msgid "Value" msgstr "" -#: using/windows.rst:1864 +#: using/windows.rst:1918 msgid "RC_BAD_VENV_CFG" msgstr "" -#: using/windows.rst:1864 +#: using/windows.rst:1918 msgid "107" msgstr "" -#: using/windows.rst:1864 +#: using/windows.rst:1918 msgid "A :file:`pyvenv.cfg` was found but is corrupt." msgstr "" -#: using/windows.rst:1866 +#: using/windows.rst:1920 msgid "RC_CREATE_PROCESS" msgstr "" -#: using/windows.rst:1866 +#: using/windows.rst:1920 msgid "101" msgstr "" -#: using/windows.rst:1866 +#: using/windows.rst:1920 msgid "Failed to launch Python." msgstr "" -#: using/windows.rst:1868 +#: using/windows.rst:1922 msgid "RC_INSTALLING" msgstr "" -#: using/windows.rst:1868 +#: using/windows.rst:1922 msgid "111" msgstr "" -#: using/windows.rst:1868 +#: using/windows.rst:1922 msgid "" "An install was started, but the command will need to be re-run after it " "completes." msgstr "" -#: using/windows.rst:1871 +#: using/windows.rst:1925 msgid "RC_INTERNAL_ERROR" msgstr "" -#: using/windows.rst:1871 +#: using/windows.rst:1925 msgid "109" msgstr "" -#: using/windows.rst:1871 +#: using/windows.rst:1925 msgid "Unexpected error. Please report a bug." msgstr "" -#: using/windows.rst:1873 +#: using/windows.rst:1927 msgid "RC_NO_COMMANDLINE" msgstr "" -#: using/windows.rst:1873 +#: using/windows.rst:1927 msgid "108" msgstr "" -#: using/windows.rst:1873 +#: using/windows.rst:1927 msgid "Unable to obtain command line from the operating system." msgstr "" -#: using/windows.rst:1876 +#: using/windows.rst:1930 msgid "RC_NO_PYTHON" msgstr "" -#: using/windows.rst:1876 +#: using/windows.rst:1930 msgid "103" msgstr "" -#: using/windows.rst:1876 +#: using/windows.rst:1930 msgid "Unable to locate the requested version." msgstr "" -#: using/windows.rst:1878 +#: using/windows.rst:1932 msgid "RC_NO_VENV_CFG" msgstr "" -#: using/windows.rst:1878 +#: using/windows.rst:1932 msgid "106" msgstr "" -#: using/windows.rst:1878 +#: using/windows.rst:1932 msgid "A :file:`pyvenv.cfg` was required but not found." msgstr "" diff --git a/whatsnew/2.0.po b/whatsnew/2.0.po index 99626cba..ed9184a6 100644 --- a/whatsnew/2.0.po +++ b/whatsnew/2.0.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.1.po b/whatsnew/2.1.po index d8e8276e..138fb248 100644 --- a/whatsnew/2.1.po +++ b/whatsnew/2.1.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.2.po b/whatsnew/2.2.po index 41c23842..7579b065 100644 --- a/whatsnew/2.2.po +++ b/whatsnew/2.2.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.3.po b/whatsnew/2.3.po index 9edd97d2..e6b9df9b 100644 --- a/whatsnew/2.3.po +++ b/whatsnew/2.3.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.4.po b/whatsnew/2.4.po index 8cc86103..08c59e30 100644 --- a/whatsnew/2.4.po +++ b/whatsnew/2.4.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.5.po b/whatsnew/2.5.po index 2b29f4d3..cff7c150 100644 --- a/whatsnew/2.5.po +++ b/whatsnew/2.5.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.6.po b/whatsnew/2.6.po index 4eb60f53..b81b9a35 100644 --- a/whatsnew/2.6.po +++ b/whatsnew/2.6.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/2.7.po b/whatsnew/2.7.po index ed353008..4a09b0d8 100644 --- a/whatsnew/2.7.po +++ b/whatsnew/2.7.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.0.po b/whatsnew/3.0.po index 929624fd..805e3fef 100644 --- a/whatsnew/3.0.po +++ b/whatsnew/3.0.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.1.po b/whatsnew/3.1.po index 06a960c1..7a0f1f63 100644 --- a/whatsnew/3.1.po +++ b/whatsnew/3.1.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.10.po b/whatsnew/3.10.po index 82c9ea95..1ed4b224 100644 --- a/whatsnew/3.10.po +++ b/whatsnew/3.10.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -123,7 +123,7 @@ msgstr "" msgid ":pep:`597`, Add optional EncodingWarning" msgstr "" -#: whatsnew/3.10.rst:2053 +#: whatsnew/3.10.rst:2054 msgid "New Features" msgstr "" @@ -785,14 +785,15 @@ msgstr "" msgid "" "If you are using classes to structure your data, you can use as a pattern " "the class name followed by an argument list resembling a constructor. This " -"pattern has the ability to capture class attributes into variables::" +"pattern has the ability to capture instance attributes into variables::" msgstr "" #: whatsnew/3.10.rst:556 msgid "" "class Point:\n" -" x: int\n" -" y: int\n" +" def __init__(self, x, y):\n" +" self.x = x\n" +" self.y = y\n" "\n" "def location(point):\n" " match point:\n" @@ -808,11 +809,11 @@ msgid "" " print(\"Not a point\")" msgstr "" -#: whatsnew/3.10.rst:574 +#: whatsnew/3.10.rst:575 msgid "Patterns with positional parameters" msgstr "" -#: whatsnew/3.10.rst:576 +#: whatsnew/3.10.rst:577 msgid "" "You can use positional parameters with some builtin classes that provide an " "ordering for their attributes (e.g. dataclasses). You can also define a " @@ -822,7 +823,7 @@ msgid "" "attribute to the ``var`` variable)::" msgstr "" -#: whatsnew/3.10.rst:582 +#: whatsnew/3.10.rst:583 msgid "" "Point(1, var)\n" "Point(1, y=var)\n" @@ -830,17 +831,17 @@ msgid "" "Point(y=var, x=1)" msgstr "" -#: whatsnew/3.10.rst:588 +#: whatsnew/3.10.rst:589 msgid "Nested patterns" msgstr "" -#: whatsnew/3.10.rst:590 +#: whatsnew/3.10.rst:591 msgid "" "Patterns can be arbitrarily nested. For example, if our data is a short " "list of points, it could be matched like this::" msgstr "" -#: whatsnew/3.10.rst:593 +#: whatsnew/3.10.rst:594 msgid "" "match points:\n" " case []:\n" @@ -855,18 +856,18 @@ msgid "" " print(\"Something else is found in the list.\")" msgstr "" -#: whatsnew/3.10.rst:606 +#: whatsnew/3.10.rst:607 msgid "Complex patterns and the wildcard" msgstr "" -#: whatsnew/3.10.rst:608 +#: whatsnew/3.10.rst:609 msgid "" "To this point, the examples have used ``_`` alone in the last case " "statement. A wildcard can be used in more complex patterns, such as " "``('error', code, _)``. For example::" msgstr "" -#: whatsnew/3.10.rst:612 +#: whatsnew/3.10.rst:613 msgid "" "match test_variable:\n" " case ('warning', code, 40):\n" @@ -875,24 +876,24 @@ msgid "" " print(f\"An error {code} occurred.\")" msgstr "" -#: whatsnew/3.10.rst:618 +#: whatsnew/3.10.rst:619 msgid "" "In the above case, ``test_variable`` will match for ('error', code, 100) and " "('error', code, 800)." msgstr "" -#: whatsnew/3.10.rst:622 +#: whatsnew/3.10.rst:623 msgid "Guard" msgstr "" -#: whatsnew/3.10.rst:624 +#: whatsnew/3.10.rst:625 msgid "" "We can add an ``if`` clause to a pattern, known as a \"guard\". If the " "guard is false, ``match`` goes on to try the next case block. Note that " "value capture happens before the guard is evaluated::" msgstr "" -#: whatsnew/3.10.rst:628 +#: whatsnew/3.10.rst:629 msgid "" "match point:\n" " case Point(x, y) if x == y:\n" @@ -901,15 +902,15 @@ msgid "" " print(f\"Point is not on the diagonal.\")" msgstr "" -#: whatsnew/3.10.rst:635 +#: whatsnew/3.10.rst:636 msgid "Other Key Features" msgstr "" -#: whatsnew/3.10.rst:637 +#: whatsnew/3.10.rst:638 msgid "Several other key features:" msgstr "" -#: whatsnew/3.10.rst:639 +#: whatsnew/3.10.rst:640 msgid "" "Like unpacking assignments, tuple and list patterns have exactly the same " "meaning and actually match arbitrary sequences. Technically, the subject " @@ -918,7 +919,7 @@ msgid "" "match strings." msgstr "" -#: whatsnew/3.10.rst:645 +#: whatsnew/3.10.rst:646 msgid "" "Sequence patterns support wildcards: ``[x, y, *rest]`` and ``(x, y, *rest)`` " "work similar to wildcards in unpacking assignments. The name after ``*`` " @@ -926,7 +927,7 @@ msgid "" "items without binding the remaining items." msgstr "" -#: whatsnew/3.10.rst:650 +#: whatsnew/3.10.rst:651 msgid "" "Mapping patterns: ``{\"bandwidth\": b, \"latency\": l}`` captures the " "``\"bandwidth\"`` and ``\"latency\"`` values from a dict. Unlike sequence " @@ -934,34 +935,34 @@ msgid "" "(But ``**_`` would be redundant, so is not allowed.)" msgstr "" -#: whatsnew/3.10.rst:655 +#: whatsnew/3.10.rst:656 msgid "Subpatterns may be captured using the ``as`` keyword::" msgstr "" -#: whatsnew/3.10.rst:657 +#: whatsnew/3.10.rst:658 msgid "case (Point(x1, y1), Point(x2, y2) as p2): ..." msgstr "" -#: whatsnew/3.10.rst:659 +#: whatsnew/3.10.rst:660 msgid "" "This binds x1, y1, x2, y2 like you would expect without the ``as`` clause, " "and p2 to the entire second item of the subject." msgstr "" -#: whatsnew/3.10.rst:662 +#: whatsnew/3.10.rst:663 msgid "" "Most literals are compared by equality. However, the singletons ``True``, " "``False`` and ``None`` are compared by identity." msgstr "" -#: whatsnew/3.10.rst:665 +#: whatsnew/3.10.rst:666 msgid "" "Named constants may be used in patterns. These named constants must be " "dotted names to prevent the constant from being interpreted as a capture " "variable::" msgstr "" -#: whatsnew/3.10.rst:669 +#: whatsnew/3.10.rst:670 msgid "" "from enum import Enum\n" "class Color(Enum):\n" @@ -979,17 +980,17 @@ msgid "" " print(\"I'm feeling the blues :(\")" msgstr "" -#: whatsnew/3.10.rst:684 +#: whatsnew/3.10.rst:685 msgid "" "For the full specification see :pep:`634`. Motivation and rationale are in :" "pep:`635`, and a longer tutorial is in :pep:`636`." msgstr "" -#: whatsnew/3.10.rst:691 +#: whatsnew/3.10.rst:692 msgid "Optional ``EncodingWarning`` and ``encoding=\"locale\"`` option" msgstr "" -#: whatsnew/3.10.rst:693 +#: whatsnew/3.10.rst:694 msgid "" "The default encoding of :class:`~io.TextIOWrapper` and :func:`open` is " "platform and locale dependent. Since UTF-8 is used on most Unix platforms, " @@ -997,106 +998,106 @@ msgid "" "TOML, Markdown) is a very common bug. For example::" msgstr "" -#: whatsnew/3.10.rst:698 +#: whatsnew/3.10.rst:699 msgid "" "# BUG: \"rb\" mode or encoding=\"utf-8\" should be used.\n" "with open(\"data.json\") as f:\n" " data = json.load(f)" msgstr "" -#: whatsnew/3.10.rst:702 +#: whatsnew/3.10.rst:703 msgid "" "To find this type of bug, an optional ``EncodingWarning`` is added. It is " "emitted when :data:`sys.flags.warn_default_encoding ` is true and " "locale-specific default encoding is used." msgstr "" -#: whatsnew/3.10.rst:706 +#: whatsnew/3.10.rst:707 msgid "" "``-X warn_default_encoding`` option and :envvar:`PYTHONWARNDEFAULTENCODING` " "are added to enable the warning." msgstr "" -#: whatsnew/3.10.rst:709 +#: whatsnew/3.10.rst:710 msgid "See :ref:`io-text-encoding` for more information." msgstr "" -#: whatsnew/3.10.rst:714 +#: whatsnew/3.10.rst:715 msgid "New Features Related to Type Hints" msgstr "" -#: whatsnew/3.10.rst:716 +#: whatsnew/3.10.rst:717 msgid "" "This section covers major changes affecting :pep:`484` type hints and the :" "mod:`typing` module." msgstr "" -#: whatsnew/3.10.rst:721 +#: whatsnew/3.10.rst:722 msgid "PEP 604: New Type Union Operator" msgstr "" -#: whatsnew/3.10.rst:723 +#: whatsnew/3.10.rst:724 msgid "" "A new type union operator was introduced which enables the syntax ``X | Y``. " "This provides a cleaner way of expressing 'either type X or type Y' instead " "of using :class:`typing.Union`, especially in type hints." msgstr "" -#: whatsnew/3.10.rst:727 +#: whatsnew/3.10.rst:728 msgid "" "In previous versions of Python, to apply a type hint for functions accepting " "arguments of multiple types, :class:`typing.Union` was used::" msgstr "" -#: whatsnew/3.10.rst:730 +#: whatsnew/3.10.rst:731 msgid "" "def square(number: Union[int, float]) -> Union[int, float]:\n" " return number ** 2" msgstr "" -#: whatsnew/3.10.rst:734 +#: whatsnew/3.10.rst:735 msgid "Type hints can now be written in a more succinct manner::" msgstr "" -#: whatsnew/3.10.rst:736 +#: whatsnew/3.10.rst:737 msgid "" "def square(number: int | float) -> int | float:\n" " return number ** 2" msgstr "" -#: whatsnew/3.10.rst:740 +#: whatsnew/3.10.rst:741 msgid "" "This new syntax is also accepted as the second argument to :func:" "`isinstance` and :func:`issubclass`::" msgstr "" -#: whatsnew/3.10.rst:743 +#: whatsnew/3.10.rst:744 msgid "" ">>> isinstance(1, int | str)\n" "True" msgstr "" -#: whatsnew/3.10.rst:746 +#: whatsnew/3.10.rst:747 msgid "See :ref:`types-union` and :pep:`604` for more details." msgstr "" -#: whatsnew/3.10.rst:748 +#: whatsnew/3.10.rst:749 msgid "" "(Contributed by Maggie Moss and Philippe Prados in :issue:`41428`, with " "additions by Yurii Karabas and Serhiy Storchaka in :issue:`44490`.)" msgstr "" -#: whatsnew/3.10.rst:753 +#: whatsnew/3.10.rst:754 msgid "PEP 612: Parameter Specification Variables" msgstr "" -#: whatsnew/3.10.rst:755 +#: whatsnew/3.10.rst:756 msgid "" "Two new options to improve the information provided to static type checkers " "for :pep:`484`\\ 's ``Callable`` have been added to the :mod:`typing` module." msgstr "" -#: whatsnew/3.10.rst:758 +#: whatsnew/3.10.rst:759 msgid "" "The first is the parameter specification variable. They are used to forward " "the parameter types of one callable to another callable -- a pattern " @@ -1105,7 +1106,7 @@ msgid "" "to type annotate dependency of parameter types in such a precise manner." msgstr "" -#: whatsnew/3.10.rst:764 +#: whatsnew/3.10.rst:765 msgid "" "The second option is the new ``Concatenate`` operator. It's used in " "conjunction with parameter specification variables to type annotate a higher " @@ -1113,24 +1114,24 @@ msgid "" "Examples of usage can be found in :class:`typing.Concatenate`." msgstr "" -#: whatsnew/3.10.rst:769 +#: whatsnew/3.10.rst:770 msgid "" "See :class:`typing.Callable`, :class:`typing.ParamSpec`, :class:`typing." "Concatenate`, :class:`typing.ParamSpecArgs`, :class:`typing." "ParamSpecKwargs`, and :pep:`612` for more details." msgstr "" -#: whatsnew/3.10.rst:773 +#: whatsnew/3.10.rst:774 msgid "" "(Contributed by Ken Jin in :issue:`41559`, with minor enhancements by Jelle " "Zijlstra in :issue:`43783`. PEP written by Mark Mendoza.)" msgstr "" -#: whatsnew/3.10.rst:778 +#: whatsnew/3.10.rst:779 msgid "PEP 613: TypeAlias" msgstr "" -#: whatsnew/3.10.rst:780 +#: whatsnew/3.10.rst:781 msgid "" ":pep:`484` introduced the concept of type aliases, only requiring them to be " "top-level unannotated assignments. This simplicity sometimes made it " @@ -1139,37 +1140,37 @@ msgid "" "involved. Compare::" msgstr "" -#: whatsnew/3.10.rst:785 +#: whatsnew/3.10.rst:786 msgid "" "StrCache = 'Cache[str]' # a type alias\n" "LOG_PREFIX = 'LOG[DEBUG]' # a module constant" msgstr "" -#: whatsnew/3.10.rst:788 +#: whatsnew/3.10.rst:789 msgid "" "Now the :mod:`typing` module has a special value :data:`~typing.TypeAlias` " "which lets you declare type aliases more explicitly::" msgstr "" -#: whatsnew/3.10.rst:791 +#: whatsnew/3.10.rst:792 msgid "" "StrCache: TypeAlias = 'Cache[str]' # a type alias\n" "LOG_PREFIX = 'LOG[DEBUG]' # a module constant" msgstr "" -#: whatsnew/3.10.rst:794 +#: whatsnew/3.10.rst:795 msgid "See :pep:`613` for more details." msgstr "" -#: whatsnew/3.10.rst:796 +#: whatsnew/3.10.rst:797 msgid "(Contributed by Mikhail Golubev in :issue:`41923`.)" msgstr "" -#: whatsnew/3.10.rst:799 +#: whatsnew/3.10.rst:800 msgid "PEP 647: User-Defined Type Guards" msgstr "" -#: whatsnew/3.10.rst:801 +#: whatsnew/3.10.rst:802 msgid "" ":data:`~typing.TypeGuard` has been added to the :mod:`typing` module to " "annotate type guard functions and improve information provided to static " @@ -1177,24 +1178,24 @@ msgid "" "`~typing.TypeGuard`\\ 's documentation, and :pep:`647`." msgstr "" -#: whatsnew/3.10.rst:806 +#: whatsnew/3.10.rst:807 msgid "" "(Contributed by Ken Jin and Guido van Rossum in :issue:`43766`. PEP written " "by Eric Traut.)" msgstr "" -#: whatsnew/3.10.rst:810 +#: whatsnew/3.10.rst:811 msgid "Other Language Changes" msgstr "" -#: whatsnew/3.10.rst:812 +#: whatsnew/3.10.rst:813 msgid "" "The :class:`int` type has a new method :meth:`int.bit_count`, returning the " "number of ones in the binary expansion of a given integer, also known as the " "population count. (Contributed by Niklas Fiekas in :issue:`29882`.)" msgstr "" -#: whatsnew/3.10.rst:816 +#: whatsnew/3.10.rst:817 msgid "" "The views returned by :meth:`dict.keys`, :meth:`dict.values` and :meth:`dict." "items` now all have a ``mapping`` attribute that gives a :class:`types." @@ -1202,13 +1203,13 @@ msgid "" "Dennis Sweeney in :issue:`40890`.)" msgstr "" -#: whatsnew/3.10.rst:821 +#: whatsnew/3.10.rst:822 msgid "" ":pep:`618`: The :func:`zip` function now has an optional ``strict`` flag, " "used to require that all the iterables have an equal length." msgstr "" -#: whatsnew/3.10.rst:824 +#: whatsnew/3.10.rst:825 msgid "" "Builtin and extension functions that take integer arguments no longer " "accept :class:`~decimal.Decimal`\\ s, :class:`~fractions.Fraction`\\ s and " @@ -1217,20 +1218,20 @@ msgid "" "__index__` method). (Contributed by Serhiy Storchaka in :issue:`37999`.)" msgstr "" -#: whatsnew/3.10.rst:831 +#: whatsnew/3.10.rst:832 msgid "" "If :func:`object.__ipow__` returns :data:`NotImplemented`, the operator will " "correctly fall back to :func:`object.__pow__` and :func:`object.__rpow__` as " "expected. (Contributed by Alex Shkop in :issue:`38302`.)" msgstr "" -#: whatsnew/3.10.rst:835 +#: whatsnew/3.10.rst:836 msgid "" "Assignment expressions can now be used unparenthesized within set literals " "and set comprehensions, as well as in sequence indexes (but not slices)." msgstr "" -#: whatsnew/3.10.rst:838 +#: whatsnew/3.10.rst:839 msgid "" "Functions have a new ``__builtins__`` attribute which is used to look for " "builtin symbols when a function is executed, instead of looking into " @@ -1239,7 +1240,7 @@ msgid "" "builtins. (Contributed by Mark Shannon in :issue:`42990`.)" msgstr "" -#: whatsnew/3.10.rst:844 +#: whatsnew/3.10.rst:845 msgid "" "Two new builtin functions -- :func:`aiter` and :func:`anext` have been added " "to provide asynchronous counterparts to :func:`iter` and :func:`next`, " @@ -1247,7 +1248,7 @@ msgid "" "in :issue:`31861`.)" msgstr "" -#: whatsnew/3.10.rst:849 +#: whatsnew/3.10.rst:850 msgid "" "Static methods (:func:`@staticmethod `) and class methods (:" "func:`@classmethod `) now inherit the method attributes " @@ -1257,7 +1258,7 @@ msgid "" "Stinner in :issue:`43682`.)" msgstr "" -#: whatsnew/3.10.rst:856 +#: whatsnew/3.10.rst:857 msgid "" "Annotations for complex targets (everything beside ``simple name`` targets " "defined by :pep:`526`) no longer cause any runtime effects with ``from " @@ -1265,7 +1266,7 @@ msgid "" "`42737`.)" msgstr "" -#: whatsnew/3.10.rst:860 +#: whatsnew/3.10.rst:861 msgid "" "Class and module objects now lazy-create empty annotations dicts on demand. " "The annotations dicts are stored in the object’s ``__dict__`` for backwards " @@ -1274,7 +1275,7 @@ msgid "" "howto`. (Contributed by Larry Hastings in :issue:`43901`.)" msgstr "" -#: whatsnew/3.10.rst:867 +#: whatsnew/3.10.rst:868 msgid "" "Annotations consist of ``yield``, ``yield from``, ``await`` or named " "expressions are now forbidden under ``from __future__ import annotations`` " @@ -1282,7 +1283,7 @@ msgid "" "`42725`.)" msgstr "" -#: whatsnew/3.10.rst:872 +#: whatsnew/3.10.rst:873 msgid "" "Usage of unbound variables, ``super()`` and other expressions that might " "alter the processing of symbol table as annotations are now rendered " @@ -1290,7 +1291,7 @@ msgid "" "Batuhan Taskaya in :issue:`42725`.)" msgstr "" -#: whatsnew/3.10.rst:877 +#: whatsnew/3.10.rst:878 msgid "" "Hashes of NaN values of both :class:`float` type and :class:`decimal." "Decimal` type now depend on object identity. Formerly, they always hashed to " @@ -1300,121 +1301,121 @@ msgid "" "Raymond Hettinger in :issue:`43475`.)" msgstr "" -#: whatsnew/3.10.rst:884 +#: whatsnew/3.10.rst:885 msgid "" "A :exc:`SyntaxError` (instead of a :exc:`NameError`) will be raised when " "deleting the :const:`__debug__` constant. (Contributed by Donghee Na in :" "issue:`45000`.)" msgstr "" -#: whatsnew/3.10.rst:887 +#: whatsnew/3.10.rst:888 msgid "" ":exc:`SyntaxError` exceptions now have ``end_lineno`` and ``end_offset`` " "attributes. They will be ``None`` if not determined. (Contributed by Pablo " "Galindo in :issue:`43914`.)" msgstr "" -#: whatsnew/3.10.rst:892 +#: whatsnew/3.10.rst:893 msgid "New Modules" msgstr "" -#: whatsnew/3.10.rst:894 +#: whatsnew/3.10.rst:895 msgid "None." msgstr "" -#: whatsnew/3.10.rst:898 +#: whatsnew/3.10.rst:899 msgid "Improved Modules" msgstr "" -#: whatsnew/3.10.rst:901 +#: whatsnew/3.10.rst:902 msgid "asyncio" msgstr "" -#: whatsnew/3.10.rst:903 +#: whatsnew/3.10.rst:904 msgid "" "Add missing :meth:`~asyncio.events.AbstractEventLoop." "connect_accepted_socket` method. (Contributed by Alex Grönholm in :issue:" "`41332`.)" msgstr "" -#: whatsnew/3.10.rst:908 +#: whatsnew/3.10.rst:909 msgid "argparse" msgstr "" -#: whatsnew/3.10.rst:910 +#: whatsnew/3.10.rst:911 msgid "" "Misleading phrase \"optional arguments\" was replaced with \"options\" in " "argparse help. Some tests might require adaptation if they rely on exact " "output match. (Contributed by Raymond Hettinger in :issue:`9694`.)" msgstr "" -#: whatsnew/3.10.rst:914 +#: whatsnew/3.10.rst:915 msgid "array" msgstr "" -#: whatsnew/3.10.rst:916 +#: whatsnew/3.10.rst:917 msgid "" "The :meth:`~array.array.index` method of :class:`array.array` now has " "optional *start* and *stop* parameters. (Contributed by Anders Lorentsen and " "Zackery Spytz in :issue:`31956`.)" msgstr "" -#: whatsnew/3.10.rst:921 +#: whatsnew/3.10.rst:922 msgid "asynchat, asyncore, smtpd" msgstr "" -#: whatsnew/3.10.rst:922 +#: whatsnew/3.10.rst:923 msgid "" "These modules have been marked as deprecated in their module documentation " "since Python 3.6. An import-time :class:`DeprecationWarning` has now been " "added to all three of these modules." msgstr "" -#: whatsnew/3.10.rst:927 +#: whatsnew/3.10.rst:928 msgid "base64" msgstr "" -#: whatsnew/3.10.rst:929 +#: whatsnew/3.10.rst:930 msgid "" "Add :func:`base64.b32hexencode` and :func:`base64.b32hexdecode` to support " "the Base32 Encoding with Extended Hex Alphabet." msgstr "" -#: whatsnew/3.10.rst:933 +#: whatsnew/3.10.rst:934 msgid "bdb" msgstr "" -#: whatsnew/3.10.rst:935 +#: whatsnew/3.10.rst:936 msgid "" "Add :meth:`~bdb.Breakpoint.clearBreakpoints` to reset all set breakpoints. " "(Contributed by Irit Katriel in :issue:`24160`.)" msgstr "" -#: whatsnew/3.10.rst:939 +#: whatsnew/3.10.rst:940 msgid "bisect" msgstr "" -#: whatsnew/3.10.rst:941 +#: whatsnew/3.10.rst:942 msgid "" "Added the possibility of providing a *key* function to the APIs in the :mod:" "`bisect` module. (Contributed by Raymond Hettinger in :issue:`4356`.)" msgstr "" -#: whatsnew/3.10.rst:945 +#: whatsnew/3.10.rst:946 msgid "codecs" msgstr "" -#: whatsnew/3.10.rst:947 +#: whatsnew/3.10.rst:948 msgid "" "Add a :func:`codecs.unregister` function to unregister a codec search " "function. (Contributed by Hai Shi in :issue:`41842`.)" msgstr "" -#: whatsnew/3.10.rst:951 +#: whatsnew/3.10.rst:952 msgid "collections.abc" msgstr "" -#: whatsnew/3.10.rst:953 +#: whatsnew/3.10.rst:954 msgid "" "The ``__args__`` of the :ref:`parameterized generic ` " "for :class:`collections.abc.Callable` are now consistent with :data:`typing." @@ -1430,34 +1431,34 @@ msgid "" "`42195`.)" msgstr "" -#: whatsnew/3.10.rst:966 +#: whatsnew/3.10.rst:967 msgid "contextlib" msgstr "" -#: whatsnew/3.10.rst:968 +#: whatsnew/3.10.rst:969 msgid "" "Add a :func:`contextlib.aclosing` context manager to safely close async " "generators and objects representing asynchronously released resources. " "(Contributed by Joongi Kim and John Belmonte in :issue:`41229`.)" msgstr "" -#: whatsnew/3.10.rst:972 +#: whatsnew/3.10.rst:973 msgid "" "Add asynchronous context manager support to :func:`contextlib.nullcontext`. " "(Contributed by Tom Gringauz in :issue:`41543`.)" msgstr "" -#: whatsnew/3.10.rst:975 +#: whatsnew/3.10.rst:976 msgid "" "Add :class:`~contextlib.AsyncContextDecorator`, for supporting usage of " "async context managers as decorators." msgstr "" -#: whatsnew/3.10.rst:979 +#: whatsnew/3.10.rst:980 msgid "curses" msgstr "" -#: whatsnew/3.10.rst:981 +#: whatsnew/3.10.rst:982 msgid "" "The extended color functions added in ncurses 6.1 will be used transparently " "by :func:`curses.color_content`, :func:`curses.init_color`, :func:`curses." @@ -1467,43 +1468,43 @@ msgid "" "Kintscher and Hans Petter Jansson in :issue:`36982`.)" msgstr "" -#: whatsnew/3.10.rst:988 +#: whatsnew/3.10.rst:989 msgid "" "The ``BUTTON5_*`` constants are now exposed in the :mod:`curses` module if " "they are provided by the underlying curses library. (Contributed by Zackery " "Spytz in :issue:`39273`.)" msgstr "" -#: whatsnew/3.10.rst:993 +#: whatsnew/3.10.rst:994 msgid "dataclasses" msgstr "" -#: whatsnew/3.10.rst:996 +#: whatsnew/3.10.rst:997 msgid "__slots__" msgstr "" -#: whatsnew/3.10.rst:998 +#: whatsnew/3.10.rst:999 msgid "" "Added ``slots`` parameter in :func:`dataclasses.dataclass` decorator. " "(Contributed by Yurii Karabas in :issue:`42269`)" msgstr "" -#: whatsnew/3.10.rst:1002 +#: whatsnew/3.10.rst:1003 msgid "Keyword-only fields" msgstr "" -#: whatsnew/3.10.rst:1004 +#: whatsnew/3.10.rst:1005 msgid "" "dataclasses now supports fields that are keyword-only in the generated " "__init__ method. There are a number of ways of specifying keyword-only " "fields." msgstr "" -#: whatsnew/3.10.rst:1008 +#: whatsnew/3.10.rst:1009 msgid "You can say that every field is keyword-only:" msgstr "" -#: whatsnew/3.10.rst:1010 +#: whatsnew/3.10.rst:1011 msgid "" "from dataclasses import dataclass\n" "\n" @@ -1513,17 +1514,17 @@ msgid "" " birthday: datetime.date" msgstr "" -#: whatsnew/3.10.rst:1019 +#: whatsnew/3.10.rst:1020 msgid "" "Both ``name`` and ``birthday`` are keyword-only parameters to the generated " "__init__ method." msgstr "" -#: whatsnew/3.10.rst:1022 +#: whatsnew/3.10.rst:1023 msgid "You can specify keyword-only on a per-field basis:" msgstr "" -#: whatsnew/3.10.rst:1024 +#: whatsnew/3.10.rst:1025 msgid "" "from dataclasses import dataclass, field\n" "\n" @@ -1533,7 +1534,7 @@ msgid "" " birthday: datetime.date = field(kw_only=True)" msgstr "" -#: whatsnew/3.10.rst:1033 +#: whatsnew/3.10.rst:1034 msgid "" "Here only ``birthday`` is keyword-only. If you set ``kw_only`` on " "individual fields, be aware that there are rules about re-ordering fields " @@ -1541,13 +1542,13 @@ msgid "" "the full dataclasses documentation for details." msgstr "" -#: whatsnew/3.10.rst:1038 +#: whatsnew/3.10.rst:1039 msgid "" "You can also specify that all fields following a KW_ONLY marker are keyword-" "only. This will probably be the most common usage:" msgstr "" -#: whatsnew/3.10.rst:1041 +#: whatsnew/3.10.rst:1042 msgid "" "from dataclasses import dataclass, KW_ONLY\n" "\n" @@ -1560,17 +1561,17 @@ msgid "" " t: float = 0.0" msgstr "" -#: whatsnew/3.10.rst:1053 +#: whatsnew/3.10.rst:1054 msgid "" "Here, ``z`` and ``t`` are keyword-only parameters, while ``x`` and ``y`` are " "not. (Contributed by Eric V. Smith in :issue:`43532`.)" msgstr "" -#: whatsnew/3.10.rst:1060 +#: whatsnew/3.10.rst:1061 msgid "distutils" msgstr "" -#: whatsnew/3.10.rst:1062 +#: whatsnew/3.10.rst:1063 msgid "" "The entire ``distutils`` package is deprecated, to be removed in Python " "3.12. Its functionality for specifying package builds has already been " @@ -1583,38 +1584,38 @@ msgid "" "`632` for discussion." msgstr "" -#: whatsnew/3.10.rst:1072 +#: whatsnew/3.10.rst:1073 msgid "" "The ``bdist_wininst`` command deprecated in Python 3.8 has been removed. The " "``bdist_wheel`` command is now recommended to distribute binary packages on " "Windows. (Contributed by Victor Stinner in :issue:`42802`.)" msgstr "" -#: whatsnew/3.10.rst:1078 +#: whatsnew/3.10.rst:1079 msgid "doctest" msgstr "" -#: whatsnew/3.10.rst:1215 whatsnew/3.10.rst:1341 +#: whatsnew/3.10.rst:1216 whatsnew/3.10.rst:1342 msgid "" "When a module does not define ``__loader__``, fall back to ``__spec__." "loader``. (Contributed by Brett Cannon in :issue:`42133`.)" msgstr "" -#: whatsnew/3.10.rst:1084 +#: whatsnew/3.10.rst:1085 msgid "encodings" msgstr "" -#: whatsnew/3.10.rst:1086 +#: whatsnew/3.10.rst:1087 msgid "" ":func:`encodings.normalize_encoding` now ignores non-ASCII characters. " "(Contributed by Hai Shi in :issue:`39337`.)" msgstr "" -#: whatsnew/3.10.rst:1090 +#: whatsnew/3.10.rst:1091 msgid "enum" msgstr "" -#: whatsnew/3.10.rst:1092 +#: whatsnew/3.10.rst:1093 msgid "" ":class:`~enum.Enum` :func:`~object.__repr__` now returns ``enum_name." "member_name`` and :func:`~object.__str__` now returns ``member_name``. " @@ -1622,106 +1623,106 @@ msgid "" "``module_name.member_name``. (Contributed by Ethan Furman in :issue:`40066`.)" msgstr "" -#: whatsnew/3.10.rst:1097 +#: whatsnew/3.10.rst:1098 msgid "" "Add :class:`enum.StrEnum` for enums where all members are strings. " "(Contributed by Ethan Furman in :issue:`41816`.)" msgstr "" -#: whatsnew/3.10.rst:1101 +#: whatsnew/3.10.rst:1102 msgid "fileinput" msgstr "" -#: whatsnew/3.10.rst:1103 +#: whatsnew/3.10.rst:1104 msgid "" "Add *encoding* and *errors* parameters in :func:`fileinput.input` and :class:" "`fileinput.FileInput`. (Contributed by Inada Naoki in :issue:`43712`.)" msgstr "" -#: whatsnew/3.10.rst:1107 +#: whatsnew/3.10.rst:1108 msgid "" ":func:`fileinput.hook_compressed` now returns :class:`~io.TextIOWrapper` " "object when *mode* is \"r\" and file is compressed, like uncompressed files. " "(Contributed by Inada Naoki in :issue:`5758`.)" msgstr "" -#: whatsnew/3.10.rst:1112 +#: whatsnew/3.10.rst:1113 msgid "faulthandler" msgstr "" -#: whatsnew/3.10.rst:1114 +#: whatsnew/3.10.rst:1115 msgid "" "The :mod:`faulthandler` module now detects if a fatal error occurs during a " "garbage collector collection. (Contributed by Victor Stinner in :issue:" "`44466`.)" msgstr "" -#: whatsnew/3.10.rst:1119 +#: whatsnew/3.10.rst:1120 msgid "gc" msgstr "" -#: whatsnew/3.10.rst:1121 +#: whatsnew/3.10.rst:1122 msgid "" "Add audit hooks for :func:`gc.get_objects`, :func:`gc.get_referrers` and :" "func:`gc.get_referents`. (Contributed by Pablo Galindo in :issue:`43439`.)" msgstr "" -#: whatsnew/3.10.rst:1125 +#: whatsnew/3.10.rst:1126 msgid "glob" msgstr "" -#: whatsnew/3.10.rst:1127 +#: whatsnew/3.10.rst:1128 msgid "" "Add the *root_dir* and *dir_fd* parameters in :func:`~glob.glob` and :func:" "`~glob.iglob` which allow to specify the root directory for searching. " "(Contributed by Serhiy Storchaka in :issue:`38144`.)" msgstr "" -#: whatsnew/3.10.rst:1132 +#: whatsnew/3.10.rst:1133 msgid "hashlib" msgstr "" -#: whatsnew/3.10.rst:1134 +#: whatsnew/3.10.rst:1135 msgid "" "The hashlib module requires OpenSSL 1.1.1 or newer. (Contributed by " "Christian Heimes in :pep:`644` and :issue:`43669`.)" msgstr "" -#: whatsnew/3.10.rst:1137 +#: whatsnew/3.10.rst:1138 msgid "" "The hashlib module has preliminary support for OpenSSL 3.0.0. (Contributed " "by Christian Heimes in :issue:`38820` and other issues.)" msgstr "" -#: whatsnew/3.10.rst:1140 +#: whatsnew/3.10.rst:1141 msgid "" "The pure-Python fallback of :func:`~hashlib.pbkdf2_hmac` is deprecated. In " "the future PBKDF2-HMAC will only be available when Python has been built " "with OpenSSL support. (Contributed by Christian Heimes in :issue:`43880`.)" msgstr "" -#: whatsnew/3.10.rst:1146 +#: whatsnew/3.10.rst:1147 msgid "hmac" msgstr "" -#: whatsnew/3.10.rst:1148 +#: whatsnew/3.10.rst:1149 msgid "" "The hmac module now uses OpenSSL's HMAC implementation internally. " "(Contributed by Christian Heimes in :issue:`40645`.)" msgstr "" -#: whatsnew/3.10.rst:1152 +#: whatsnew/3.10.rst:1153 msgid "IDLE and idlelib" msgstr "" -#: whatsnew/3.10.rst:1154 +#: whatsnew/3.10.rst:1155 msgid "" "Make IDLE invoke :func:`sys.excepthook` (when started without '-n'). User " "hooks were previously ignored. (Contributed by Ken Hilton in :issue:" "`43008`.)" msgstr "" -#: whatsnew/3.10.rst:1158 +#: whatsnew/3.10.rst:1159 msgid "" "Rearrange the settings dialog. Split the General tab into Windows and Shell/" "Ed tabs. Move help sources, which extend the Help menu, to the Extensions " @@ -1732,11 +1733,11 @@ msgid "" "`33962`.)" msgstr "" -#: whatsnew/3.10.rst:1166 +#: whatsnew/3.10.rst:1167 msgid "The changes above were backported to a 3.9 maintenance release." msgstr "" -#: whatsnew/3.10.rst:1168 +#: whatsnew/3.10.rst:1169 msgid "" "Add a Shell sidebar. Move the primary prompt ('>>>') to the sidebar. Add " "secondary prompts ('...') to the sidebar. Left click and optional drag " @@ -1747,7 +1748,7 @@ msgid "" "text. (Contributed by Tal Einat in :issue:`37903`.)" msgstr "" -#: whatsnew/3.10.rst:1177 +#: whatsnew/3.10.rst:1178 msgid "" "Use spaces instead of tabs to indent interactive code. This makes " "interactive code entries 'look right'. Making this feasible was a major " @@ -1755,7 +1756,7 @@ msgid "" "in :issue:`37892`.)" msgstr "" -#: whatsnew/3.10.rst:1182 +#: whatsnew/3.10.rst:1183 msgid "" "Highlight the new :ref:`soft keywords ` :keyword:`match`, :" "keyword:`case `, and :keyword:`_ ` in pattern-" @@ -1764,33 +1765,33 @@ msgid "" "(Contributed by Tal Einat in :issue:`44010`.)" msgstr "" -#: whatsnew/3.10.rst:1188 +#: whatsnew/3.10.rst:1189 msgid "New in 3.10 maintenance releases." msgstr "" -#: whatsnew/3.10.rst:1190 +#: whatsnew/3.10.rst:1191 msgid "" "Apply syntax highlighting to ``.pyi`` files. (Contributed by Alex Waygood " "and Terry Jan Reedy in :issue:`45447`.)" msgstr "" -#: whatsnew/3.10.rst:1193 +#: whatsnew/3.10.rst:1194 msgid "" "Include prompts when saving Shell with inputs and outputs. (Contributed by " "Terry Jan Reedy in :gh:`95191`.)" msgstr "" -#: whatsnew/3.10.rst:1197 +#: whatsnew/3.10.rst:1198 msgid "importlib.metadata" msgstr "" -#: whatsnew/3.10.rst:1199 +#: whatsnew/3.10.rst:1200 msgid "" "Feature parity with ``importlib_metadata`` 4.6 (`history `_)." msgstr "" -#: whatsnew/3.10.rst:1202 +#: whatsnew/3.10.rst:1203 msgid "" ":ref:`importlib.metadata entry points ` now provide a nicer " "experience for selecting entry points by group and name through a new :ref:" @@ -1798,18 +1799,18 @@ msgid "" "Note in the docs for more info on the deprecation and usage." msgstr "" -#: whatsnew/3.10.rst:1208 +#: whatsnew/3.10.rst:1209 msgid "" "Added :ref:`importlib.metadata.packages_distributions() ` for resolving top-level Python modules and packages to " "their :ref:`importlib.metadata.Distribution `." msgstr "" -#: whatsnew/3.10.rst:1213 +#: whatsnew/3.10.rst:1214 msgid "inspect" msgstr "" -#: whatsnew/3.10.rst:1218 +#: whatsnew/3.10.rst:1219 msgid "" "Add :func:`inspect.get_annotations`, which safely computes the annotations " "defined on an object. It works around the quirks of accessing the " @@ -1827,38 +1828,38 @@ msgid "" "`43817`.)" msgstr "" -#: whatsnew/3.10.rst:1234 +#: whatsnew/3.10.rst:1235 msgid "itertools" msgstr "" -#: whatsnew/3.10.rst:1236 +#: whatsnew/3.10.rst:1237 msgid "" "Add :func:`itertools.pairwise`. (Contributed by Raymond Hettinger in :issue:" "`38200`.)" msgstr "" -#: whatsnew/3.10.rst:1240 +#: whatsnew/3.10.rst:1241 msgid "linecache" msgstr "" -#: whatsnew/3.10.rst:1246 +#: whatsnew/3.10.rst:1247 msgid "os" msgstr "" -#: whatsnew/3.10.rst:1248 +#: whatsnew/3.10.rst:1249 msgid "" "Add :func:`os.cpu_count` support for VxWorks RTOS. (Contributed by Peixing " "Xin in :issue:`41440`.)" msgstr "" -#: whatsnew/3.10.rst:1251 +#: whatsnew/3.10.rst:1252 msgid "" "Add a new function :func:`os.eventfd` and related helpers to wrap the " "``eventfd2`` syscall on Linux. (Contributed by Christian Heimes in :issue:" "`41001`.)" msgstr "" -#: whatsnew/3.10.rst:1255 +#: whatsnew/3.10.rst:1256 msgid "" "Add :func:`os.splice` that allows to move data between two file descriptors " "without copying between kernel address space and user address space, where " @@ -1866,41 +1867,41 @@ msgid "" "Galindo in :issue:`41625`.)" msgstr "" -#: whatsnew/3.10.rst:1260 +#: whatsnew/3.10.rst:1261 msgid "" "Add :const:`~os.O_EVTONLY`, :const:`~os.O_FSYNC`, :const:`~os.O_SYMLINK` " "and :const:`~os.O_NOFOLLOW_ANY` for macOS. (Contributed by Donghee Na in :" "issue:`43106`.)" msgstr "" -#: whatsnew/3.10.rst:1265 +#: whatsnew/3.10.rst:1266 msgid "os.path" msgstr "" -#: whatsnew/3.10.rst:1267 +#: whatsnew/3.10.rst:1268 msgid "" ":func:`os.path.realpath` now accepts a *strict* keyword-only argument. When " "set to ``True``, :exc:`OSError` is raised if a path doesn't exist or a " "symlink loop is encountered. (Contributed by Barney Gale in :issue:`43757`.)" msgstr "" -#: whatsnew/3.10.rst:1273 +#: whatsnew/3.10.rst:1274 msgid "pathlib" msgstr "" -#: whatsnew/3.10.rst:1275 +#: whatsnew/3.10.rst:1276 msgid "" "Add slice support to :attr:`PurePath.parents `. " "(Contributed by Joshua Cannon in :issue:`35498`.)" msgstr "" -#: whatsnew/3.10.rst:1278 +#: whatsnew/3.10.rst:1279 msgid "" "Add negative indexing support to :attr:`PurePath.parents `. (Contributed by Yaroslav Pankovych in :issue:`21041`.)" msgstr "" -#: whatsnew/3.10.rst:1282 +#: whatsnew/3.10.rst:1283 msgid "" "Add :meth:`Path.hardlink_to ` method that " "supersedes :meth:`!link_to`. The new method has the same argument order as :" @@ -1908,7 +1909,7 @@ msgid "" "`39950`.)" msgstr "" -#: whatsnew/3.10.rst:1287 +#: whatsnew/3.10.rst:1288 msgid "" ":meth:`pathlib.Path.stat` and :meth:`~pathlib.Path.chmod` now accept a " "*follow_symlinks* keyword-only argument for consistency with corresponding " @@ -1916,11 +1917,11 @@ msgid "" "`39906`.)" msgstr "" -#: whatsnew/3.10.rst:1293 +#: whatsnew/3.10.rst:1294 msgid "platform" msgstr "" -#: whatsnew/3.10.rst:1295 +#: whatsnew/3.10.rst:1296 msgid "" "Add :func:`platform.freedesktop_os_release` to retrieve operation system " "identification from `freedesktop.org os-release >> from typing import Literal\n" ">>> Literal[{0}]\n" @@ -2208,18 +2209,18 @@ msgid "" "TypeError: unhashable type: 'set'" msgstr "" -#: whatsnew/3.10.rst:1479 +#: whatsnew/3.10.rst:1480 msgid "(Contributed by Yurii Karabas in :issue:`42345`.)" msgstr "" -#: whatsnew/3.10.rst:1481 +#: whatsnew/3.10.rst:1482 msgid "" "Add new function :func:`typing.is_typeddict` to introspect if an annotation " "is a :class:`typing.TypedDict`. (Contributed by Patrick Reader in :issue:" "`41792`.)" msgstr "" -#: whatsnew/3.10.rst:1485 +#: whatsnew/3.10.rst:1486 msgid "" "Subclasses of ``typing.Protocol`` which only have data variables declared " "will now raise a ``TypeError`` when checked with ``isinstance`` unless they " @@ -2229,7 +2230,7 @@ msgid "" "(Contributed by Yurii Karabas in :issue:`38908`.)" msgstr "" -#: whatsnew/3.10.rst:1493 +#: whatsnew/3.10.rst:1494 msgid "" "Importing from the ``typing.io`` and ``typing.re`` submodules will now emit :" "exc:`DeprecationWarning`. These submodules have been deprecated since " @@ -2238,22 +2239,22 @@ msgid "" "instead. (Contributed by Sebastian Rittau in :issue:`38291`.)" msgstr "" -#: whatsnew/3.10.rst:1501 +#: whatsnew/3.10.rst:1502 msgid "unittest" msgstr "" -#: whatsnew/3.10.rst:1503 +#: whatsnew/3.10.rst:1504 msgid "" "Add new method :meth:`~unittest.TestCase.assertNoLogs` to complement the " "existing :meth:`~unittest.TestCase.assertLogs`. (Contributed by Kit Yan Choi " "in :issue:`39385`.)" msgstr "" -#: whatsnew/3.10.rst:1508 +#: whatsnew/3.10.rst:1509 msgid "urllib.parse" msgstr "" -#: whatsnew/3.10.rst:1510 +#: whatsnew/3.10.rst:1511 msgid "" "Python versions earlier than Python 3.10 allowed using both ``;`` and ``&`` " "as query parameter separators in :func:`urllib.parse.parse_qs` and :func:" @@ -2266,7 +2267,7 @@ msgid "" "in :issue:`42967`.)" msgstr "" -#: whatsnew/3.10.rst:1520 +#: whatsnew/3.10.rst:1521 msgid "" "The presence of newline or tab characters in parts of a URL allows for some " "forms of attacks. Following the WHATWG specification that updates :rfc:" @@ -2276,22 +2277,22 @@ msgid "" "variable ``urllib.parse._UNSAFE_URL_BYTES_TO_REMOVE``. (See :gh:`88048`)" msgstr "" -#: whatsnew/3.10.rst:1528 +#: whatsnew/3.10.rst:1529 msgid "xml" msgstr "" -#: whatsnew/3.10.rst:1530 +#: whatsnew/3.10.rst:1531 msgid "" "Add a :class:`~xml.sax.handler.LexicalHandler` class to the :mod:`xml.sax." "handler` module. (Contributed by Jonathan Gossage and Zackery Spytz in :" "issue:`35018`.)" msgstr "" -#: whatsnew/3.10.rst:1535 +#: whatsnew/3.10.rst:1536 msgid "zipimport" msgstr "" -#: whatsnew/3.10.rst:1536 +#: whatsnew/3.10.rst:1537 msgid "" "Add methods related to :pep:`451`: :meth:`~zipimport.zipimporter." "find_spec`, :meth:`zipimport.zipimporter.create_module`, and :meth:" @@ -2299,24 +2300,24 @@ msgid "" "`42131`.)" msgstr "" -#: whatsnew/3.10.rst:1541 +#: whatsnew/3.10.rst:1542 msgid "" "Add :meth:`~zipimport.zipimporter.invalidate_caches` method. (Contributed by " "Desmond Cheong in :issue:`14678`.)" msgstr "" -#: whatsnew/3.10.rst:1546 +#: whatsnew/3.10.rst:1547 msgid "Optimizations" msgstr "" -#: whatsnew/3.10.rst:1548 +#: whatsnew/3.10.rst:1549 msgid "" "Constructors :func:`str`, :func:`bytes` and :func:`bytearray` are now faster " "(around 30--40% for small objects). (Contributed by Serhiy Storchaka in :" "issue:`41334`.)" msgstr "" -#: whatsnew/3.10.rst:1552 +#: whatsnew/3.10.rst:1553 msgid "" "The :mod:`runpy` module now imports fewer modules. The ``python3 -m module-" "name`` command startup time is 1.4x faster in average. On Linux, ``python3 -" @@ -2325,7 +2326,7 @@ msgid "" "`41006` and :issue:`41718`.)" msgstr "" -#: whatsnew/3.10.rst:1558 +#: whatsnew/3.10.rst:1559 msgid "" "The ``LOAD_ATTR`` instruction now uses new \"per opcode cache\" mechanism. " "It is about 36% faster now for regular attributes and 44% faster for slots. " @@ -2334,7 +2335,7 @@ msgid "" "and MicroPython.)" msgstr "" -#: whatsnew/3.10.rst:1564 +#: whatsnew/3.10.rst:1565 msgid "" "When building Python with :option:`--enable-optimizations` now ``-fno-" "semantic-interposition`` is added to both the compile and link line. This " @@ -2345,7 +2346,7 @@ msgid "" "and Pablo Galindo in :issue:`38980`.)" msgstr "" -#: whatsnew/3.10.rst:1572 +#: whatsnew/3.10.rst:1573 msgid "" "Use a new output buffer management code for :mod:`bz2` / :mod:`lzma` / :mod:" "`zlib` modules, and add ``.readall()`` function to ``_compression." @@ -2355,7 +2356,7 @@ msgid "" "`41486`)" msgstr "" -#: whatsnew/3.10.rst:1578 +#: whatsnew/3.10.rst:1579 msgid "" "When using stringized annotations, annotations dicts for functions are no " "longer created when the function is created. Instead, they are stored as a " @@ -2365,7 +2366,7 @@ msgid "" "Inada Naoki in :issue:`42202`.)" msgstr "" -#: whatsnew/3.10.rst:1585 +#: whatsnew/3.10.rst:1586 msgid "" "Substring search functions such as ``str1 in str2`` and ``str2.find(str1)`` " "now sometimes use Crochemore & Perrin's \"Two-Way\" string searching " @@ -2373,7 +2374,7 @@ msgid "" "Dennis Sweeney in :issue:`41972`)" msgstr "" -#: whatsnew/3.10.rst:1590 +#: whatsnew/3.10.rst:1591 msgid "" "Add micro-optimizations to ``_PyType_Lookup()`` to improve type attribute " "cache lookup performance in the common case of cache hits. This makes the " @@ -2381,7 +2382,7 @@ msgid "" "issue:`43452`.)" msgstr "" -#: whatsnew/3.10.rst:1594 +#: whatsnew/3.10.rst:1595 msgid "" "The following built-in functions now support the faster :pep:`590` " "vectorcall calling convention: :func:`map`, :func:`filter`, :func:" @@ -2390,7 +2391,7 @@ msgid "" "`41873` and :issue:`41870`.)" msgstr "" -#: whatsnew/3.10.rst:1598 +#: whatsnew/3.10.rst:1599 msgid "" ":class:`~bz2.BZ2File` performance is improved by removing internal " "``RLock``. This makes :class:`!BZ2File` thread unsafe in the face of " @@ -2399,11 +2400,11 @@ msgid "" "Naoki in :issue:`43785`.)" msgstr "" -#: whatsnew/3.10.rst:2212 +#: whatsnew/3.10.rst:2213 msgid "Deprecated" msgstr "" -#: whatsnew/3.10.rst:1608 +#: whatsnew/3.10.rst:1609 msgid "" "Currently Python accepts numeric literals immediately followed by keywords, " "for example ``0in x``, ``1or x``, ``0if 1else 2``. It allows confusing and " @@ -2416,7 +2417,7 @@ msgid "" "by Serhiy Storchaka in :issue:`43833`.)" msgstr "" -#: whatsnew/3.10.rst:1619 +#: whatsnew/3.10.rst:1620 msgid "" "Starting in this release, there will be a concerted effort to begin cleaning " "up old import semantics that were kept for Python 2.7 compatibility. " @@ -2433,21 +2434,21 @@ msgid "" "transition." msgstr "" -#: whatsnew/3.10.rst:1636 +#: whatsnew/3.10.rst:1637 msgid "" "The entire ``distutils`` namespace is deprecated, to be removed in Python " "3.12. Refer to the :ref:`module changes ` section for " "more information." msgstr "" -#: whatsnew/3.10.rst:1640 +#: whatsnew/3.10.rst:1641 msgid "" "Non-integer arguments to :func:`random.randrange` are deprecated. The :exc:" "`ValueError` is deprecated in favor of a :exc:`TypeError`. (Contributed by " "Serhiy Storchaka and Raymond Hettinger in :issue:`37319`.)" msgstr "" -#: whatsnew/3.10.rst:1644 +#: whatsnew/3.10.rst:1645 msgid "" "The various ``load_module()`` methods of :mod:`importlib` have been " "documented as deprecated since Python 3.6, but will now also trigger a :exc:" @@ -2455,21 +2456,21 @@ msgid "" "(Contributed by Brett Cannon in :issue:`26131`.)" msgstr "" -#: whatsnew/3.10.rst:1650 +#: whatsnew/3.10.rst:1651 msgid "" ":meth:`!zimport.zipimporter.load_module` has been deprecated in preference " "for :meth:`~zipimport.zipimporter.exec_module`. (Contributed by Brett Cannon " "in :issue:`26131`.)" msgstr "" -#: whatsnew/3.10.rst:1654 +#: whatsnew/3.10.rst:1655 msgid "" "The use of :meth:`~importlib.abc.Loader.load_module` by the import system " "now triggers an :exc:`ImportWarning` as :meth:`~importlib.abc.Loader." "exec_module` is preferred. (Contributed by Brett Cannon in :issue:`26131`.)" msgstr "" -#: whatsnew/3.10.rst:1659 +#: whatsnew/3.10.rst:1660 msgid "" "The use of :meth:`!importlib.abc.MetaPathFinder.find_module` and :meth:`!" "importlib.abc.PathEntryFinder.find_module` by the import system now trigger " @@ -2479,7 +2480,7 @@ msgid "" "porting. (Contributed by Brett Cannon in :issue:`42134`.)" msgstr "" -#: whatsnew/3.10.rst:1668 +#: whatsnew/3.10.rst:1669 msgid "" "The use of :meth:`!importlib.abc.PathEntryFinder.find_loader` by the import " "system now triggers an :exc:`ImportWarning` as :meth:`importlib.abc." @@ -2488,7 +2489,7 @@ msgid "" "`43672`.)" msgstr "" -#: whatsnew/3.10.rst:1674 +#: whatsnew/3.10.rst:1675 msgid "" "The various implementations of :meth:`!importlib.abc.MetaPathFinder." "find_module` ( :meth:`!importlib.machinery.BuiltinImporter.find_module`, :" @@ -2503,7 +2504,7 @@ msgid "" "Python 3.4). (Contributed by Brett Cannon in :issue:`42135`.)" msgstr "" -#: whatsnew/3.10.rst:1689 +#: whatsnew/3.10.rst:1690 msgid "" ":class:`!importlib.abc.Finder` is deprecated (including its sole method, :" "meth:`!find_module`). Both :class:`importlib.abc.MetaPathFinder` and :class:" @@ -2512,7 +2513,7 @@ msgid "" "(Contributed by Brett Cannon in :issue:`42135`.)" msgstr "" -#: whatsnew/3.10.rst:1696 +#: whatsnew/3.10.rst:1697 msgid "" "The deprecations of :mod:`!imp`, :func:`!importlib.find_loader`, :func:`!" "importlib.util.set_package_wrapper`, :func:`!importlib.util." @@ -2523,7 +2524,7 @@ msgid "" "Brett Cannon in :issue:`43720`.)" msgstr "" -#: whatsnew/3.10.rst:1706 +#: whatsnew/3.10.rst:1707 msgid "" "The import system now uses the ``__spec__`` attribute on modules before " "falling back on :meth:`!module_repr` for a module's ``__repr__()`` method. " @@ -2531,7 +2532,7 @@ msgid "" "(Contributed by Brett Cannon in :issue:`42137`.)" msgstr "" -#: whatsnew/3.10.rst:1712 +#: whatsnew/3.10.rst:1713 msgid "" ":meth:`!importlib.abc.Loader.module_repr`, :meth:`!importlib.machinery." "FrozenLoader.module_repr`, and :meth:`!importlib.machinery.BuiltinLoader." @@ -2539,7 +2540,7 @@ msgid "" "(Contributed by Brett Cannon in :issue:`42136`.)" msgstr "" -#: whatsnew/3.10.rst:1718 +#: whatsnew/3.10.rst:1719 msgid "" "``sqlite3.OptimizedUnicode`` has been undocumented and obsolete since Python " "3.3, when it was made an alias to :class:`str`. It is now deprecated, " @@ -2547,7 +2548,7 @@ msgid "" "issue:`42264`.)" msgstr "" -#: whatsnew/3.10.rst:1723 +#: whatsnew/3.10.rst:1724 msgid "" "The undocumented built-in function ``sqlite3.enable_shared_cache`` is now " "deprecated, scheduled for removal in Python 3.12. Its use is strongly " @@ -2557,67 +2558,67 @@ msgid "" "query parameter. (Contributed by Erlend E. Aasland in :issue:`24464`.)" msgstr "" -#: whatsnew/3.10.rst:1731 +#: whatsnew/3.10.rst:1732 msgid "The following ``threading`` methods are now deprecated:" msgstr "" -#: whatsnew/3.10.rst:1733 +#: whatsnew/3.10.rst:1734 msgid "``threading.currentThread`` => :func:`threading.current_thread`" msgstr "" -#: whatsnew/3.10.rst:1735 +#: whatsnew/3.10.rst:1736 msgid "``threading.activeCount`` => :func:`threading.active_count`" msgstr "" -#: whatsnew/3.10.rst:1737 +#: whatsnew/3.10.rst:1738 msgid "" "``threading.Condition.notifyAll`` => :meth:`threading.Condition.notify_all`" msgstr "" -#: whatsnew/3.10.rst:1740 +#: whatsnew/3.10.rst:1741 msgid "``threading.Event.isSet`` => :meth:`threading.Event.is_set`" msgstr "" -#: whatsnew/3.10.rst:1742 +#: whatsnew/3.10.rst:1743 msgid "``threading.Thread.setName`` => :attr:`threading.Thread.name`" msgstr "" -#: whatsnew/3.10.rst:1744 +#: whatsnew/3.10.rst:1745 msgid "``threading.thread.getName`` => :attr:`threading.Thread.name`" msgstr "" -#: whatsnew/3.10.rst:1746 +#: whatsnew/3.10.rst:1747 msgid "``threading.Thread.isDaemon`` => :attr:`threading.Thread.daemon`" msgstr "" -#: whatsnew/3.10.rst:1748 +#: whatsnew/3.10.rst:1749 msgid "``threading.Thread.setDaemon`` => :attr:`threading.Thread.daemon`" msgstr "" -#: whatsnew/3.10.rst:1750 +#: whatsnew/3.10.rst:1751 msgid "(Contributed by Jelle Zijlstra in :gh:`87889`.)" msgstr "" -#: whatsnew/3.10.rst:1752 +#: whatsnew/3.10.rst:1753 msgid "" ":meth:`!pathlib.Path.link_to` is deprecated and slated for removal in Python " "3.12. Use :meth:`pathlib.Path.hardlink_to` instead. (Contributed by Barney " "Gale in :issue:`39950`.)" msgstr "" -#: whatsnew/3.10.rst:1756 +#: whatsnew/3.10.rst:1757 msgid "" "``cgi.log()`` is deprecated and slated for removal in Python 3.12. " "(Contributed by Inada Naoki in :issue:`41139`.)" msgstr "" -#: whatsnew/3.10.rst:1759 +#: whatsnew/3.10.rst:1760 msgid "" "The following :mod:`ssl` features have been deprecated since Python 3.6, " "Python 3.7, or OpenSSL 1.1.0 and will be removed in 3.11:" msgstr "" -#: whatsnew/3.10.rst:1762 +#: whatsnew/3.10.rst:1763 msgid "" ":data:`!OP_NO_SSLv2`, :data:`!OP_NO_SSLv3`, :data:`!OP_NO_TLSv1`, :data:`!" "OP_NO_TLSv1_1`, :data:`!OP_NO_TLSv1_2`, and :data:`!OP_NO_TLSv1_3` are " @@ -2625,7 +2626,7 @@ msgid "" "SSLContext.maximum_version`." msgstr "" -#: whatsnew/3.10.rst:1768 +#: whatsnew/3.10.rst:1769 msgid "" ":data:`!PROTOCOL_SSLv2`, :data:`!PROTOCOL_SSLv3`, :data:`!PROTOCOL_SSLv23`, :" "data:`!PROTOCOL_TLSv1`, :data:`!PROTOCOL_TLSv1_1`, :data:`!" @@ -2633,25 +2634,25 @@ msgid "" "const:`~ssl.PROTOCOL_TLS_CLIENT` and :const:`~ssl.PROTOCOL_TLS_SERVER`" msgstr "" -#: whatsnew/3.10.rst:1774 +#: whatsnew/3.10.rst:1775 msgid ":func:`!wrap_socket` is replaced by :meth:`ssl.SSLContext.wrap_socket`" msgstr "" -#: whatsnew/3.10.rst:1776 +#: whatsnew/3.10.rst:1777 msgid ":func:`!match_hostname`" msgstr "" -#: whatsnew/3.10.rst:1778 +#: whatsnew/3.10.rst:1779 msgid ":func:`!RAND_pseudo_bytes`, :func:`!RAND_egd`" msgstr "" -#: whatsnew/3.10.rst:1780 +#: whatsnew/3.10.rst:1781 msgid "" "NPN features like :meth:`ssl.SSLSocket.selected_npn_protocol` and :meth:`ssl." "SSLContext.set_npn_protocols` are replaced by ALPN." msgstr "" -#: whatsnew/3.10.rst:1783 +#: whatsnew/3.10.rst:1784 msgid "" "The threading debug (:envvar:`!PYTHONTHREADDEBUG` environment variable) is " "deprecated in Python 3.10 and will be removed in Python 3.12. This feature " @@ -2659,7 +2660,7 @@ msgid "" "Victor Stinner in :issue:`44584`.)" msgstr "" -#: whatsnew/3.10.rst:1788 +#: whatsnew/3.10.rst:1789 msgid "" "Importing from the ``typing.io`` and ``typing.re`` submodules will now emit :" "exc:`DeprecationWarning`. These submodules will be removed in a future " @@ -2668,11 +2669,11 @@ msgid "" "Rittau in :issue:`38291`.)" msgstr "" -#: whatsnew/3.10.rst:2220 +#: whatsnew/3.10.rst:2221 msgid "Removed" msgstr "" -#: whatsnew/3.10.rst:1799 +#: whatsnew/3.10.rst:1800 msgid "" "Removed special methods ``__int__``, ``__float__``, ``__floordiv__``, " "``__mod__``, ``__divmod__``, ``__rfloordiv__``, ``__rmod__`` and " @@ -2680,7 +2681,7 @@ msgid "" "`TypeError`. (Contributed by Serhiy Storchaka in :issue:`41974`.)" msgstr "" -#: whatsnew/3.10.rst:1805 +#: whatsnew/3.10.rst:1806 msgid "" "The ``ParserBase.error()`` method from the private and undocumented " "``_markupbase`` module has been removed. :class:`html.parser.HTMLParser` is " @@ -2689,7 +2690,7 @@ msgid "" "`31844`.)" msgstr "" -#: whatsnew/3.10.rst:1811 +#: whatsnew/3.10.rst:1812 msgid "" "Removed the ``unicodedata.ucnhash_CAPI`` attribute which was an internal " "PyCapsule object. The related private ``_PyUnicode_Name_CAPI`` structure was " @@ -2697,7 +2698,7 @@ msgid "" "`42157`.)" msgstr "" -#: whatsnew/3.10.rst:1816 +#: whatsnew/3.10.rst:1817 msgid "" "Removed the ``parser`` module, which was deprecated in 3.9 due to the switch " "to the new PEG parser, as well as all the C source and header files that " @@ -2705,7 +2706,7 @@ msgid "" "``graminit.h`` and ``grammar.h``." msgstr "" -#: whatsnew/3.10.rst:1821 +#: whatsnew/3.10.rst:1822 msgid "" "Removed the Public C API functions ``PyParser_SimpleParseStringFlags``, " "``PyParser_SimpleParseStringFlagsFilename``, " @@ -2713,7 +2714,7 @@ msgid "" "deprecated in 3.9 due to the switch to the new PEG parser." msgstr "" -#: whatsnew/3.10.rst:1826 +#: whatsnew/3.10.rst:1827 msgid "" "Removed the ``formatter`` module, which was deprecated in Python 3.4. It is " "somewhat obsolete, little used, and not tested. It was originally scheduled " @@ -2722,71 +2723,71 @@ msgid "" "their code. (Contributed by Donghee Na and Terry J. Reedy in :issue:`42299`.)" msgstr "" -#: whatsnew/3.10.rst:1833 +#: whatsnew/3.10.rst:1834 msgid "" "Removed the :c:func:`!PyModule_GetWarningsModule` function that was useless " "now due to the :mod:`!_warnings` module was converted to a builtin module in " "2.6. (Contributed by Hai Shi in :issue:`42599`.)" msgstr "" -#: whatsnew/3.10.rst:1837 +#: whatsnew/3.10.rst:1838 msgid "" "Remove deprecated aliases to :ref:`collections-abstract-base-classes` from " "the :mod:`collections` module. (Contributed by Victor Stinner in :issue:" "`37324`.)" msgstr "" -#: whatsnew/3.10.rst:1841 +#: whatsnew/3.10.rst:1842 msgid "" "The ``loop`` parameter has been removed from most of :mod:`asyncio`\\ 's :" "doc:`high-level API <../library/asyncio-api-index>` following deprecation in " "Python 3.8. The motivation behind this change is multifold:" msgstr "" -#: whatsnew/3.10.rst:1845 +#: whatsnew/3.10.rst:1846 msgid "This simplifies the high-level API." msgstr "" -#: whatsnew/3.10.rst:1846 +#: whatsnew/3.10.rst:1847 msgid "" "The functions in the high-level API have been implicitly getting the current " "thread's running event loop since Python 3.7. There isn't a need to pass " "the event loop to the API in most normal use cases." msgstr "" -#: whatsnew/3.10.rst:1849 +#: whatsnew/3.10.rst:1850 msgid "" "Event loop passing is error-prone especially when dealing with loops running " "in different threads." msgstr "" -#: whatsnew/3.10.rst:1852 +#: whatsnew/3.10.rst:1853 msgid "" "Note that the low-level API will still accept ``loop``. See :ref:`changes-" "python-api` for examples of how to replace existing code." msgstr "" -#: whatsnew/3.10.rst:1927 +#: whatsnew/3.10.rst:1928 msgid "" "(Contributed by Yurii Karabas, Andrew Svetlov, Yury Selivanov and Kyle " "Stanley in :issue:`42392`.)" msgstr "" -#: whatsnew/3.10.rst:2147 +#: whatsnew/3.10.rst:2148 msgid "Porting to Python 3.10" msgstr "" -#: whatsnew/3.10.rst:1862 +#: whatsnew/3.10.rst:1863 msgid "" "This section lists previously described changes and other bugfixes that may " "require changes to your code." msgstr "" -#: whatsnew/3.10.rst:1867 +#: whatsnew/3.10.rst:1868 msgid "Changes in the Python syntax" msgstr "" -#: whatsnew/3.10.rst:1869 +#: whatsnew/3.10.rst:1870 msgid "" "Deprecation warning is now emitted when compiling previously valid syntax if " "the numeric literal is immediately followed by a keyword (like in ``0in " @@ -2796,11 +2797,11 @@ msgid "" "following keyword. (Contributed by Serhiy Storchaka in :issue:`43833`.)" msgstr "" -#: whatsnew/3.10.rst:1880 +#: whatsnew/3.10.rst:1881 msgid "Changes in the Python API" msgstr "" -#: whatsnew/3.10.rst:1882 +#: whatsnew/3.10.rst:1883 msgid "" "The *etype* parameters of the :func:`~traceback.format_exception`, :func:" "`~traceback.format_exception_only`, and :func:`~traceback.print_exception` " @@ -2808,7 +2809,7 @@ msgid "" "(Contributed by Zackery Spytz and Matthias Bussonnier in :issue:`26389`.)" msgstr "" -#: whatsnew/3.10.rst:1888 +#: whatsnew/3.10.rst:1889 msgid "" ":mod:`atexit`: At Python exit, if a callback registered with :func:`atexit." "register` fails, its exception is now logged. Previously, only some " @@ -2816,7 +2817,7 @@ msgid "" "(Contributed by Victor Stinner in :issue:`42639`.)" msgstr "" -#: whatsnew/3.10.rst:1894 +#: whatsnew/3.10.rst:1895 msgid "" ":class:`collections.abc.Callable` generic now flattens type parameters, " "similar to what :data:`typing.Callable` currently does. This means that " @@ -2829,7 +2830,7 @@ msgid "" "`42195`.)" msgstr "" -#: whatsnew/3.10.rst:1904 +#: whatsnew/3.10.rst:1905 msgid "" ":meth:`socket.htons` and :meth:`socket.ntohs` now raise :exc:`OverflowError` " "instead of :exc:`DeprecationWarning` if the given parameter will not fit in " @@ -2837,41 +2838,41 @@ msgid "" "`42393`.)" msgstr "" -#: whatsnew/3.10.rst:1909 +#: whatsnew/3.10.rst:1910 msgid "" "The ``loop`` parameter has been removed from most of :mod:`asyncio`\\ 's :" "doc:`high-level API <../library/asyncio-api-index>` following deprecation in " "Python 3.8." msgstr "" -#: whatsnew/3.10.rst:1913 +#: whatsnew/3.10.rst:1914 msgid "A coroutine that currently looks like this::" msgstr "" -#: whatsnew/3.10.rst:1915 +#: whatsnew/3.10.rst:1916 msgid "" "async def foo(loop):\n" " await asyncio.sleep(1, loop=loop)" msgstr "" -#: whatsnew/3.10.rst:1918 +#: whatsnew/3.10.rst:1919 msgid "Should be replaced with this::" msgstr "" -#: whatsnew/3.10.rst:1920 +#: whatsnew/3.10.rst:1921 msgid "" "async def foo():\n" " await asyncio.sleep(1)" msgstr "" -#: whatsnew/3.10.rst:1923 +#: whatsnew/3.10.rst:1924 msgid "" "If ``foo()`` was specifically designed *not* to run in the current thread's " "running event loop (e.g. running in another thread's event loop), consider " "using :func:`asyncio.run_coroutine_threadsafe` instead." msgstr "" -#: whatsnew/3.10.rst:1930 +#: whatsnew/3.10.rst:1931 msgid "" "The :data:`types.FunctionType` constructor now inherits the current builtins " "if the *globals* dictionary has no ``\"__builtins__\"`` key, rather than " @@ -2882,11 +2883,11 @@ msgid "" "`42990`.)" msgstr "" -#: whatsnew/3.10.rst:1939 +#: whatsnew/3.10.rst:1940 msgid "Changes in the C API" msgstr "" -#: whatsnew/3.10.rst:1941 +#: whatsnew/3.10.rst:1942 msgid "" "The C API functions ``PyParser_SimpleParseStringFlags``, " "``PyParser_SimpleParseStringFlagsFilename``, " @@ -2895,31 +2896,31 @@ msgid "" "PEG parser." msgstr "" -#: whatsnew/3.10.rst:1947 +#: whatsnew/3.10.rst:1948 msgid "" "Source should be now be compiled directly to a code object using, for " "example, :c:func:`Py_CompileString`. The resulting code object can then be " "evaluated using, for example, :c:func:`PyEval_EvalCode`." msgstr "" -#: whatsnew/3.10.rst:1951 +#: whatsnew/3.10.rst:1952 msgid "Specifically:" msgstr "" -#: whatsnew/3.10.rst:1953 +#: whatsnew/3.10.rst:1954 msgid "" "A call to ``PyParser_SimpleParseStringFlags`` followed by ``PyNode_Compile`` " "can be replaced by calling :c:func:`Py_CompileString`." msgstr "" -#: whatsnew/3.10.rst:1956 +#: whatsnew/3.10.rst:1957 msgid "" "There is no direct replacement for ``PyParser_SimpleParseFileFlags``. To " "compile code from a ``FILE *`` argument, you will need to read the file in C " "and pass the resulting buffer to :c:func:`Py_CompileString`." msgstr "" -#: whatsnew/3.10.rst:1960 +#: whatsnew/3.10.rst:1961 msgid "" "To compile a file given a ``char *`` filename, explicitly open the file, " "read it and compile the result. One way to do this is using the :py:mod:`io` " @@ -2928,7 +2929,7 @@ msgid "" "(Declarations and error handling are omitted.) ::" msgstr "" -#: whatsnew/3.10.rst:1966 +#: whatsnew/3.10.rst:1967 msgid "" "io_module = Import_ImportModule(\"io\");\n" "fileobject = PyObject_CallMethod(io_module, \"open\", \"ss\", filename, " @@ -2939,7 +2940,7 @@ msgid "" "code = Py_CompileString(source_buf, filename, Py_file_input);" msgstr "" -#: whatsnew/3.10.rst:1973 +#: whatsnew/3.10.rst:1974 msgid "" "For ``FrameObject`` objects, the :attr:`~frame.f_lasti` member now " "represents a wordcode offset instead of a simple offset into the bytecode " @@ -2950,53 +2951,53 @@ msgid "" "`PyFrame_GetLineNumber` instead." msgstr "" -#: whatsnew/3.10.rst:1981 +#: whatsnew/3.10.rst:1982 msgid "CPython bytecode changes" msgstr "" -#: whatsnew/3.10.rst:1983 +#: whatsnew/3.10.rst:1984 msgid "" "The ``MAKE_FUNCTION`` instruction now accepts either a dict or a tuple of " "strings as the function's annotations. (Contributed by Yurii Karabas and " "Inada Naoki in :issue:`42202`.)" msgstr "" -#: whatsnew/3.10.rst:1988 +#: whatsnew/3.10.rst:1989 msgid "Build Changes" msgstr "" -#: whatsnew/3.10.rst:1990 +#: whatsnew/3.10.rst:1991 msgid "" ":pep:`644`: Python now requires OpenSSL 1.1.1 or newer. OpenSSL 1.0.2 is no " "longer supported. (Contributed by Christian Heimes in :issue:`43669`.)" msgstr "" -#: whatsnew/3.10.rst:1994 +#: whatsnew/3.10.rst:1995 msgid "" "The C99 functions :c:func:`snprintf` and :c:func:`vsnprintf` are now " "required to build Python. (Contributed by Victor Stinner in :issue:`36020`.)" msgstr "" -#: whatsnew/3.10.rst:1998 +#: whatsnew/3.10.rst:1999 msgid "" ":mod:`sqlite3` requires SQLite 3.7.15 or higher. (Contributed by Sergey " "Fedoseev and Erlend E. Aasland in :issue:`40744` and :issue:`40810`.)" msgstr "" -#: whatsnew/3.10.rst:2001 +#: whatsnew/3.10.rst:2002 msgid "" "The :mod:`atexit` module must now always be built as a built-in module. " "(Contributed by Victor Stinner in :issue:`42639`.)" msgstr "" -#: whatsnew/3.10.rst:2004 +#: whatsnew/3.10.rst:2005 msgid "" "Add :option:`--disable-test-modules` option to the ``configure`` script: " "don't build nor install test modules. (Contributed by Xavier de Gaye, Thomas " "Petazzoni and Peixing Xin in :issue:`27640`.)" msgstr "" -#: whatsnew/3.10.rst:2008 +#: whatsnew/3.10.rst:2009 msgid "" "Add :option:`--with-wheel-pkg-dir=PATH option <--with-wheel-pkg-dir>` to the " "``./configure`` script. If specified, the :mod:`ensurepip` module looks for " @@ -3005,7 +3006,7 @@ msgid "" "packages." msgstr "" -#: whatsnew/3.10.rst:2014 +#: whatsnew/3.10.rst:2015 msgid "" "Some Linux distribution packaging policies recommend against bundling " "dependencies. For example, Fedora installs wheel packages in the ``/usr/" @@ -3013,22 +3014,22 @@ msgid "" "_bundled`` package." msgstr "" -#: whatsnew/3.10.rst:2019 +#: whatsnew/3.10.rst:2020 msgid "(Contributed by Victor Stinner in :issue:`42856`.)" msgstr "" -#: whatsnew/3.10.rst:2021 +#: whatsnew/3.10.rst:2022 msgid "" "Add a new :option:`configure --without-static-libpython option <--without-" "static-libpython>` to not build the ``libpythonMAJOR.MINOR.a`` static " "library and not install the ``python.o`` object file." msgstr "" -#: whatsnew/3.10.rst:2025 +#: whatsnew/3.10.rst:2026 msgid "(Contributed by Victor Stinner in :issue:`43103`.)" msgstr "" -#: whatsnew/3.10.rst:2027 +#: whatsnew/3.10.rst:2028 msgid "" "The ``configure`` script now uses the ``pkg-config`` utility, if available, " "to detect the location of Tcl/Tk headers and libraries. As before, those " @@ -3037,7 +3038,7 @@ msgid "" "Stamatogiannakis in :issue:`42603`.)" msgstr "" -#: whatsnew/3.10.rst:2033 +#: whatsnew/3.10.rst:2034 msgid "" "Add :option:`--with-openssl-rpath` option to ``configure`` script. The " "option simplifies building Python with a custom OpenSSL installation, e.g. " @@ -3045,15 +3046,15 @@ msgid "" "(Contributed by Christian Heimes in :issue:`43466`.)" msgstr "" -#: whatsnew/3.10.rst:2040 +#: whatsnew/3.10.rst:2041 msgid "C API Changes" msgstr "" -#: whatsnew/3.10.rst:2043 +#: whatsnew/3.10.rst:2044 msgid "PEP 652: Maintaining the Stable ABI" msgstr "" -#: whatsnew/3.10.rst:2045 +#: whatsnew/3.10.rst:2046 msgid "" "The Stable ABI (Application Binary Interface) for extension modules or " "embedding Python is now explicitly defined. :ref:`stable` describes C API " @@ -3061,25 +3062,25 @@ msgid "" "ABI." msgstr "" -#: whatsnew/3.10.rst:2050 +#: whatsnew/3.10.rst:2051 msgid "(Contributed by Petr Viktorin in :pep:`652` and :issue:`43795`.)" msgstr "" -#: whatsnew/3.10.rst:2055 +#: whatsnew/3.10.rst:2056 msgid "" "The result of :c:func:`PyNumber_Index` now always has exact type :class:" "`int`. Previously, the result could have been an instance of a subclass of " "``int``. (Contributed by Serhiy Storchaka in :issue:`40792`.)" msgstr "" -#: whatsnew/3.10.rst:2059 +#: whatsnew/3.10.rst:2060 msgid "" "Add a new :c:member:`~PyConfig.orig_argv` member to the :c:type:`PyConfig` " "structure: the list of the original command line arguments passed to the " "Python executable. (Contributed by Victor Stinner in :issue:`23427`.)" msgstr "" -#: whatsnew/3.10.rst:2064 +#: whatsnew/3.10.rst:2065 msgid "" "The :c:func:`PyDateTime_DATE_GET_TZINFO` and :c:func:" "`PyDateTime_TIME_GET_TZINFO` macros have been added for accessing the " @@ -3087,72 +3088,72 @@ msgid "" "time` objects. (Contributed by Zackery Spytz in :issue:`30155`.)" msgstr "" -#: whatsnew/3.10.rst:2070 +#: whatsnew/3.10.rst:2071 msgid "" "Add a :c:func:`PyCodec_Unregister` function to unregister a codec search " "function. (Contributed by Hai Shi in :issue:`41842`.)" msgstr "" -#: whatsnew/3.10.rst:2074 +#: whatsnew/3.10.rst:2075 msgid "" "The :c:func:`PyIter_Send` function was added to allow sending value into " "iterator without raising ``StopIteration`` exception. (Contributed by " "Vladimir Matveev in :issue:`41756`.)" msgstr "" -#: whatsnew/3.10.rst:2078 +#: whatsnew/3.10.rst:2079 msgid "" "Add :c:func:`PyUnicode_AsUTF8AndSize` to the limited C API. (Contributed by " "Alex Gaynor in :issue:`41784`.)" msgstr "" -#: whatsnew/3.10.rst:2081 +#: whatsnew/3.10.rst:2082 msgid "" "Add :c:func:`PyModule_AddObjectRef` function: similar to :c:func:" "`PyModule_AddObject` but don't steal a reference to the value on success. " "(Contributed by Victor Stinner in :issue:`1635741`.)" msgstr "" -#: whatsnew/3.10.rst:2086 +#: whatsnew/3.10.rst:2087 msgid "" "Add :c:func:`Py_NewRef` and :c:func:`Py_XNewRef` functions to increment the " "reference count of an object and return the object. (Contributed by Victor " "Stinner in :issue:`42262`.)" msgstr "" -#: whatsnew/3.10.rst:2090 +#: whatsnew/3.10.rst:2091 msgid "" "The :c:func:`PyType_FromSpecWithBases` and :c:func:" "`PyType_FromModuleAndSpec` functions now accept a single class as the " "*bases* argument. (Contributed by Serhiy Storchaka in :issue:`42423`.)" msgstr "" -#: whatsnew/3.10.rst:2094 +#: whatsnew/3.10.rst:2095 msgid "" "The :c:func:`PyType_FromModuleAndSpec` function now accepts NULL ``tp_doc`` " "slot. (Contributed by Hai Shi in :issue:`41832`.)" msgstr "" -#: whatsnew/3.10.rst:2098 +#: whatsnew/3.10.rst:2099 msgid "" "The :c:func:`PyType_GetSlot` function can accept :ref:`static types `. (Contributed by Hai Shi and Petr Viktorin in :issue:`41073`.)" msgstr "" -#: whatsnew/3.10.rst:2102 +#: whatsnew/3.10.rst:2103 msgid "" "Add a new :c:func:`PySet_CheckExact` function to the C-API to check if an " "object is an instance of :class:`set` but not an instance of a subtype. " "(Contributed by Pablo Galindo in :issue:`43277`.)" msgstr "" -#: whatsnew/3.10.rst:2106 +#: whatsnew/3.10.rst:2107 msgid "" "Add :c:func:`PyErr_SetInterruptEx` which allows passing a signal number to " "simulate. (Contributed by Antoine Pitrou in :issue:`43356`.)" msgstr "" -#: whatsnew/3.10.rst:2110 +#: whatsnew/3.10.rst:2111 msgid "" "The limited C API is now supported if :ref:`Python is built in debug mode " "` (if the ``Py_DEBUG`` macro is defined). In the limited C API, " @@ -3165,14 +3166,14 @@ msgid "" "`36465`)." msgstr "" -#: whatsnew/3.10.rst:2120 +#: whatsnew/3.10.rst:2121 msgid "" "The limited C API is still not supported in the :option:`--with-trace-refs` " "special build (``Py_TRACE_REFS`` macro). (Contributed by Victor Stinner in :" "issue:`43688`.)" msgstr "" -#: whatsnew/3.10.rst:2124 +#: whatsnew/3.10.rst:2125 msgid "" "Add the :c:func:`Py_Is(x, y) ` function to test if the *x* object is " "the *y* object, the same as ``x is y`` in Python. Add also the :c:func:" @@ -3182,7 +3183,7 @@ msgid "" "`43753`.)" msgstr "" -#: whatsnew/3.10.rst:2131 +#: whatsnew/3.10.rst:2132 msgid "" "Add new functions to control the garbage collector from C code: :c:func:" "`PyGC_Enable()`, :c:func:`PyGC_Disable()`, :c:func:`PyGC_IsEnabled()`. These " @@ -3190,20 +3191,20 @@ msgid "" "collector from C code without having to import the :mod:`gc` module." msgstr "" -#: whatsnew/3.10.rst:2138 +#: whatsnew/3.10.rst:2139 msgid "" "Add a new :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` type flag to disallow " "creating type instances. (Contributed by Victor Stinner in :issue:`43916`.)" msgstr "" -#: whatsnew/3.10.rst:2142 +#: whatsnew/3.10.rst:2143 msgid "" "Add a new :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` type flag for creating " "immutable type objects: type attributes cannot be set nor deleted. " "(Contributed by Victor Stinner and Erlend E. Aasland in :issue:`43908`.)" msgstr "" -#: whatsnew/3.10.rst:2149 +#: whatsnew/3.10.rst:2150 msgid "" "The ``PY_SSIZE_T_CLEAN`` macro must now be defined to use :c:func:" "`PyArg_ParseTuple` and :c:func:`Py_BuildValue` formats which use ``#``: " @@ -3212,7 +3213,7 @@ msgid "" "`40943`.)" msgstr "" -#: whatsnew/3.10.rst:2155 +#: whatsnew/3.10.rst:2156 msgid "" "Since :c:func:`Py_REFCNT()` is changed to the inline static function, " "``Py_REFCNT(obj) = new_refcnt`` must be replaced with ``Py_SET_REFCNT(obj, " @@ -3220,25 +3221,25 @@ msgid "" "For backward compatibility, this macro can be used::" msgstr "" -#: whatsnew/3.10.rst:2160 +#: whatsnew/3.10.rst:2161 msgid "" "#if PY_VERSION_HEX < 0x030900A4\n" "# define Py_SET_REFCNT(obj, refcnt) ((Py_REFCNT(obj) = (refcnt)), (void)0)\n" "#endif" msgstr "" -#: whatsnew/3.10.rst:2164 +#: whatsnew/3.10.rst:2165 msgid "(Contributed by Victor Stinner in :issue:`39573`.)" msgstr "" -#: whatsnew/3.10.rst:2166 +#: whatsnew/3.10.rst:2167 msgid "" "Calling :c:func:`PyDict_GetItem` without :term:`GIL` held had been allowed " "for historical reason. It is no longer allowed. (Contributed by Victor " "Stinner in :issue:`40839`.)" msgstr "" -#: whatsnew/3.10.rst:2170 +#: whatsnew/3.10.rst:2171 msgid "" "``PyUnicode_FromUnicode(NULL, size)`` and " "``PyUnicode_FromStringAndSize(NULL, size)`` raise ``DeprecationWarning`` " @@ -3246,14 +3247,14 @@ msgid "" "data. (Contributed by Inada Naoki in :issue:`36346`.)" msgstr "" -#: whatsnew/3.10.rst:2175 +#: whatsnew/3.10.rst:2176 msgid "" "The private ``_PyUnicode_Name_CAPI`` structure of the PyCapsule API " "``unicodedata.ucnhash_CAPI`` has been moved to the internal C API. " "(Contributed by Victor Stinner in :issue:`42157`.)" msgstr "" -#: whatsnew/3.10.rst:2179 +#: whatsnew/3.10.rst:2180 msgid "" ":c:func:`Py_GetPath`, :c:func:`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, :c:" "func:`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome` and :c:func:" @@ -3263,7 +3264,7 @@ msgid "" "Stinner in :issue:`42260`.)" msgstr "" -#: whatsnew/3.10.rst:2186 +#: whatsnew/3.10.rst:2187 msgid "" ":c:func:`PyList_SET_ITEM`, :c:func:`PyTuple_SET_ITEM` and :c:func:" "`PyCell_SET` macros can no longer be used as l-value or r-value. For " @@ -3273,7 +3274,7 @@ msgid "" "and Victor Stinner in :issue:`30459`.)" msgstr "" -#: whatsnew/3.10.rst:2193 +#: whatsnew/3.10.rst:2194 msgid "" "The non-limited API files ``odictobject.h``, ``parser_interface.h``, " "``picklebufobject.h``, ``pyarena.h``, ``pyctype.h``, ``pydebug.h``, ``pyfpe." @@ -3284,7 +3285,7 @@ msgid "" "issue:`35134`.)" msgstr "" -#: whatsnew/3.10.rst:2201 +#: whatsnew/3.10.rst:2202 msgid "" "Use the :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` type flag to create immutable " "type objects. Do not rely on :c:macro:`Py_TPFLAGS_HEAPTYPE` to decide if a " @@ -3293,85 +3294,85 @@ msgid "" "issue:`43908`.)" msgstr "" -#: whatsnew/3.10.rst:2207 +#: whatsnew/3.10.rst:2208 msgid "" "The undocumented function ``Py_FrozenMain`` has been removed from the " "limited API. The function is mainly useful for custom builds of Python. " "(Contributed by Petr Viktorin in :issue:`26241`.)" msgstr "" -#: whatsnew/3.10.rst:2214 +#: whatsnew/3.10.rst:2215 msgid "" "The ``PyUnicode_InternImmortal()`` function is now deprecated and will be " "removed in Python 3.12: use :c:func:`PyUnicode_InternInPlace` instead. " "(Contributed by Victor Stinner in :issue:`41692`.)" msgstr "" -#: whatsnew/3.10.rst:2222 +#: whatsnew/3.10.rst:2223 msgid "" "Removed ``Py_UNICODE_str*`` functions manipulating ``Py_UNICODE*`` strings. " "(Contributed by Inada Naoki in :issue:`41123`.)" msgstr "" -#: whatsnew/3.10.rst:2225 +#: whatsnew/3.10.rst:2226 msgid "" "``Py_UNICODE_strlen``: use :c:func:`PyUnicode_GetLength` or :c:macro:" "`PyUnicode_GET_LENGTH`" msgstr "" -#: whatsnew/3.10.rst:2227 +#: whatsnew/3.10.rst:2228 msgid "" "``Py_UNICODE_strcat``: use :c:func:`PyUnicode_CopyCharacters` or :c:func:" "`PyUnicode_FromFormat`" msgstr "" -#: whatsnew/3.10.rst:2229 +#: whatsnew/3.10.rst:2230 msgid "" "``Py_UNICODE_strcpy``, ``Py_UNICODE_strncpy``: use :c:func:" "`PyUnicode_CopyCharacters` or :c:func:`PyUnicode_Substring`" msgstr "" -#: whatsnew/3.10.rst:2231 +#: whatsnew/3.10.rst:2232 msgid "``Py_UNICODE_strcmp``: use :c:func:`PyUnicode_Compare`" msgstr "" -#: whatsnew/3.10.rst:2232 +#: whatsnew/3.10.rst:2233 msgid "``Py_UNICODE_strncmp``: use :c:func:`PyUnicode_Tailmatch`" msgstr "" -#: whatsnew/3.10.rst:2233 +#: whatsnew/3.10.rst:2234 msgid "" "``Py_UNICODE_strchr``, ``Py_UNICODE_strrchr``: use :c:func:" "`PyUnicode_FindChar`" msgstr "" -#: whatsnew/3.10.rst:2236 +#: whatsnew/3.10.rst:2237 msgid "" "Removed ``PyUnicode_GetMax()``. Please migrate to new (:pep:`393`) APIs. " "(Contributed by Inada Naoki in :issue:`41103`.)" msgstr "" -#: whatsnew/3.10.rst:2239 +#: whatsnew/3.10.rst:2240 msgid "" "Removed ``PyLong_FromUnicode()``. Please migrate to :c:func:" "`PyLong_FromUnicodeObject`. (Contributed by Inada Naoki in :issue:`41103`.)" msgstr "" -#: whatsnew/3.10.rst:2242 +#: whatsnew/3.10.rst:2243 msgid "" "Removed ``PyUnicode_AsUnicodeCopy()``. Please use :c:func:" "`PyUnicode_AsUCS4Copy` or :c:func:`PyUnicode_AsWideCharString` (Contributed " "by Inada Naoki in :issue:`41103`.)" msgstr "" -#: whatsnew/3.10.rst:2246 +#: whatsnew/3.10.rst:2247 msgid "" "Removed ``_Py_CheckRecursionLimit`` variable: it has been replaced by " "``ceval.recursion_limit`` of the :c:type:`PyInterpreterState` structure. " "(Contributed by Victor Stinner in :issue:`41834`.)" msgstr "" -#: whatsnew/3.10.rst:2250 +#: whatsnew/3.10.rst:2251 msgid "" "Removed undocumented macros ``Py_ALLOW_RECURSION`` and " "``Py_END_ALLOW_RECURSION`` and the ``recursion_critical`` field of the :c:" @@ -3379,14 +3380,14 @@ msgid "" "issue:`41936`.)" msgstr "" -#: whatsnew/3.10.rst:2255 +#: whatsnew/3.10.rst:2256 msgid "" "Removed the undocumented ``PyOS_InitInterrupts()`` function. Initializing " "Python already implicitly installs signal handlers: see :c:member:`PyConfig." "install_signal_handlers`. (Contributed by Victor Stinner in :issue:`41713`.)" msgstr "" -#: whatsnew/3.10.rst:2260 +#: whatsnew/3.10.rst:2261 msgid "" "Remove the ``PyAST_Validate()`` function. It is no longer possible to build " "a AST object (``mod_ty`` type) with the public C API. The function was " @@ -3394,48 +3395,48 @@ msgid "" "Stinner in :issue:`43244`.)" msgstr "" -#: whatsnew/3.10.rst:2265 +#: whatsnew/3.10.rst:2266 msgid "Remove the ``symtable.h`` header file and the undocumented functions:" msgstr "" -#: whatsnew/3.10.rst:2267 +#: whatsnew/3.10.rst:2268 msgid "``PyST_GetScope()``" msgstr "" -#: whatsnew/3.10.rst:2268 +#: whatsnew/3.10.rst:2269 msgid "``PySymtable_Build()``" msgstr "" -#: whatsnew/3.10.rst:2269 +#: whatsnew/3.10.rst:2270 msgid "``PySymtable_BuildObject()``" msgstr "" -#: whatsnew/3.10.rst:2270 +#: whatsnew/3.10.rst:2271 msgid "``PySymtable_Free()``" msgstr "" -#: whatsnew/3.10.rst:2271 +#: whatsnew/3.10.rst:2272 msgid "``Py_SymtableString()``" msgstr "" -#: whatsnew/3.10.rst:2272 +#: whatsnew/3.10.rst:2273 msgid "``Py_SymtableStringObject()``" msgstr "" -#: whatsnew/3.10.rst:2274 +#: whatsnew/3.10.rst:2275 msgid "" "The ``Py_SymtableString()`` function was part the stable ABI by mistake but " "it could not be used, because the ``symtable.h`` header file was excluded " "from the limited C API." msgstr "" -#: whatsnew/3.10.rst:2278 +#: whatsnew/3.10.rst:2279 msgid "" "Use Python :mod:`symtable` module instead. (Contributed by Victor Stinner " "in :issue:`43244`.)" msgstr "" -#: whatsnew/3.10.rst:2281 +#: whatsnew/3.10.rst:2282 msgid "" "Remove :c:func:`PyOS_ReadlineFunctionPointer` from the limited C API headers " "and from ``python3.dll``, the library that provides the stable ABI on " @@ -3443,7 +3444,7 @@ msgid "" "cannot be guaranteed. (Contributed by Petr Viktorin in :issue:`43868`.)" msgstr "" -#: whatsnew/3.10.rst:2287 +#: whatsnew/3.10.rst:2288 msgid "" "Remove ``ast.h``, ``asdl.h``, and ``Python-ast.h`` header files. These " "functions were undocumented and excluded from the limited C API. Most names " @@ -3454,96 +3455,96 @@ msgid "" "(Contributed by Victor Stinner in :issue:`43244`.)" msgstr "" -#: whatsnew/3.10.rst:2295 +#: whatsnew/3.10.rst:2296 msgid "" "Remove the compiler and parser functions using ``struct _mod`` type, because " "the public AST C API was removed:" msgstr "" -#: whatsnew/3.10.rst:2298 +#: whatsnew/3.10.rst:2299 msgid "``PyAST_Compile()``" msgstr "" -#: whatsnew/3.10.rst:2299 +#: whatsnew/3.10.rst:2300 msgid "``PyAST_CompileEx()``" msgstr "" -#: whatsnew/3.10.rst:2300 +#: whatsnew/3.10.rst:2301 msgid "``PyAST_CompileObject()``" msgstr "" -#: whatsnew/3.10.rst:2301 +#: whatsnew/3.10.rst:2302 msgid "``PyFuture_FromAST()``" msgstr "" -#: whatsnew/3.10.rst:2302 +#: whatsnew/3.10.rst:2303 msgid "``PyFuture_FromASTObject()``" msgstr "" -#: whatsnew/3.10.rst:2303 +#: whatsnew/3.10.rst:2304 msgid "``PyParser_ASTFromFile()``" msgstr "" -#: whatsnew/3.10.rst:2304 +#: whatsnew/3.10.rst:2305 msgid "``PyParser_ASTFromFileObject()``" msgstr "" -#: whatsnew/3.10.rst:2305 +#: whatsnew/3.10.rst:2306 msgid "``PyParser_ASTFromFilename()``" msgstr "" -#: whatsnew/3.10.rst:2306 +#: whatsnew/3.10.rst:2307 msgid "``PyParser_ASTFromString()``" msgstr "" -#: whatsnew/3.10.rst:2307 +#: whatsnew/3.10.rst:2308 msgid "``PyParser_ASTFromStringObject()``" msgstr "" -#: whatsnew/3.10.rst:2309 +#: whatsnew/3.10.rst:2310 msgid "" "These functions were undocumented and excluded from the limited C API. " "(Contributed by Victor Stinner in :issue:`43244`.)" msgstr "" -#: whatsnew/3.10.rst:2312 +#: whatsnew/3.10.rst:2313 msgid "Remove the ``pyarena.h`` header file with functions:" msgstr "" -#: whatsnew/3.10.rst:2314 +#: whatsnew/3.10.rst:2315 msgid "``PyArena_New()``" msgstr "" -#: whatsnew/3.10.rst:2315 +#: whatsnew/3.10.rst:2316 msgid "``PyArena_Free()``" msgstr "" -#: whatsnew/3.10.rst:2316 +#: whatsnew/3.10.rst:2317 msgid "``PyArena_Malloc()``" msgstr "" -#: whatsnew/3.10.rst:2317 +#: whatsnew/3.10.rst:2318 msgid "``PyArena_AddPyObject()``" msgstr "" -#: whatsnew/3.10.rst:2319 +#: whatsnew/3.10.rst:2320 msgid "" "These functions were undocumented, excluded from the limited C API, and were " "only used internally by the compiler. (Contributed by Victor Stinner in :" "issue:`43244`.)" msgstr "" -#: whatsnew/3.10.rst:2323 +#: whatsnew/3.10.rst:2324 msgid "" "The ``PyThreadState.use_tracing`` member has been removed to optimize " "Python. (Contributed by Mark Shannon in :issue:`43760`.)" msgstr "" -#: whatsnew/3.10.rst:2328 +#: whatsnew/3.10.rst:2329 msgid "Notable security feature in 3.10.7" msgstr "" -#: whatsnew/3.10.rst:2330 +#: whatsnew/3.10.rst:2331 msgid "" "Converting between :class:`int` and :class:`str` in bases other than 2 " "(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) " @@ -3556,11 +3557,11 @@ msgid "" "digits in string form." msgstr "" -#: whatsnew/3.10.rst:2341 +#: whatsnew/3.10.rst:2342 msgid "Notable security feature in 3.10.8" msgstr "" -#: whatsnew/3.10.rst:2343 +#: whatsnew/3.10.rst:2344 msgid "" "The deprecated :mod:`!mailcap` module now refuses to inject unsafe text " "(filenames, MIME types, parameters) into shell commands. Instead of using " @@ -3569,15 +3570,15 @@ msgid "" "`98966`.)" msgstr "" -#: whatsnew/3.10.rst:2350 +#: whatsnew/3.10.rst:2351 msgid "Notable changes in 3.10.12" msgstr "" -#: whatsnew/3.10.rst:2353 +#: whatsnew/3.10.rst:2354 msgid "tarfile" msgstr "" -#: whatsnew/3.10.rst:2355 +#: whatsnew/3.10.rst:2356 msgid "" "The extraction methods in :mod:`tarfile`, and :func:`shutil.unpack_archive`, " "have a new a *filter* argument that allows limiting tar features than may be " diff --git a/whatsnew/3.11.po b/whatsnew/3.11.po index 863dcdb7..b26374dd 100644 --- a/whatsnew/3.11.po +++ b/whatsnew/3.11.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.12.po b/whatsnew/3.12.po index 23515ce2..aae68d48 100644 --- a/whatsnew/3.12.po +++ b/whatsnew/3.12.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2384,27 +2384,36 @@ msgstr "" #: deprecations/pending-removal-in-3.15.rst:88 msgid "" +"When using the functional syntax of :class:`~typing.TypedDict`\\s, failing " +"to pass a value to the *fields* parameter (``TD = TypedDict(\"TD\")``) or " +"passing ``None`` (``TD = TypedDict(\"TD\", None)``) has been deprecated " +"since Python 3.13. Use ``class TD(TypedDict): pass`` or ``TD = " +"TypedDict(\"TD\", {})`` to create a TypedDict with zero field." +msgstr "" + +#: deprecations/pending-removal-in-3.15.rst:95 +msgid "" "The :func:`typing.no_type_check_decorator` decorator function has been " "deprecated since Python 3.13. After eight years in the :mod:`typing` module, " "it has yet to be supported by any major type checker." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:93 +#: deprecations/pending-removal-in-3.15.rst:100 msgid ":mod:`wave`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:95 +#: deprecations/pending-removal-in-3.15.rst:102 msgid "" "The :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:`~wave." "Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:" "`~wave.Wave_write` classes have been deprecated since Python 3.13." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:100 +#: deprecations/pending-removal-in-3.15.rst:107 msgid ":mod:`zipimport`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:102 +#: deprecations/pending-removal-in-3.15.rst:109 msgid "" ":meth:`~zipimport.zipimporter.load_module` has been deprecated since Python " "3.10. Use :meth:`~zipimport.zipimporter.exec_module` instead. (Contributed " diff --git a/whatsnew/3.13.po b/whatsnew/3.13.po index b4601618..1f0b8ce0 100644 --- a/whatsnew/3.13.po +++ b/whatsnew/3.13.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -339,7 +339,7 @@ msgid "" "years of security fixes." msgstr "" -#: whatsnew/3.13.rst:2030 +#: whatsnew/3.13.rst:2046 msgid "New Features" msgstr "" @@ -1110,37 +1110,56 @@ msgid "" "(Contributed by Arthur Tacca and Jason Zhang in :gh:`115957`.)" msgstr "" -#: whatsnew/3.13.rst:735 +#: whatsnew/3.13.rst:733 +msgid "" +"The function and methods named ``create_task`` have received a new " +"``**kwargs`` argument that is passed through to the task constructor. This " +"change was accidentally added in 3.13.3, and broke the API contract for " +"custom task factories. Several third-party task factories implemented " +"workarounds for this. In 3.13.4 and later releases the old factory contract " +"is honored once again (until 3.14). To keep the workarounds working, the " +"extra ``**kwargs`` argument still allows passing additional keyword " +"arguments to :class:`~asyncio.Task` and to custom task factories." +msgstr "" + +#: whatsnew/3.13.rst:744 +msgid "" +"This affects the following function and methods: :meth:`asyncio." +"create_task`, :meth:`asyncio.loop.create_task`, :meth:`asyncio.TaskGroup." +"create_task`. (Contributed by Thomas Grainger in :gh:`128307`.)" +msgstr "" + +#: whatsnew/3.13.rst:751 msgid "base64" msgstr "" -#: whatsnew/3.13.rst:737 +#: whatsnew/3.13.rst:753 msgid "" "Add :func:`~base64.z85encode` and :func:`~base64.z85decode` functions for " "encoding :class:`bytes` as `Z85 data`_ and decoding Z85-encoded data to :" "class:`!bytes`. (Contributed by Matan Perelman in :gh:`75299`.)" msgstr "" -#: whatsnew/3.13.rst:746 +#: whatsnew/3.13.rst:762 msgid "compileall" msgstr "" -#: whatsnew/3.13.rst:756 whatsnew/3.13.rst:1015 +#: whatsnew/3.13.rst:772 whatsnew/3.13.rst:1031 msgid "" "The default number of worker threads and processes is now selected using :" "func:`os.process_cpu_count` instead of :func:`os.cpu_count`. (Contributed by " "Victor Stinner in :gh:`109649`.)" msgstr "" -#: whatsnew/3.13.rst:754 +#: whatsnew/3.13.rst:770 msgid "concurrent.futures" msgstr "" -#: whatsnew/3.13.rst:1664 +#: whatsnew/3.13.rst:1680 msgid "configparser" msgstr "" -#: whatsnew/3.13.rst:764 +#: whatsnew/3.13.rst:780 msgid "" ":class:`~configparser.ConfigParser` now has support for unnamed sections, " "which allows for top-level key-value pairs. This can be enabled with the new " @@ -1148,11 +1167,11 @@ msgid "" "gh:`66449`.)" msgstr "" -#: whatsnew/3.13.rst:771 +#: whatsnew/3.13.rst:787 msgid "copy" msgstr "" -#: whatsnew/3.13.rst:773 +#: whatsnew/3.13.rst:789 msgid "" "The new :func:`~copy.replace` function and the :meth:`replace protocol " "` make creating modified copies of objects much simpler. " @@ -1161,43 +1180,43 @@ msgid "" "protocol:" msgstr "" -#: whatsnew/3.13.rst:779 +#: whatsnew/3.13.rst:795 msgid ":func:`collections.namedtuple`" msgstr "" -#: whatsnew/3.13.rst:780 +#: whatsnew/3.13.rst:796 msgid ":class:`dataclasses.dataclass`" msgstr "" -#: whatsnew/3.13.rst:781 +#: whatsnew/3.13.rst:797 msgid "" ":class:`datetime.datetime`, :class:`datetime.date`, :class:`datetime.time`" msgstr "" -#: whatsnew/3.13.rst:782 +#: whatsnew/3.13.rst:798 msgid ":class:`inspect.Signature`, :class:`inspect.Parameter`" msgstr "" -#: whatsnew/3.13.rst:783 +#: whatsnew/3.13.rst:799 msgid ":class:`types.SimpleNamespace`" msgstr "" -#: whatsnew/3.13.rst:784 +#: whatsnew/3.13.rst:800 msgid ":ref:`code objects `" msgstr "" -#: whatsnew/3.13.rst:786 +#: whatsnew/3.13.rst:802 msgid "" "Any user-defined class can also support :func:`copy.replace` by defining " "the :meth:`~object.__replace__` method. (Contributed by Serhiy Storchaka in :" "gh:`108751`.)" msgstr "" -#: whatsnew/3.13.rst:792 +#: whatsnew/3.13.rst:808 msgid "ctypes" msgstr "" -#: whatsnew/3.13.rst:794 +#: whatsnew/3.13.rst:810 msgid "" "As a consequence of necessary internal refactoring, initialization of " "internal metaclasses now happens in ``__init__`` rather than in ``__new__``. " @@ -1205,25 +1224,25 @@ msgid "" "custom initialization. Generally:" msgstr "" -#: whatsnew/3.13.rst:800 +#: whatsnew/3.13.rst:816 msgid "" "Custom logic that was done in ``__new__`` after calling ``super().__new__`` " "should be moved to ``__init__``." msgstr "" -#: whatsnew/3.13.rst:802 +#: whatsnew/3.13.rst:818 msgid "" "To create a class, call the metaclass, not only the metaclass's ``__new__`` " "method." msgstr "" -#: whatsnew/3.13.rst:805 +#: whatsnew/3.13.rst:821 msgid "" "See :gh:`124520` for discussion and links to changes in some affected " "projects." msgstr "" -#: whatsnew/3.13.rst:808 +#: whatsnew/3.13.rst:824 msgid "" ":class:`ctypes.Structure` objects have a new :attr:`~ctypes.Structure." "_align_` attribute which allows the alignment of the structure being packed " @@ -1231,29 +1250,29 @@ msgid "" "in :gh:`112433`)" msgstr "" -#: whatsnew/3.13.rst:814 +#: whatsnew/3.13.rst:830 msgid "dbm" msgstr "" -#: whatsnew/3.13.rst:816 +#: whatsnew/3.13.rst:832 msgid "" "Add :mod:`dbm.sqlite3`, a new module which implements an SQLite backend, and " "make it the default :mod:`!dbm` backend. (Contributed by Raymond Hettinger " "and Erlend E. Aasland in :gh:`100414`.)" msgstr "" -#: whatsnew/3.13.rst:820 +#: whatsnew/3.13.rst:836 msgid "" "Allow removing all items from the database through the new :meth:`.gdbm." "clear` and :meth:`.ndbm.clear` methods. (Contributed by Donghee Na in :gh:" "`107122`.)" msgstr "" -#: whatsnew/3.13.rst:826 +#: whatsnew/3.13.rst:842 msgid "dis" msgstr "" -#: whatsnew/3.13.rst:828 +#: whatsnew/3.13.rst:844 msgid "" "Change the output of :mod:`dis` module functions to show logical labels for " "jump targets and exception handlers, rather than offsets. The offsets can be " @@ -1261,7 +1280,7 @@ msgid "" "the *show_offsets* argument. (Contributed by Irit Katriel in :gh:`112137`.)" msgstr "" -#: whatsnew/3.13.rst:835 +#: whatsnew/3.13.rst:851 msgid "" ":meth:`~dis.get_instructions` no longer represents cache entries as separate " "instructions. Instead, it returns them as part of the :class:`~dis." @@ -1270,11 +1289,11 @@ msgid "" "(Contributed by Irit Katriel in :gh:`112962`.)" msgstr "" -#: whatsnew/3.13.rst:847 +#: whatsnew/3.13.rst:863 msgid "doctest" msgstr "" -#: whatsnew/3.13.rst:849 +#: whatsnew/3.13.rst:865 msgid "" ":mod:`doctest` output is now colored by default. This can be controlled via " "the new :envvar:`PYTHON_COLORS` environment variable as well as the " @@ -1283,18 +1302,18 @@ msgid "" "`117225`.)" msgstr "" -#: whatsnew/3.13.rst:856 +#: whatsnew/3.13.rst:872 msgid "" "The :meth:`.DocTestRunner.run` method now counts the number of skipped " "tests. Add the :attr:`.DocTestRunner.skips` and :attr:`.TestResults.skipped` " "attributes. (Contributed by Victor Stinner in :gh:`108794`.)" msgstr "" -#: whatsnew/3.13.rst:862 +#: whatsnew/3.13.rst:878 msgid "email" msgstr "" -#: whatsnew/3.13.rst:864 +#: whatsnew/3.13.rst:880 msgid "" "Headers with embedded newlines are now quoted on output. The :mod:`~email." "generator` will now refuse to serialize (write) headers that are improperly " @@ -1304,7 +1323,7 @@ msgid "" "Bloemsaat and Petr Viktorin in :gh:`121650`.)" msgstr "" -#: whatsnew/3.13.rst:872 +#: whatsnew/3.13.rst:888 msgid "" ":func:`~email.utils.getaddresses` and :func:`~email.utils.parseaddr` now " "return ``('', '')`` pairs in more situations where invalid email addresses " @@ -1316,21 +1335,21 @@ msgid "" "Stinner for :gh:`102988` to improve the :cve:`2023-27043` fix.)" msgstr "" -#: whatsnew/3.13.rst:884 +#: whatsnew/3.13.rst:900 msgid "enum" msgstr "" -#: whatsnew/3.13.rst:886 +#: whatsnew/3.13.rst:902 msgid "" ":class:`~enum.EnumDict` has been made public to better support subclassing :" "class:`~enum.EnumType`." msgstr "" -#: whatsnew/3.13.rst:891 +#: whatsnew/3.13.rst:907 msgid "fractions" msgstr "" -#: whatsnew/3.13.rst:893 +#: whatsnew/3.13.rst:909 msgid "" ":class:`~fractions.Fraction` objects now support the standard :ref:`format " "specification mini-language ` rules for fill, alignment, sign " @@ -1338,22 +1357,22 @@ msgid "" "`111320`.)" msgstr "" -#: whatsnew/3.13.rst:900 +#: whatsnew/3.13.rst:916 msgid "glob" msgstr "" -#: whatsnew/3.13.rst:902 +#: whatsnew/3.13.rst:918 msgid "" "Add :func:`~glob.translate`, a function to convert a path specification with " "shell-style wildcards to a regular expression. (Contributed by Barney Gale " "in :gh:`72904`.)" msgstr "" -#: whatsnew/3.13.rst:908 +#: whatsnew/3.13.rst:924 msgid "importlib" msgstr "" -#: whatsnew/3.13.rst:910 +#: whatsnew/3.13.rst:926 msgid "" "The following functions in :mod:`importlib.resources` now allow accessing a " "directory (or tree) of resources, using multiple positional arguments (the " @@ -1361,37 +1380,37 @@ msgid "" "keyword-only):" msgstr "" -#: whatsnew/3.13.rst:915 +#: whatsnew/3.13.rst:931 msgid ":func:`~importlib.resources.is_resource`" msgstr "" -#: whatsnew/3.13.rst:916 +#: whatsnew/3.13.rst:932 msgid ":func:`~importlib.resources.open_binary`" msgstr "" -#: whatsnew/3.13.rst:917 +#: whatsnew/3.13.rst:933 msgid ":func:`~importlib.resources.open_text`" msgstr "" -#: whatsnew/3.13.rst:918 +#: whatsnew/3.13.rst:934 msgid ":func:`~importlib.resources.path`" msgstr "" -#: whatsnew/3.13.rst:919 +#: whatsnew/3.13.rst:935 msgid ":func:`~importlib.resources.read_binary`" msgstr "" -#: whatsnew/3.13.rst:920 +#: whatsnew/3.13.rst:936 msgid ":func:`~importlib.resources.read_text`" msgstr "" -#: whatsnew/3.13.rst:922 +#: whatsnew/3.13.rst:938 msgid "" "These functions are no longer deprecated and are not scheduled for removal. " "(Contributed by Petr Viktorin in :gh:`116608`.)" msgstr "" -#: whatsnew/3.13.rst:925 +#: whatsnew/3.13.rst:941 msgid "" ":func:`~importlib.resources.contents` remains deprecated in favor of the " "fully-featured :class:`~importlib.resources.abc.Traversable` API. However, " @@ -1399,11 +1418,11 @@ msgid "" "`116608`.)" msgstr "" -#: whatsnew/3.13.rst:932 +#: whatsnew/3.13.rst:948 msgid "io" msgstr "" -#: whatsnew/3.13.rst:934 +#: whatsnew/3.13.rst:950 msgid "" "The :class:`~io.IOBase` finalizer now logs any errors raised by the :meth:" "`~io.IOBase.close` method with :data:`sys.unraisablehook`. Previously, " @@ -1412,17 +1431,17 @@ msgid "" "build>`. (Contributed by Victor Stinner in :gh:`62948`.)" msgstr "" -#: whatsnew/3.13.rst:943 +#: whatsnew/3.13.rst:959 msgid "ipaddress" msgstr "" -#: whatsnew/3.13.rst:945 +#: whatsnew/3.13.rst:961 msgid "" "Add the :attr:`.IPv4Address.ipv6_mapped` property, which returns the IPv4-" "mapped IPv6 address. (Contributed by Charles Machalow in :gh:`109466`.)" msgstr "" -#: whatsnew/3.13.rst:949 +#: whatsnew/3.13.rst:965 msgid "" "Fix ``is_global`` and ``is_private`` behavior in :class:`~ipaddress." "IPv4Address`, :class:`~ipaddress.IPv6Address`, :class:`~ipaddress." @@ -1430,22 +1449,22 @@ msgid "" "Stasiak in :gh:`113171`.)" msgstr "" -#: whatsnew/3.13.rst:956 +#: whatsnew/3.13.rst:972 msgid "itertools" msgstr "" -#: whatsnew/3.13.rst:958 +#: whatsnew/3.13.rst:974 msgid "" ":func:`~itertools.batched` has a new *strict* parameter, which raises a :exc:" "`ValueError` if the final batch is shorter than the specified batch size. " "(Contributed by Raymond Hettinger in :gh:`113202`.)" msgstr "" -#: whatsnew/3.13.rst:965 +#: whatsnew/3.13.rst:981 msgid "marshal" msgstr "" -#: whatsnew/3.13.rst:967 +#: whatsnew/3.13.rst:983 msgid "" "Add the *allow_code* parameter in module functions. Passing " "``allow_code=False`` prevents serialization and de-serialization of code " @@ -1453,11 +1472,11 @@ msgid "" "Serhiy Storchaka in :gh:`113626`.)" msgstr "" -#: whatsnew/3.13.rst:974 +#: whatsnew/3.13.rst:990 msgid "math" msgstr "" -#: whatsnew/3.13.rst:976 +#: whatsnew/3.13.rst:992 msgid "" "The new function :func:`~math.fma` performs fused multiply-add operations. " "This computes ``x * y + z`` with only a single round, and so avoids any " @@ -1467,11 +1486,11 @@ msgid "" "Stinner in :gh:`73468`.)" msgstr "" -#: whatsnew/3.13.rst:986 +#: whatsnew/3.13.rst:1002 msgid "mimetypes" msgstr "" -#: whatsnew/3.13.rst:988 +#: whatsnew/3.13.rst:1004 msgid "" "Add the :func:`~mimetypes.guess_file_type` function to guess a MIME type " "from a filesystem path. Using paths with :func:`~mimetypes.guess_type` is " @@ -1479,18 +1498,18 @@ msgid "" "`66543`.)" msgstr "" -#: whatsnew/3.13.rst:995 +#: whatsnew/3.13.rst:1011 msgid "mmap" msgstr "" -#: whatsnew/3.13.rst:997 +#: whatsnew/3.13.rst:1013 msgid "" ":class:`~mmap.mmap` is now protected from crashing on Windows when the " "mapped memory is inaccessible due to file system errors or access " "violations. (Contributed by Jannis Weigend in :gh:`118209`.)" msgstr "" -#: whatsnew/3.13.rst:1001 +#: whatsnew/3.13.rst:1017 msgid "" ":class:`~mmap.mmap` has a new :meth:`~mmap.mmap.seekable` method that can be " "used when a seekable file-like object is required. The :meth:`~mmap.mmap." @@ -1498,7 +1517,7 @@ msgid "" "Na and Sylvie Liberman in :gh:`111835`.)" msgstr "" -#: whatsnew/3.13.rst:1006 +#: whatsnew/3.13.rst:1022 msgid "" "The new UNIX-only *trackfd* parameter for :class:`~mmap.mmap` controls file " "descriptor duplication; if false, the file descriptor specified by *fileno* " @@ -1506,22 +1525,22 @@ msgid "" "gh:`78502`.)" msgstr "" -#: whatsnew/3.13.rst:1013 +#: whatsnew/3.13.rst:1029 msgid "multiprocessing" msgstr "" -#: whatsnew/3.13.rst:1021 +#: whatsnew/3.13.rst:1037 msgid "os" msgstr "" -#: whatsnew/3.13.rst:1023 +#: whatsnew/3.13.rst:1039 msgid "" "Add :func:`~os.process_cpu_count` function to get the number of logical CPU " "cores usable by the calling thread of the current process. (Contributed by " "Victor Stinner in :gh:`109649`.)" msgstr "" -#: whatsnew/3.13.rst:1027 +#: whatsnew/3.13.rst:1043 msgid "" ":func:`~os.cpu_count` and :func:`~os.process_cpu_count` can be overridden " "through the new environment variable :envvar:`PYTHON_CPU_COUNT` or the new " @@ -1531,7 +1550,7 @@ msgid "" "Na in :gh:`109595`.)" msgstr "" -#: whatsnew/3.13.rst:1035 +#: whatsnew/3.13.rst:1051 msgid "" "Add a :ref:`low level interface ` to Linux's :manpage:`timer " "file descriptors ` via :func:`~os.timerfd_create`, :func:" @@ -1542,7 +1561,7 @@ msgid "" "in :gh:`108277`.)" msgstr "" -#: whatsnew/3.13.rst:1044 +#: whatsnew/3.13.rst:1060 msgid "" ":func:`~os.lchmod` and the *follow_symlinks* argument of :func:`~os.chmod` " "are both now available on Windows. Note that the default value of " @@ -1550,14 +1569,14 @@ msgid "" "by Serhiy Storchaka in :gh:`59616`.)" msgstr "" -#: whatsnew/3.13.rst:1050 +#: whatsnew/3.13.rst:1066 msgid "" ":func:`~os.fchmod` and support for file descriptors in :func:`~os.chmod` are " "both now available on Windows. (Contributed by Serhiy Storchaka in :gh:" "`113191`.)" msgstr "" -#: whatsnew/3.13.rst:1054 +#: whatsnew/3.13.rst:1070 msgid "" "On Windows, :func:`~os.mkdir` and :func:`~os.makedirs` now support passing a " "*mode* value of ``0o700`` to apply access control to the new directory. This " @@ -1566,14 +1585,14 @@ msgid "" "Steve Dower in :gh:`118486`.)" msgstr "" -#: whatsnew/3.13.rst:1061 +#: whatsnew/3.13.rst:1077 msgid "" ":func:`~os.posix_spawn` now accepts ``None`` for the *env* argument, which " "makes the newly spawned process use the current process environment. " "(Contributed by Jakub Kulik in :gh:`113119`.)" msgstr "" -#: whatsnew/3.13.rst:1065 +#: whatsnew/3.13.rst:1081 msgid "" ":func:`~os.posix_spawn` can now use the :const:`~os.POSIX_SPAWN_CLOSEFROM` " "attribute in the *file_actions* parameter on platforms that support :c:func:" @@ -1581,76 +1600,76 @@ msgid "" "gh:`113117`.)" msgstr "" -#: whatsnew/3.13.rst:1072 +#: whatsnew/3.13.rst:1088 msgid "os.path" msgstr "" -#: whatsnew/3.13.rst:1074 +#: whatsnew/3.13.rst:1090 msgid "" "Add :func:`~os.path.isreserved` to check if a path is reserved on the " "current system. This function is only available on Windows. (Contributed by " "Barney Gale in :gh:`88569`.)" msgstr "" -#: whatsnew/3.13.rst:1079 +#: whatsnew/3.13.rst:1095 msgid "" "On Windows, :func:`~os.path.isabs` no longer considers paths starting with " "exactly one slash (``\\`` or ``/``) to be absolute. (Contributed by Barney " "Gale and Jon Foster in :gh:`44626`.)" msgstr "" -#: whatsnew/3.13.rst:1083 +#: whatsnew/3.13.rst:1099 msgid "" ":func:`~os.path.realpath` now resolves MS-DOS style file names even if the " "file is not accessible. (Contributed by Moonsik Park in :gh:`82367`.)" msgstr "" -#: whatsnew/3.13.rst:1720 +#: whatsnew/3.13.rst:1736 msgid "pathlib" msgstr "" -#: whatsnew/3.13.rst:1091 +#: whatsnew/3.13.rst:1107 msgid "" "Add :exc:`~pathlib.UnsupportedOperation`, which is raised instead of :exc:" "`NotImplementedError` when a path operation isn't supported. (Contributed by " "Barney Gale in :gh:`89812`.)" msgstr "" -#: whatsnew/3.13.rst:1095 +#: whatsnew/3.13.rst:1111 msgid "" "Add a new constructor for creating :class:`~pathlib.Path` objects from " "'file' URIs (``file:///``), :meth:`.Path.from_uri`. (Contributed by Barney " "Gale in :gh:`107465`.)" msgstr "" -#: whatsnew/3.13.rst:1099 +#: whatsnew/3.13.rst:1115 msgid "" "Add :meth:`.PurePath.full_match` for matching paths with shell-style " "wildcards, including the recursive wildcard \"``**``\". (Contributed by " "Barney Gale in :gh:`73435`.)" msgstr "" -#: whatsnew/3.13.rst:1103 +#: whatsnew/3.13.rst:1119 msgid "" "Add the :attr:`.PurePath.parser` class attribute to store the implementation " "of :mod:`os.path` used for low-level path parsing and joining. This will be " "either :mod:`!posixpath` or :mod:`!ntpath`." msgstr "" -#: whatsnew/3.13.rst:1108 +#: whatsnew/3.13.rst:1124 msgid "" "Add *recurse_symlinks* keyword-only argument to :meth:`.Path.glob` and :meth:" "`~pathlib.Path.rglob`. (Contributed by Barney Gale in :gh:`77609`.)" msgstr "" -#: whatsnew/3.13.rst:1112 +#: whatsnew/3.13.rst:1128 msgid "" ":meth:`.Path.glob` and :meth:`~pathlib.Path.rglob` now return files and " "directories when given a pattern that ends with \"``**``\". Previously, only " "directories were returned. (Contributed by Barney Gale in :gh:`70303`.)" msgstr "" -#: whatsnew/3.13.rst:1117 +#: whatsnew/3.13.rst:1133 msgid "" "Add the *follow_symlinks* keyword-only argument to :meth:`Path.is_file " "`, :meth:`Path.is_dir `, :meth:`." @@ -1658,11 +1677,11 @@ msgid "" "`105793` and Kamil Turek in :gh:`107962`.)" msgstr "" -#: whatsnew/3.13.rst:1125 +#: whatsnew/3.13.rst:1141 msgid "pdb" msgstr "" -#: whatsnew/3.13.rst:1127 +#: whatsnew/3.13.rst:1143 msgid "" ":func:`breakpoint` and :func:`~pdb.set_trace` now enter the debugger " "immediately rather than on the next line of code to be executed. This change " @@ -1671,20 +1690,20 @@ msgid "" "Gao in :gh:`118579`.)" msgstr "" -#: whatsnew/3.13.rst:1133 +#: whatsnew/3.13.rst:1149 msgid "" "``sys.path[0]`` is no longer replaced by the directory of the script being " "debugged when :attr:`sys.flags.safe_path` is set. (Contributed by Tian Gao " "and Christian Walther in :gh:`111762`.)" msgstr "" -#: whatsnew/3.13.rst:1137 +#: whatsnew/3.13.rst:1153 msgid "" ":mod:`zipapp` is now supported as a debugging target. (Contributed by Tian " "Gao in :gh:`118501`.)" msgstr "" -#: whatsnew/3.13.rst:1140 +#: whatsnew/3.13.rst:1156 msgid "" "Add ability to move between chained exceptions during post-mortem debugging " "in :func:`~pdb.pm` using the new :pdbcmd:`exceptions [exc_number] " @@ -1692,101 +1711,101 @@ msgid "" "`106676`.)" msgstr "" -#: whatsnew/3.13.rst:1145 +#: whatsnew/3.13.rst:1161 msgid "" "Expressions and statements whose prefix is a pdb command are now correctly " "identified and executed. (Contributed by Tian Gao in :gh:`108464`.)" msgstr "" -#: whatsnew/3.13.rst:1151 +#: whatsnew/3.13.rst:1167 msgid "queue" msgstr "" -#: whatsnew/3.13.rst:1153 +#: whatsnew/3.13.rst:1169 msgid "" "Add :meth:`Queue.shutdown ` and :exc:`~queue.ShutDown` " "to manage queue termination. (Contributed by Laurie Opperman and Yves Duprat " "in :gh:`104750`.)" msgstr "" -#: whatsnew/3.13.rst:1159 +#: whatsnew/3.13.rst:1175 msgid "random" msgstr "" -#: whatsnew/3.13.rst:1161 +#: whatsnew/3.13.rst:1177 msgid "" "Add a :ref:`command-line interface `. (Contributed by Hugo van " "Kemenade in :gh:`118131`.)" msgstr "" -#: whatsnew/3.13.rst:1728 +#: whatsnew/3.13.rst:1744 msgid "re" msgstr "" -#: whatsnew/3.13.rst:1168 +#: whatsnew/3.13.rst:1184 msgid "" "Rename :exc:`!re.error` to :exc:`~re.PatternError` for improved clarity. :" "exc:`!re.error` is kept for backward compatibility." msgstr "" -#: whatsnew/3.13.rst:1173 +#: whatsnew/3.13.rst:1189 msgid "shutil" msgstr "" -#: whatsnew/3.13.rst:1175 +#: whatsnew/3.13.rst:1191 msgid "" "Support the *dir_fd* and *follow_symlinks* keyword arguments in :func:" "`~shutil.chown`. (Contributed by Berker Peksag and Tahia K in :gh:`62308`)" msgstr "" -#: whatsnew/3.13.rst:1181 +#: whatsnew/3.13.rst:1197 msgid "site" msgstr "" -#: whatsnew/3.13.rst:1183 +#: whatsnew/3.13.rst:1199 msgid "" ":file:`.pth` files are now decoded using UTF-8 first, and then with the :" "term:`locale encoding` if UTF-8 decoding fails. (Contributed by Inada Naoki " "in :gh:`117802`.)" msgstr "" -#: whatsnew/3.13.rst:1189 +#: whatsnew/3.13.rst:1205 msgid "sqlite3" msgstr "" -#: whatsnew/3.13.rst:1191 +#: whatsnew/3.13.rst:1207 msgid "" "A :exc:`ResourceWarning` is now emitted if a :class:`~sqlite3.Connection` " "object is not :meth:`closed ` explicitly. " "(Contributed by Erlend E. Aasland in :gh:`105539`.)" msgstr "" -#: whatsnew/3.13.rst:1195 +#: whatsnew/3.13.rst:1211 msgid "" "Add the *filter* keyword-only parameter to :meth:`.Connection.iterdump` for " "filtering database objects to dump. (Contributed by Mariusz Felisiak in :gh:" "`91602`.)" msgstr "" -#: whatsnew/3.13.rst:1201 +#: whatsnew/3.13.rst:1217 msgid "ssl" msgstr "" -#: whatsnew/3.13.rst:1203 +#: whatsnew/3.13.rst:1219 msgid "" "The :func:`~ssl.create_default_context` API now includes :data:`~ssl." "VERIFY_X509_PARTIAL_CHAIN` and :data:`~ssl.VERIFY_X509_STRICT` in its " "default flags." msgstr "" -#: whatsnew/3.13.rst:1209 +#: whatsnew/3.13.rst:1225 msgid "" ":data:`~ssl.VERIFY_X509_STRICT` may reject pre-:rfc:`5280` or malformed " "certificates that the underlying OpenSSL implementation might otherwise " "accept. Whilst disabling this is not recommended, you can do so using:" msgstr "" -#: whatsnew/3.13.rst:1214 +#: whatsnew/3.13.rst:1230 msgid "" "import ssl\n" "\n" @@ -1794,15 +1813,15 @@ msgid "" "ctx.verify_flags &= ~ssl.VERIFY_X509_STRICT" msgstr "" -#: whatsnew/3.13.rst:1221 +#: whatsnew/3.13.rst:1237 msgid "(Contributed by William Woodruff in :gh:`112389`.)" msgstr "" -#: whatsnew/3.13.rst:1225 +#: whatsnew/3.13.rst:1241 msgid "statistics" msgstr "" -#: whatsnew/3.13.rst:1227 +#: whatsnew/3.13.rst:1243 msgid "" "Add :func:`~statistics.kde` for kernel density estimation. This makes it " "possible to estimate a continuous probability density function from a fixed " @@ -1810,24 +1829,24 @@ msgid "" "`115863`.)" msgstr "" -#: whatsnew/3.13.rst:1232 +#: whatsnew/3.13.rst:1248 msgid "" "Add :func:`~statistics.kde_random` for sampling from an estimated " "probability density function created by :func:`~statistics.kde`. " "(Contributed by Raymond Hettinger in :gh:`115863`.)" msgstr "" -#: whatsnew/3.13.rst:1240 +#: whatsnew/3.13.rst:1256 msgid "subprocess" msgstr "" -#: whatsnew/3.13.rst:1242 +#: whatsnew/3.13.rst:1258 msgid "" "The :mod:`subprocess` module now uses the :func:`~os.posix_spawn` function " "in more situations." msgstr "" -#: whatsnew/3.13.rst:1245 +#: whatsnew/3.13.rst:1261 msgid "" "Notably, when *close_fds* is ``True`` (the default), :func:`~os.posix_spawn` " "will be used when the C library provides :c:func:`!" @@ -1836,7 +1855,7 @@ msgid "" "existing Linux :c:func:`!vfork` based code." msgstr "" -#: whatsnew/3.13.rst:1252 +#: whatsnew/3.13.rst:1268 msgid "" "A private control knob :attr:`!subprocess._USE_POSIX_SPAWN` can be set to " "``False`` if you need to force :mod:`subprocess` to never use :func:`~os." @@ -1846,22 +1865,22 @@ msgid "" "`113117`.)" msgstr "" -#: whatsnew/3.13.rst:1262 +#: whatsnew/3.13.rst:1278 msgid "sys" msgstr "" -#: whatsnew/3.13.rst:1264 +#: whatsnew/3.13.rst:1280 msgid "" "Add the :func:`~sys._is_interned` function to test if a string was interned. " "This function is not guaranteed to exist in all implementations of Python. " "(Contributed by Serhiy Storchaka in :gh:`78573`.)" msgstr "" -#: whatsnew/3.13.rst:1270 +#: whatsnew/3.13.rst:1286 msgid "tempfile" msgstr "" -#: whatsnew/3.13.rst:1272 +#: whatsnew/3.13.rst:1288 msgid "" "On Windows, the default mode ``0o700`` used by :func:`tempfile.mkdtemp` now " "limits access to the new directory due to changes to :func:`os.mkdir`. This " @@ -1869,11 +1888,11 @@ msgid "" "`118486`.)" msgstr "" -#: whatsnew/3.13.rst:1279 +#: whatsnew/3.13.rst:1295 msgid "time" msgstr "" -#: whatsnew/3.13.rst:1281 +#: whatsnew/3.13.rst:1297 msgid "" "On Windows, :func:`~time.monotonic` now uses the " "``QueryPerformanceCounter()`` clock for a resolution of 1 microsecond, " @@ -1881,7 +1900,7 @@ msgid "" "milliseconds. (Contributed by Victor Stinner in :gh:`88494`.)" msgstr "" -#: whatsnew/3.13.rst:1287 +#: whatsnew/3.13.rst:1303 msgid "" "On Windows, :func:`~time.time` now uses the " "``GetSystemTimePreciseAsFileTime()`` clock for a resolution of 1 " @@ -1890,11 +1909,11 @@ msgid "" "`63207`.)" msgstr "" -#: whatsnew/3.13.rst:1295 +#: whatsnew/3.13.rst:1311 msgid "tkinter" msgstr "" -#: whatsnew/3.13.rst:1297 +#: whatsnew/3.13.rst:1313 msgid "" "Add :mod:`tkinter` widget methods: :meth:`!tk_busy_hold`, :meth:`!" "tk_busy_configure`, :meth:`!tk_busy_cget`, :meth:`!tk_busy_forget`, :meth:`!" @@ -1902,7 +1921,7 @@ msgid "" "klappnase and Serhiy Storchaka in :gh:`72684`.)" msgstr "" -#: whatsnew/3.13.rst:1303 +#: whatsnew/3.13.rst:1319 msgid "" "The :mod:`tkinter` widget method :meth:`!wm_attributes` now accepts the " "attribute name without the minus prefix to get window attributes, for " @@ -1911,14 +1930,14 @@ msgid "" "wm_attributes(alpha=0.5)``. (Contributed by Serhiy Storchaka in :gh:`43457`.)" msgstr "" -#: whatsnew/3.13.rst:1310 +#: whatsnew/3.13.rst:1326 msgid "" ":meth:`!wm_attributes` can now return attributes as a :class:`dict`, by " "using the new optional keyword-only parameter *return_python_dict*. " "(Contributed by Serhiy Storchaka in :gh:`43457`.)" msgstr "" -#: whatsnew/3.13.rst:1314 +#: whatsnew/3.13.rst:1330 msgid "" ":meth:`!Text.count` can now return a simple :class:`int` when the new " "optional keyword-only parameter *return_ints* is used. Otherwise, the single " @@ -1926,27 +1945,27 @@ msgid "" "in :gh:`97928`.)" msgstr "" -#: whatsnew/3.13.rst:1319 +#: whatsnew/3.13.rst:1335 msgid "" "Support the \"vsapi\" element type in the :meth:`~tkinter.ttk.Style." "element_create` method of :class:`tkinter.ttk.Style`. (Contributed by Serhiy " "Storchaka in :gh:`68166`.)" msgstr "" -#: whatsnew/3.13.rst:1324 +#: whatsnew/3.13.rst:1340 msgid "" "Add the :meth:`!after_info` method for Tkinter widgets. (Contributed by " "Cheryl Sabella in :gh:`77020`.)" msgstr "" -#: whatsnew/3.13.rst:1327 +#: whatsnew/3.13.rst:1343 msgid "" "Add a new :meth:`!copy_replace` method to :class:`!PhotoImage` to copy a " "region from one image to another, possibly with pixel zooming, subsampling, " "or both. (Contributed by Serhiy Storchaka in :gh:`118225`.)" msgstr "" -#: whatsnew/3.13.rst:1332 +#: whatsnew/3.13.rst:1348 msgid "" "Add *from_coords* parameter to the :class:`!PhotoImage` methods :meth:`!" "copy`, :meth:`!zoom` and :meth:`!subsample`. Add *zoom* and *subsample* " @@ -1954,7 +1973,7 @@ msgid "" "Serhiy Storchaka in :gh:`118225`.)" msgstr "" -#: whatsnew/3.13.rst:1338 +#: whatsnew/3.13.rst:1354 msgid "" "Add the :class:`!PhotoImage` methods :meth:`!read` to read an image from a " "file and :meth:`!data` to get the image data. Add *background* and " @@ -1962,11 +1981,11 @@ msgid "" "Storchaka in :gh:`118271`.)" msgstr "" -#: whatsnew/3.13.rst:1346 +#: whatsnew/3.13.rst:1362 msgid "traceback" msgstr "" -#: whatsnew/3.13.rst:1348 +#: whatsnew/3.13.rst:1364 msgid "" "Add the :attr:`~traceback.TracebackException.exc_type_str` attribute to :" "class:`~traceback.TracebackException`, which holds a string display of the " @@ -1976,7 +1995,7 @@ msgid "" "(Contributed by Irit Katriel in :gh:`112332`.)" msgstr "" -#: whatsnew/3.13.rst:1357 +#: whatsnew/3.13.rst:1373 msgid "" "Add a new *show_group* keyword-only parameter to :meth:`.TracebackException." "format_exception_only` to (recursively) format the nested exceptions of a :" @@ -1984,11 +2003,11 @@ msgid "" "`105292`.)" msgstr "" -#: whatsnew/3.13.rst:1364 +#: whatsnew/3.13.rst:1380 msgid "types" msgstr "" -#: whatsnew/3.13.rst:1366 +#: whatsnew/3.13.rst:1382 msgid "" ":class:`~types.SimpleNamespace` can now take a single positional argument to " "initialise the namespace's arguments. This argument must either be a mapping " @@ -1996,63 +2015,63 @@ msgid "" "`108191`.)" msgstr "" -#: whatsnew/3.13.rst:1753 +#: whatsnew/3.13.rst:1769 msgid "typing" msgstr "" -#: whatsnew/3.13.rst:1375 +#: whatsnew/3.13.rst:1391 msgid "" ":pep:`705`: Add :data:`~typing.ReadOnly`, a special typing construct to mark " "a :class:`~typing.TypedDict` item as read-only for type checkers." msgstr "" -#: whatsnew/3.13.rst:1378 +#: whatsnew/3.13.rst:1394 msgid "" ":pep:`742`: Add :data:`~typing.TypeIs`, a typing construct that can be used " "to instruct a type checker how to narrow a type." msgstr "" -#: whatsnew/3.13.rst:1381 +#: whatsnew/3.13.rst:1397 msgid "" "Add :data:`~typing.NoDefault`, a sentinel object used to represent the " "defaults of some parameters in the :mod:`typing` module. (Contributed by " "Jelle Zijlstra in :gh:`116126`.)" msgstr "" -#: whatsnew/3.13.rst:1385 +#: whatsnew/3.13.rst:1401 msgid "" "Add :func:`~typing.get_protocol_members` to return the set of members " "defining a :class:`typing.Protocol`. (Contributed by Jelle Zijlstra in :gh:" "`104873`.)" msgstr "" -#: whatsnew/3.13.rst:1389 +#: whatsnew/3.13.rst:1405 msgid "" "Add :func:`~typing.is_protocol` to check whether a class is a :class:" "`~typing.Protocol`. (Contributed by Jelle Zijlstra in :gh:`104873`.)" msgstr "" -#: whatsnew/3.13.rst:1393 +#: whatsnew/3.13.rst:1409 msgid "" ":data:`~typing.ClassVar` can now be nested in :data:`~typing.Final`, and " "vice versa. (Contributed by Mehdi Drissi in :gh:`89547`.)" msgstr "" -#: whatsnew/3.13.rst:1399 +#: whatsnew/3.13.rst:1415 msgid "unicodedata" msgstr "" -#: whatsnew/3.13.rst:1401 +#: whatsnew/3.13.rst:1417 msgid "" "Update the Unicode database to `version 15.1.0`__. (Contributed by James " "Gerity in :gh:`109559`.)" msgstr "" -#: whatsnew/3.13.rst:1408 +#: whatsnew/3.13.rst:1424 msgid "venv" msgstr "" -#: whatsnew/3.13.rst:1410 +#: whatsnew/3.13.rst:1426 msgid "" "Add support for creating source control management (SCM) ignore files in a " "virtual environment's directory. By default, Git is supported. This is " @@ -2062,11 +2081,11 @@ msgid "" "Cannon in :gh:`108125`.)" msgstr "" -#: whatsnew/3.13.rst:1421 +#: whatsnew/3.13.rst:1437 msgid "warnings" msgstr "" -#: whatsnew/3.13.rst:1423 +#: whatsnew/3.13.rst:1439 msgid "" ":pep:`702`: The new :func:`warnings.deprecated` decorator provides a way to " "communicate deprecations to a :term:`static type checker` and to warn on " @@ -2075,62 +2094,62 @@ msgid "" "(Contributed by Jelle Zijlstra in :gh:`104003`.)" msgstr "" -#: whatsnew/3.13.rst:1432 +#: whatsnew/3.13.rst:1448 msgid "xml" msgstr "" -#: whatsnew/3.13.rst:1434 +#: whatsnew/3.13.rst:1450 msgid "" "Allow controlling Expat >=2.6.0 reparse deferral (:cve:`2023-52425`) by " "adding five new methods:" msgstr "" -#: whatsnew/3.13.rst:1437 +#: whatsnew/3.13.rst:1453 msgid ":meth:`xml.etree.ElementTree.XMLParser.flush`" msgstr "" -#: whatsnew/3.13.rst:1438 +#: whatsnew/3.13.rst:1454 msgid ":meth:`xml.etree.ElementTree.XMLPullParser.flush`" msgstr "" -#: whatsnew/3.13.rst:1439 +#: whatsnew/3.13.rst:1455 msgid ":meth:`xml.parsers.expat.xmlparser.GetReparseDeferralEnabled`" msgstr "" -#: whatsnew/3.13.rst:1440 +#: whatsnew/3.13.rst:1456 msgid ":meth:`xml.parsers.expat.xmlparser.SetReparseDeferralEnabled`" msgstr "" -#: whatsnew/3.13.rst:1441 +#: whatsnew/3.13.rst:1457 msgid ":meth:`!xml.sax.expatreader.ExpatParser.flush`" msgstr "" -#: whatsnew/3.13.rst:1443 +#: whatsnew/3.13.rst:1459 msgid "(Contributed by Sebastian Pipping in :gh:`115623`.)" msgstr "" -#: whatsnew/3.13.rst:1445 +#: whatsnew/3.13.rst:1461 msgid "" "Add the :meth:`!close` method for the iterator returned by :func:`~xml.etree." "ElementTree.iterparse` for explicit cleanup. (Contributed by Serhiy " "Storchaka in :gh:`69893`.)" msgstr "" -#: whatsnew/3.13.rst:1451 +#: whatsnew/3.13.rst:1467 msgid "zipimport" msgstr "" -#: whatsnew/3.13.rst:1453 +#: whatsnew/3.13.rst:1469 msgid "" "Add support for ZIP64_ format files. Everybody loves huge data, right? " "(Contributed by Tim Hatch in :gh:`94146`.)" msgstr "" -#: whatsnew/3.13.rst:1461 +#: whatsnew/3.13.rst:1477 msgid "Optimizations" msgstr "" -#: whatsnew/3.13.rst:1463 +#: whatsnew/3.13.rst:1479 msgid "" "Several standard library modules have had their import times significantly " "improved. For example, the import time of the :mod:`typing` module has been " @@ -2141,13 +2160,13 @@ msgid "" "Turner, Daniel Hollas, and others in :gh:`109653`.)" msgstr "" -#: whatsnew/3.13.rst:1474 +#: whatsnew/3.13.rst:1490 msgid "" ":func:`textwrap.indent` is now around 30% faster than before for large " "input. (Contributed by Inada Naoki in :gh:`107369`.)" msgstr "" -#: whatsnew/3.13.rst:1477 +#: whatsnew/3.13.rst:1493 msgid "" "The :mod:`subprocess` module now uses the :func:`~os.posix_spawn` function " "in more situations, including when *close_fds* is ``True`` (the default) on " @@ -2157,15 +2176,15 @@ msgid "" "Kulik in :gh:`113117`.)" msgstr "" -#: whatsnew/3.13.rst:1487 +#: whatsnew/3.13.rst:1503 msgid "Removed Modules And APIs" msgstr "" -#: whatsnew/3.13.rst:1493 +#: whatsnew/3.13.rst:1509 msgid "PEP 594: Remove \"dead batteries\" from the standard library" msgstr "" -#: whatsnew/3.13.rst:1495 +#: whatsnew/3.13.rst:1511 msgid "" ":pep:`594` proposed removing 19 modules from the standard library, " "colloquially referred to as 'dead batteries' due to their historic, " @@ -2173,38 +2192,38 @@ msgid "" "in Python 3.11, and are now removed:" msgstr "" -#: whatsnew/3.13.rst:1501 +#: whatsnew/3.13.rst:1517 msgid ":mod:`!aifc`" msgstr "" -#: whatsnew/3.13.rst:1503 +#: whatsnew/3.13.rst:1519 msgid "" ":pypi:`standard-aifc`: Use the redistribution of ``aifc`` library from PyPI." msgstr "" -#: whatsnew/3.13.rst:1506 +#: whatsnew/3.13.rst:1522 msgid ":mod:`!audioop`" msgstr "" -#: whatsnew/3.13.rst:1508 +#: whatsnew/3.13.rst:1524 msgid ":pypi:`audioop-lts`: Use ``audioop-lts`` library from PyPI." msgstr "" -#: whatsnew/3.13.rst:1511 +#: whatsnew/3.13.rst:1527 msgid ":mod:`!chunk`" msgstr "" -#: whatsnew/3.13.rst:1513 +#: whatsnew/3.13.rst:1529 msgid "" ":pypi:`standard-chunk`: Use the redistribution of ``chunk`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1516 +#: whatsnew/3.13.rst:1532 msgid ":mod:`!cgi` and :mod:`!cgitb`" msgstr "" -#: whatsnew/3.13.rst:1518 +#: whatsnew/3.13.rst:1534 msgid "" ":class:`!cgi.FieldStorage` can typically be replaced with :func:`urllib." "parse.parse_qsl` for ``GET`` and ``HEAD`` requests, and the :mod:`email." @@ -2212,7 +2231,7 @@ msgid "" "requests." msgstr "" -#: whatsnew/3.13.rst:1523 +#: whatsnew/3.13.rst:1539 msgid "" ":func:`!cgi.parse` can be replaced by calling :func:`urllib.parse.parse_qs` " "directly on the desired query string, unless the input is ``multipart/form-" @@ -2220,14 +2239,14 @@ msgid "" "parse_multipart`." msgstr "" -#: whatsnew/3.13.rst:1528 +#: whatsnew/3.13.rst:1544 msgid "" ":func:`!cgi.parse_header` can be replaced with the functionality in the :mod:" "`email` package, which implements the same MIME RFCs. For example, with :" "class:`email.message.EmailMessage`:" msgstr "" -#: whatsnew/3.13.rst:1532 +#: whatsnew/3.13.rst:1548 msgid "" "from email.message import EmailMessage\n" "\n" @@ -2236,7 +2255,7 @@ msgid "" "main, params = msg.get_content_type(), msg['content-type'].params" msgstr "" -#: whatsnew/3.13.rst:1540 +#: whatsnew/3.13.rst:1556 msgid "" ":func:`!cgi.parse_multipart` can be replaced with the functionality in the :" "mod:`email` package, which implements the same MIME RFCs, or with the :pypi:" @@ -2244,54 +2263,54 @@ msgid "" "and :class:`email.message.Message` classes." msgstr "" -#: whatsnew/3.13.rst:1546 +#: whatsnew/3.13.rst:1562 msgid "" ":pypi:`standard-cgi`: and :pypi:`standard-cgitb`: Use the redistribution of " "``cgi`` and ``cgitb`` library from PyPI." msgstr "" -#: whatsnew/3.13.rst:1549 +#: whatsnew/3.13.rst:1565 msgid "" ":mod:`!crypt` and the private :mod:`!_crypt` extension. The :mod:`hashlib` " "module may be an appropriate replacement when simply hashing a value is " "required. Otherwise, various third-party libraries on PyPI are available:" msgstr "" -#: whatsnew/3.13.rst:1554 +#: whatsnew/3.13.rst:1570 msgid "" ":pypi:`bcrypt`: Modern password hashing for your software and your servers." msgstr "" -#: whatsnew/3.13.rst:1556 +#: whatsnew/3.13.rst:1572 msgid "" ":pypi:`passlib`: Comprehensive password hashing framework supporting over 30 " "schemes." msgstr "" -#: whatsnew/3.13.rst:1558 +#: whatsnew/3.13.rst:1574 msgid ":pypi:`argon2-cffi`: The secure Argon2 password hashing algorithm." msgstr "" -#: whatsnew/3.13.rst:1560 +#: whatsnew/3.13.rst:1576 msgid "" ":pypi:`legacycrypt`: :mod:`ctypes` wrapper to the POSIX crypt library call " "and associated functionality." msgstr "" -#: whatsnew/3.13.rst:1563 +#: whatsnew/3.13.rst:1579 msgid "" ":pypi:`crypt_r`: Fork of the :mod:`!crypt` module, wrapper to the :manpage:" "`crypt_r(3)` library call and associated functionality." msgstr "" -#: whatsnew/3.13.rst:1567 +#: whatsnew/3.13.rst:1583 msgid "" ":pypi:`standard-crypt` and :pypi:`deprecated-crypt-alternative`: Use the " "redistribution of ``crypt`` and reimplementation of ``_crypt`` libraries " "from PyPI." msgstr "" -#: whatsnew/3.13.rst:1570 +#: whatsnew/3.13.rst:1586 msgid "" ":mod:`!imghdr`: The :pypi:`filetype`, :pypi:`puremagic`, or :pypi:`python-" "magic` libraries should be used as replacements. For example, the :func:`!" @@ -2299,138 +2318,138 @@ msgid "" "function for all file formats that were supported by :mod:`!imghdr`." msgstr "" -#: whatsnew/3.13.rst:1577 +#: whatsnew/3.13.rst:1593 msgid "" ":pypi:`standard-imghdr`: Use the redistribution of ``imghdr`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1580 +#: whatsnew/3.13.rst:1596 msgid ":mod:`!mailcap`: Use the :mod:`mimetypes` module instead." msgstr "" -#: whatsnew/3.13.rst:1583 +#: whatsnew/3.13.rst:1599 msgid "" ":pypi:`standard-mailcap`: Use the redistribution of ``mailcap`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1586 +#: whatsnew/3.13.rst:1602 msgid ":mod:`!msilib`" msgstr "" -#: whatsnew/3.13.rst:1587 +#: whatsnew/3.13.rst:1603 msgid ":mod:`!nis`" msgstr "" -#: whatsnew/3.13.rst:1588 +#: whatsnew/3.13.rst:1604 msgid ":mod:`!nntplib`: Use the :pypi:`pynntp` library from PyPI instead." msgstr "" -#: whatsnew/3.13.rst:1591 +#: whatsnew/3.13.rst:1607 msgid "" ":pypi:`standard-nntplib`: Use the redistribution of ``nntplib`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1594 +#: whatsnew/3.13.rst:1610 msgid "" ":mod:`!ossaudiodev`: For audio playback, use the :pypi:`pygame` library from " "PyPI instead." msgstr "" -#: whatsnew/3.13.rst:1596 +#: whatsnew/3.13.rst:1612 msgid "" ":mod:`!pipes`: Use the :mod:`subprocess` module instead. Use :func:`shlex." "quote` to replace the undocumented ``pipes.quote`` function." msgstr "" -#: whatsnew/3.13.rst:1601 +#: whatsnew/3.13.rst:1617 msgid "" ":pypi:`standard-pipes`: Use the redistribution of ``pipes`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1604 +#: whatsnew/3.13.rst:1620 msgid "" ":mod:`!sndhdr`: The :pypi:`filetype`, :pypi:`puremagic`, or :pypi:`python-" "magic` libraries should be used as replacements." msgstr "" -#: whatsnew/3.13.rst:1608 +#: whatsnew/3.13.rst:1624 msgid "" ":pypi:`standard-sndhdr`: Use the redistribution of ``sndhdr`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1611 +#: whatsnew/3.13.rst:1627 msgid ":mod:`!spwd`: Use the :pypi:`python-pam` library from PyPI instead." msgstr "" -#: whatsnew/3.13.rst:1613 +#: whatsnew/3.13.rst:1629 msgid ":mod:`!sunau`" msgstr "" -#: whatsnew/3.13.rst:1615 +#: whatsnew/3.13.rst:1631 msgid "" ":pypi:`standard-sunau`: Use the redistribution of ``sunau`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1618 +#: whatsnew/3.13.rst:1634 msgid "" ":mod:`!telnetlib`, Use the :pypi:`telnetlib3` or :pypi:`Exscript` libraries " "from PyPI instead." msgstr "" -#: whatsnew/3.13.rst:1621 +#: whatsnew/3.13.rst:1637 msgid "" ":pypi:`standard-telnetlib`: Use the redistribution of ``telnetlib`` library " "from PyPI." msgstr "" -#: whatsnew/3.13.rst:1624 +#: whatsnew/3.13.rst:1640 msgid "" ":mod:`!uu`: Use the :mod:`base64` module instead, as a modern alternative." msgstr "" -#: whatsnew/3.13.rst:1627 +#: whatsnew/3.13.rst:1643 msgid "" ":pypi:`standard-uu`: Use the redistribution of ``uu`` library from PyPI." msgstr "" -#: whatsnew/3.13.rst:1630 +#: whatsnew/3.13.rst:1646 msgid ":mod:`!xdrlib`" msgstr "" -#: whatsnew/3.13.rst:1632 +#: whatsnew/3.13.rst:1648 msgid "" ":pypi:`standard-xdrlib`: Use the redistribution of ``xdrlib`` library from " "PyPI." msgstr "" -#: whatsnew/3.13.rst:1635 +#: whatsnew/3.13.rst:1651 msgid "" "(Contributed by Victor Stinner and Zachary Ware in :gh:`104773` and :gh:" "`104780`.)" msgstr "" -#: whatsnew/3.13.rst:1639 +#: whatsnew/3.13.rst:1655 msgid "2to3" msgstr "" -#: whatsnew/3.13.rst:1641 +#: whatsnew/3.13.rst:1657 msgid "" "Remove the :program:`2to3` program and the :mod:`!lib2to3` module, " "previously deprecated in Python 3.11. (Contributed by Victor Stinner in :gh:" "`104780`.)" msgstr "" -#: whatsnew/3.13.rst:1647 +#: whatsnew/3.13.rst:1663 msgid "builtins" msgstr "" -#: whatsnew/3.13.rst:1649 +#: whatsnew/3.13.rst:1665 msgid "" "Remove support for chained :class:`classmethod` descriptors (introduced in :" "gh:`63272`). These can no longer be used to wrap other descriptors, such as :" @@ -2440,47 +2459,47 @@ msgid "" "(Contributed by Raymond Hettinger in :gh:`89519`.)" msgstr "" -#: whatsnew/3.13.rst:1658 +#: whatsnew/3.13.rst:1674 msgid "" "Raise a :exc:`RuntimeError` when calling :meth:`frame.clear` on a suspended " "frame (as has always been the case for an executing frame). (Contributed by " "Irit Katriel in :gh:`79932`.)" msgstr "" -#: whatsnew/3.13.rst:1666 +#: whatsnew/3.13.rst:1682 msgid "" "Remove the undocumented :class:`!LegacyInterpolation` class, deprecated in " "the docstring since Python 3.2, and at runtime since Python 3.11. " "(Contributed by Hugo van Kemenade in :gh:`104886`.)" msgstr "" -#: whatsnew/3.13.rst:1673 +#: whatsnew/3.13.rst:1689 msgid "importlib.metadata" msgstr "" -#: whatsnew/3.13.rst:1675 +#: whatsnew/3.13.rst:1691 msgid "" "Remove deprecated subscript (:meth:`~object.__getitem__`) access for :ref:" "`EntryPoint ` objects. (Contributed by Jason R. Coombs in :gh:" "`113175`.)" msgstr "" -#: whatsnew/3.13.rst:1681 +#: whatsnew/3.13.rst:1697 msgid "locale" msgstr "" -#: whatsnew/3.13.rst:1683 +#: whatsnew/3.13.rst:1699 msgid "" "Remove the :func:`!locale.resetlocale` function, deprecated in Python 3.11. " "Use ``locale.setlocale(locale.LC_ALL, \"\")`` instead. (Contributed by " "Victor Stinner in :gh:`104783`.)" msgstr "" -#: whatsnew/3.13.rst:1689 +#: whatsnew/3.13.rst:1705 msgid "opcode" msgstr "" -#: whatsnew/3.13.rst:1691 +#: whatsnew/3.13.rst:1707 msgid "" "Move :attr:`!opcode.ENABLE_SPECIALIZATION` to :attr:`!_opcode." "ENABLE_SPECIALIZATION`. This field was added in 3.12, it was never " @@ -2488,7 +2507,7 @@ msgid "" "Katriel in :gh:`105481`.)" msgstr "" -#: whatsnew/3.13.rst:1696 +#: whatsnew/3.13.rst:1712 msgid "" "Remove :func:`!opcode.is_pseudo`, :attr:`!opcode.MIN_PSEUDO_OPCODE`, and :" "attr:`!opcode.MAX_PSEUDO_OPCODE`, which were added in Python 3.12, but were " @@ -2496,11 +2515,11 @@ msgid "" "be used externally. (Contributed by Irit Katriel in :gh:`105481`.)" msgstr "" -#: whatsnew/3.13.rst:1704 +#: whatsnew/3.13.rst:1720 msgid "optparse" msgstr "" -#: whatsnew/3.13.rst:1706 +#: whatsnew/3.13.rst:1722 msgid "" "This module is no longer considered :term:`soft deprecated`. While :mod:" "`argparse` remains preferred for new projects that aren't using a third " @@ -2513,43 +2532,43 @@ msgid "" "(Contributed by Alyssa Coghlan and Serhiy Storchaka in :gh:`126180`.)" msgstr "" -#: whatsnew/3.13.rst:1722 +#: whatsnew/3.13.rst:1738 msgid "" "Remove the ability to use :class:`~pathlib.Path` objects as context " "managers. This functionality was deprecated and has had no effect since " "Python 3.9. (Contributed by Barney Gale in :gh:`83863`.)" msgstr "" -#: whatsnew/3.13.rst:1730 +#: whatsnew/3.13.rst:1746 msgid "" "Remove the undocumented, deprecated, and broken :func:`!re.template` " "function and :attr:`!re.TEMPLATE` / :attr:`!re.T` flag. (Contributed by " "Serhiy Storchaka and Nikita Sobolev in :gh:`105687`.)" msgstr "" -#: whatsnew/3.13.rst:1736 +#: whatsnew/3.13.rst:1752 msgid "tkinter.tix" msgstr "" -#: whatsnew/3.13.rst:1738 +#: whatsnew/3.13.rst:1754 msgid "" "Remove the :mod:`!tkinter.tix` module, deprecated in Python 3.6. The third-" "party Tix library which the module wrapped is unmaintained. (Contributed by " "Zachary Ware in :gh:`75552`.)" msgstr "" -#: whatsnew/3.13.rst:1744 +#: whatsnew/3.13.rst:1760 msgid "turtle" msgstr "" -#: whatsnew/3.13.rst:1746 +#: whatsnew/3.13.rst:1762 msgid "" "Remove the :meth:`!RawTurtle.settiltangle` method, deprecated in the " "documentation since Python 3.1 and at runtime since Python 3.11. " "(Contributed by Hugo van Kemenade in :gh:`104876`.)" msgstr "" -#: whatsnew/3.13.rst:1755 +#: whatsnew/3.13.rst:1771 msgid "" "Remove the :mod:`!typing.io` and :mod:`!typing.re` namespaces, deprecated " "since Python 3.8. The items in those namespaces can be imported directly " @@ -2557,66 +2576,66 @@ msgid "" "`92871`.)" msgstr "" -#: whatsnew/3.13.rst:1761 +#: whatsnew/3.13.rst:1777 msgid "" "Remove the keyword-argument method of creating :class:`~typing.TypedDict` " "types, deprecated in Python 3.11. (Contributed by Tomas Roun in :gh:" "`104786`.)" msgstr "" -#: whatsnew/3.13.rst:1767 +#: whatsnew/3.13.rst:1783 msgid "unittest" msgstr "" -#: whatsnew/3.13.rst:1769 +#: whatsnew/3.13.rst:1785 msgid "" "Remove the following :mod:`unittest` functions, deprecated in Python 3.11:" msgstr "" -#: whatsnew/3.13.rst:1771 +#: whatsnew/3.13.rst:1787 msgid ":func:`!unittest.findTestCases`" msgstr "" -#: whatsnew/3.13.rst:1772 +#: whatsnew/3.13.rst:1788 msgid ":func:`!unittest.makeSuite`" msgstr "" -#: whatsnew/3.13.rst:1773 +#: whatsnew/3.13.rst:1789 msgid ":func:`!unittest.getTestCaseNames`" msgstr "" -#: whatsnew/3.13.rst:1775 +#: whatsnew/3.13.rst:1791 msgid "Use :class:`~unittest.TestLoader` methods instead:" msgstr "" -#: whatsnew/3.13.rst:1777 +#: whatsnew/3.13.rst:1793 msgid ":meth:`~unittest.TestLoader.loadTestsFromModule`" msgstr "" -#: whatsnew/3.13.rst:1778 +#: whatsnew/3.13.rst:1794 msgid ":meth:`~unittest.TestLoader.loadTestsFromTestCase`" msgstr "" -#: whatsnew/3.13.rst:1779 +#: whatsnew/3.13.rst:1795 msgid ":meth:`~unittest.TestLoader.getTestCaseNames`" msgstr "" -#: whatsnew/3.13.rst:1781 +#: whatsnew/3.13.rst:1797 msgid "(Contributed by Hugo van Kemenade in :gh:`104835`.)" msgstr "" -#: whatsnew/3.13.rst:1783 +#: whatsnew/3.13.rst:1799 msgid "" "Remove the untested and undocumented :meth:`!TestProgram.usageExit` method, " "deprecated in Python 3.11. (Contributed by Hugo van Kemenade in :gh:" "`104992`.)" msgstr "" -#: whatsnew/3.13.rst:1789 +#: whatsnew/3.13.rst:1805 msgid "urllib" msgstr "" -#: whatsnew/3.13.rst:1791 +#: whatsnew/3.13.rst:1807 msgid "" "Remove the *cafile*, *capath*, and *cadefault* parameters of the :func:" "`urllib.request.urlopen` function, deprecated in Python 3.6. Use the " @@ -2627,33 +2646,33 @@ msgid "" "Victor Stinner in :gh:`105382`.)" msgstr "" -#: whatsnew/3.13.rst:1802 +#: whatsnew/3.13.rst:1818 msgid "webbrowser" msgstr "" -#: whatsnew/3.13.rst:1804 +#: whatsnew/3.13.rst:1820 msgid "" "Remove the untested and undocumented :class:`!MacOSX` class, deprecated in " "Python 3.11. Use the :class:`!MacOSXOSAScript` class (introduced in Python " "3.2) instead. (Contributed by Hugo van Kemenade in :gh:`104804`.)" msgstr "" -#: whatsnew/3.13.rst:1809 +#: whatsnew/3.13.rst:1825 msgid "" "Remove the deprecated :attr:`!MacOSXOSAScript._name` attribute. Use the :" "attr:`MacOSXOSAScript.name ` attribute instead. " "(Contributed by Nikita Sobolev in :gh:`105546`.)" msgstr "" -#: whatsnew/3.13.rst:1816 +#: whatsnew/3.13.rst:1832 msgid "New Deprecations" msgstr "" -#: whatsnew/3.13.rst:1818 +#: whatsnew/3.13.rst:1834 msgid ":ref:`User-defined functions `:" msgstr "" -#: whatsnew/3.13.rst:1820 +#: whatsnew/3.13.rst:1836 msgid "" "Deprecate assignment to a function's :attr:`~function.__code__` attribute, " "where the new code object's type does not match the function's type. The " @@ -2661,11 +2680,11 @@ msgid "" "coroutine. (Contributed by Irit Katriel in :gh:`81137`.)" msgstr "" -#: whatsnew/3.13.rst:1826 deprecations/pending-removal-in-3.16.rst:11 +#: whatsnew/3.13.rst:1842 deprecations/pending-removal-in-3.16.rst:11 msgid ":mod:`array`:" msgstr "" -#: whatsnew/3.13.rst:1828 +#: whatsnew/3.13.rst:1844 msgid "" "Deprecate the ``'u'`` format code (:c:type:`wchar_t`) at runtime. This " "format code has been deprecated in documentation since Python 3.3, and will " @@ -2674,60 +2693,60 @@ msgid "" "`80480`.)" msgstr "" -#: whatsnew/3.13.rst:1835 deprecations/pending-removal-in-3.15.rst:16 +#: whatsnew/3.13.rst:1851 deprecations/pending-removal-in-3.15.rst:16 msgid ":mod:`ctypes`:" msgstr "" -#: whatsnew/3.13.rst:1837 +#: whatsnew/3.13.rst:1853 msgid "" "Deprecate the undocumented :func:`!SetPointerType` function, to be removed " "in Python 3.15. (Contributed by Victor Stinner in :gh:`105733`.)" msgstr "" -#: whatsnew/3.13.rst:1841 +#: whatsnew/3.13.rst:1857 msgid "" ":term:`Soft-deprecate ` the :func:`~ctypes.ARRAY` function " "in favour of ``type * length`` multiplication. (Contributed by Victor " "Stinner in :gh:`105733`.)" msgstr "" -#: whatsnew/3.13.rst:1845 +#: whatsnew/3.13.rst:1861 msgid ":mod:`decimal`:" msgstr "" -#: whatsnew/3.13.rst:1847 +#: whatsnew/3.13.rst:1863 msgid "" "Deprecate the non-standard and undocumented :class:`~decimal.Decimal` format " "specifier ``'N'``, which is only supported in the :mod:`!decimal` module's C " "implementation. (Contributed by Serhiy Storchaka in :gh:`89902`.)" msgstr "" -#: whatsnew/3.13.rst:1852 +#: whatsnew/3.13.rst:1868 msgid ":mod:`dis`:" msgstr "" -#: whatsnew/3.13.rst:1854 +#: whatsnew/3.13.rst:1870 msgid "" "Deprecate the :attr:`!HAVE_ARGUMENT` separator. Check membership in :data:" "`~dis.hasarg` instead. (Contributed by Irit Katriel in :gh:`109319`.)" msgstr "" -#: whatsnew/3.13.rst:1858 +#: whatsnew/3.13.rst:1874 msgid ":mod:`gettext`:" msgstr "" -#: whatsnew/3.13.rst:1860 +#: whatsnew/3.13.rst:1876 msgid "" "Deprecate non-integer numbers as arguments to functions and methods that " "consider plural forms in the :mod:`!gettext` module, even if no translation " "was found. (Contributed by Serhiy Storchaka in :gh:`88434`.)" msgstr "" -#: whatsnew/3.13.rst:1865 +#: whatsnew/3.13.rst:1881 msgid ":mod:`glob`:" msgstr "" -#: whatsnew/3.13.rst:1867 +#: whatsnew/3.13.rst:1883 msgid "" "Deprecate the undocumented :func:`!glob0` and :func:`!glob1` functions. Use :" "func:`~glob.glob` and pass a :term:`path-like object` specifying the root " @@ -2735,11 +2754,11 @@ msgid "" "in :gh:`117337`.)" msgstr "" -#: whatsnew/3.13.rst:1872 deprecations/pending-removal-in-3.15.rst:21 +#: whatsnew/3.13.rst:1888 deprecations/pending-removal-in-3.15.rst:21 msgid ":mod:`http.server`:" msgstr "" -#: whatsnew/3.13.rst:1874 +#: whatsnew/3.13.rst:1890 msgid "" "Deprecate :class:`~http.server.CGIHTTPRequestHandler`, to be removed in " "Python 3.15. Process-based CGI HTTP servers have been out of favor for a " @@ -2748,29 +2767,29 @@ msgid "" "by Gregory P. Smith in :gh:`109096`.)" msgstr "" -#: whatsnew/3.13.rst:1881 +#: whatsnew/3.13.rst:1897 msgid "" "Deprecate the :option:`!--cgi` flag to the :program:`python -m http.server` " "command-line interface, to be removed in Python 3.15. (Contributed by " "Gregory P. Smith in :gh:`109096`.)" msgstr "" -#: whatsnew/3.13.rst:1886 deprecations/pending-removal-in-3.16.rst:70 +#: whatsnew/3.13.rst:1902 deprecations/pending-removal-in-3.16.rst:70 msgid ":mod:`mimetypes`:" msgstr "" -#: whatsnew/3.13.rst:1888 +#: whatsnew/3.13.rst:1904 msgid "" ":term:`Soft-deprecate ` file path arguments to :func:" "`~mimetypes.guess_type`, use :func:`~mimetypes.guess_file_type` instead. " "(Contributed by Serhiy Storchaka in :gh:`66543`.)" msgstr "" -#: whatsnew/3.13.rst:1893 +#: whatsnew/3.13.rst:1909 msgid ":mod:`re`:" msgstr "" -#: whatsnew/3.13.rst:1895 +#: whatsnew/3.13.rst:1911 msgid "" "Deprecate passing the optional *maxsplit*, *count*, or *flags* arguments as " "positional arguments to the module-level :func:`~re.split`, :func:`~re.sub`, " @@ -2779,43 +2798,43 @@ msgid "" "by Serhiy Storchaka in :gh:`56166`.)" msgstr "" -#: whatsnew/3.13.rst:1902 deprecations/pending-removal-in-3.15.rst:46 +#: whatsnew/3.13.rst:1918 deprecations/pending-removal-in-3.15.rst:46 msgid ":mod:`pathlib`:" msgstr "" -#: whatsnew/3.13.rst:1904 +#: whatsnew/3.13.rst:1920 msgid "" "Deprecate :meth:`.PurePath.is_reserved`, to be removed in Python 3.15. Use :" "func:`os.path.isreserved` to detect reserved paths on Windows. (Contributed " "by Barney Gale in :gh:`88569`.)" msgstr "" -#: whatsnew/3.13.rst:1909 deprecations/pending-removal-in-3.15.rst:52 +#: whatsnew/3.13.rst:1925 deprecations/pending-removal-in-3.15.rst:52 msgid ":mod:`platform`:" msgstr "" -#: whatsnew/3.13.rst:1911 +#: whatsnew/3.13.rst:1927 msgid "" "Deprecate :func:`~platform.java_ver`, to be removed in Python 3.15. This " "function is only useful for Jython support, has a confusing API, and is " "largely untested. (Contributed by Nikita Sobolev in :gh:`116349`.)" msgstr "" -#: whatsnew/3.13.rst:1917 +#: whatsnew/3.13.rst:1933 msgid ":mod:`pydoc`:" msgstr "" -#: whatsnew/3.13.rst:1919 +#: whatsnew/3.13.rst:1935 msgid "" "Deprecate the undocumented :func:`!ispackage` function. (Contributed by " "Zackery Spytz in :gh:`64020`.)" msgstr "" -#: whatsnew/3.13.rst:1922 deprecations/pending-removal-in-3.14.rst:91 +#: whatsnew/3.13.rst:1938 deprecations/pending-removal-in-3.14.rst:91 msgid ":mod:`sqlite3`:" msgstr "" -#: whatsnew/3.13.rst:1924 +#: whatsnew/3.13.rst:1940 msgid "" "Deprecate passing more than one positional argument to the :func:`~sqlite3." "connect` function and the :class:`~sqlite3.Connection` constructor. The " @@ -2823,7 +2842,7 @@ msgid "" "by Erlend E. Aasland in :gh:`107948`.)" msgstr "" -#: whatsnew/3.13.rst:1930 +#: whatsnew/3.13.rst:1946 msgid "" "Deprecate passing name, number of arguments, and the callable as keyword " "arguments for :meth:`.Connection.create_function` and :meth:`.Connection." @@ -2831,7 +2850,7 @@ msgid "" "3.15. (Contributed by Erlend E. Aasland in :gh:`108278`.)" msgstr "" -#: whatsnew/3.13.rst:1936 +#: whatsnew/3.13.rst:1952 msgid "" "Deprecate passing the callback callable by keyword for the :meth:`~sqlite3." "Connection.set_authorizer`, :meth:`~sqlite3.Connection." @@ -2841,44 +2860,44 @@ msgid "" "`108278`.)" msgstr "" -#: whatsnew/3.13.rst:1944 deprecations/pending-removal-in-3.16.rst:90 +#: whatsnew/3.13.rst:1960 deprecations/pending-removal-in-3.16.rst:90 msgid ":mod:`sys`:" msgstr "" -#: whatsnew/3.13.rst:1946 +#: whatsnew/3.13.rst:1962 msgid "" "Deprecate the :func:`~sys._enablelegacywindowsfsencoding` function, to be " "removed in Python 3.16. Use the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` " "environment variable instead. (Contributed by Inada Naoki in :gh:`73427`.)" msgstr "" -#: whatsnew/3.13.rst:1951 deprecations/pending-removal-in-3.16.rst:102 +#: whatsnew/3.13.rst:1967 deprecations/pending-removal-in-3.16.rst:102 msgid ":mod:`tarfile`:" msgstr "" -#: whatsnew/3.13.rst:1953 +#: whatsnew/3.13.rst:1969 msgid "" "Deprecate the undocumented and unused :attr:`!TarFile.tarfile` attribute, to " "be removed in Python 3.16. (Contributed in :gh:`115256`.)" msgstr "" -#: whatsnew/3.13.rst:1957 +#: whatsnew/3.13.rst:1973 msgid ":mod:`traceback`:" msgstr "" -#: whatsnew/3.13.rst:1959 +#: whatsnew/3.13.rst:1975 msgid "" "Deprecate the :attr:`.TracebackException.exc_type` attribute. Use :attr:`." "TracebackException.exc_type_str` instead. (Contributed by Irit Katriel in :" "gh:`112332`.)" msgstr "" -#: whatsnew/3.13.rst:1963 deprecations/pending-removal-in-3.15.rst:80 +#: whatsnew/3.13.rst:1979 deprecations/pending-removal-in-3.15.rst:80 #: deprecations/pending-removal-in-3.17.rst:4 msgid ":mod:`typing`:" msgstr "" -#: whatsnew/3.13.rst:1965 +#: whatsnew/3.13.rst:1981 msgid "" "Deprecate the undocumented keyword argument syntax for creating :class:" "`~typing.NamedTuple` classes (e.g. ``Point = NamedTuple(\"Point\", x=int, " @@ -2886,7 +2905,7 @@ msgid "" "functional syntax instead. (Contributed by Alex Waygood in :gh:`105566`.)" msgstr "" -#: whatsnew/3.13.rst:1972 +#: whatsnew/3.13.rst:1988 msgid "" "Deprecate omitting the *fields* parameter when creating a :class:`~typing." "NamedTuple` or :class:`typing.TypedDict` class, and deprecate passing " @@ -2898,7 +2917,7 @@ msgid "" "Alex Waygood in :gh:`105566` and :gh:`105570`.)" msgstr "" -#: whatsnew/3.13.rst:1982 +#: whatsnew/3.13.rst:1998 msgid "" "Deprecate the :func:`typing.no_type_check_decorator` decorator function, to " "be removed in in Python 3.15. After eight years in the :mod:`typing` module, " @@ -2906,7 +2925,7 @@ msgid "" "Waygood in :gh:`106309`.)" msgstr "" -#: whatsnew/3.13.rst:1988 +#: whatsnew/3.13.rst:2004 msgid "" "Deprecate :data:`typing.AnyStr`. In Python 3.16, it will be removed from " "``typing.__all__``, and a :exc:`DeprecationWarning` will be emitted at " @@ -2915,11 +2934,11 @@ msgid "" "(Contributed by Michael The in :gh:`107116`.)" msgstr "" -#: whatsnew/3.13.rst:1996 deprecations/pending-removal-in-3.15.rst:93 +#: whatsnew/3.13.rst:2012 deprecations/pending-removal-in-3.15.rst:100 msgid ":mod:`wave`:" msgstr "" -#: whatsnew/3.13.rst:1998 +#: whatsnew/3.13.rst:2014 msgid "" "Deprecate the :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:" "`~wave.Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :" @@ -3240,23 +3259,32 @@ msgstr "" #: deprecations/pending-removal-in-3.15.rst:88 msgid "" +"When using the functional syntax of :class:`~typing.TypedDict`\\s, failing " +"to pass a value to the *fields* parameter (``TD = TypedDict(\"TD\")``) or " +"passing ``None`` (``TD = TypedDict(\"TD\", None)``) has been deprecated " +"since Python 3.13. Use ``class TD(TypedDict): pass`` or ``TD = " +"TypedDict(\"TD\", {})`` to create a TypedDict with zero field." +msgstr "" + +#: deprecations/pending-removal-in-3.15.rst:95 +msgid "" "The :func:`typing.no_type_check_decorator` decorator function has been " "deprecated since Python 3.13. After eight years in the :mod:`typing` module, " "it has yet to be supported by any major type checker." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:95 +#: deprecations/pending-removal-in-3.15.rst:102 msgid "" "The :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:`~wave." "Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:" "`~wave.Wave_write` classes have been deprecated since Python 3.13." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:100 +#: deprecations/pending-removal-in-3.15.rst:107 msgid ":mod:`zipimport`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:102 +#: deprecations/pending-removal-in-3.15.rst:109 msgid "" ":meth:`~zipimport.zipimporter.load_module` has been deprecated since Python " "3.10. Use :meth:`~zipimport.zipimporter.exec_module` instead. (Contributed " @@ -3804,11 +3832,11 @@ msgid "" "_clear_internal_caches` instead." msgstr "" -#: whatsnew/3.13.rst:2017 +#: whatsnew/3.13.rst:2033 msgid "CPython Bytecode Changes" msgstr "" -#: whatsnew/3.13.rst:2019 +#: whatsnew/3.13.rst:2035 msgid "" "The oparg of :opcode:`YIELD_VALUE` is now ``1`` if the yield is part of a " "yield-from or await, and ``0`` otherwise. The oparg of :opcode:`RESUME` was " @@ -3817,97 +3845,97 @@ msgid "" "`111354`.)" msgstr "" -#: whatsnew/3.13.rst:2027 +#: whatsnew/3.13.rst:2043 msgid "C API Changes" msgstr "" -#: whatsnew/3.13.rst:2032 +#: whatsnew/3.13.rst:2048 msgid "" "Add the :ref:`PyMonitoring C API ` for generating :pep:" "`669` monitoring events:" msgstr "" -#: whatsnew/3.13.rst:2035 +#: whatsnew/3.13.rst:2051 msgid ":c:type:`PyMonitoringState`" msgstr "" -#: whatsnew/3.13.rst:2036 +#: whatsnew/3.13.rst:2052 msgid ":c:func:`PyMonitoring_FirePyStartEvent`" msgstr "" -#: whatsnew/3.13.rst:2037 +#: whatsnew/3.13.rst:2053 msgid ":c:func:`PyMonitoring_FirePyResumeEvent`" msgstr "" -#: whatsnew/3.13.rst:2038 +#: whatsnew/3.13.rst:2054 msgid ":c:func:`PyMonitoring_FirePyReturnEvent`" msgstr "" -#: whatsnew/3.13.rst:2039 +#: whatsnew/3.13.rst:2055 msgid ":c:func:`PyMonitoring_FirePyYieldEvent`" msgstr "" -#: whatsnew/3.13.rst:2040 +#: whatsnew/3.13.rst:2056 msgid ":c:func:`PyMonitoring_FireCallEvent`" msgstr "" -#: whatsnew/3.13.rst:2041 +#: whatsnew/3.13.rst:2057 msgid ":c:func:`PyMonitoring_FireLineEvent`" msgstr "" -#: whatsnew/3.13.rst:2042 +#: whatsnew/3.13.rst:2058 msgid ":c:func:`PyMonitoring_FireJumpEvent`" msgstr "" -#: whatsnew/3.13.rst:2043 +#: whatsnew/3.13.rst:2059 msgid "``PyMonitoring_FireBranchEvent``" msgstr "" -#: whatsnew/3.13.rst:2044 +#: whatsnew/3.13.rst:2060 msgid ":c:func:`PyMonitoring_FireCReturnEvent`" msgstr "" -#: whatsnew/3.13.rst:2045 +#: whatsnew/3.13.rst:2061 msgid ":c:func:`PyMonitoring_FirePyThrowEvent`" msgstr "" -#: whatsnew/3.13.rst:2046 +#: whatsnew/3.13.rst:2062 msgid ":c:func:`PyMonitoring_FireRaiseEvent`" msgstr "" -#: whatsnew/3.13.rst:2047 +#: whatsnew/3.13.rst:2063 msgid ":c:func:`PyMonitoring_FireCRaiseEvent`" msgstr "" -#: whatsnew/3.13.rst:2048 +#: whatsnew/3.13.rst:2064 msgid ":c:func:`PyMonitoring_FireReraiseEvent`" msgstr "" -#: whatsnew/3.13.rst:2049 +#: whatsnew/3.13.rst:2065 msgid ":c:func:`PyMonitoring_FireExceptionHandledEvent`" msgstr "" -#: whatsnew/3.13.rst:2050 +#: whatsnew/3.13.rst:2066 msgid ":c:func:`PyMonitoring_FirePyUnwindEvent`" msgstr "" -#: whatsnew/3.13.rst:2051 +#: whatsnew/3.13.rst:2067 msgid ":c:func:`PyMonitoring_FireStopIterationEvent`" msgstr "" -#: whatsnew/3.13.rst:2052 +#: whatsnew/3.13.rst:2068 msgid ":c:func:`PyMonitoring_EnterScope`" msgstr "" -#: whatsnew/3.13.rst:2053 +#: whatsnew/3.13.rst:2069 msgid ":c:func:`PyMonitoring_ExitScope`" msgstr "" -#: whatsnew/3.13.rst:2055 +#: whatsnew/3.13.rst:2071 msgid "(Contributed by Irit Katriel in :gh:`111997`)." msgstr "" -#: whatsnew/3.13.rst:2057 +#: whatsnew/3.13.rst:2073 msgid "" "Add :c:type:`PyMutex`, a lightweight mutex that occupies a single byte, and " "the new :c:func:`PyMutex_Lock` and :c:func:`PyMutex_Unlock` functions. :c:" @@ -3915,52 +3943,52 @@ msgid "" "operation needs to block. (Contributed by Sam Gross in :gh:`108724`.)" msgstr "" -#: whatsnew/3.13.rst:2063 +#: whatsnew/3.13.rst:2079 msgid "" "Add the :ref:`PyTime C API ` to provide access to system clocks:" msgstr "" -#: whatsnew/3.13.rst:2065 +#: whatsnew/3.13.rst:2081 msgid ":c:type:`PyTime_t`." msgstr "" -#: whatsnew/3.13.rst:2066 +#: whatsnew/3.13.rst:2082 msgid ":c:var:`PyTime_MIN` and :c:var:`PyTime_MAX`." msgstr "" -#: whatsnew/3.13.rst:2067 +#: whatsnew/3.13.rst:2083 msgid ":c:func:`PyTime_AsSecondsDouble`." msgstr "" -#: whatsnew/3.13.rst:2068 +#: whatsnew/3.13.rst:2084 msgid ":c:func:`PyTime_Monotonic`." msgstr "" -#: whatsnew/3.13.rst:2069 +#: whatsnew/3.13.rst:2085 msgid ":c:func:`PyTime_MonotonicRaw`." msgstr "" -#: whatsnew/3.13.rst:2070 +#: whatsnew/3.13.rst:2086 msgid ":c:func:`PyTime_PerfCounter`." msgstr "" -#: whatsnew/3.13.rst:2071 +#: whatsnew/3.13.rst:2087 msgid ":c:func:`PyTime_PerfCounterRaw`." msgstr "" -#: whatsnew/3.13.rst:2072 +#: whatsnew/3.13.rst:2088 msgid ":c:func:`PyTime_Time`." msgstr "" -#: whatsnew/3.13.rst:2073 +#: whatsnew/3.13.rst:2089 msgid ":c:func:`PyTime_TimeRaw`." msgstr "" -#: whatsnew/3.13.rst:2075 +#: whatsnew/3.13.rst:2091 msgid "(Contributed by Victor Stinner and Petr Viktorin in :gh:`110850`.)" msgstr "" -#: whatsnew/3.13.rst:2077 +#: whatsnew/3.13.rst:2093 msgid "" "Add the :c:func:`PyDict_ContainsString` function with the same behavior as :" "c:func:`PyDict_Contains`, but *key* is specified as a :c:expr:`const char*` " @@ -3968,7 +3996,7 @@ msgid "" "by Victor Stinner in :gh:`108314`.)" msgstr "" -#: whatsnew/3.13.rst:2083 +#: whatsnew/3.13.rst:2099 msgid "" "Add the :c:func:`PyDict_GetItemRef` and :c:func:`PyDict_GetItemStringRef` " "functions, which behave similarly to :c:func:`PyDict_GetItemWithError`, but " @@ -3978,7 +4006,7 @@ msgid "" "`106004`.)" msgstr "" -#: whatsnew/3.13.rst:2091 +#: whatsnew/3.13.rst:2107 msgid "" "Add the :c:func:`PyDict_SetDefaultRef` function, which behaves similarly to :" "c:func:`PyDict_SetDefault`, but returns a :term:`strong reference` instead " @@ -3987,7 +4015,7 @@ msgid "" "dictionary. (Contributed by Sam Gross in :gh:`112066`.)" msgstr "" -#: whatsnew/3.13.rst:2099 +#: whatsnew/3.13.rst:2115 msgid "" "Add the :c:func:`PyDict_Pop` and :c:func:`PyDict_PopString` functions to " "remove a key from a dictionary and optionally return the removed value. This " @@ -3996,7 +4024,7 @@ msgid "" "Victor Stinner in :gh:`111262`.)" msgstr "" -#: whatsnew/3.13.rst:2106 +#: whatsnew/3.13.rst:2122 msgid "" "Add the :c:func:`PyMapping_GetOptionalItem` and :c:func:" "`PyMapping_GetOptionalItemString` functions as alternatives to :c:func:" @@ -4007,7 +4035,7 @@ msgid "" "gh:`106307`.)" msgstr "" -#: whatsnew/3.13.rst:2116 +#: whatsnew/3.13.rst:2132 msgid "" "Add the :c:func:`PyObject_GetOptionalAttr` and :c:func:" "`PyObject_GetOptionalAttrString` functions as alternatives to :c:func:" @@ -4018,37 +4046,37 @@ msgid "" "Serhiy Storchaka in :gh:`106521`.)" msgstr "" -#: whatsnew/3.13.rst:2126 +#: whatsnew/3.13.rst:2142 msgid "" "Add the :c:func:`PyErr_FormatUnraisable` function as an extension to :c:func:" "`PyErr_WriteUnraisable` that allows customizing the warning message. " "(Contributed by Serhiy Storchaka in :gh:`108082`.)" msgstr "" -#: whatsnew/3.13.rst:2131 +#: whatsnew/3.13.rst:2147 msgid "" "Add new functions that return a :term:`strong reference` instead of a :term:" "`borrowed reference` for frame locals, globals, and builtins, as part of :" "ref:`PEP 667 `:" msgstr "" -#: whatsnew/3.13.rst:2135 +#: whatsnew/3.13.rst:2151 msgid ":c:func:`PyEval_GetFrameBuiltins` replaces :c:func:`PyEval_GetBuiltins`" msgstr "" -#: whatsnew/3.13.rst:2136 +#: whatsnew/3.13.rst:2152 msgid ":c:func:`PyEval_GetFrameGlobals` replaces :c:func:`PyEval_GetGlobals`" msgstr "" -#: whatsnew/3.13.rst:2137 +#: whatsnew/3.13.rst:2153 msgid ":c:func:`PyEval_GetFrameLocals` replaces :c:func:`PyEval_GetLocals`" msgstr "" -#: whatsnew/3.13.rst:2139 +#: whatsnew/3.13.rst:2155 msgid "(Contributed by Mark Shannon and Tian Gao in :gh:`74929`.)" msgstr "" -#: whatsnew/3.13.rst:2141 +#: whatsnew/3.13.rst:2157 msgid "" "Add the :c:func:`Py_GetConstant` and :c:func:`Py_GetConstantBorrowed` " "functions to get :term:`strong ` or :term:`borrowed " @@ -4057,7 +4085,7 @@ msgid "" "constant zero. (Contributed by Victor Stinner in :gh:`115754`.)" msgstr "" -#: whatsnew/3.13.rst:2148 +#: whatsnew/3.13.rst:2164 msgid "" "Add the :c:func:`PyImport_AddModuleRef` function as a replacement for :c:" "func:`PyImport_AddModule` that returns a :term:`strong reference` instead of " @@ -4065,35 +4093,35 @@ msgid "" "`105922`.)" msgstr "" -#: whatsnew/3.13.rst:2153 +#: whatsnew/3.13.rst:2169 msgid "" "Add the :c:func:`Py_IsFinalizing` function to check whether the main Python " "interpreter is :term:`shutting down `. (Contributed by " "Victor Stinner in :gh:`108014`.)" msgstr "" -#: whatsnew/3.13.rst:2158 +#: whatsnew/3.13.rst:2174 msgid "" "Add the :c:func:`PyList_GetItemRef` function as a replacement for :c:func:" "`PyList_GetItem` that returns a :term:`strong reference` instead of a :term:" "`borrowed reference`. (Contributed by Sam Gross in :gh:`114329`.)" msgstr "" -#: whatsnew/3.13.rst:2163 +#: whatsnew/3.13.rst:2179 msgid "" "Add the :c:func:`PyList_Extend` and :c:func:`PyList_Clear` functions, " "mirroring the Python :meth:`!list.extend` and :meth:`!list.clear` methods. " "(Contributed by Victor Stinner in :gh:`111138`.)" msgstr "" -#: whatsnew/3.13.rst:2167 +#: whatsnew/3.13.rst:2183 msgid "" "Add the :c:func:`PyLong_AsInt` function. It behaves similarly to :c:func:" "`PyLong_AsLong`, but stores the result in a C :c:expr:`int` instead of a C :" "c:expr:`long`. (Contributed by Victor Stinner in :gh:`108014`.)" msgstr "" -#: whatsnew/3.13.rst:2172 +#: whatsnew/3.13.rst:2188 msgid "" "Add the :c:func:`PyLong_AsNativeBytes`, :c:func:`PyLong_FromNativeBytes`, " "and :c:func:`PyLong_FromUnsignedNativeBytes` functions to simplify " @@ -4101,27 +4129,27 @@ msgid "" "(Contributed by Steve Dower in :gh:`111140`.)" msgstr "" -#: whatsnew/3.13.rst:2178 +#: whatsnew/3.13.rst:2194 msgid "" "Add :c:func:`PyModule_Add` function, which is similar to :c:func:" "`PyModule_AddObjectRef` and :c:func:`PyModule_AddObject`, but always steals " "a reference to the value. (Contributed by Serhiy Storchaka in :gh:`86493`.)" msgstr "" -#: whatsnew/3.13.rst:2183 +#: whatsnew/3.13.rst:2199 msgid "" "Add the :c:func:`PyObject_GenericHash` function that implements the default " "hashing function of a Python object. (Contributed by Serhiy Storchaka in :gh:" "`113024`.)" msgstr "" -#: whatsnew/3.13.rst:2187 +#: whatsnew/3.13.rst:2203 msgid "" "Add the :c:func:`Py_HashPointer` function to hash a raw pointer. " "(Contributed by Victor Stinner in :gh:`111545`.)" msgstr "" -#: whatsnew/3.13.rst:2190 +#: whatsnew/3.13.rst:2206 msgid "" "Add the :c:func:`PyObject_VisitManagedDict` and :c:func:" "`PyObject_ClearManagedDict` functions. which must be called by the traverse " @@ -4130,7 +4158,7 @@ msgid "" "with Python 3.11 and 3.12. (Contributed by Victor Stinner in :gh:`107073`.)" msgstr "" -#: whatsnew/3.13.rst:2198 +#: whatsnew/3.13.rst:2214 msgid "" "Add the :c:func:`PyRefTracer_SetTracer` and :c:func:`PyRefTracer_GetTracer` " "functions, which enable tracking object creation and destruction in the same " @@ -4138,14 +4166,14 @@ msgid "" "in :gh:`93502`.)" msgstr "" -#: whatsnew/3.13.rst:2204 +#: whatsnew/3.13.rst:2220 msgid "" "Add the :c:func:`PySys_AuditTuple` function as an alternative to :c:func:" "`PySys_Audit` that takes event arguments as a Python :class:`tuple` object. " "(Contributed by Victor Stinner in :gh:`85283`.)" msgstr "" -#: whatsnew/3.13.rst:2209 +#: whatsnew/3.13.rst:2225 msgid "" "Add the :c:func:`PyThreadState_GetUnchecked()` function as an alternative " "to :c:func:`PyThreadState_Get()` that doesn't kill the process with a fatal " @@ -4153,7 +4181,7 @@ msgid "" "result is ``NULL``. (Contributed by Victor Stinner in :gh:`108867`.)" msgstr "" -#: whatsnew/3.13.rst:2215 +#: whatsnew/3.13.rst:2231 msgid "" "Add the :c:func:`PyType_GetFullyQualifiedName` function to get the type's " "fully qualified name. The module name is prepended if :attr:`type." @@ -4161,14 +4189,14 @@ msgid "" "``'__main__'``. (Contributed by Victor Stinner in :gh:`111696`.)" msgstr "" -#: whatsnew/3.13.rst:2221 +#: whatsnew/3.13.rst:2237 msgid "" "Add the :c:func:`PyType_GetModuleName` function to get the type's module " "name. This is equivalent to getting the :attr:`type.__module__` attribute. " "(Contributed by Eric Snow and Victor Stinner in :gh:`111696`.)" msgstr "" -#: whatsnew/3.13.rst:2226 +#: whatsnew/3.13.rst:2242 msgid "" "Add the :c:func:`PyUnicode_EqualToUTF8AndSize` and :c:func:" "`PyUnicode_EqualToUTF8` functions to compare a Unicode object with a :c:expr:" @@ -4177,7 +4205,7 @@ msgid "" "Storchaka in :gh:`110289`.)" msgstr "" -#: whatsnew/3.13.rst:2233 +#: whatsnew/3.13.rst:2249 msgid "" "Add the :c:func:`PyWeakref_GetRef` function as an alternative to :c:func:" "`PyWeakref_GetObject` that returns a :term:`strong reference` or ``NULL`` if " @@ -4185,47 +4213,47 @@ msgid "" "`105927`.)" msgstr "" -#: whatsnew/3.13.rst:2239 +#: whatsnew/3.13.rst:2255 msgid "Add fixed variants of functions which silently ignore errors:" msgstr "" -#: whatsnew/3.13.rst:2241 +#: whatsnew/3.13.rst:2257 msgid "" ":c:func:`PyObject_HasAttrWithError` replaces :c:func:`PyObject_HasAttr`." msgstr "" -#: whatsnew/3.13.rst:2242 +#: whatsnew/3.13.rst:2258 msgid "" ":c:func:`PyObject_HasAttrStringWithError` replaces :c:func:" "`PyObject_HasAttrString`." msgstr "" -#: whatsnew/3.13.rst:2244 +#: whatsnew/3.13.rst:2260 msgid "" ":c:func:`PyMapping_HasKeyWithError` replaces :c:func:`PyMapping_HasKey`." msgstr "" -#: whatsnew/3.13.rst:2245 +#: whatsnew/3.13.rst:2261 msgid "" ":c:func:`PyMapping_HasKeyStringWithError` replaces :c:func:" "`PyMapping_HasKeyString`." msgstr "" -#: whatsnew/3.13.rst:2248 +#: whatsnew/3.13.rst:2264 msgid "" "The new functions return ``-1`` for errors and the standard ``1`` for true " "and ``0`` for false." msgstr "" -#: whatsnew/3.13.rst:2251 +#: whatsnew/3.13.rst:2267 msgid "(Contributed by Serhiy Storchaka in :gh:`108511`.)" msgstr "" -#: whatsnew/3.13.rst:2255 +#: whatsnew/3.13.rst:2271 msgid "Changed C APIs" msgstr "" -#: whatsnew/3.13.rst:2257 +#: whatsnew/3.13.rst:2273 msgid "" "The *keywords* parameter of :c:func:`PyArg_ParseTupleAndKeywords` and :c:" "func:`PyArg_VaParseTupleAndKeywords` now has type :c:expr:`char * const *` " @@ -4238,20 +4266,20 @@ msgid "" "`65210`.)" msgstr "" -#: whatsnew/3.13.rst:2269 +#: whatsnew/3.13.rst:2285 msgid "" ":c:func:`PyArg_ParseTupleAndKeywords` now supports non-ASCII keyword " "parameter names. (Contributed by Serhiy Storchaka in :gh:`110815`.)" msgstr "" -#: whatsnew/3.13.rst:2273 +#: whatsnew/3.13.rst:2289 msgid "" "The :c:func:`!PyCode_GetFirstFree` function is now unstable API and is now " "named :c:func:`PyUnstable_Code_GetFirstFree`. (Contributed by Bogdan " "Romanyuk in :gh:`115781`.)" msgstr "" -#: whatsnew/3.13.rst:2277 +#: whatsnew/3.13.rst:2293 msgid "" "The :c:func:`PyDict_GetItem`, :c:func:`PyDict_GetItemString`, :c:func:" "`PyMapping_HasKey`, :c:func:`PyMapping_HasKeyString`, :c:func:" @@ -4262,35 +4290,35 @@ msgid "" "documentation. (Contributed by Serhiy Storchaka in :gh:`106672`.)" msgstr "" -#: whatsnew/3.13.rst:2286 +#: whatsnew/3.13.rst:2302 msgid "" "Add support for the ``%T``, ``%#T``, ``%N`` and ``%#N`` formats to :c:func:" "`PyUnicode_FromFormat`:" msgstr "" -#: whatsnew/3.13.rst:2289 +#: whatsnew/3.13.rst:2305 msgid "``%T``: Get the fully qualified name of an object type" msgstr "" -#: whatsnew/3.13.rst:2290 +#: whatsnew/3.13.rst:2306 msgid "``%#T``: As above, but use a colon as the separator" msgstr "" -#: whatsnew/3.13.rst:2291 +#: whatsnew/3.13.rst:2307 msgid "``%N``: Get the fully qualified name of a type" msgstr "" -#: whatsnew/3.13.rst:2292 +#: whatsnew/3.13.rst:2308 msgid "``%#N``: As above, but use a colon as the separator" msgstr "" -#: whatsnew/3.13.rst:2294 +#: whatsnew/3.13.rst:2310 msgid "" "See :pep:`737` for more information. (Contributed by Victor Stinner in :gh:" "`111696`.)" msgstr "" -#: whatsnew/3.13.rst:2297 +#: whatsnew/3.13.rst:2313 msgid "" "You no longer have to define the ``PY_SSIZE_T_CLEAN`` macro before " "including :file:`Python.h` when using ``#`` formats in :ref:`format codes " @@ -4299,7 +4327,7 @@ msgid "" "`104922`.)" msgstr "" -#: whatsnew/3.13.rst:2303 +#: whatsnew/3.13.rst:2319 msgid "" "If Python is built in :ref:`debug mode ` or :option:`with " "assertions <--with-assertions>`, :c:func:`PyTuple_SET_ITEM` and :c:func:" @@ -4307,60 +4335,60 @@ msgid "" "(Contributed by Victor Stinner in :gh:`106168`.)" msgstr "" -#: whatsnew/3.13.rst:2311 +#: whatsnew/3.13.rst:2327 msgid "Limited C API Changes" msgstr "" -#: whatsnew/3.13.rst:2313 +#: whatsnew/3.13.rst:2329 msgid "The following functions are now included in the Limited C API:" msgstr "" -#: whatsnew/3.13.rst:2315 +#: whatsnew/3.13.rst:2331 msgid ":c:func:`PyMem_RawMalloc`" msgstr "" -#: whatsnew/3.13.rst:2316 +#: whatsnew/3.13.rst:2332 msgid ":c:func:`PyMem_RawCalloc`" msgstr "" -#: whatsnew/3.13.rst:2317 +#: whatsnew/3.13.rst:2333 msgid ":c:func:`PyMem_RawRealloc`" msgstr "" -#: whatsnew/3.13.rst:2318 +#: whatsnew/3.13.rst:2334 msgid ":c:func:`PyMem_RawFree`" msgstr "" -#: whatsnew/3.13.rst:2319 +#: whatsnew/3.13.rst:2335 msgid ":c:func:`PySys_Audit`" msgstr "" -#: whatsnew/3.13.rst:2320 +#: whatsnew/3.13.rst:2336 msgid ":c:func:`PySys_AuditTuple`" msgstr "" -#: whatsnew/3.13.rst:2321 +#: whatsnew/3.13.rst:2337 msgid ":c:func:`PyType_GetModuleByDef`" msgstr "" -#: whatsnew/3.13.rst:2323 +#: whatsnew/3.13.rst:2339 msgid "" "(Contributed by Victor Stinner in :gh:`85283`, :gh:`85283`, and :gh:" "`116936`.)" msgstr "" -#: whatsnew/3.13.rst:2325 +#: whatsnew/3.13.rst:2341 msgid "" "Python built with :option:`--with-trace-refs` (tracing references) now " "supports the :ref:`Limited API `. (Contributed by Victor " "Stinner in :gh:`108634`.)" msgstr "" -#: whatsnew/3.13.rst:2331 +#: whatsnew/3.13.rst:2347 msgid "Removed C APIs" msgstr "" -#: whatsnew/3.13.rst:2333 +#: whatsnew/3.13.rst:2349 msgid "" "Remove several functions, macros, variables, etc with names prefixed by " "``_Py`` or ``_PY`` (which are considered private). If your project is " @@ -4370,13 +4398,13 @@ msgid "" "Victor Stinner. (Contributed by Victor Stinner in :gh:`106320`.)" msgstr "" -#: whatsnew/3.13.rst:2341 +#: whatsnew/3.13.rst:2357 msgid "" "Remove old buffer protocols deprecated in Python 3.0. Use :ref:" "`bufferobjects` instead." msgstr "" -#: whatsnew/3.13.rst:2344 +#: whatsnew/3.13.rst:2360 msgid "" ":c:func:`!PyObject_CheckReadBuffer`: Use :c:func:`PyObject_CheckBuffer` to " "test whether the object supports the buffer protocol. Note that :c:func:" @@ -4385,13 +4413,13 @@ msgid "" "example of :c:func:`PyObject_GetBuffer`." msgstr "" -#: whatsnew/3.13.rst:2352 +#: whatsnew/3.13.rst:2368 msgid "" ":c:func:`!PyObject_AsCharBuffer`, :c:func:`!PyObject_AsReadBuffer`: Use :c:" "func:`PyObject_GetBuffer` and :c:func:`PyBuffer_Release` instead:" msgstr "" -#: whatsnew/3.13.rst:2355 +#: whatsnew/3.13.rst:2371 msgid "" "Py_buffer view;\n" "if (PyObject_GetBuffer(obj, &view, PyBUF_SIMPLE) < 0) {\n" @@ -4402,13 +4430,13 @@ msgid "" "PyBuffer_Release(&view);" msgstr "" -#: whatsnew/3.13.rst:2365 +#: whatsnew/3.13.rst:2381 msgid "" ":c:func:`!PyObject_AsWriteBuffer`: Use :c:func:`PyObject_GetBuffer` and :c:" "func:`PyBuffer_Release` instead:" msgstr "" -#: whatsnew/3.13.rst:2368 +#: whatsnew/3.13.rst:2384 msgid "" "Py_buffer view;\n" "if (PyObject_GetBuffer(obj, &view, PyBUF_WRITABLE) < 0) {\n" @@ -4418,21 +4446,21 @@ msgid "" "PyBuffer_Release(&view);" msgstr "" -#: whatsnew/3.13.rst:2377 +#: whatsnew/3.13.rst:2393 msgid "(Contributed by Inada Naoki in :gh:`85275`.)" msgstr "" -#: whatsnew/3.13.rst:2379 +#: whatsnew/3.13.rst:2395 msgid "Remove various functions deprecated in Python 3.9:" msgstr "" -#: whatsnew/3.13.rst:2381 +#: whatsnew/3.13.rst:2397 msgid "" ":c:func:`!PyEval_CallObject`, :c:func:`!PyEval_CallObjectWithKeywords`: Use :" "c:func:`PyObject_CallNoArgs` or :c:func:`PyObject_Call` instead." msgstr "" -#: whatsnew/3.13.rst:2386 +#: whatsnew/3.13.rst:2402 msgid "" "In :c:func:`PyObject_Call`, positional arguments must be a :class:`tuple` " "and must not be ``NULL``, and keyword arguments must be a :class:`dict` or " @@ -4443,106 +4471,106 @@ msgid "" "`PyTuple_New(0) `." msgstr "" -#: whatsnew/3.13.rst:2396 +#: whatsnew/3.13.rst:2412 msgid "" ":c:func:`!PyEval_CallFunction`: Use :c:func:`PyObject_CallFunction` instead." msgstr "" -#: whatsnew/3.13.rst:2398 +#: whatsnew/3.13.rst:2414 msgid "" ":c:func:`!PyEval_CallMethod`: Use :c:func:`PyObject_CallMethod` instead." msgstr "" -#: whatsnew/3.13.rst:2400 +#: whatsnew/3.13.rst:2416 msgid ":c:func:`!PyCFunction_Call`: Use :c:func:`PyObject_Call` instead." msgstr "" -#: whatsnew/3.13.rst:2403 +#: whatsnew/3.13.rst:2419 msgid "(Contributed by Victor Stinner in :gh:`105107`.)" msgstr "" -#: whatsnew/3.13.rst:2405 +#: whatsnew/3.13.rst:2421 msgid "" "Remove the following old functions to configure the Python initialization, " "deprecated in Python 3.11:" msgstr "" -#: whatsnew/3.13.rst:2408 +#: whatsnew/3.13.rst:2424 msgid "" ":c:func:`!PySys_AddWarnOptionUnicode`: Use :c:member:`PyConfig.warnoptions` " "instead." msgstr "" -#: whatsnew/3.13.rst:2410 +#: whatsnew/3.13.rst:2426 msgid "" ":c:func:`!PySys_AddWarnOption`: Use :c:member:`PyConfig.warnoptions` instead." msgstr "" -#: whatsnew/3.13.rst:2412 +#: whatsnew/3.13.rst:2428 msgid ":c:func:`!PySys_AddXOption`: Use :c:member:`PyConfig.xoptions` instead." msgstr "" -#: whatsnew/3.13.rst:2414 +#: whatsnew/3.13.rst:2430 msgid "" ":c:func:`!PySys_HasWarnOptions`: Use :c:member:`PyConfig.xoptions` instead." msgstr "" -#: whatsnew/3.13.rst:2416 +#: whatsnew/3.13.rst:2432 msgid "" ":c:func:`!PySys_SetPath`: Set :c:member:`PyConfig.module_search_paths` " "instead." msgstr "" -#: whatsnew/3.13.rst:2418 +#: whatsnew/3.13.rst:2434 msgid "" ":c:func:`!Py_SetPath`: Set :c:member:`PyConfig.module_search_paths` instead." msgstr "" -#: whatsnew/3.13.rst:2420 +#: whatsnew/3.13.rst:2436 msgid "" ":c:func:`!Py_SetStandardStreamEncoding`: Set :c:member:`PyConfig." "stdio_encoding` instead, and set also maybe :c:member:`PyConfig." "legacy_windows_stdio` (on Windows)." msgstr "" -#: whatsnew/3.13.rst:2423 +#: whatsnew/3.13.rst:2439 msgid "" ":c:func:`!_Py_SetProgramFullPath`: Set :c:member:`PyConfig.executable` " "instead." msgstr "" -#: whatsnew/3.13.rst:2426 +#: whatsnew/3.13.rst:2442 msgid "" "Use the new :c:type:`PyConfig` API of the :ref:`Python Initialization " "Configuration ` instead (:pep:`587`), added to Python 3.8. " "(Contributed by Victor Stinner in :gh:`105145`.)" msgstr "" -#: whatsnew/3.13.rst:2430 +#: whatsnew/3.13.rst:2446 msgid "" "Remove :c:func:`!PyEval_AcquireLock` and :c:func:`!PyEval_ReleaseLock` " "functions, deprecated in Python 3.2. They didn't update the current thread " "state. They can be replaced with:" msgstr "" -#: whatsnew/3.13.rst:2435 +#: whatsnew/3.13.rst:2451 msgid ":c:func:`PyEval_SaveThread` and :c:func:`PyEval_RestoreThread`;" msgstr "" -#: whatsnew/3.13.rst:2436 +#: whatsnew/3.13.rst:2452 msgid "" "low-level :c:func:`PyEval_AcquireThread` and :c:func:`PyEval_RestoreThread`;" msgstr "" -#: whatsnew/3.13.rst:2437 +#: whatsnew/3.13.rst:2453 msgid "or :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release`." msgstr "" -#: whatsnew/3.13.rst:2439 +#: whatsnew/3.13.rst:2455 msgid "(Contributed by Victor Stinner in :gh:`105182`.)" msgstr "" -#: whatsnew/3.13.rst:2441 +#: whatsnew/3.13.rst:2457 msgid "" "Remove the :c:func:`!PyEval_ThreadsInitialized` function, deprecated in " "Python 3.9. Since Python 3.7, :c:func:`!Py_Initialize` always creates the " @@ -4551,7 +4579,7 @@ msgid "" "Stinner in :gh:`105182`.)" msgstr "" -#: whatsnew/3.13.rst:2448 +#: whatsnew/3.13.rst:2464 msgid "" "Remove the :c:func:`!_PyInterpreterState_Get` alias to :c:func:" "`PyInterpreterState_Get()` which was kept for backward compatibility with " @@ -4560,26 +4588,26 @@ msgid "" "Stinner in :gh:`106320`.)" msgstr "" -#: whatsnew/3.13.rst:2455 +#: whatsnew/3.13.rst:2471 msgid "" "Remove the private :c:func:`!_PyObject_FastCall` function: use :c:func:`!" "PyObject_Vectorcall` which is available since Python 3.8 (:pep:`590`). " "(Contributed by Victor Stinner in :gh:`106023`.)" msgstr "" -#: whatsnew/3.13.rst:2460 +#: whatsnew/3.13.rst:2476 msgid "" "Remove the ``cpython/pytime.h`` header file, which only contained private " "functions. (Contributed by Victor Stinner in :gh:`106316`.)" msgstr "" -#: whatsnew/3.13.rst:2464 +#: whatsnew/3.13.rst:2480 msgid "" "Remove the undocumented ``PY_TIMEOUT_MAX`` constant from the limited C API. " "(Contributed by Victor Stinner in :gh:`110014`.)" msgstr "" -#: whatsnew/3.13.rst:2467 +#: whatsnew/3.13.rst:2483 msgid "" "Remove the old trashcan macros ``Py_TRASHCAN_SAFE_BEGIN`` and " "``Py_TRASHCAN_SAFE_END``. Replace both with the new macros " @@ -4587,72 +4615,72 @@ msgid "" "in :gh:`105111`.)" msgstr "" -#: whatsnew/3.13.rst:2474 +#: whatsnew/3.13.rst:2490 msgid "Deprecated C APIs" msgstr "" -#: whatsnew/3.13.rst:2476 +#: whatsnew/3.13.rst:2492 msgid "Deprecate old Python initialization functions:" msgstr "" -#: whatsnew/3.13.rst:2478 deprecations/c-api-pending-removal-in-3.15.rst:63 +#: whatsnew/3.13.rst:2494 deprecations/c-api-pending-removal-in-3.15.rst:63 msgid "" ":c:func:`PySys_ResetWarnOptions`: Clear :data:`sys.warnoptions` and :data:`!" "warnings.filters` instead." msgstr "" -#: whatsnew/3.13.rst:2480 +#: whatsnew/3.13.rst:2496 msgid ":c:func:`Py_GetExecPrefix`: Get :data:`sys.exec_prefix` instead." msgstr "" -#: whatsnew/3.13.rst:2482 +#: whatsnew/3.13.rst:2498 msgid ":c:func:`Py_GetPath`: Get :data:`sys.path` instead." msgstr "" -#: whatsnew/3.13.rst:2484 +#: whatsnew/3.13.rst:2500 msgid ":c:func:`Py_GetPrefix`: Get :data:`sys.prefix` instead." msgstr "" -#: whatsnew/3.13.rst:2486 +#: whatsnew/3.13.rst:2502 msgid ":c:func:`Py_GetProgramFullPath`: Get :data:`sys.executable` instead." msgstr "" -#: whatsnew/3.13.rst:2488 +#: whatsnew/3.13.rst:2504 msgid ":c:func:`Py_GetProgramName`: Get :data:`sys.executable` instead." msgstr "" -#: whatsnew/3.13.rst:2490 +#: whatsnew/3.13.rst:2506 msgid "" ":c:func:`Py_GetPythonHome`: Get :c:member:`PyConfig.home` or the :envvar:" "`PYTHONHOME` environment variable instead." msgstr "" -#: whatsnew/3.13.rst:2494 +#: whatsnew/3.13.rst:2510 msgid "(Contributed by Victor Stinner in :gh:`105145`.)" msgstr "" -#: whatsnew/3.13.rst:2496 +#: whatsnew/3.13.rst:2512 msgid "" ":term:`Soft deprecate ` the :c:func:`PyEval_GetBuiltins`, :" "c:func:`PyEval_GetGlobals`, and :c:func:`PyEval_GetLocals` functions, which " "return a :term:`borrowed reference`. (Soft deprecated as part of :pep:`667`.)" msgstr "" -#: whatsnew/3.13.rst:2502 +#: whatsnew/3.13.rst:2518 msgid "" "Deprecate the :c:func:`PyImport_ImportModuleNoBlock` function, which is just " "an alias to :c:func:`PyImport_ImportModule` since Python 3.3. (Contributed " "by Victor Stinner in :gh:`105396`.)" msgstr "" -#: whatsnew/3.13.rst:2506 +#: whatsnew/3.13.rst:2522 msgid "" ":term:`Soft deprecate ` the :c:func:`PyModule_AddObject` " "function. It should be replaced with :c:func:`PyModule_Add` or :c:func:" "`PyModule_AddObjectRef`. (Contributed by Serhiy Storchaka in :gh:`86493`.)" msgstr "" -#: whatsnew/3.13.rst:2512 +#: whatsnew/3.13.rst:2528 msgid "" "Deprecate the old ``Py_UNICODE`` and ``PY_UNICODE_TYPE`` types and the :c:" "macro:`!Py_UNICODE_WIDE` define. Use the :c:type:`wchar_t` type directly " @@ -4661,7 +4689,7 @@ msgid "" "`105156`.)" msgstr "" -#: whatsnew/3.13.rst:2519 +#: whatsnew/3.13.rst:2535 msgid "" "Deprecate the :c:func:`PyWeakref_GetObject` and :c:func:" "`PyWeakref_GET_OBJECT` functions, which return a :term:`borrowed reference`. " @@ -5163,56 +5191,56 @@ msgstr "" msgid ":c:func:`PyThread_ReInitTLS`: Unneeded since Python 3.7." msgstr "" -#: whatsnew/3.13.rst:2541 +#: whatsnew/3.13.rst:2557 msgid "Build Changes" msgstr "" -#: whatsnew/3.13.rst:2543 +#: whatsnew/3.13.rst:2559 msgid "" "``arm64-apple-ios`` and ``arm64-apple-ios-simulator`` are both now :pep:`11` " "tier 3 platforms. (:ref:`PEP 730 ` written and " "implementation contributed by Russell Keith-Magee in :gh:`114099`.)" msgstr "" -#: whatsnew/3.13.rst:2548 +#: whatsnew/3.13.rst:2564 msgid "" "``aarch64-linux-android`` and ``x86_64-linux-android`` are both now :pep:" "`11` tier 3 platforms. (:ref:`PEP 738 ` " "written and implementation contributed by Malcolm Smith in :gh:`116622`.)" msgstr "" -#: whatsnew/3.13.rst:2553 +#: whatsnew/3.13.rst:2569 msgid "" "``wasm32-wasi`` is now a :pep:`11` tier 2 platform. (Contributed by Brett " "Cannon in :gh:`115192`.)" msgstr "" -#: whatsnew/3.13.rst:2556 +#: whatsnew/3.13.rst:2572 msgid "" "``wasm32-emscripten`` is no longer a :pep:`11` supported platform. " "(Contributed by Brett Cannon in :gh:`115192`.)" msgstr "" -#: whatsnew/3.13.rst:2559 +#: whatsnew/3.13.rst:2575 msgid "" "Building CPython now requires a compiler with support for the C11 atomic " "library, GCC built-in atomic functions, or MSVC interlocked intrinsics." msgstr "" -#: whatsnew/3.13.rst:2562 +#: whatsnew/3.13.rst:2578 msgid "" "Autoconf 2.71 and aclocal 1.16.5 are now required to regenerate the :file:" "`configure` script. (Contributed by Christian Heimes in :gh:`89886` and by " "Victor Stinner in :gh:`112090`.)" msgstr "" -#: whatsnew/3.13.rst:2566 +#: whatsnew/3.13.rst:2582 msgid "" "SQLite 3.15.2 or newer is required to build the :mod:`sqlite3` extension " "module. (Contributed by Erlend Aasland in :gh:`105875`.)" msgstr "" -#: whatsnew/3.13.rst:2570 +#: whatsnew/3.13.rst:2586 msgid "" "CPython now bundles the `mimalloc library`_ by default. It is licensed under " "the MIT license; see :ref:`mimalloc license `. The bundled " @@ -5220,28 +5248,28 @@ msgid "" "Dino Viehland in :gh:`109914`.)" msgstr "" -#: whatsnew/3.13.rst:2578 +#: whatsnew/3.13.rst:2594 msgid "" "The :file:`configure` option :option:`--with-system-libmpdec` now defaults " "to ``yes``. The bundled copy of ``libmpdecimal`` will be removed in Python " "3.15." msgstr "" -#: whatsnew/3.13.rst:2582 +#: whatsnew/3.13.rst:2598 msgid "" "Python built with :file:`configure` :option:`--with-trace-refs` (tracing " "references) is now ABI compatible with the Python release build and :ref:" "`debug build `. (Contributed by Victor Stinner in :gh:`108634`.)" msgstr "" -#: whatsnew/3.13.rst:2587 +#: whatsnew/3.13.rst:2603 msgid "" "On POSIX systems, the pkg-config (``.pc``) filenames now include the ABI " "flags. For example, the free-threaded build generates ``python-3.13t.pc`` " "and the debug build generates ``python-3.13d.pc``." msgstr "" -#: whatsnew/3.13.rst:2591 +#: whatsnew/3.13.rst:2607 msgid "" "The ``errno``, ``fcntl``, ``grp``, ``md5``, ``pwd``, ``resource``, " "``termios``, ``winsound``, ``_ctypes_test``, ``_multiprocessing." @@ -5251,27 +5279,27 @@ msgid "" "`85283`.)" msgstr "" -#: whatsnew/3.13.rst:2600 +#: whatsnew/3.13.rst:2616 msgid "Porting to Python 3.13" msgstr "" -#: whatsnew/3.13.rst:2602 +#: whatsnew/3.13.rst:2618 msgid "" "This section lists previously described changes and other bugfixes that may " "require changes to your code." msgstr "" -#: whatsnew/3.13.rst:2606 +#: whatsnew/3.13.rst:2622 msgid "Changes in the Python API" msgstr "" -#: whatsnew/3.13.rst:2610 +#: whatsnew/3.13.rst:2626 msgid "" ":ref:`PEP 667 ` introduces several changes to " "the semantics of :func:`locals` and :attr:`f_locals `:" msgstr "" -#: whatsnew/3.13.rst:2613 +#: whatsnew/3.13.rst:2629 msgid "" "Calling :func:`locals` in an :term:`optimized scope` now produces an " "independent snapshot on each call, and hence no longer implicitly updates " @@ -5283,7 +5311,7 @@ msgid "" "scope. (Changed as part of :pep:`667`.)" msgstr "" -#: whatsnew/3.13.rst:2622 +#: whatsnew/3.13.rst:2638 msgid "" "Calling :func:`locals` from a comprehension at module or class scope " "(including via ``exec`` or ``eval``) once more behaves as if the " @@ -5293,7 +5321,7 @@ msgid "" "implementing :pep:`709`. (Changed as part of :pep:`667`.)" msgstr "" -#: whatsnew/3.13.rst:2629 +#: whatsnew/3.13.rst:2645 msgid "" "Accessing :attr:`FrameType.f_locals ` in an :term:`optimized " "scope` now returns a write-through proxy rather than a snapshot that gets " @@ -5302,7 +5330,7 @@ msgid "" "of :pep:`667`.)" msgstr "" -#: whatsnew/3.13.rst:2635 +#: whatsnew/3.13.rst:2651 msgid "" ":class:`functools.partial` now emits a :exc:`FutureWarning` when used as a " "method. The behavior will change in future Python versions. Wrap it in :func:" @@ -5310,14 +5338,14 @@ msgid "" "Serhiy Storchaka in :gh:`121027`.)" msgstr "" -#: whatsnew/3.13.rst:2641 +#: whatsnew/3.13.rst:2657 msgid "" "An :exc:`OSError` is now raised by :func:`getpass.getuser` for any failure " "to retrieve a username, instead of :exc:`ImportError` on non-Unix platforms " "or :exc:`KeyError` on Unix platforms where the password database is empty." msgstr "" -#: whatsnew/3.13.rst:2646 +#: whatsnew/3.13.rst:2662 msgid "" "The value of the :attr:`!mode` attribute of :class:`gzip.GzipFile` is now a " "string (``'rb'`` or ``'wb'``) instead of an integer (``1`` or ``2``). The " @@ -5326,13 +5354,13 @@ msgid "" "(Contributed by Serhiy Storchaka in :gh:`115961`.)" msgstr "" -#: whatsnew/3.13.rst:2652 +#: whatsnew/3.13.rst:2668 msgid "" ":class:`mailbox.Maildir` now ignores files with a leading dot (``.``). " "(Contributed by Zackery Spytz in :gh:`65559`.)" msgstr "" -#: whatsnew/3.13.rst:2655 +#: whatsnew/3.13.rst:2671 msgid "" ":meth:`pathlib.Path.glob` and :meth:`~pathlib.Path.rglob` now return both " "files and directories if a pattern that ends with \"``**``\" is given, " @@ -5340,25 +5368,25 @@ msgid "" "behavior and only match directories." msgstr "" -#: whatsnew/3.13.rst:2660 +#: whatsnew/3.13.rst:2676 msgid "" "The :mod:`threading` module now expects the :mod:`!_thread` module to have " "an :func:`!_is_main_interpreter` function. This function takes no arguments " "and returns ``True`` if the current interpreter is the main interpreter." msgstr "" -#: whatsnew/3.13.rst:2665 +#: whatsnew/3.13.rst:2681 msgid "" "Any library or application that provides a custom :mod:`!_thread` module " "must provide :func:`!_is_main_interpreter`, just like the module's other " "\"private\" attributes. (:gh:`112826`.)" msgstr "" -#: whatsnew/3.13.rst:2672 +#: whatsnew/3.13.rst:2688 msgid "Changes in the C API" msgstr "" -#: whatsnew/3.13.rst:2674 +#: whatsnew/3.13.rst:2690 msgid "" "``Python.h`` no longer includes the ```` standard header. It was " "included for the :c:func:`!finite` function which is now provided by the " @@ -5367,7 +5395,7 @@ msgid "" "`108765`.)" msgstr "" -#: whatsnew/3.13.rst:2680 +#: whatsnew/3.13.rst:2696 msgid "" "``Python.h`` no longer includes these standard header files: ````, " "```` and ````. If needed, they should now be " @@ -5378,7 +5406,7 @@ msgid "" "Victor Stinner in :gh:`108765`.)" msgstr "" -#: whatsnew/3.13.rst:2688 +#: whatsnew/3.13.rst:2704 msgid "" "On Windows, ``Python.h`` no longer includes the ```` standard " "header file. If needed, it should now be included explicitly. For example, " @@ -5388,7 +5416,7 @@ msgid "" "(Contributed by Victor Stinner in :gh:`108765`.)" msgstr "" -#: whatsnew/3.13.rst:2695 +#: whatsnew/3.13.rst:2711 msgid "" "If the :c:macro:`Py_LIMITED_API` macro is defined, :c:macro:`!" "Py_BUILD_CORE`, :c:macro:`!Py_BUILD_CORE_BUILTIN` and :c:macro:`!" @@ -5396,18 +5424,18 @@ msgid "" "(Contributed by Victor Stinner in :gh:`85283`.)" msgstr "" -#: whatsnew/3.13.rst:2700 +#: whatsnew/3.13.rst:2716 msgid "" "The old trashcan macros ``Py_TRASHCAN_SAFE_BEGIN`` and " "``Py_TRASHCAN_SAFE_END`` were removed. They should be replaced by the new " "macros ``Py_TRASHCAN_BEGIN`` and ``Py_TRASHCAN_END``." msgstr "" -#: whatsnew/3.13.rst:2704 +#: whatsnew/3.13.rst:2720 msgid "A ``tp_dealloc`` function that has the old macros, such as::" msgstr "" -#: whatsnew/3.13.rst:2706 +#: whatsnew/3.13.rst:2722 msgid "" "static void\n" "mytype_dealloc(mytype *p)\n" @@ -5419,11 +5447,11 @@ msgid "" "}" msgstr "" -#: whatsnew/3.13.rst:2715 +#: whatsnew/3.13.rst:2731 msgid "should migrate to the new macros as follows::" msgstr "" -#: whatsnew/3.13.rst:2717 +#: whatsnew/3.13.rst:2733 msgid "" "static void\n" "mytype_dealloc(mytype *p)\n" @@ -5435,7 +5463,7 @@ msgid "" "}" msgstr "" -#: whatsnew/3.13.rst:2726 +#: whatsnew/3.13.rst:2742 msgid "" "Note that ``Py_TRASHCAN_BEGIN`` has a second argument which should be the " "deallocation function it is in. The new macros were added in Python 3.8 and " @@ -5443,13 +5471,13 @@ msgid "" "in :gh:`105111`.)" msgstr "" -#: whatsnew/3.13.rst:2733 +#: whatsnew/3.13.rst:2749 msgid "" ":ref:`PEP 667 ` introduces several changes to " "frame-related functions:" msgstr "" -#: whatsnew/3.13.rst:2736 +#: whatsnew/3.13.rst:2752 msgid "" "The effects of mutating the dictionary returned from :c:func:" "`PyEval_GetLocals` in an :term:`optimized scope` have changed. New dict " @@ -5463,7 +5491,7 @@ msgid "" "being used, so refer to the deprecation notice on the function for details." msgstr "" -#: whatsnew/3.13.rst:2749 +#: whatsnew/3.13.rst:2765 msgid "" "Calling :c:func:`PyFrame_GetLocals` in an :term:`optimized scope` now " "returns a write-through proxy rather than a snapshot that gets updated at " @@ -5472,126 +5500,126 @@ msgid "" "`PyEval_GetFrameLocals` API." msgstr "" -#: whatsnew/3.13.rst:2756 +#: whatsnew/3.13.rst:2772 msgid "" ":c:func:`!PyFrame_FastToLocals` and :c:func:`!PyFrame_FastToLocalsWithError` " "no longer have any effect. Calling these functions has been redundant since " "Python 3.11, when :c:func:`PyFrame_GetLocals` was first introduced." msgstr "" -#: whatsnew/3.13.rst:2761 +#: whatsnew/3.13.rst:2777 msgid "" ":c:func:`!PyFrame_LocalsToFast` no longer has any effect. Calling this " "function is redundant now that :c:func:`PyFrame_GetLocals` returns a write-" "through proxy for :term:`optimized scopes `." msgstr "" -#: whatsnew/3.13.rst:2765 +#: whatsnew/3.13.rst:2781 msgid "" "Python 3.13 removed many private functions. Some of them can be replaced " "using these alternatives:" msgstr "" -#: whatsnew/3.13.rst:2768 +#: whatsnew/3.13.rst:2784 msgid "``_PyDict_Pop()``: :c:func:`PyDict_Pop` or :c:func:`PyDict_PopString`;" msgstr "" -#: whatsnew/3.13.rst:2769 +#: whatsnew/3.13.rst:2785 msgid "``_PyDict_GetItemWithError()``: :c:func:`PyDict_GetItemRef`;" msgstr "" -#: whatsnew/3.13.rst:2770 +#: whatsnew/3.13.rst:2786 msgid "``_PyErr_WriteUnraisableMsg()``: :c:func:`PyErr_FormatUnraisable`;" msgstr "" -#: whatsnew/3.13.rst:2771 +#: whatsnew/3.13.rst:2787 msgid "" "``_PyEval_SetTrace()``: :c:func:`PyEval_SetTrace` or :c:func:" "`PyEval_SetTraceAllThreads`;" msgstr "" -#: whatsnew/3.13.rst:2772 +#: whatsnew/3.13.rst:2788 msgid "``_PyList_Extend()``: :c:func:`PyList_Extend`;" msgstr "" -#: whatsnew/3.13.rst:2773 +#: whatsnew/3.13.rst:2789 msgid "``_PyLong_AsInt()``: :c:func:`PyLong_AsInt`;" msgstr "" -#: whatsnew/3.13.rst:2774 +#: whatsnew/3.13.rst:2790 msgid "``_PyMem_RawStrdup()``: ``strdup()``;" msgstr "" -#: whatsnew/3.13.rst:2775 +#: whatsnew/3.13.rst:2791 msgid "``_PyMem_Strdup()``: ``strdup()``;" msgstr "" -#: whatsnew/3.13.rst:2776 +#: whatsnew/3.13.rst:2792 msgid "``_PyObject_ClearManagedDict()``: :c:func:`PyObject_ClearManagedDict`;" msgstr "" -#: whatsnew/3.13.rst:2777 +#: whatsnew/3.13.rst:2793 msgid "``_PyObject_VisitManagedDict()``: :c:func:`PyObject_VisitManagedDict`;" msgstr "" -#: whatsnew/3.13.rst:2778 +#: whatsnew/3.13.rst:2794 msgid "" "``_PyThreadState_UncheckedGet()``: :c:func:`PyThreadState_GetUnchecked()`;" msgstr "" -#: whatsnew/3.13.rst:2779 +#: whatsnew/3.13.rst:2795 msgid "``_PyTime_AsSecondsDouble()``: :c:func:`PyTime_AsSecondsDouble`;" msgstr "" -#: whatsnew/3.13.rst:2780 +#: whatsnew/3.13.rst:2796 msgid "" "``_PyTime_GetMonotonicClock()``: :c:func:`PyTime_Monotonic` or :c:func:" "`PyTime_MonotonicRaw`;" msgstr "" -#: whatsnew/3.13.rst:2781 +#: whatsnew/3.13.rst:2797 msgid "" "``_PyTime_GetPerfCounter()``: :c:func:`PyTime_PerfCounter` or :c:func:" "`PyTime_PerfCounterRaw`;" msgstr "" -#: whatsnew/3.13.rst:2782 +#: whatsnew/3.13.rst:2798 msgid "" "``_PyTime_GetSystemClock()``: :c:func:`PyTime_Time` or :c:func:" "`PyTime_TimeRaw`;" msgstr "" -#: whatsnew/3.13.rst:2783 +#: whatsnew/3.13.rst:2799 msgid "``_PyTime_MAX``: :c:var:`PyTime_MAX`;" msgstr "" -#: whatsnew/3.13.rst:2784 +#: whatsnew/3.13.rst:2800 msgid "``_PyTime_MIN``: :c:var:`PyTime_MIN`;" msgstr "" -#: whatsnew/3.13.rst:2785 +#: whatsnew/3.13.rst:2801 msgid "``_PyTime_t``: :c:type:`PyTime_t`;" msgstr "" -#: whatsnew/3.13.rst:2786 +#: whatsnew/3.13.rst:2802 msgid "``_Py_HashPointer()``: :c:func:`Py_HashPointer`;" msgstr "" -#: whatsnew/3.13.rst:2787 +#: whatsnew/3.13.rst:2803 msgid "``_Py_IsFinalizing()``: :c:func:`Py_IsFinalizing`." msgstr "" -#: whatsnew/3.13.rst:2789 +#: whatsnew/3.13.rst:2805 msgid "" "The `pythoncapi-compat project`_ can be used to get most of these new " "functions on Python 3.12 and older." msgstr "" -#: whatsnew/3.13.rst:2793 +#: whatsnew/3.13.rst:2809 msgid "Regression Test Changes" msgstr "" -#: whatsnew/3.13.rst:2795 +#: whatsnew/3.13.rst:2811 msgid "" "Python built with :file:`configure` :option:`--with-pydebug` now supports a :" "option:`-X presite=package.module <-X>` command-line option. If used, it " diff --git a/whatsnew/3.14.po b/whatsnew/3.14.po index 90216d09..053d7b97 100644 --- a/whatsnew/3.14.po +++ b/whatsnew/3.14.po @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -69,56 +70,74 @@ msgstr "" #: whatsnew/3.14.rst:76 msgid "" "The library changes include the addition of a new :mod:`!annotationlib` " -"module for introspecting and wrapping annotations (:pep:`649`), a new :mod:`!" +"module for introspecting and wrapping annotations (:pep:`749`), a new :mod:`!" "compression.zstd` module for Zstandard support (:pep:`784`), plus syntax " "highlighting in the REPL, as well as the usual deprecations and removals, " "and improvements in user-friendliness and correctness." msgstr "" #: whatsnew/3.14.rst:85 -msgid ":ref:`PEP 649: deferred evaluation of annotations `" +msgid "" +":ref:`PEP 779: Free-threaded Python is officially supported `" msgstr "" #: whatsnew/3.14.rst:86 -msgid ":ref:`PEP 741: Python Configuration C API `" +msgid "" +":ref:`PEP 649 and 749: deferred evaluation of annotations `" msgstr "" #: whatsnew/3.14.rst:87 -msgid ":ref:`PEP 750: Template strings `" +msgid "" +":ref:`PEP 734: Multiple interpreters in the stdlib `" msgstr "" #: whatsnew/3.14.rst:88 +msgid ":ref:`PEP 741: Python configuration C API `" +msgstr "" + +#: whatsnew/3.14.rst:89 +msgid ":ref:`PEP 750: Template strings `" +msgstr "" + +#: whatsnew/3.14.rst:90 msgid "" ":ref:`PEP 758: Allow except and except* expressions without parentheses " "`" msgstr "" -#: whatsnew/3.14.rst:89 +#: whatsnew/3.14.rst:91 msgid ":ref:`PEP 761: Discontinuation of PGP signatures `" msgstr "" -#: whatsnew/3.14.rst:90 +#: whatsnew/3.14.rst:92 msgid "" ":ref:`PEP 765: Disallow return/break/continue that exit a finally block " "`" msgstr "" -#: whatsnew/3.14.rst:91 +#: whatsnew/3.14.rst:93 +msgid "" +":ref:`Free-threaded mode improvements `" +msgstr "" + +#: whatsnew/3.14.rst:94 msgid "" ":ref:`PEP 768: Safe external debugger interface for CPython `" msgstr "" -#: whatsnew/3.14.rst:92 +#: whatsnew/3.14.rst:95 msgid "" ":ref:`PEP 784: Adding Zstandard to the standard library `" msgstr "" -#: whatsnew/3.14.rst:93 +#: whatsnew/3.14.rst:96 msgid ":ref:`A new type of interpreter `" msgstr "" -#: whatsnew/3.14.rst:94 +#: whatsnew/3.14.rst:97 msgid "" ":ref:`Syntax highlighting in PyREPL `, and " "color output in :ref:`unittest `, :ref:`argparse " @@ -126,17 +145,17 @@ msgid "" "`calendar ` CLIs" msgstr "" -#: whatsnew/3.14.rst:99 +#: whatsnew/3.14.rst:102 msgid "" ":ref:`Binary releases for the experimental just-in-time compiler " "`" msgstr "" -#: whatsnew/3.14.rst:103 +#: whatsnew/3.14.rst:106 msgid "Incompatible changes" msgstr "" -#: whatsnew/3.14.rst:105 +#: whatsnew/3.14.rst:108 msgid "" "On platforms other than macOS and Windows, the default :ref:`start method " "` for :mod:`multiprocessing` and :class:" @@ -144,20 +163,20 @@ msgid "" "*forkserver*." msgstr "" -#: whatsnew/3.14.rst:110 +#: whatsnew/3.14.rst:113 msgid "" "See :ref:`(1) ` and :ref:`(2) " "` for details." msgstr "" -#: whatsnew/3.14.rst:113 +#: whatsnew/3.14.rst:116 msgid "" "If you encounter :exc:`NameError`\\s or pickling errors coming out of :mod:" "`multiprocessing` or :mod:`concurrent.futures`, see the :ref:`forkserver " "restrictions `." msgstr "" -#: whatsnew/3.14.rst:117 +#: whatsnew/3.14.rst:120 msgid "" "The interpreter avoids some reference count modifications internally when " "it's safe to do so. This can lead to different values returned from :func:" @@ -165,15 +184,203 @@ msgid "" "Python. See :ref:`below ` for details." msgstr "" -#: whatsnew/3.14.rst:2463 +#: whatsnew/3.14.rst:2722 msgid "New features" msgstr "" -#: whatsnew/3.14.rst:128 +#: whatsnew/3.14.rst:131 +msgid "PEP 779: Free-threaded Python is officially supported" +msgstr "" + +#: whatsnew/3.14.rst:133 +msgid "" +"The free-threaded build of Python is now supported and no longer " +"experimental. This is the start of phase II where free-threaded Python is " +"officially supported but still optional." +msgstr "" + +#: whatsnew/3.14.rst:137 +msgid "" +"We are confident that the project is on the right path, and we appreciate " +"the continued dedication from everyone working to make free-threading ready " +"for broader adoption across the Python community." +msgstr "" + +#: whatsnew/3.14.rst:141 +msgid "" +"With these recommendations and the acceptance of this PEP, we as the Python " +"developer community should broadly advertise that free-threading is a " +"supported Python build option now and into the future, and that it will not " +"be removed without a proper deprecation schedule." +msgstr "" + +#: whatsnew/3.14.rst:146 +msgid "" +"Any decision to transition to phase III, with free-threading as the default " +"or sole build of Python is still undecided, and dependent on many factors " +"both within CPython itself and the community. This decision is for the " +"future." +msgstr "" + +#: whatsnew/3.14.rst:151 +msgid "" +":pep:`779` and its `acceptance `__." +msgstr "" + +#: whatsnew/3.14.rst:157 +msgid "PEP 734: Multiple interpreters in the stdlib" +msgstr "" + +#: whatsnew/3.14.rst:159 +msgid "" +"The CPython runtime supports running multiple copies of Python in the same " +"process simultaneously and has done so for over 20 years. Each of these " +"separate copies is called an \"interpreter\". However, the feature had been " +"available only through the C-API." +msgstr "" + +#: whatsnew/3.14.rst:164 +msgid "" +"That limitation is removed in the 3.14 release, with the new :mod:" +"`concurrent.interpreters` module." +msgstr "" + +#: whatsnew/3.14.rst:167 +msgid "" +"There are at least two notable reasons why using multiple interpreters is " +"worth considering:" +msgstr "" + +#: whatsnew/3.14.rst:170 +msgid "they support a new (to Python), human-friendly concurrency model" +msgstr "" + +#: whatsnew/3.14.rst:171 +msgid "true multi-core parallelism" +msgstr "" + +#: whatsnew/3.14.rst:173 +msgid "" +"For some use cases, concurrency in software enables efficiency and can " +"simplify software, at a high level. At the same time, implementing and " +"maintaining all but the simplest concurrency is often a struggle for the " +"human brain. That especially applies to plain threads (for example, :mod:" +"`threading`), where all memory is shared between all threads." +msgstr "" + +#: whatsnew/3.14.rst:179 +msgid "" +"With multiple isolated interpreters, you can take advantage of a class of " +"concurrency models, like CSP or the actor model, that have found success in " +"other programming languages, like Smalltalk, Erlang, Haskell, and Go. Think " +"of multiple interpreters like threads but with opt-in sharing." +msgstr "" + +#: whatsnew/3.14.rst:185 +msgid "" +"Regarding multi-core parallelism: as of the 3.12 release, interpreters are " +"now sufficiently isolated from one another to be used in parallel. (See :pep:" +"`684`.) This unlocks a variety of CPU-intensive use cases for Python that " +"were limited by the :term:`GIL`." +msgstr "" + +#: whatsnew/3.14.rst:190 +msgid "" +"Using multiple interpreters is similar in many ways to :mod:" +"`multiprocessing`, in that they both provide isolated logical \"processes\" " +"that can run in parallel, with no sharing by default. However, when using " +"multiple interpreters, an application will use fewer system resources and " +"will operate more efficiently (since it stays within the same process). " +"Think of multiple interpreters as having the isolation of processes with the " +"efficiency of threads." +msgstr "" + +#: whatsnew/3.14.rst:201 +msgid "" +"While the feature has been around for decades, multiple interpreters have " +"not been used widely, due to low awareness and the lack of a stdlib module. " +"Consequently, they currently have several notable limitations, which will " +"improve significantly now that the feature is finally going mainstream." +msgstr "" + +#: whatsnew/3.14.rst:207 +msgid "Current limitations:" +msgstr "" + +#: whatsnew/3.14.rst:209 +msgid "starting each interpreter has not been optimized yet" +msgstr "" + +#: whatsnew/3.14.rst:210 +msgid "" +"each interpreter uses more memory than necessary (we will be working next on " +"extensive internal sharing between interpreters)" +msgstr "" + +#: whatsnew/3.14.rst:213 +msgid "" +"there aren't many options *yet* for truly sharing objects or other data " +"between interpreters (other than :type:`memoryview`)" +msgstr "" + +#: whatsnew/3.14.rst:215 +msgid "" +"many extension modules on PyPI are not compatible with multiple interpreters " +"yet (stdlib extension modules *are* compatible)" +msgstr "" + +#: whatsnew/3.14.rst:217 +msgid "" +"the approach to writing applications that use multiple isolated interpreters " +"is mostly unfamiliar to Python users, for now" +msgstr "" + +#: whatsnew/3.14.rst:220 +msgid "" +"The impact of these limitations will depend on future CPython improvements, " +"how interpreters are used, and what the community solves through PyPI " +"packages. Depending on the use case, the limitations may not have much " +"impact, so try it out!" +msgstr "" + +#: whatsnew/3.14.rst:225 +msgid "" +"Furthermore, future CPython releases will reduce or eliminate overhead and " +"provide utilities that are less appropriate on PyPI. In the meantime, most " +"of the limitations can also be addressed through extension modules, meaning " +"PyPI packages can fill any gap for 3.14, and even back to 3.12 where " +"interpreters were finally properly isolated and stopped sharing the :term:" +"`GIL`. Likewise, we expect to slowly see libraries on PyPI for high-level " +"abstractions on top of interpreters." +msgstr "" + +#: whatsnew/3.14.rst:233 +msgid "" +"Regarding extension modules, work is in progress to update some PyPI " +"projects, as well as tools like Cython, pybind11, nanobind, and PyO3. The " +"steps for isolating an extension module are found at :ref:`isolating-" +"extensions-howto`. Isolating a module has a lot of overlap with what is " +"required to support :ref:`free-threading `, so the ongoing work in the community in that area will help " +"accelerate support for multiple interpreters." +msgstr "" + +#: whatsnew/3.14.rst:242 +msgid "" +"Also added in 3.14: :ref:`concurrent.futures.InterpreterPoolExecutor " +"`." +msgstr "" + +#: whatsnew/3.14.rst:246 +msgid ":pep:`734`." +msgstr "" + +#: whatsnew/3.14.rst:252 msgid "PEP 750: Template strings" msgstr "" -#: whatsnew/3.14.rst:130 +#: whatsnew/3.14.rst:254 msgid "" "Template string literals (t-strings) are a generalization of f-strings, " "using a ``t`` in place of the ``f`` prefix. Instead of evaluating to :class:" @@ -181,7 +388,7 @@ msgid "" "type:" msgstr "" -#: whatsnew/3.14.rst:134 +#: whatsnew/3.14.rst:258 msgid "" "from string.templatelib import Template\n" "\n" @@ -189,14 +396,14 @@ msgid "" "template: Template = t\"Hello {name}\"" msgstr "" -#: whatsnew/3.14.rst:141 +#: whatsnew/3.14.rst:265 msgid "" "The template can then be combined with functions that operate on the " "template's structure to produce a :class:`str` or a string-like result. For " "example, sanitizing input:" msgstr "" -#: whatsnew/3.14.rst:145 +#: whatsnew/3.14.rst:269 msgid "" "evil = \"\"\n" "template = t\"

{evil}

\"\n" @@ -204,11 +411,11 @@ msgid "" "p>\"" msgstr "" -#: whatsnew/3.14.rst:151 +#: whatsnew/3.14.rst:275 msgid "As another example, generating HTML attributes from data:" msgstr "" -#: whatsnew/3.14.rst:153 +#: whatsnew/3.14.rst:277 msgid "" "attributes = {\"src\": \"shrubbery.jpg\", \"alt\": \"looks nice\"}\n" "template = t\"\"\n" @@ -216,7 +423,7 @@ msgid "" "class=\"looks-nice\">'" msgstr "" -#: whatsnew/3.14.rst:159 +#: whatsnew/3.14.rst:283 msgid "" "Compared to using an f-string, the ``html`` function has access to template " "attributes containing the original information: static strings, " @@ -226,11 +433,11 @@ msgid "" "much closer to the Python language, syntax, scoping, and more." msgstr "" -#: whatsnew/3.14.rst:166 +#: whatsnew/3.14.rst:290 msgid "Writing template handlers is straightforward:" msgstr "" -#: whatsnew/3.14.rst:168 +#: whatsnew/3.14.rst:292 msgid "" "from string.templatelib import Template, Interpolation\n" "\n" @@ -249,7 +456,7 @@ msgid "" "assert lower_upper(t\"HELLO {name}\") == \"hello WORLD\"" msgstr "" -#: whatsnew/3.14.rst:185 +#: whatsnew/3.14.rst:309 msgid "" "With this in place, developers can write template systems to sanitize SQL, " "make safe shell operations, improve logging, tackle modern ideas in web " @@ -257,22 +464,22 @@ msgid "" "business DSLs." msgstr "" -#: whatsnew/3.14.rst:189 +#: whatsnew/3.14.rst:313 msgid "" "(Contributed by Jim Baker, Guido van Rossum, Paul Everitt, Koudai Aono, " "Lysandros Nikolaou, Dave Peck, Adam Turner, Jelle Zijlstra, Bénédikt Tran, " "and Pablo Galindo Salgado in :gh:`132661`.)" msgstr "" -#: whatsnew/3.14.rst:194 +#: whatsnew/3.14.rst:318 msgid ":pep:`750`." msgstr "" -#: whatsnew/3.14.rst:200 +#: whatsnew/3.14.rst:324 msgid "PEP 768: Safe external debugger interface for CPython" msgstr "" -#: whatsnew/3.14.rst:202 +#: whatsnew/3.14.rst:326 msgid "" ":pep:`768` introduces a zero-overhead debugging interface that allows " "debuggers and profilers to safely attach to running Python processes. This " @@ -282,7 +489,7 @@ msgid "" "module's remote attaching capabilities." msgstr "" -#: whatsnew/3.14.rst:208 +#: whatsnew/3.14.rst:332 msgid "" "The new interface provides safe execution points for attaching debugger code " "without modifying the interpreter's normal execution path or adding runtime " @@ -291,17 +498,17 @@ msgid "" "capability for high-availability systems and production environments." msgstr "" -#: whatsnew/3.14.rst:213 +#: whatsnew/3.14.rst:337 msgid "" "For convenience, CPython implements this interface through the :mod:`sys` " "module with a :func:`sys.remote_exec` function::" msgstr "" -#: whatsnew/3.14.rst:216 +#: whatsnew/3.14.rst:340 msgid "sys.remote_exec(pid, script_path)" msgstr "" -#: whatsnew/3.14.rst:218 +#: whatsnew/3.14.rst:342 msgid "" "This function allows sending Python code to be executed in a target process " "at the next safe execution point. However, tool authors can also implement " @@ -309,13 +516,13 @@ msgid "" "mechanisms used to safely attach to running processes." msgstr "" -#: whatsnew/3.14.rst:222 +#: whatsnew/3.14.rst:346 msgid "" "Here's a simple example that inspects object types in a running Python " "process:" msgstr "" -#: whatsnew/3.14.rst:224 +#: whatsnew/3.14.rst:348 msgid "" "import os\n" "import sys\n" @@ -334,27 +541,27 @@ msgid "" " os.unlink(script_path)" msgstr "" -#: whatsnew/3.14.rst:241 +#: whatsnew/3.14.rst:365 msgid "" "The debugging interface has been carefully designed with security in mind " "and includes several mechanisms to control access:" msgstr "" -#: whatsnew/3.14.rst:244 +#: whatsnew/3.14.rst:368 msgid "A :envvar:`PYTHON_DISABLE_REMOTE_DEBUG` environment variable." msgstr "" -#: whatsnew/3.14.rst:245 +#: whatsnew/3.14.rst:369 msgid "A :option:`-X disable-remote-debug` command-line option." msgstr "" -#: whatsnew/3.14.rst:246 +#: whatsnew/3.14.rst:370 msgid "" "A :option:`--without-remote-debug` configure flag to completely disable the " "feature at build time." msgstr "" -#: whatsnew/3.14.rst:248 +#: whatsnew/3.14.rst:372 msgid "" "A key implementation detail is that the interface piggybacks on the " "interpreter's existing evaluation loop and safe points, ensuring zero " @@ -362,21 +569,21 @@ msgid "" "processes to coordinate debugging operations." msgstr "" -#: whatsnew/3.14.rst:252 +#: whatsnew/3.14.rst:376 msgid "" "(Contributed by Pablo Galindo Salgado, Matt Wozniski, and Ivona Stojanovic " "in :gh:`131591`.)" msgstr "" -#: whatsnew/3.14.rst:329 +#: whatsnew/3.14.rst:453 msgid ":pep:`768`." msgstr "" -#: whatsnew/3.14.rst:261 +#: whatsnew/3.14.rst:385 msgid "PEP 784: Adding Zstandard to the standard library" msgstr "" -#: whatsnew/3.14.rst:263 +#: whatsnew/3.14.rst:387 msgid "" "The new ``compression`` package contains modules :mod:`!compression.lzma`, :" "mod:`!compression.bz2`, :mod:`!compression.gzip` and :mod:`!compression." @@ -388,7 +595,7 @@ msgid "" "sooner than five years after the release of 3.14." msgstr "" -#: whatsnew/3.14.rst:272 +#: whatsnew/3.14.rst:396 msgid "" "The new :mod:`!compression.zstd` module provides compression and " "decompression APIs for the Zstandard format via bindings to `Meta's zstd " @@ -399,11 +606,11 @@ msgid "" "`zipfile`, and :mod:`shutil` modules." msgstr "" -#: whatsnew/3.14.rst:280 +#: whatsnew/3.14.rst:404 msgid "Here's an example of using the new module to compress some data:" msgstr "" -#: whatsnew/3.14.rst:282 +#: whatsnew/3.14.rst:406 msgid "" "from compression import zstd\n" "import math\n" @@ -416,37 +623,37 @@ msgid "" "print(f\"Achieved compression ratio of {ratio}\")" msgstr "" -#: whatsnew/3.14.rst:294 +#: whatsnew/3.14.rst:418 msgid "" "As can be seen, the API is similar to the APIs of the :mod:`!lzma` and :mod:" "`!bz2` modules." msgstr "" -#: whatsnew/3.14.rst:297 +#: whatsnew/3.14.rst:421 msgid "" "(Contributed by Emma Harper Smith, Adam Turner, Gregory P. Smith, Tomas " -"Roun, Victor Stinner, and Rogdham in :gh:`132983`)" +"Roun, Victor Stinner, and Rogdham in :gh:`132983`.)" msgstr "" -#: whatsnew/3.14.rst:301 +#: whatsnew/3.14.rst:425 msgid ":pep:`784`." msgstr "" -#: whatsnew/3.14.rst:307 +#: whatsnew/3.14.rst:431 msgid "Remote attaching to a running Python process with PDB" msgstr "" -#: whatsnew/3.14.rst:309 +#: whatsnew/3.14.rst:433 msgid "" "The :mod:`pdb` module now supports remote attaching to a running Python " "process using a new ``-p PID`` command-line option:" msgstr "" -#: whatsnew/3.14.rst:312 +#: whatsnew/3.14.rst:436 msgid "python -m pdb -p 1234" msgstr "" -#: whatsnew/3.14.rst:316 +#: whatsnew/3.14.rst:440 msgid "" "This will connect to the Python process with the given PID and allow you to " "debug it interactively. Notice that due to how the Python interpreter works " @@ -455,21 +662,21 @@ msgid "" "when the process receives a signal." msgstr "" -#: whatsnew/3.14.rst:322 +#: whatsnew/3.14.rst:446 msgid "" "This feature uses :pep:`768` and the :func:`sys.remote_exec` function to " "attach to the remote process and send the PDB commands to it." msgstr "" -#: whatsnew/3.14.rst:326 +#: whatsnew/3.14.rst:450 msgid "(Contributed by Matt Wozniski and Pablo Galindo in :gh:`131591`.)" msgstr "" -#: whatsnew/3.14.rst:335 +#: whatsnew/3.14.rst:459 msgid "PEP 758 – Allow except and except* expressions without parentheses" msgstr "" -#: whatsnew/3.14.rst:337 +#: whatsnew/3.14.rst:461 msgid "" "The :keyword:`except` and :keyword:`except* ` expressions now " "allow parentheses to be omitted when there are multiple exception types and " @@ -477,54 +684,56 @@ msgid "" "valid:" msgstr "" -#: whatsnew/3.14.rst:341 +#: whatsnew/3.14.rst:465 msgid "" "try:\n" -" release_new_sleep_token_album()\n" -"except AlbumNotFound, SongsTooGoodToBeReleased:\n" -" print(\"Sorry, no new album this year.\")\n" +" connect_to_server()\n" +"except TimeoutError, ConnectionRefusedError:\n" +" print(\"Network issue encountered.\")\n" "\n" " # The same applies to except* (for exception groups):\n" +"\n" "try:\n" -" release_new_sleep_token_album()\n" -"except* AlbumNotFound, SongsTooGoodToBeReleased:\n" -" print(\"Sorry, no new album this year.\")" +" connect_to_server()\n" +"except* TimeoutError, ConnectionRefusedError:\n" +" print(\"Network issue encountered.\")" msgstr "" -#: whatsnew/3.14.rst:354 +#: whatsnew/3.14.rst:479 msgid "Check :pep:`758` for more details." msgstr "" -#: whatsnew/3.14.rst:356 +#: whatsnew/3.14.rst:481 msgid "(Contributed by Pablo Galindo and Brett Cannon in :gh:`131831`.)" msgstr "" -#: whatsnew/3.14.rst:359 +#: whatsnew/3.14.rst:484 msgid ":pep:`758`." msgstr "" -#: whatsnew/3.14.rst:365 -msgid "PEP 649: deferred evaluation of annotations" +#: whatsnew/3.14.rst:490 +msgid "PEP 649 and 749: deferred evaluation of annotations" msgstr "" -#: whatsnew/3.14.rst:367 +#: whatsnew/3.14.rst:492 msgid "" "The :term:`annotations ` on functions, classes, and modules are " "no longer evaluated eagerly. Instead, annotations are stored in special-" "purpose :term:`annotate functions ` and evaluated only " -"when necessary. This is specified in :pep:`649` and :pep:`749`." +"when necessary (except if ``from __future__ import annotations`` is used). " +"This is specified in :pep:`649` and :pep:`749`." msgstr "" -#: whatsnew/3.14.rst:372 +#: whatsnew/3.14.rst:498 msgid "" "This change is designed to make annotations in Python more performant and " "more usable in most circumstances. The runtime cost for defining annotations " "is minimized, but it remains possible to introspect annotations at runtime. " -"It is usually no longer necessary to enclose annotations in strings if they " -"contain forward references." +"It is no longer necessary to enclose annotations in strings if they contain " +"forward references." msgstr "" -#: whatsnew/3.14.rst:378 +#: whatsnew/3.14.rst:504 msgid "" "The new :mod:`annotationlib` module provides tools for inspecting deferred " "annotations. Annotations may be evaluated in the :attr:`~annotationlib." @@ -535,11 +744,11 @@ msgid "" "annotations as strings)." msgstr "" -#: whatsnew/3.14.rst:385 +#: whatsnew/3.14.rst:511 msgid "This example shows how these formats behave:" msgstr "" -#: whatsnew/3.14.rst:387 +#: whatsnew/3.14.rst:513 msgid "" ">>> from annotationlib import get_annotations, Format\n" ">>> def func(arg: Undefined):\n" @@ -554,32 +763,33 @@ msgid "" "{'arg': 'Undefined'}" msgstr "" -#: whatsnew/3.14.rst:402 +#: whatsnew/3.14.rst:528 msgid "Implications for annotated code" msgstr "" -#: whatsnew/3.14.rst:404 +#: whatsnew/3.14.rst:530 msgid "" "If you define annotations in your code (for example, for use with a static " "type checker), then this change probably does not affect you: you can keep " "writing annotations the same way you did with previous versions of Python." msgstr "" -#: whatsnew/3.14.rst:408 +#: whatsnew/3.14.rst:534 msgid "" "You will likely be able to remove quoted strings in annotations, which are " "frequently used for forward references. Similarly, if you use ``from " "__future__ import annotations`` to avoid having to write strings in " -"annotations, you may well be able to remove that import. However, if you " -"rely on third-party libraries that read annotations, those libraries may " -"need changes to support unquoted annotations before they work as expected." +"annotations, you may well be able to remove that import once you support " +"only Python 3.14 and newer. However, if you rely on third-party libraries " +"that read annotations, those libraries may need changes to support unquoted " +"annotations before they work as expected." msgstr "" -#: whatsnew/3.14.rst:416 +#: whatsnew/3.14.rst:543 msgid "Implications for readers of ``__annotations__``" msgstr "" -#: whatsnew/3.14.rst:418 +#: whatsnew/3.14.rst:545 msgid "" "If your code reads the ``__annotations__`` attribute on objects, you may " "want to make changes in order to support code that relies on deferred " @@ -588,11 +798,20 @@ msgid "" "FORWARDREF` format, as the :mod:`dataclasses` module now does." msgstr "" -#: whatsnew/3.14.rst:425 +#: whatsnew/3.14.rst:551 +msgid "" +"The external :pypi:`typing_extensions` package provides partial backports of " +"some of the functionality of the :mod:`annotationlib` module, such as the :" +"class:`~annotationlib.Format` enum and the :func:`~annotationlib." +"get_annotations` function. These can be used to write cross-version code " +"that takes advantage of the new behavior in Python 3.14." +msgstr "" + +#: whatsnew/3.14.rst:557 msgid "Related changes" msgstr "" -#: whatsnew/3.14.rst:427 +#: whatsnew/3.14.rst:559 msgid "" "The changes in Python 3.14 are designed to rework how ``__annotations__`` " "works at runtime while minimizing breakage to code that contains annotations " @@ -603,11 +822,26 @@ msgid "" "use only the documented functionality of the :mod:`annotationlib` module." msgstr "" -#: whatsnew/3.14.rst:436 +#: whatsnew/3.14.rst:567 +msgid "" +"In particular, do not read annotations directly from the namespace " +"dictionary attribute of type objects. Use :func:`annotationlib." +"get_annotate_from_class_namespace` during class construction and :func:" +"`annotationlib.get_annotations` afterwards." +msgstr "" + +#: whatsnew/3.14.rst:571 +msgid "" +"In previous releases, it was sometimes possible to access class annotations " +"from an instance of an annotated class. This behavior was undocumented and " +"accidental, and will no longer work in Python 3.14." +msgstr "" + +#: whatsnew/3.14.rst:576 msgid "``from __future__ import annotations``" msgstr "" -#: whatsnew/3.14.rst:438 +#: whatsnew/3.14.rst:578 msgid "" "In Python 3.7, :pep:`563` introduced the ``from __future__ import " "annotations`` directive, which turns all annotations into strings. This " @@ -618,15 +852,21 @@ msgid "" "of code using ``from __future__ import annotations`` is unchanged." msgstr "" -#: whatsnew/3.14.rst:447 -msgid ":pep:`649`." +#: whatsnew/3.14.rst:586 +msgid "" +"(Contributed by Jelle Zijlstra in :gh:`119180`; :pep:`649` was written by " +"Larry Hastings.)" +msgstr "" + +#: whatsnew/3.14.rst:589 +msgid ":pep:`649` and :pep:`749`." msgstr "" -#: whatsnew/3.14.rst:451 +#: whatsnew/3.14.rst:593 msgid "Improved error messages" msgstr "" -#: whatsnew/3.14.rst:453 +#: whatsnew/3.14.rst:595 msgid "" "The interpreter now provides helpful suggestions when it detects typos in " "Python keywords. When a word that closely resembles a Python keyword is " @@ -635,7 +875,7 @@ msgid "" "typing mistakes. For example:" msgstr "" -#: whatsnew/3.14.rst:459 +#: whatsnew/3.14.rst:601 msgid "" ">>> whille True:\n" "... pass\n" @@ -669,21 +909,21 @@ msgid "" "SyntaxError: invalid syntax. Did you mean 'raise'?" msgstr "" -#: whatsnew/3.14.rst:492 +#: whatsnew/3.14.rst:634 msgid "" "While the feature focuses on the most common cases, some variations of " "misspellings may still result in regular syntax errors. (Contributed by " "Pablo Galindo in :gh:`132449`.)" msgstr "" -#: whatsnew/3.14.rst:496 +#: whatsnew/3.14.rst:638 msgid "" "When unpacking assignment fails due to incorrect number of variables, the " "error message prints the received number of values in more cases than " "before. (Contributed by Tushar Sadhwani in :gh:`122239`.)" msgstr "" -#: whatsnew/3.14.rst:500 +#: whatsnew/3.14.rst:642 msgid "" ">>> x, y, z = 1, 2, 3, 4\n" "Traceback (most recent call last):\n" @@ -693,13 +933,13 @@ msgid "" "ValueError: too many values to unpack (expected 3, got 4)" msgstr "" -#: whatsnew/3.14.rst:509 +#: whatsnew/3.14.rst:651 msgid "" ":keyword:`elif` statements that follow an :keyword:`else` block now have a " "specific error message. (Contributed by Steele Farnsworth in :gh:`129902`.)" msgstr "" -#: whatsnew/3.14.rst:512 +#: whatsnew/3.14.rst:654 msgid "" ">>> if who == \"me\":\n" "... print(\"It's me!\")\n" @@ -713,7 +953,7 @@ msgid "" "SyntaxError: 'elif' block follows an 'else' block" msgstr "" -#: whatsnew/3.14.rst:525 +#: whatsnew/3.14.rst:667 msgid "" "If a statement (:keyword:`pass`, :keyword:`del`, :keyword:`return`, :keyword:" "`yield`, :keyword:`raise`, :keyword:`break`, :keyword:`continue`, :keyword:" @@ -724,7 +964,7 @@ msgid "" "required. (Contributed by Sergey Miryanov in :gh:`129515`.)" msgstr "" -#: whatsnew/3.14.rst:533 +#: whatsnew/3.14.rst:675 msgid "" ">>> x = 1 if True else pass\n" "Traceback (most recent call last):\n" @@ -741,27 +981,27 @@ msgid "" "SyntaxError: expected expression before 'if', but statement is given" msgstr "" -#: whatsnew/3.14.rst:550 +#: whatsnew/3.14.rst:692 msgid "" "When incorrectly closed strings are detected, the error message suggests " "that the string may be intended to be part of the string. (Contributed by " "Pablo Galindo in :gh:`88535`.)" msgstr "" -#: whatsnew/3.14.rst:554 +#: whatsnew/3.14.rst:696 msgid "" ">>> \"The interesting object \"The important object\" is very important\"\n" "Traceback (most recent call last):\n" "SyntaxError: invalid syntax. Is this intended to be part of the string?" msgstr "" -#: whatsnew/3.14.rst:560 +#: whatsnew/3.14.rst:702 msgid "" "When strings have incompatible prefixes, the error now shows which prefixes " "are incompatible. (Contributed by Nikita Sobolev in :gh:`133197`.)" msgstr "" -#: whatsnew/3.14.rst:564 +#: whatsnew/3.14.rst:706 msgid "" ">>> ub'abc'\n" " File \"\", line 1\n" @@ -770,33 +1010,33 @@ msgid "" "SyntaxError: 'u' and 'b' prefixes are incompatible" msgstr "" -#: whatsnew/3.14.rst:572 +#: whatsnew/3.14.rst:714 msgid "Improved error messages when using ``as`` with incompatible targets in:" msgstr "" -#: whatsnew/3.14.rst:574 +#: whatsnew/3.14.rst:716 msgid "Imports: ``import ... as ...``" msgstr "" -#: whatsnew/3.14.rst:575 +#: whatsnew/3.14.rst:717 msgid "From imports: ``from ... import ... as ...``" msgstr "" -#: whatsnew/3.14.rst:576 +#: whatsnew/3.14.rst:718 msgid "Except handlers: ``except ... as ...``" msgstr "" -#: whatsnew/3.14.rst:577 +#: whatsnew/3.14.rst:719 msgid "Pattern-match cases: ``case ... as ...``" msgstr "" -#: whatsnew/3.14.rst:579 +#: whatsnew/3.14.rst:721 msgid "" "(Contributed by Nikita Sobolev in :gh:`123539`, :gh:`123562`, and :gh:" "`123440`.)" msgstr "" -#: whatsnew/3.14.rst:582 +#: whatsnew/3.14.rst:724 msgid "" ">>> import ast as arr[0]\n" " File \"\", line 1\n" @@ -805,14 +1045,14 @@ msgid "" "SyntaxError: cannot use subscript as import target" msgstr "" -#: whatsnew/3.14.rst:590 +#: whatsnew/3.14.rst:732 msgid "" "Improved error message when trying to add an instance of an unhashable type " "to a :class:`dict` or :class:`set`. (Contributed by CF Bolz-Tereick and " "Victor Stinner in :gh:`132828`.)" msgstr "" -#: whatsnew/3.14.rst:594 +#: whatsnew/3.14.rst:736 msgid "" ">>> s = set()\n" ">>> s.add({'pages': 12, 'grade': 'A'})\n" @@ -831,31 +1071,31 @@ msgid "" "TypeError: cannot use 'list' as a dict key (unhashable type: 'list')" msgstr "" -#: whatsnew/3.14.rst:616 -msgid "PEP 741: Python Configuration C API" +#: whatsnew/3.14.rst:758 +msgid "PEP 741: Python configuration C API" msgstr "" -#: whatsnew/3.14.rst:618 +#: whatsnew/3.14.rst:760 msgid "" "Add a :ref:`PyInitConfig C API ` to configure the Python " "initialization without relying on C structures and the ability to make ABI-" "compatible changes in the future." msgstr "" -#: whatsnew/3.14.rst:622 +#: whatsnew/3.14.rst:764 msgid "" "Complete the :pep:`587` :ref:`PyConfig C API ` by adding :c:" "func:`PyInitConfig_AddModule` which can be used to add a built-in extension " "module; feature previously referred to as the “inittab”." msgstr "" -#: whatsnew/3.14.rst:626 +#: whatsnew/3.14.rst:768 msgid "" "Add :c:func:`PyConfig_Get` and :c:func:`PyConfig_Set` functions to get and " "set the current runtime configuration." msgstr "" -#: whatsnew/3.14.rst:629 +#: whatsnew/3.14.rst:771 msgid "" "PEP 587 “Python Initialization Configuration” unified all the ways to " "configure the Python initialization. This PEP unifies also the configuration " @@ -865,7 +1105,7 @@ msgid "" "the API further." msgstr "" -#: whatsnew/3.14.rst:636 +#: whatsnew/3.14.rst:778 msgid "" "The lower level PEP 587 PyConfig API remains available for use cases with an " "intentionally higher level of coupling to CPython implementation details " @@ -873,29 +1113,29 @@ msgid "" "configuration mechanisms)." msgstr "" -#: whatsnew/3.14.rst:2524 whatsnew/3.14.rst:2543 +#: whatsnew/3.14.rst:2784 whatsnew/3.14.rst:2803 msgid "(Contributed by Victor Stinner in :gh:`107954`.)" msgstr "" -#: whatsnew/3.14.rst:644 +#: whatsnew/3.14.rst:786 msgid ":pep:`741`." msgstr "" -#: whatsnew/3.14.rst:649 +#: whatsnew/3.14.rst:791 msgid "Asyncio introspection capabilities" msgstr "" -#: whatsnew/3.14.rst:651 +#: whatsnew/3.14.rst:793 msgid "" "Added a new command-line interface to inspect running Python processes using " "asynchronous tasks, available via:" msgstr "" -#: whatsnew/3.14.rst:654 +#: whatsnew/3.14.rst:796 msgid "python -m asyncio ps PID" msgstr "" -#: whatsnew/3.14.rst:658 +#: whatsnew/3.14.rst:800 msgid "" "This tool inspects the given process ID (PID) and displays information about " "currently running asyncio tasks. It outputs a task table: a flat listing of " @@ -903,11 +1143,11 @@ msgid "" "them." msgstr "" -#: whatsnew/3.14.rst:663 +#: whatsnew/3.14.rst:805 msgid "python -m asyncio pstree PID" msgstr "" -#: whatsnew/3.14.rst:667 +#: whatsnew/3.14.rst:809 msgid "" "This tool fetches the same information, but renders a visual async call " "tree, showing coroutine relationships in a hierarchical format. This " @@ -917,11 +1157,11 @@ msgid "" "together." msgstr "" -#: whatsnew/3.14.rst:673 +#: whatsnew/3.14.rst:815 msgid "For example given this code:" msgstr "" -#: whatsnew/3.14.rst:675 +#: whatsnew/3.14.rst:817 msgid "" "import asyncio\n" "\n" @@ -946,79 +1186,108 @@ msgid "" " asyncio.run(main())" msgstr "" -#: whatsnew/3.14.rst:698 +#: whatsnew/3.14.rst:840 msgid "" "Executing the new tool on the running process will yield a table like this:" msgstr "" -#: whatsnew/3.14.rst:700 +#: whatsnew/3.14.rst:842 msgid "" "python -m asyncio ps 12345\n" "\n" "tid task id task name coroutine " -"chain awaiter name awaiter id\n" -"---------------------------------------------------------------------------------------------------------------------------------------\n" -"8138752 0x564bd3d0210 " -"Task-1 " +"stack awaiter " +"chain awaiter name awaiter id\n" +"------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" +"1935500 0x7fc930c18050 Task-1 TaskGroup._aexit -> " +"TaskGroup.__aexit__ -> " +"main " "0x0\n" -"8138752 0x564bd3d0410 Sundowning _aexit -> __aexit__ -> " -"main Task-1 0x564bd3d0210\n" -"8138752 0x564bd3d0610 TMBTE _aexit -> __aexit__ -> " -"main Task-1 0x564bd3d0210\n" -"8138752 0x564bd3d0810 TNDNBTG _aexit -> __aexit__ -> " -"album Sundowning 0x564bd3d0410\n" -"8138752 0x564bd3d0a10 Levitate _aexit -> __aexit__ -> " -"album Sundowning 0x564bd3d0410\n" -"8138752 0x564bd3e0550 DYWTYLM _aexit -> __aexit__ -> " -"album TMBTE 0x564bd3d0610\n" -"8138752 0x564bd3e0710 Aqua Regia _aexit -> __aexit__ -> " -"album TMBTE 0x564bd3d0610" +"1935500 0x7fc930c18230 Sundowning TaskGroup._aexit -> " +"TaskGroup.__aexit__ -> album TaskGroup._aexit -> TaskGroup.__aexit__ -> " +"main Task-1 0x7fc930c18050\n" +"1935500 0x7fc93173fa50 TMBTE TaskGroup._aexit -> " +"TaskGroup.__aexit__ -> album TaskGroup._aexit -> TaskGroup.__aexit__ -> " +"main Task-1 0x7fc930c18050\n" +"1935500 0x7fc93173fdf0 TNDNBTG sleep -> " +"play TaskGroup._aexit -> TaskGroup." +"__aexit__ -> album Sundowning 0x7fc930c18230\n" +"1935500 0x7fc930d32510 Levitate sleep -> " +"play TaskGroup._aexit -> TaskGroup." +"__aexit__ -> album Sundowning 0x7fc930c18230\n" +"1935500 0x7fc930d32890 DYWTYLM sleep -> " +"play TaskGroup._aexit -> TaskGroup." +"__aexit__ -> album TMBTE 0x7fc93173fa50\n" +"1935500 0x7fc93161ec30 Aqua Regia sleep -> " +"play TaskGroup._aexit -> TaskGroup." +"__aexit__ -> album TMBTE 0x7fc93173fa50" +msgstr "" + +#: whatsnew/3.14.rst:856 +msgid "or a tree like this:" msgstr "" -#: whatsnew/3.14.rst:715 -msgid "or:" -msgstr "" - -#: whatsnew/3.14.rst:717 +#: whatsnew/3.14.rst:858 msgid "" "python -m asyncio pstree 12345\n" "\n" "└── (T) Task-1\n" -" └── main\n" -" └── __aexit__\n" -" └── _aexit\n" +" └── main example.py:13\n" +" └── TaskGroup.__aexit__ Lib/asyncio/taskgroups.py:72\n" +" └── TaskGroup._aexit Lib/asyncio/taskgroups.py:121\n" " ├── (T) Sundowning\n" -" │ └── album\n" -" │ └── __aexit__\n" -" │ └── _aexit\n" +" │ └── album example.py:8\n" +" │ └── TaskGroup.__aexit__ Lib/asyncio/taskgroups." +"py:72\n" +" │ └── TaskGroup._aexit Lib/asyncio/taskgroups." +"py:121\n" " │ ├── (T) TNDNBTG\n" +" │ │ └── play example.py:4\n" +" │ │ └── sleep Lib/asyncio/tasks.py:702\n" " │ └── (T) Levitate\n" +" │ └── play example.py:4\n" +" │ └── sleep Lib/asyncio/tasks.py:702\n" " └── (T) TMBTE\n" -" └── album\n" -" └── __aexit__\n" -" └── _aexit\n" +" └── album example.py:8\n" +" └── TaskGroup.__aexit__ Lib/asyncio/taskgroups." +"py:72\n" +" └── TaskGroup._aexit Lib/asyncio/taskgroups." +"py:121\n" " ├── (T) DYWTYLM\n" -" └── (T) Aqua Regia" +" │ └── play example.py:4\n" +" │ └── sleep Lib/asyncio/tasks.py:702\n" +" └── (T) Aqua Regia\n" +" └── play example.py:4\n" +" └── sleep Lib/asyncio/tasks.py:702" msgstr "" -#: whatsnew/3.14.rst:738 +#: whatsnew/3.14.rst:887 msgid "" "If a cycle is detected in the async await graph (which could indicate a " "programming issue), the tool raises an error and lists the cycle paths that " -"prevent tree construction." +"prevent tree construction:" msgstr "" -#: whatsnew/3.14.rst:742 +#: whatsnew/3.14.rst:891 +msgid "" +"python -m asyncio pstree 12345\n" +"\n" +"ERROR: await-graph contains cycles - cannot print a tree!\n" +"\n" +"cycle: Task-2 → Task-3 → Task-2" +msgstr "" + +#: whatsnew/3.14.rst:899 msgid "" "(Contributed by Pablo Galindo, Łukasz Langa, Yury Selivanov, and Marta Gomez " "Macias in :gh:`91048`.)" msgstr "" -#: whatsnew/3.14.rst:748 +#: whatsnew/3.14.rst:905 msgid "A new type of interpreter" msgstr "" -#: whatsnew/3.14.rst:750 +#: whatsnew/3.14.rst:907 msgid "" "A new type of interpreter has been added to CPython. It uses tail calls " "between small C functions that implement individual Python opcodes, rather " @@ -1030,14 +1299,14 @@ msgid "" "new interpreter." msgstr "" -#: whatsnew/3.14.rst:759 +#: whatsnew/3.14.rst:916 msgid "" "This interpreter currently only works with Clang 19 and newer on x86-64 and " "AArch64 architectures. However, we expect that a future release of GCC will " "support this as well." msgstr "" -#: whatsnew/3.14.rst:763 +#: whatsnew/3.14.rst:920 msgid "" "This feature is opt-in for now. We highly recommend enabling profile-guided " "optimization with the new interpreter as it is the only configuration we " @@ -1045,13 +1314,13 @@ msgid "" "information on how to build Python, see :option:`--with-tail-call-interp`." msgstr "" -#: whatsnew/3.14.rst:771 +#: whatsnew/3.14.rst:928 msgid "" "This is not to be confused with `tail call optimization`__ of Python " "functions, which is currently not implemented in CPython." msgstr "" -#: whatsnew/3.14.rst:774 +#: whatsnew/3.14.rst:931 msgid "" "This new interpreter type is an internal implementation detail of the " "CPython interpreter. It doesn't change the visible behavior of Python " @@ -1059,7 +1328,7 @@ msgid "" "anything else." msgstr "" -#: whatsnew/3.14.rst:782 +#: whatsnew/3.14.rst:939 msgid "" "This section previously reported a 9-15% geometric mean speedup. This number " "has since been cautiously revised down to 3-5%. While we expect performance " @@ -1075,17 +1344,56 @@ msgid "" "light.)" msgstr "" -#: whatsnew/3.14.rst:794 +#: whatsnew/3.14.rst:951 msgid "" "(Contributed by Ken Jin in :gh:`128563`, with ideas on how to implement this " "in CPython by Mark Shannon, Garrett Gu, Haoran Xu, and Josh Haberman.)" msgstr "" -#: whatsnew/3.14.rst:801 +#: whatsnew/3.14.rst:957 +msgid "Free-threaded mode" +msgstr "" + +#: whatsnew/3.14.rst:959 +msgid "" +"Free-threaded mode (:pep:`703`), initially added in 3.13, has been " +"significantly improved. The implementation described in PEP 703 was " +"finished, including C API changes, and temporary workarounds in the " +"interpreter were replaced with more permanent solutions. The specializing " +"adaptive interpreter (:pep:`659`) is now enabled in free-threaded mode, " +"which along with many other optimizations greatly improves its performance. " +"The performance penalty on single-threaded code in free-threaded mode is now " +"roughly 5-10%, depending on platform and C compiler used." +msgstr "" + +#: whatsnew/3.14.rst:967 +msgid "" +"This work was done by many contributors: Sam Gross, Matt Page, Neil " +"Schemenauer, Thomas Wouters, Donghee Na, Kirill Podoprigora, Ken Jin, Itamar " +"Oren, Brett Simmers, Dino Viehland, Nathan Goldbaum, Ralf Gommers, Lysandros " +"Nikolaou, Kumar Aditya, Edgar Margffoy, and many others." +msgstr "" + +#: whatsnew/3.14.rst:972 +msgid "" +"Some of these contributors are employed by Meta, which has continued to " +"provide significant engineering resources to support this project." +msgstr "" + +#: whatsnew/3.14.rst:975 +msgid "" +"From 3.14, when compiling extension modules for the free-threaded build of " +"CPython on Windows, the preprocessor variable ``Py_GIL_DISABLED`` now needs " +"to be specified by the build backend, as it will no longer be determined " +"automatically by the C compiler. For a running interpreter, the setting that " +"was used at compile time can be found using :func:`sysconfig.get_config_var`." +msgstr "" + +#: whatsnew/3.14.rst:985 msgid "Syntax highlighting in PyREPL" msgstr "" -#: whatsnew/3.14.rst:803 +#: whatsnew/3.14.rst:987 msgid "" "The default :term:`interactive` shell now highlights Python syntax as you " "type. The feature is enabled by default unless the :envvar:" @@ -1093,7 +1401,7 @@ msgid "" "variables are used. See :ref:`using-on-controlling-color` for details." msgstr "" -#: whatsnew/3.14.rst:809 +#: whatsnew/3.14.rst:993 msgid "" "The default color theme for syntax highlighting strives for good contrast " "and uses exclusively the 4-bit VGA standard ANSI color codes for maximum " @@ -1102,15 +1410,15 @@ msgid "" "the :envvar:`PYTHONSTARTUP` script." msgstr "" -#: whatsnew/3.14.rst:815 +#: whatsnew/3.14.rst:999 msgid "(Contributed by Łukasz Langa in :gh:`131507`.)" msgstr "" -#: whatsnew/3.14.rst:821 +#: whatsnew/3.14.rst:1005 msgid "Binary releases for the experimental just-in-time compiler" msgstr "" -#: whatsnew/3.14.rst:823 +#: whatsnew/3.14.rst:1007 msgid "" "The official macOS and Windows release binaries now include an " "*experimental* just-in-time (JIT) compiler. Although it is **not** " @@ -1120,7 +1428,7 @@ msgid "" "off` configuration option for similar behavior." msgstr "" -#: whatsnew/3.14.rst:830 +#: whatsnew/3.14.rst:1014 msgid "" "The JIT is at an early stage and still in active development. As such, the " "typical performance impact of enabling it can range from 10% slower to 20% " @@ -1132,7 +1440,7 @@ msgid "" "current process." msgstr "" -#: whatsnew/3.14.rst:838 +#: whatsnew/3.14.rst:1022 msgid "" "Currently, the most significant missing functionality is that native " "debuggers and profilers like ``gdb`` and ``perf`` are unable to unwind " @@ -1141,20 +1449,20 @@ msgid "" "not support JIT compilation." msgstr "" -#: whatsnew/3.14.rst:843 +#: whatsnew/3.14.rst:1027 msgid "" "Please report any bugs or major performance regressions that you encounter!" msgstr "" -#: whatsnew/3.14.rst:845 +#: whatsnew/3.14.rst:1029 msgid ":pep:`744`" msgstr "" -#: whatsnew/3.14.rst:849 +#: whatsnew/3.14.rst:1033 msgid "Other language changes" msgstr "" -#: whatsnew/3.14.rst:851 +#: whatsnew/3.14.rst:1035 msgid "" "The default :term:`interactive` shell now supports import autocompletion. " "This means that typing ``import foo`` and pressing ```` will suggest " @@ -1164,14 +1472,14 @@ msgid "" "in :gh:`69605`.)" msgstr "" -#: whatsnew/3.14.rst:858 +#: whatsnew/3.14.rst:1042 msgid "" "The :func:`map` built-in now has an optional keyword-only *strict* flag " "like :func:`zip` to check that all the iterables are of equal length. " "(Contributed by Wannes Boeykens in :gh:`119793`.)" msgstr "" -#: whatsnew/3.14.rst:862 +#: whatsnew/3.14.rst:1046 msgid "" "Incorrect usage of :keyword:`await` and asynchronous comprehensions is now " "detected even if the code is optimized away by the :option:`-O` command-line " @@ -1179,7 +1487,7 @@ msgid "" "`SyntaxError`. (Contributed by Jelle Zijlstra in :gh:`121637`.)" msgstr "" -#: whatsnew/3.14.rst:867 +#: whatsnew/3.14.rst:1051 msgid "" "Writes to ``__debug__`` are now detected even if the code is optimized away " "by the :option:`-O` command-line option. For example, ``python -O -c 'assert " @@ -1187,7 +1495,7 @@ msgid "" "Katriel in :gh:`122245`.)" msgstr "" -#: whatsnew/3.14.rst:872 +#: whatsnew/3.14.rst:1056 msgid "" "Add class methods :meth:`float.from_number` and :meth:`complex.from_number` " "to convert a number to :class:`float` or :class:`complex` type " @@ -1195,32 +1503,32 @@ msgid "" "(Contributed by Serhiy Storchaka in :gh:`84978`.)" msgstr "" -#: whatsnew/3.14.rst:877 +#: whatsnew/3.14.rst:1061 msgid "" "Implement mixed-mode arithmetic rules combining real and complex numbers as " "specified by C standards since C99. (Contributed by Sergey B Kirpichev in :" "gh:`69639`.)" msgstr "" -#: whatsnew/3.14.rst:881 +#: whatsnew/3.14.rst:1065 msgid "" "All Windows code pages are now supported as \"cpXXX\" codecs on Windows. " "(Contributed by Serhiy Storchaka in :gh:`123803`.)" msgstr "" -#: whatsnew/3.14.rst:884 +#: whatsnew/3.14.rst:1068 msgid "" ":class:`super` objects are now :mod:`pickleable ` and :mod:`copyable " "`. (Contributed by Serhiy Storchaka in :gh:`125767`.)" msgstr "" -#: whatsnew/3.14.rst:888 +#: whatsnew/3.14.rst:1072 msgid "" "The :class:`memoryview` type now supports subscription, making it a :term:" "`generic type`. (Contributed by Brian Schubert in :gh:`126012`.)" msgstr "" -#: whatsnew/3.14.rst:892 +#: whatsnew/3.14.rst:1076 msgid "" "Support underscore and comma as thousands separators in the fractional part " "for floating-point presentation types of the new-style string formatting " @@ -1228,14 +1536,14 @@ msgid "" "Kirpichev in :gh:`87790`.)" msgstr "" -#: whatsnew/3.14.rst:897 +#: whatsnew/3.14.rst:1081 msgid "" "The :func:`bytes.fromhex` and :func:`bytearray.fromhex` methods now accept " "ASCII :class:`bytes` and :term:`bytes-like objects `. " "(Contributed by Daniel Pope in :gh:`129349`.)" msgstr "" -#: whatsnew/3.14.rst:901 +#: whatsnew/3.14.rst:1085 msgid "" "Support ``\\z`` as a synonym for ``\\Z`` in :mod:`regular expressions `. " "It is interpreted unambiguously in many other regular expression engines, " @@ -1243,35 +1551,35 @@ msgid "" "Storchaka in :gh:`133306`.)" msgstr "" -#: whatsnew/3.14.rst:906 +#: whatsnew/3.14.rst:1090 msgid "" "``\\B`` in :mod:`regular expression ` now matches empty input string. " "Now it is always the opposite of ``\\b``. (Contributed by Serhiy Storchaka " "in :gh:`124130`.)" msgstr "" -#: whatsnew/3.14.rst:910 +#: whatsnew/3.14.rst:1094 msgid "" "iOS and macOS apps can now be configured to redirect ``stdout`` and " "``stderr`` content to the system log. (Contributed by Russell Keith-Magee " "in :gh:`127592`.)" msgstr "" -#: whatsnew/3.14.rst:914 +#: whatsnew/3.14.rst:1098 msgid "" "The iOS testbed is now able to stream test output while the test is running. " "The testbed can also be used to run the test suite of projects other than " "CPython itself. (Contributed by Russell Keith-Magee in :gh:`127592`.)" msgstr "" -#: whatsnew/3.14.rst:918 +#: whatsnew/3.14.rst:1102 msgid "" "Three-argument :func:`pow` now tries calling :meth:`~object.__rpow__` if " "necessary. Previously it was only called in two-argument :func:`!pow` and " "the binary power operator. (Contributed by Serhiy Storchaka in :gh:`130104`.)" msgstr "" -#: whatsnew/3.14.rst:923 +#: whatsnew/3.14.rst:1107 msgid "" "Add a built-in implementation for HMAC (:rfc:`2104`) using formally verified " "code from the `HACL* `__ project. " @@ -1279,7 +1587,7 @@ msgid "" "HMAC is not available. (Contributed by Bénédikt Tran in :gh:`99108`.)" msgstr "" -#: whatsnew/3.14.rst:929 +#: whatsnew/3.14.rst:1113 msgid "" "The import time flag can now track modules that are already loaded " "('cached'), via the new :option:`-X importtime=2 <-X>`. When such a module " @@ -1288,7 +1596,7 @@ msgid "" "for future use. (Contributed by Noah Kim and Adam Turner in :gh:`118655`.)" msgstr "" -#: whatsnew/3.14.rst:936 +#: whatsnew/3.14.rst:1120 msgid "" "When subclassing from a pure C type, the C slots for the new type are no " "longer replaced with a wrapped version on class creation if they are not " @@ -1296,14 +1604,14 @@ msgid "" "`132329`.)" msgstr "" -#: whatsnew/3.14.rst:941 +#: whatsnew/3.14.rst:1125 msgid "" "The command-line option :option:`-c` now automatically dedents its code " "argument before execution. The auto-dedentation behavior mirrors :func:" "`textwrap.dedent`. (Contributed by Jon Crall and Steven Sun in :gh:`103998`.)" msgstr "" -#: whatsnew/3.14.rst:946 +#: whatsnew/3.14.rst:1130 msgid "" "Improve error message when an object supporting the synchronous context " "manager protocol is entered using :keyword:`async with` instead of :keyword:" @@ -1311,45 +1619,45 @@ msgid "" "(Contributed by Bénédikt Tran in :gh:`128398`.)" msgstr "" -#: whatsnew/3.14.rst:952 +#: whatsnew/3.14.rst:1136 msgid "" ":option:`!-J` is no longer a reserved flag for Jython_, and now has no " "special meaning. (Contributed by Adam Turner in :gh:`133336`.)" msgstr "" -#: whatsnew/3.14.rst:961 +#: whatsnew/3.14.rst:1145 msgid "" "PEP 765: Disallow ``return``/``break``/``continue`` that exit a ``finally`` " "block" msgstr "" -#: whatsnew/3.14.rst:963 +#: whatsnew/3.14.rst:1147 msgid "" "The compiler emits a :exc:`SyntaxWarning` when a :keyword:`return`, :keyword:" "`break` or :keyword:`continue` statements appears where it exits a :keyword:" "`finally` block. This change is specified in :pep:`765`." msgstr "" -#: whatsnew/3.14.rst:969 +#: whatsnew/3.14.rst:1153 msgid "New modules" msgstr "" -#: whatsnew/3.14.rst:971 +#: whatsnew/3.14.rst:1155 msgid "" ":mod:`annotationlib`: For introspecting :term:`annotations `. " "See :pep:`749` for more details. (Contributed by Jelle Zijlstra in :gh:" "`119180`.)" msgstr "" -#: whatsnew/3.14.rst:977 +#: whatsnew/3.14.rst:1161 msgid "Improved modules" msgstr "" -#: whatsnew/3.14.rst:2141 +#: whatsnew/3.14.rst:2395 msgid "argparse" msgstr "" -#: whatsnew/3.14.rst:982 +#: whatsnew/3.14.rst:1166 msgid "" "The default value of the :ref:`program name ` for :class:`argparse." "ArgumentParser` now reflects the way the Python interpreter was instructed " @@ -1357,7 +1665,7 @@ msgid "" "Alyssa Coghlan in :gh:`66436`.)" msgstr "" -#: whatsnew/3.14.rst:987 +#: whatsnew/3.14.rst:1171 msgid "" "Introduced the optional *suggest_on_error* parameter to :class:`argparse." "ArgumentParser`, enabling suggestions for argument choices and subparser " @@ -1365,7 +1673,7 @@ msgid "" "`124456`.)" msgstr "" -#: whatsnew/3.14.rst:994 +#: whatsnew/3.14.rst:1178 msgid "" "Introduced the optional *color* parameter to :class:`argparse." "ArgumentParser`, enabling color for help text. This can be controlled by :" @@ -1374,62 +1682,83 @@ msgid "" "mod:`!argparse`. (Contributed by Hugo van Kemenade in :gh:`130645`.)" msgstr "" -#: whatsnew/3.14.rst:2156 +#: whatsnew/3.14.rst:2410 msgid "ast" msgstr "" -#: whatsnew/3.14.rst:1005 +#: whatsnew/3.14.rst:1189 msgid "" "Add :func:`ast.compare` for comparing two ASTs. (Contributed by Batuhan " "Taskaya and Jeremy Hylton in :gh:`60191`.)" msgstr "" -#: whatsnew/3.14.rst:1008 +#: whatsnew/3.14.rst:1192 msgid "" "Add support for :func:`copy.replace` for AST nodes. (Contributed by Bénédikt " "Tran in :gh:`121141`.)" msgstr "" -#: whatsnew/3.14.rst:1011 +#: whatsnew/3.14.rst:1195 msgid "" "Docstrings are now removed from an optimized AST in optimization level 2. " "(Contributed by Irit Katriel in :gh:`123958`.)" msgstr "" -#: whatsnew/3.14.rst:1014 +#: whatsnew/3.14.rst:1198 msgid "" "The ``repr()`` output for AST nodes now includes more information. " "(Contributed by Tomas Roun in :gh:`116022`.)" msgstr "" -#: whatsnew/3.14.rst:1017 +#: whatsnew/3.14.rst:1201 msgid "" ":func:`ast.parse`, when called with an AST as input, now always verifies " "that the root node type is appropriate. (Contributed by Irit Katriel in :gh:" "`130139`.)" msgstr "" -#: whatsnew/3.14.rst:1021 +#: whatsnew/3.14.rst:1205 msgid "" "Add new ``--feature-version``, ``--optimize``, ``--show-empty`` options to " "command-line interface. (Contributed by Semyon Moroz in :gh:`133367`.)" msgstr "" -#: whatsnew/3.14.rst:1027 +#: whatsnew/3.14.rst:2186 whatsnew/3.14.rst:2438 +msgid "asyncio" +msgstr "" + +#: whatsnew/3.14.rst:1213 +msgid "" +"The function and methods named :func:`!create_task` now take an arbitrary " +"list of keyword arguments. All keyword arguments are passed to the :class:" +"`~asyncio.Task` constructor or the custom task factory. (See :meth:`~asyncio." +"loop.set_task_factory` for details.) The ``name`` and ``context`` keyword " +"arguments are no longer special; the name should now be set using the " +"``name`` keyword argument of the factory, and ``context`` may be ``None``." +msgstr "" + +#: whatsnew/3.14.rst:1221 +msgid "" +"This affects the following function and methods: :meth:`asyncio." +"create_task`, :meth:`asyncio.loop.create_task`, :meth:`asyncio.TaskGroup." +"create_task`. (Contributed by Thomas Grainger in :gh:`128307`.)" +msgstr "" + +#: whatsnew/3.14.rst:1229 msgid "bdb" msgstr "" -#: whatsnew/3.14.rst:1029 +#: whatsnew/3.14.rst:1231 msgid "" "The :mod:`bdb` module now supports the :mod:`sys.monitoring` backend. " "(Contributed by Tian Gao in :gh:`124533`.)" msgstr "" -#: whatsnew/3.14.rst:1036 +#: whatsnew/3.14.rst:1238 msgid "calendar" msgstr "" -#: whatsnew/3.14.rst:1038 +#: whatsnew/3.14.rst:1240 msgid "" "By default, today's date is highlighted in color in :mod:`calendar`'s :ref:" "`command-line ` text output. This can be controlled by :ref:" @@ -1437,11 +1766,11 @@ msgid "" "van Kemenade in :gh:`128317`.)" msgstr "" -#: whatsnew/3.14.rst:1046 +#: whatsnew/3.14.rst:1248 msgid "concurrent.futures" msgstr "" -#: whatsnew/3.14.rst:1048 +#: whatsnew/3.14.rst:1252 msgid "" "Add :class:`~concurrent.futures.InterpreterPoolExecutor`, which exposes " "\"subinterpreters\" (multiple Python interpreters in the same process) to " @@ -1449,7 +1778,7 @@ msgid "" "(Contributed by Eric Snow in :gh:`124548`.)" msgstr "" -#: whatsnew/3.14.rst:1056 +#: whatsnew/3.14.rst:1260 msgid "" "The default :class:`~concurrent.futures.ProcessPoolExecutor` :ref:`start " "method ` changed from :ref:`fork " @@ -1458,14 +1787,14 @@ msgid "" "was already :ref:`spawn `." msgstr "" -#: whatsnew/3.14.rst:1062 +#: whatsnew/3.14.rst:1266 msgid "" "If the threading incompatible *fork* method is required, you must explicitly " "request it by supplying a multiprocessing context *mp_context* to :class:" "`~concurrent.futures.ProcessPoolExecutor`." msgstr "" -#: whatsnew/3.14.rst:1485 +#: whatsnew/3.14.rst:1700 msgid "" "See :ref:`forkserver restrictions ` " "for information and differences with the *fork* method and how this change " @@ -1473,11 +1802,11 @@ msgid "" "objects that can not be automatically :mod:`pickled `." msgstr "" -#: whatsnew/3.14.rst:1490 +#: whatsnew/3.14.rst:1705 msgid "(Contributed by Gregory P. Smith in :gh:`84559`.)" msgstr "" -#: whatsnew/3.14.rst:1073 +#: whatsnew/3.14.rst:1277 msgid "" "Add :meth:`concurrent.futures.ProcessPoolExecutor.terminate_workers` and :" "meth:`concurrent.futures.ProcessPoolExecutor.kill_workers` as ways to " @@ -1485,7 +1814,7 @@ msgid "" "(Contributed by Charles Machalow in :gh:`130849`.)" msgstr "" -#: whatsnew/3.14.rst:1078 +#: whatsnew/3.14.rst:1282 msgid "" "Add the optional ``buffersize`` parameter to :meth:`concurrent.futures." "Executor.map` to limit the number of submitted tasks whose results have not " @@ -1494,21 +1823,33 @@ msgid "" "Bonnal and Josh Rosenberg in :gh:`74028`.)" msgstr "" -#: whatsnew/3.14.rst:1087 +#: whatsnew/3.14.rst:1290 +msgid "configparser" +msgstr "" + +#: whatsnew/3.14.rst:1292 +msgid "" +"Security fix: will no longer write config files it cannot read. Attempting " +"to :meth:`configparser.ConfigParser.write` keys containing delimiters or " +"beginning with the section header pattern will raise a :class:`configparser." +"InvalidWriteError`. (Contributed by Jacob Lincoln in :gh:`129270`.)" +msgstr "" + +#: whatsnew/3.14.rst:1299 msgid "contextvars" msgstr "" -#: whatsnew/3.14.rst:1089 +#: whatsnew/3.14.rst:1301 msgid "" "Support context manager protocol by :class:`contextvars.Token`. (Contributed " "by Andrew Svetlov in :gh:`129889`.)" msgstr "" -#: whatsnew/3.14.rst:1094 +#: whatsnew/3.14.rst:1306 msgid "ctypes" msgstr "" -#: whatsnew/3.14.rst:1096 +#: whatsnew/3.14.rst:1308 msgid "" "The layout of :ref:`bit fields ` in :" "class:`~ctypes.Structure` and :class:`~ctypes.Union` now matches platform " @@ -1516,13 +1857,13 @@ msgid "" "overlap. (Contributed by Matthias Görgens in :gh:`97702`.)" msgstr "" -#: whatsnew/3.14.rst:1102 +#: whatsnew/3.14.rst:1314 msgid "" "The :attr:`.Structure._layout_` class attribute can now be set to help match " "a non-default ABI. (Contributed by Petr Viktorin in :gh:`97702`.)" msgstr "" -#: whatsnew/3.14.rst:1106 +#: whatsnew/3.14.rst:1318 msgid "" "The class of :class:`~ctypes.Structure`/:class:`~ctypes.Union` field " "descriptors is now available as :class:`~ctypes.CField`, and has new " @@ -1530,19 +1871,19 @@ msgid "" "in :gh:`128715`.)" msgstr "" -#: whatsnew/3.14.rst:1111 +#: whatsnew/3.14.rst:1323 msgid "" "On Windows, the :exc:`~ctypes.COMError` exception is now public. " "(Contributed by Jun Komoda in :gh:`126686`.)" msgstr "" -#: whatsnew/3.14.rst:1114 +#: whatsnew/3.14.rst:1326 msgid "" "On Windows, the :func:`~ctypes.CopyComPointer` function is now public. " "(Contributed by Jun Komoda in :gh:`127275`.)" msgstr "" -#: whatsnew/3.14.rst:1117 +#: whatsnew/3.14.rst:1329 msgid "" ":func:`ctypes.memoryview_at` now exists to create a :class:`memoryview` " "object that refers to the supplied pointer and length. This works like :func:" @@ -1551,7 +1892,7 @@ msgid "" "sized buffers. (Contributed by Rian Hunter in :gh:`112018`.)" msgstr "" -#: whatsnew/3.14.rst:1124 +#: whatsnew/3.14.rst:1336 msgid "" "Complex types, :class:`~ctypes.c_float_complex`, :class:`~ctypes." "c_double_complex` and :class:`~ctypes.c_longdouble_complex`, are now " @@ -1559,13 +1900,13 @@ msgid "" "types. (Contributed by Sergey B Kirpichev in :gh:`61103`.)" msgstr "" -#: whatsnew/3.14.rst:1130 +#: whatsnew/3.14.rst:1342 msgid "" "Add :func:`ctypes.util.dllist` for listing the shared libraries loaded by " "the current process. (Contributed by Brian Ward in :gh:`119349`.)" msgstr "" -#: whatsnew/3.14.rst:1134 +#: whatsnew/3.14.rst:1346 msgid "" "Move :func:`ctypes.POINTER` types cache from a global internal cache " "(``_pointer_type_cache``) to the :attr:`ctypes._CData.__pointer_type__` " @@ -1574,67 +1915,73 @@ msgid "" "Miryanov in :gh:`100926`.)" msgstr "" -#: whatsnew/3.14.rst:1140 +#: whatsnew/3.14.rst:1352 msgid "" "The :class:`ctypes.py_object` type now supports subscription, making it a :" "term:`generic type`. (Contributed by Brian Schubert in :gh:`132168`.)" msgstr "" -#: whatsnew/3.14.rst:1145 +#: whatsnew/3.14.rst:1356 +msgid "" +":mod:`ctypes` now supports :term:`free-threading builds `. " +"(Contributed by Kumar Aditya and Peter Bierma in :gh:`127945`.)" +msgstr "" + +#: whatsnew/3.14.rst:1360 msgid "curses" msgstr "" -#: whatsnew/3.14.rst:1147 +#: whatsnew/3.14.rst:1362 msgid "" "Add the :func:`~curses.assume_default_colors` function, a refinement of the :" "func:`~curses.use_default_colors` function which allows to change the color " "pair ``0``. (Contributed by Serhiy Storchaka in :gh:`133139`.)" msgstr "" -#: whatsnew/3.14.rst:1153 +#: whatsnew/3.14.rst:1368 msgid "datetime" msgstr "" -#: whatsnew/3.14.rst:1155 +#: whatsnew/3.14.rst:1370 msgid "" "Add :meth:`datetime.time.strptime` and :meth:`datetime.date.strptime`. " "(Contributed by Wannes Boeykens in :gh:`41431`.)" msgstr "" -#: whatsnew/3.14.rst:1159 +#: whatsnew/3.14.rst:1374 msgid "decimal" msgstr "" -#: whatsnew/3.14.rst:1161 +#: whatsnew/3.14.rst:1376 msgid "" "Add alternative :class:`~decimal.Decimal` constructor :meth:`Decimal." "from_number() `. (Contributed by Serhiy " "Storchaka in :gh:`121798`.)" msgstr "" -#: whatsnew/3.14.rst:1165 +#: whatsnew/3.14.rst:1380 msgid "" "Expose :func:`decimal.IEEEContext` to support creation of contexts " "corresponding to the IEEE 754 (2008) decimal interchange formats. " "(Contributed by Sergey B Kirpichev in :gh:`53032`.)" msgstr "" -#: whatsnew/3.14.rst:1170 +#: whatsnew/3.14.rst:1385 msgid "difflib" msgstr "" -#: whatsnew/3.14.rst:1172 +#: whatsnew/3.14.rst:1387 msgid "" "Comparison pages with highlighted changes generated by the :class:`difflib." "HtmlDiff` class now support dark mode. (Contributed by Jiahao Li in :gh:" "`129939`.)" msgstr "" -#: whatsnew/3.14.rst:1177 +#: whatsnew/3.14.rst:1392 msgid "dis" msgstr "" -#: whatsnew/3.14.rst:1179 +#: whatsnew/3.14.rst:1394 msgid "" "Add support for rendering full source location information of :class:" "`instructions `, rather than only the line number. This " @@ -1642,49 +1989,49 @@ msgid "" "keyword argument:" msgstr "" -#: whatsnew/3.14.rst:1184 +#: whatsnew/3.14.rst:1399 msgid ":class:`dis.Bytecode`" msgstr "" -#: whatsnew/3.14.rst:1185 +#: whatsnew/3.14.rst:1400 msgid ":func:`dis.dis`" msgstr "" -#: whatsnew/3.14.rst:1186 +#: whatsnew/3.14.rst:1401 msgid ":func:`dis.distb`" msgstr "" -#: whatsnew/3.14.rst:1187 +#: whatsnew/3.14.rst:1402 msgid ":func:`dis.disassemble`" msgstr "" -#: whatsnew/3.14.rst:1189 +#: whatsnew/3.14.rst:1404 msgid "" "This feature is also exposed via :option:`dis --show-positions`. " "(Contributed by Bénédikt Tran in :gh:`123165`.)" msgstr "" -#: whatsnew/3.14.rst:1192 +#: whatsnew/3.14.rst:1407 msgid "" "Add the :option:`dis --specialized` command-line option to show specialized " "bytecode. (Contributed by Bénédikt Tran in :gh:`127413`.)" msgstr "" -#: whatsnew/3.14.rst:1198 +#: whatsnew/3.14.rst:1413 msgid "errno" msgstr "" -#: whatsnew/3.14.rst:1200 +#: whatsnew/3.14.rst:1415 msgid "" "Add :data:`errno.EHWPOISON` error code. (Contributed by James Roy in :gh:" "`126585`.)" msgstr "" -#: whatsnew/3.14.rst:1205 +#: whatsnew/3.14.rst:1420 msgid "faulthandler" msgstr "" -#: whatsnew/3.14.rst:1207 +#: whatsnew/3.14.rst:1422 msgid "" "Add support for printing the C stack trace on systems that :ref:`support it " "` via :func:`faulthandler.dump_c_stack` or via the " @@ -1692,72 +2039,72 @@ msgid "" "Bierma in :gh:`127604`.)" msgstr "" -#: whatsnew/3.14.rst:1214 +#: whatsnew/3.14.rst:1429 msgid "fnmatch" msgstr "" -#: whatsnew/3.14.rst:1216 +#: whatsnew/3.14.rst:1431 msgid "" "Added :func:`fnmatch.filterfalse` for excluding names matching a pattern. " "(Contributed by Bénédikt Tran in :gh:`74598`.)" msgstr "" -#: whatsnew/3.14.rst:1221 +#: whatsnew/3.14.rst:1436 msgid "fractions" msgstr "" -#: whatsnew/3.14.rst:1223 +#: whatsnew/3.14.rst:1438 msgid "" "Add support for converting any objects that have the :meth:`!" "as_integer_ratio` method to a :class:`~fractions.Fraction`. (Contributed by " "Serhiy Storchaka in :gh:`82017`.)" msgstr "" -#: whatsnew/3.14.rst:1227 +#: whatsnew/3.14.rst:1442 msgid "" "Add alternative :class:`~fractions.Fraction` constructor :meth:`Fraction." "from_number() `. (Contributed by Serhiy " "Storchaka in :gh:`121797`.)" msgstr "" -#: whatsnew/3.14.rst:1233 +#: whatsnew/3.14.rst:1448 msgid "functools" msgstr "" -#: whatsnew/3.14.rst:1235 +#: whatsnew/3.14.rst:1450 msgid "" "Add support to :func:`functools.partial` and :func:`functools.partialmethod` " "for :data:`functools.Placeholder` sentinels to reserve a place for " "positional arguments. (Contributed by Dominykas Grigonis in :gh:`119127`.)" msgstr "" -#: whatsnew/3.14.rst:1240 +#: whatsnew/3.14.rst:1455 msgid "" "Allow the *initial* parameter of :func:`functools.reduce` to be passed as a " "keyword argument. (Contributed by Sayandip Dutta in :gh:`125916`.)" msgstr "" -#: whatsnew/3.14.rst:1246 +#: whatsnew/3.14.rst:1461 msgid "getopt" msgstr "" -#: whatsnew/3.14.rst:1248 +#: whatsnew/3.14.rst:1463 msgid "" "Add support for options with optional arguments. (Contributed by Serhiy " "Storchaka in :gh:`126374`.)" msgstr "" -#: whatsnew/3.14.rst:1251 +#: whatsnew/3.14.rst:1466 msgid "" "Add support for returning intermixed options and non-option arguments in " "order. (Contributed by Serhiy Storchaka in :gh:`126390`.)" msgstr "" -#: whatsnew/3.14.rst:1256 +#: whatsnew/3.14.rst:1471 msgid "getpass" msgstr "" -#: whatsnew/3.14.rst:1258 +#: whatsnew/3.14.rst:1473 msgid "" "Support keyboard feedback by :func:`getpass.getpass` via the keyword-only " "optional argument ``echo_char``. Placeholder characters are rendered " @@ -1765,68 +2112,68 @@ msgid "" "(Contributed by Semyon Moroz in :gh:`77065`.)" msgstr "" -#: whatsnew/3.14.rst:1265 +#: whatsnew/3.14.rst:1480 msgid "graphlib" msgstr "" -#: whatsnew/3.14.rst:1267 +#: whatsnew/3.14.rst:1482 msgid "" "Allow :meth:`graphlib.TopologicalSorter.prepare` to be called more than once " "as long as sorting has not started. (Contributed by Daniel Pope in :gh:" "`130914`.)" msgstr "" -#: whatsnew/3.14.rst:1273 +#: whatsnew/3.14.rst:1488 msgid "heapq" msgstr "" -#: whatsnew/3.14.rst:1275 +#: whatsnew/3.14.rst:1490 msgid "Add functions for working with max-heaps:" msgstr "" -#: whatsnew/3.14.rst:1277 +#: whatsnew/3.14.rst:1492 msgid ":func:`heapq.heapify_max`," msgstr "" -#: whatsnew/3.14.rst:1278 +#: whatsnew/3.14.rst:1493 msgid ":func:`heapq.heappush_max`," msgstr "" -#: whatsnew/3.14.rst:1279 +#: whatsnew/3.14.rst:1494 msgid ":func:`heapq.heappop_max`," msgstr "" -#: whatsnew/3.14.rst:1280 +#: whatsnew/3.14.rst:1495 msgid ":func:`heapq.heapreplace_max`" msgstr "" -#: whatsnew/3.14.rst:1281 +#: whatsnew/3.14.rst:1496 msgid ":func:`heapq.heappushpop_max`" msgstr "" -#: whatsnew/3.14.rst:1285 +#: whatsnew/3.14.rst:1500 msgid "hmac" msgstr "" -#: whatsnew/3.14.rst:1287 +#: whatsnew/3.14.rst:1502 msgid "" "Add a built-in implementation for HMAC (:rfc:`2104`) using formally verified " "code from the `HACL* `__ project. " "(Contributed by Bénédikt Tran in :gh:`99108`.)" msgstr "" -#: whatsnew/3.14.rst:1293 +#: whatsnew/3.14.rst:1508 msgid "http" msgstr "" -#: whatsnew/3.14.rst:1295 +#: whatsnew/3.14.rst:1510 msgid "" "Directory lists and error pages generated by the :mod:`http.server` module " "allow the browser to apply its default dark mode. (Contributed by Yorik " "Hansen in :gh:`123430`.)" msgstr "" -#: whatsnew/3.14.rst:1299 +#: whatsnew/3.14.rst:1514 msgid "" "The :mod:`http.server` module now supports serving over HTTPS using the :" "class:`http.server.HTTPSServer` class. This functionality is exposed by the " @@ -1834,71 +2181,71 @@ msgid "" "options:" msgstr "" -#: whatsnew/3.14.rst:1304 +#: whatsnew/3.14.rst:1519 msgid "``--tls-cert ``: Path to the TLS certificate file." msgstr "" -#: whatsnew/3.14.rst:1305 +#: whatsnew/3.14.rst:1520 msgid "``--tls-key ``: Optional path to the private key file." msgstr "" -#: whatsnew/3.14.rst:1306 +#: whatsnew/3.14.rst:1521 msgid "" "``--tls-password-file ``: Optional path to the password file for the " "private key." msgstr "" -#: whatsnew/3.14.rst:1308 +#: whatsnew/3.14.rst:1523 msgid "(Contributed by Semyon Moroz in :gh:`85162`.)" msgstr "" -#: whatsnew/3.14.rst:1312 +#: whatsnew/3.14.rst:1527 msgid "imaplib" msgstr "" -#: whatsnew/3.14.rst:1314 +#: whatsnew/3.14.rst:1529 msgid "" "Add :meth:`IMAP4.idle() `, implementing the IMAP4 " "``IDLE`` command as defined in :rfc:`2177`. (Contributed by Forest in :gh:" "`55454`.)" msgstr "" -#: whatsnew/3.14.rst:1320 +#: whatsnew/3.14.rst:1535 msgid "inspect" msgstr "" -#: whatsnew/3.14.rst:1322 +#: whatsnew/3.14.rst:1537 msgid "" ":func:`inspect.signature` takes a new argument *annotation_format* to " "control the :class:`annotationlib.Format` used for representing annotations. " "(Contributed by Jelle Zijlstra in :gh:`101552`.)" msgstr "" -#: whatsnew/3.14.rst:1326 +#: whatsnew/3.14.rst:1541 msgid "" ":meth:`inspect.Signature.format` takes a new argument *unquote_annotations*. " "If true, string :term:`annotations ` are displayed without " "surrounding quotes. (Contributed by Jelle Zijlstra in :gh:`101552`.)" msgstr "" -#: whatsnew/3.14.rst:1330 +#: whatsnew/3.14.rst:1545 msgid "" "Add function :func:`inspect.ispackage` to determine whether an object is a :" "term:`package` or not. (Contributed by Zhikang Yan in :gh:`125634`.)" msgstr "" -#: whatsnew/3.14.rst:1961 +#: whatsnew/3.14.rst:2216 msgid "io" msgstr "" -#: whatsnew/3.14.rst:1338 +#: whatsnew/3.14.rst:1553 msgid "" "Reading text from a non-blocking stream with ``read`` may now raise a :exc:" "`BlockingIOError` if the operation cannot immediately return bytes. " "(Contributed by Giovanni Siragusa in :gh:`109523`.)" msgstr "" -#: whatsnew/3.14.rst:1342 +#: whatsnew/3.14.rst:1557 msgid "" "Add protocols :class:`io.Reader` and :class:`io.Writer` as a simpler " "alternatives to the pseudo-protocols :class:`typing.IO`, :class:`typing." @@ -1906,17 +2253,17 @@ msgid "" "gh:`127648`.)" msgstr "" -#: whatsnew/3.14.rst:1349 +#: whatsnew/3.14.rst:1564 msgid "json" msgstr "" -#: whatsnew/3.14.rst:1351 +#: whatsnew/3.14.rst:1566 msgid "" "Add notes for JSON serialization errors that allow to identify the source of " "the error. (Contributed by Serhiy Storchaka in :gh:`122163`.)" msgstr "" -#: whatsnew/3.14.rst:1355 +#: whatsnew/3.14.rst:1570 msgid "" "Enable the :mod:`json` module to work as a script using the :option:`-m` " "switch: :program:`python -m json`. See the :ref:`JSON command-line interface " @@ -1924,7 +2271,7 @@ msgid "" "`122873`.)" msgstr "" -#: whatsnew/3.14.rst:1362 +#: whatsnew/3.14.rst:1577 msgid "" "By default, the output of the :ref:`JSON command-line interface ` is highlighted in color. This can be controlled by :ref:" @@ -1932,49 +2279,49 @@ msgid "" "Roun in :gh:`131952`.)" msgstr "" -#: whatsnew/3.14.rst:1369 +#: whatsnew/3.14.rst:1584 msgid "linecache" msgstr "" -#: whatsnew/3.14.rst:1371 +#: whatsnew/3.14.rst:1586 msgid "" ":func:`linecache.getline` can retrieve source code for frozen modules. " "(Contributed by Tian Gao in :gh:`131638`.)" msgstr "" -#: whatsnew/3.14.rst:1376 +#: whatsnew/3.14.rst:1591 msgid "logging.handlers" msgstr "" -#: whatsnew/3.14.rst:1378 +#: whatsnew/3.14.rst:1593 msgid "" ":class:`logging.handlers.QueueListener` now implements the context manager " "protocol, allowing it to be used in a :keyword:`with` statement. " "(Contributed by Charles Machalow in :gh:`132106`.)" msgstr "" -#: whatsnew/3.14.rst:1382 +#: whatsnew/3.14.rst:1597 msgid "" ":meth:`QueueListener.start ` now " "raises a :exc:`RuntimeError` if the listener is already started. " "(Contributed by Charles Machalow in :gh:`132106`.)" msgstr "" -#: whatsnew/3.14.rst:1388 +#: whatsnew/3.14.rst:1603 msgid "math" msgstr "" -#: whatsnew/3.14.rst:1390 +#: whatsnew/3.14.rst:1605 msgid "" "Added more detailed error messages for domain errors in the module. " "(Contributed by by Charlie Zhao and Sergey B Kirpichev in :gh:`101410`.)" msgstr "" -#: whatsnew/3.14.rst:1395 +#: whatsnew/3.14.rst:1610 msgid "mimetypes" msgstr "" -#: whatsnew/3.14.rst:1397 +#: whatsnew/3.14.rst:1612 msgid "" "Document the command-line for :mod:`mimetypes`. It now exits with ``1`` on " "failure instead of ``0`` and ``2`` on incorrect command-line parameters " @@ -1983,202 +2330,202 @@ msgid "" "Kemenade in :gh:`93096`.)" msgstr "" -#: whatsnew/3.14.rst:1404 +#: whatsnew/3.14.rst:1619 msgid "Add MS and :rfc:`8081` MIME types for fonts:" msgstr "" -#: whatsnew/3.14.rst:1406 +#: whatsnew/3.14.rst:1621 msgid "Embedded OpenType: ``application/vnd.ms-fontobject``" msgstr "" -#: whatsnew/3.14.rst:1407 +#: whatsnew/3.14.rst:1622 msgid "OpenType Layout (OTF) ``font/otf``" msgstr "" -#: whatsnew/3.14.rst:1408 +#: whatsnew/3.14.rst:1623 msgid "TrueType: ``font/ttf``" msgstr "" -#: whatsnew/3.14.rst:1409 +#: whatsnew/3.14.rst:1624 msgid "WOFF 1.0 ``font/woff``" msgstr "" -#: whatsnew/3.14.rst:1410 +#: whatsnew/3.14.rst:1625 msgid "WOFF 2.0 ``font/woff2``" msgstr "" -#: whatsnew/3.14.rst:1412 +#: whatsnew/3.14.rst:1627 msgid "(Contributed by Sahil Prajapati and Hugo van Kemenade in :gh:`84852`.)" msgstr "" -#: whatsnew/3.14.rst:1414 +#: whatsnew/3.14.rst:1629 msgid "" "Add :rfc:`9559` MIME types for Matroska audiovisual data container " "structures, containing:" msgstr "" -#: whatsnew/3.14.rst:1417 +#: whatsnew/3.14.rst:1632 msgid "audio with no video: ``audio/matroska`` (``.mka``)" msgstr "" -#: whatsnew/3.14.rst:1418 +#: whatsnew/3.14.rst:1633 msgid "video: ``video/matroska`` (``.mkv``)" msgstr "" -#: whatsnew/3.14.rst:1419 +#: whatsnew/3.14.rst:1634 msgid "stereoscopic video: ``video/matroska-3d`` (``.mk3d``)" msgstr "" -#: whatsnew/3.14.rst:1421 +#: whatsnew/3.14.rst:1636 msgid "(Contributed by Hugo van Kemenade in :gh:`89416`.)" msgstr "" -#: whatsnew/3.14.rst:1423 +#: whatsnew/3.14.rst:1638 msgid "Add MIME types for images with RFCs:" msgstr "" -#: whatsnew/3.14.rst:1425 +#: whatsnew/3.14.rst:1640 msgid ":rfc:`1494`: CCITT Group 3 (``.g3``)" msgstr "" -#: whatsnew/3.14.rst:1426 +#: whatsnew/3.14.rst:1641 msgid ":rfc:`3362`: Real-time Facsimile, T.38 (``.t38``)" msgstr "" -#: whatsnew/3.14.rst:1427 +#: whatsnew/3.14.rst:1642 msgid "" ":rfc:`3745`: JPEG 2000 (``.jp2``), extension (``.jpx``) and compound (``." "jpm``)" msgstr "" -#: whatsnew/3.14.rst:1428 +#: whatsnew/3.14.rst:1643 msgid ":rfc:`3950`: Tag Image File Format Fax eXtended, TIFF-FX (``.tfx``)" msgstr "" -#: whatsnew/3.14.rst:1429 +#: whatsnew/3.14.rst:1644 msgid ":rfc:`4047`: Flexible Image Transport System (``.fits``)" msgstr "" -#: whatsnew/3.14.rst:1430 +#: whatsnew/3.14.rst:1645 msgid "" ":rfc:`7903`: Enhanced Metafile (``.emf``) and Windows Metafile (``.wmf``)" msgstr "" -#: whatsnew/3.14.rst:1432 +#: whatsnew/3.14.rst:1647 msgid "(Contributed by Hugo van Kemenade in :gh:`85957`.)" msgstr "" -#: whatsnew/3.14.rst:1434 +#: whatsnew/3.14.rst:1649 msgid "More MIME type changes:" msgstr "" -#: whatsnew/3.14.rst:1436 +#: whatsnew/3.14.rst:1651 msgid "" ":rfc:`2361`: Change type for ``.avi`` to ``video/vnd.avi`` and for ``.wav`` " "to ``audio/vnd.wave``" msgstr "" -#: whatsnew/3.14.rst:1438 +#: whatsnew/3.14.rst:1653 msgid ":rfc:`4337`: Add MPEG-4 ``audio/mp4`` (``.m4a``)" msgstr "" -#: whatsnew/3.14.rst:1439 +#: whatsnew/3.14.rst:1654 msgid ":rfc:`5334`: Add Ogg media (``.oga``, ``.ogg`` and ``.ogx``)" msgstr "" -#: whatsnew/3.14.rst:1440 +#: whatsnew/3.14.rst:1655 msgid ":rfc:`6713`: Add gzip ``application/gzip`` (``.gz``)" msgstr "" -#: whatsnew/3.14.rst:1441 +#: whatsnew/3.14.rst:1656 msgid ":rfc:`9639`: Add FLAC ``audio/flac`` (``.flac``)" msgstr "" -#: whatsnew/3.14.rst:1442 +#: whatsnew/3.14.rst:1657 msgid "Add 7z ``application/x-7z-compressed`` (``.7z``)" msgstr "" -#: whatsnew/3.14.rst:1443 +#: whatsnew/3.14.rst:1658 msgid "" "Add Android Package ``application/vnd.android.package-archive`` (``.apk``) " "when not strict" msgstr "" -#: whatsnew/3.14.rst:1445 +#: whatsnew/3.14.rst:1660 msgid "Add deb ``application/x-debian-package`` (``.deb``)" msgstr "" -#: whatsnew/3.14.rst:1446 +#: whatsnew/3.14.rst:1661 msgid "Add glTF binary ``model/gltf-binary`` (``.glb``)" msgstr "" -#: whatsnew/3.14.rst:1447 +#: whatsnew/3.14.rst:1662 msgid "Add glTF JSON/ASCII ``model/gltf+json`` (``.gltf``)" msgstr "" -#: whatsnew/3.14.rst:1448 +#: whatsnew/3.14.rst:1663 msgid "Add M4V ``video/x-m4v`` (``.m4v``)" msgstr "" -#: whatsnew/3.14.rst:1449 +#: whatsnew/3.14.rst:1664 msgid "Add PHP ``application/x-httpd-php`` (``.php``)" msgstr "" -#: whatsnew/3.14.rst:1450 +#: whatsnew/3.14.rst:1665 msgid "Add RAR ``application/vnd.rar`` (``.rar``)" msgstr "" -#: whatsnew/3.14.rst:1451 +#: whatsnew/3.14.rst:1666 msgid "Add RPM ``application/x-rpm`` (``.rpm``)" msgstr "" -#: whatsnew/3.14.rst:1452 +#: whatsnew/3.14.rst:1667 msgid "Add STL ``model/stl`` (``.stl``)" msgstr "" -#: whatsnew/3.14.rst:1453 +#: whatsnew/3.14.rst:1668 msgid "Add Windows Media Video ``video/x-ms-wmv`` (``.wmv``)" msgstr "" -#: whatsnew/3.14.rst:1454 +#: whatsnew/3.14.rst:1669 msgid "De facto: Add WebM ``audio/webm`` (``.weba``)" msgstr "" -#: whatsnew/3.14.rst:1455 +#: whatsnew/3.14.rst:1670 msgid "" "`ECMA-376 `__: Add ``.docx``, ``.pptx`` and ``.xlsx`` types" msgstr "" -#: whatsnew/3.14.rst:1458 +#: whatsnew/3.14.rst:1673 msgid "" "`OASIS `__: Add OpenDocument ``.odg``, ``.odp``, ``.ods`` and " "``.odt`` types" msgstr "" -#: whatsnew/3.14.rst:1461 +#: whatsnew/3.14.rst:1676 msgid "" "`W3C `__: Add EPUB " "``application/epub+zip`` (``.epub``)" msgstr "" -#: whatsnew/3.14.rst:1464 +#: whatsnew/3.14.rst:1679 msgid "(Contributed by Hugo van Kemenade in :gh:`129965`.)" msgstr "" -#: whatsnew/3.14.rst:1466 +#: whatsnew/3.14.rst:1681 msgid "" "Add :rfc:`9512` ``application/yaml`` MIME type for YAML files (``.yaml`` and " "``.yml``). (Contributed by Sasha \"Nelie\" Chernykh and Hugo van Kemenade " "in :gh:`132056`.)" msgstr "" -#: whatsnew/3.14.rst:1472 +#: whatsnew/3.14.rst:1687 msgid "multiprocessing" msgstr "" -#: whatsnew/3.14.rst:1476 +#: whatsnew/3.14.rst:1691 msgid "" "The default :ref:`start method ` changed " "from :ref:`fork ` to :ref:`forkserver " @@ -2187,7 +2534,7 @@ msgid "" "spawn>`." msgstr "" -#: whatsnew/3.14.rst:1481 +#: whatsnew/3.14.rst:1696 msgid "" "If the threading incompatible *fork* method is required, you must explicitly " "request it via a context from :func:`multiprocessing.get_context` " @@ -2195,7 +2542,7 @@ msgid "" "set_start_method`." msgstr "" -#: whatsnew/3.14.rst:1492 +#: whatsnew/3.14.rst:1707 msgid "" ":mod:`multiprocessing`'s ``\"forkserver\"`` start method now authenticates " "its control socket to avoid solely relying on filesystem permissions to " @@ -2203,27 +2550,27 @@ msgid "" "and run code. (Contributed by Gregory P. Smith for :gh:`97514`.)" msgstr "" -#: whatsnew/3.14.rst:1498 +#: whatsnew/3.14.rst:1713 msgid "" "The :ref:`multiprocessing proxy objects ` for " "*list* and *dict* types gain previously overlooked missing methods:" msgstr "" -#: whatsnew/3.14.rst:1501 +#: whatsnew/3.14.rst:1716 msgid ":meth:`!clear` and :meth:`!copy` for proxies of :class:`list`" msgstr "" -#: whatsnew/3.14.rst:1502 +#: whatsnew/3.14.rst:1717 msgid "" ":meth:`~dict.fromkeys`, ``reversed(d)``, ``d | {}``, ``{} | d``, ``d |= " "{'b': 2}`` for proxies of :class:`dict`" msgstr "" -#: whatsnew/3.14.rst:1505 +#: whatsnew/3.14.rst:1720 msgid "(Contributed by Roy Hyunjin Han for :gh:`103134`.)" msgstr "" -#: whatsnew/3.14.rst:1507 +#: whatsnew/3.14.rst:1722 msgid "" "Add support for shared :class:`set` objects via :meth:`SyncManager.set() " "`. The :func:`set` in :func:" @@ -2231,7 +2578,7 @@ msgid "" "Park in :gh:`129949`.)" msgstr "" -#: whatsnew/3.14.rst:1512 +#: whatsnew/3.14.rst:1727 msgid "" "Add :func:`multiprocessing.Process.interrupt` which terminates the child " "process by sending :py:const:`~signal.SIGINT`. This enables :keyword:" @@ -2239,11 +2586,11 @@ msgid "" "(Contributed by Artem Pulkin in :gh:`131913`.)" msgstr "" -#: whatsnew/3.14.rst:1518 +#: whatsnew/3.14.rst:1733 msgid "operator" msgstr "" -#: whatsnew/3.14.rst:1520 +#: whatsnew/3.14.rst:1735 msgid "" "Two new functions :func:`operator.is_none` and :func:`operator.is_not_none` " "have been added, such that ``operator.is_none(obj)`` is equivalent to ``obj " @@ -2251,11 +2598,11 @@ msgid "" "None``. (Contributed by Raymond Hettinger and Nico Mexis in :gh:`115808`.)" msgstr "" -#: whatsnew/3.14.rst:1528 +#: whatsnew/3.14.rst:1743 msgid "os" msgstr "" -#: whatsnew/3.14.rst:1530 +#: whatsnew/3.14.rst:1745 msgid "" "Add the :func:`os.reload_environ` function to update :data:`os.environ` and :" "data:`os.environb` with changes to the environment made by :func:`os." @@ -2263,52 +2610,65 @@ msgid "" "(Contributed by Victor Stinner in :gh:`120057`.)" msgstr "" -#: whatsnew/3.14.rst:1536 +#: whatsnew/3.14.rst:1751 msgid "" "Add the :data:`~os.SCHED_DEADLINE` and :data:`~os.SCHED_NORMAL` constants to " "the :mod:`os` module. (Contributed by James Roy in :gh:`127688`.)" msgstr "" -#: whatsnew/3.14.rst:1540 +#: whatsnew/3.14.rst:1755 msgid "" "Add the :func:`os.readinto` function to read into a :ref:`buffer object " "` from a file descriptor. (Contributed by Cody Maloney in :gh:" "`129205`.)" msgstr "" -#: whatsnew/3.14.rst:2333 +#: whatsnew/3.14.rst:1761 +msgid "os.path" +msgstr "" + +#: whatsnew/3.14.rst:1763 +msgid "" +"The *strict* parameter to :func:`os.path.realpath` accepts a new value, :" +"data:`os.path.ALLOW_MISSING`. If used, errors other than :exc:" +"`FileNotFoundError` will be re-raised; the resulting path can be missing but " +"it will be free of symlinks. (Contributed by Petr Viktorin for :cve:" +"`2025-4517`.)" +msgstr "" + +#: whatsnew/3.14.rst:2587 msgid "pathlib" msgstr "" -#: whatsnew/3.14.rst:1548 +#: whatsnew/3.14.rst:1773 msgid "" "Add methods to :class:`pathlib.Path` to recursively copy or move files and " "directories:" msgstr "" -#: whatsnew/3.14.rst:1551 +#: whatsnew/3.14.rst:1776 msgid "" ":meth:`~pathlib.Path.copy` copies a file or directory tree to a destination." msgstr "" -#: whatsnew/3.14.rst:1552 +#: whatsnew/3.14.rst:1777 msgid ":meth:`~pathlib.Path.copy_into` copies *into* a destination directory." msgstr "" -#: whatsnew/3.14.rst:1553 +#: whatsnew/3.14.rst:1778 msgid "" ":meth:`~pathlib.Path.move` moves a file or directory tree to a destination." msgstr "" -#: whatsnew/3.14.rst:1554 +#: whatsnew/3.14.rst:1779 msgid ":meth:`~pathlib.Path.move_into` moves *into* a destination directory." msgstr "" -#: whatsnew/3.14.rst:1556 +#: whatsnew/3.14.rst:1781 msgid "(Contributed by Barney Gale in :gh:`73991`.)" msgstr "" -#: whatsnew/3.14.rst:1558 +#: whatsnew/3.14.rst:1783 msgid "" "Add :attr:`pathlib.Path.info` attribute, which stores an object implementing " "the :class:`pathlib.types.PathInfo` protocol (also new). The object supports " @@ -2318,11 +2678,11 @@ msgid "" "Barney Gale in :gh:`125413`.)" msgstr "" -#: whatsnew/3.14.rst:1568 +#: whatsnew/3.14.rst:1793 msgid "pdb" msgstr "" -#: whatsnew/3.14.rst:1570 +#: whatsnew/3.14.rst:1795 msgid "" "Hardcoded breakpoints (:func:`breakpoint` and :func:`pdb.set_trace`) now " "reuse the most recent :class:`~pdb.Pdb` instance that calls :meth:`~pdb.Pdb." @@ -2332,14 +2692,14 @@ msgid "" "`121450`.)" msgstr "" -#: whatsnew/3.14.rst:1577 +#: whatsnew/3.14.rst:1802 msgid "" "Add a new argument *mode* to :class:`pdb.Pdb`. Disable the ``restart`` " "command when :mod:`pdb` is in ``inline`` mode. (Contributed by Tian Gao in :" "gh:`123757`.)" msgstr "" -#: whatsnew/3.14.rst:1581 +#: whatsnew/3.14.rst:1806 msgid "" "A confirmation prompt will be shown when the user tries to quit :mod:`pdb` " "in ``inline`` mode. ``y``, ``Y``, ```` or ``EOF`` will confirm the " @@ -2347,34 +2707,34 @@ msgid "" "(Contributed by Tian Gao in :gh:`124704`.)" msgstr "" -#: whatsnew/3.14.rst:1586 +#: whatsnew/3.14.rst:1811 msgid "" "Inline breakpoints like :func:`breakpoint` or :func:`pdb.set_trace` will " "always stop the program at calling frame, ignoring the ``skip`` pattern (if " "any). (Contributed by Tian Gao in :gh:`130493`.)" msgstr "" -#: whatsnew/3.14.rst:1591 +#: whatsnew/3.14.rst:1816 msgid "" "```` at the beginning of the line in :mod:`pdb` multi-line input will " "fill in a 4-space indentation now, instead of inserting a ``\\t`` character. " "(Contributed by Tian Gao in :gh:`130471`.)" msgstr "" -#: whatsnew/3.14.rst:1595 +#: whatsnew/3.14.rst:1820 msgid "" "Auto-indent is introduced in :mod:`pdb` multi-line input. It will either " "keep the indentation of the last line or insert a 4-space indentation when " "it detects a new code block. (Contributed by Tian Gao in :gh:`133350`.)" msgstr "" -#: whatsnew/3.14.rst:1600 +#: whatsnew/3.14.rst:1825 msgid "" "``$_asynctask`` is added to access the current asyncio task if applicable. " "(Contributed by Tian Gao in :gh:`124367`.)" msgstr "" -#: whatsnew/3.14.rst:1603 +#: whatsnew/3.14.rst:1828 msgid "" ":mod:`pdb` now supports two backends: :func:`sys.settrace` and :mod:`sys." "monitoring`. Using :mod:`pdb` CLI or :func:`breakpoint` will always use the :" @@ -2383,14 +2743,14 @@ msgid "" "which is configurable. (Contributed by Tian Gao in :gh:`124533`.)" msgstr "" -#: whatsnew/3.14.rst:1610 +#: whatsnew/3.14.rst:1835 msgid "" ":func:`pdb.set_trace_async` is added to support debugging asyncio " "coroutines. :keyword:`await` statements are supported with this function. " "(Contributed by Tian Gao in :gh:`132576`.)" msgstr "" -#: whatsnew/3.14.rst:1615 +#: whatsnew/3.14.rst:1840 msgid "" "Source code displayed in :mod:`pdb` will be syntax-highlighted. This feature " "can be controlled using the same methods as PyREPL, in addition to the newly " @@ -2398,247 +2758,283 @@ msgid "" "and Łukasz Langa in :gh:`133355`.)" msgstr "" -#: whatsnew/3.14.rst:1622 +#: whatsnew/3.14.rst:1847 msgid "pickle" msgstr "" -#: whatsnew/3.14.rst:1624 +#: whatsnew/3.14.rst:1849 msgid "" "Set the default protocol version on the :mod:`pickle` module to 5. For more " "details, see :ref:`pickle protocols `." msgstr "" -#: whatsnew/3.14.rst:1627 +#: whatsnew/3.14.rst:1852 msgid "" "Add notes for pickle serialization errors that allow to identify the source " "of the error. (Contributed by Serhiy Storchaka in :gh:`122213`.)" msgstr "" -#: whatsnew/3.14.rst:1633 +#: whatsnew/3.14.rst:1858 msgid "platform" msgstr "" -#: whatsnew/3.14.rst:1635 +#: whatsnew/3.14.rst:1860 msgid "" "Add :func:`platform.invalidate_caches` to invalidate the cached results. " "(Contributed by Bénédikt Tran in :gh:`122549`.)" msgstr "" -#: whatsnew/3.14.rst:1640 +#: whatsnew/3.14.rst:1865 msgid "pydoc" msgstr "" -#: whatsnew/3.14.rst:1642 +#: whatsnew/3.14.rst:1867 msgid "" ":term:`Annotations ` in help output are now usually displayed in " "a format closer to that in the original source. (Contributed by Jelle " "Zijlstra in :gh:`101552`.)" msgstr "" -#: whatsnew/3.14.rst:1648 +#: whatsnew/3.14.rst:1873 msgid "socket" msgstr "" -#: whatsnew/3.14.rst:1650 +#: whatsnew/3.14.rst:1875 msgid "Improve and fix support for Bluetooth sockets." msgstr "" -#: whatsnew/3.14.rst:1652 +#: whatsnew/3.14.rst:1877 msgid "" "Fix support of Bluetooth sockets on NetBSD and DragonFly BSD. (Contributed " "by Serhiy Storchaka in :gh:`132429`.)" msgstr "" -#: whatsnew/3.14.rst:1654 +#: whatsnew/3.14.rst:1879 msgid "" "Fix support for :const:`~socket.BTPROTO_HCI` on FreeBSD. (Contributed by " "Victor Stinner in :gh:`111178`.)" msgstr "" -#: whatsnew/3.14.rst:1656 +#: whatsnew/3.14.rst:1881 msgid "" "Add support for :const:`~socket.BTPROTO_SCO` on FreeBSD. (Contributed by " "Serhiy Storchaka in :gh:`85302`.)" msgstr "" -#: whatsnew/3.14.rst:1658 +#: whatsnew/3.14.rst:1883 msgid "" "Add support for *cid* and *bdaddr_type* in the address for :const:`~socket." "BTPROTO_L2CAP` on FreeBSD. (Contributed by Serhiy Storchaka in :gh:`132429`.)" msgstr "" -#: whatsnew/3.14.rst:1661 +#: whatsnew/3.14.rst:1886 msgid "" "Add support for *channel* in the address for :const:`~socket.BTPROTO_HCI` on " "Linux. (Contributed by Serhiy Storchaka in :gh:`70145`.)" msgstr "" -#: whatsnew/3.14.rst:1664 +#: whatsnew/3.14.rst:1889 msgid "" "Accept an integer as the address for :const:`~socket.BTPROTO_HCI` on Linux. " "(Contributed by Serhiy Storchaka in :gh:`132099`.)" msgstr "" -#: whatsnew/3.14.rst:1667 +#: whatsnew/3.14.rst:1892 msgid "" "Return *cid* in :meth:`~socket.socket.getsockname` for :const:`~socket." "BTPROTO_L2CAP`. (Contributed by Serhiy Storchaka in :gh:`132429`.)" msgstr "" -#: whatsnew/3.14.rst:1670 +#: whatsnew/3.14.rst:1895 msgid "" "Add many new constants. (Contributed by Serhiy Storchaka in :gh:`132734`.)" msgstr "" -#: whatsnew/3.14.rst:1674 +#: whatsnew/3.14.rst:1899 msgid "ssl" msgstr "" -#: whatsnew/3.14.rst:1676 +#: whatsnew/3.14.rst:1901 msgid "" "Indicate through :data:`ssl.HAS_PHA` whether the :mod:`ssl` module supports " "TLSv1.3 post-handshake client authentication (PHA). (Contributed by Will " "Childs-Klein in :gh:`128036`.)" msgstr "" -#: whatsnew/3.14.rst:1682 +#: whatsnew/3.14.rst:1907 msgid "struct" msgstr "" -#: whatsnew/3.14.rst:1684 +#: whatsnew/3.14.rst:1909 msgid "" "Support the :c:expr:`float complex` and :c:expr:`double complex` C types in " "the :mod:`struct` module (formatting characters ``'F'`` and ``'D'`` " "respectively). (Contributed by Sergey B Kirpichev in :gh:`121249`.)" msgstr "" -#: whatsnew/3.14.rst:1691 +#: whatsnew/3.14.rst:1916 msgid "symtable" msgstr "" -#: whatsnew/3.14.rst:1693 +#: whatsnew/3.14.rst:1918 msgid "Expose the following :class:`symtable.Symbol` methods:" msgstr "" -#: whatsnew/3.14.rst:1695 +#: whatsnew/3.14.rst:1920 msgid ":meth:`~symtable.Symbol.is_comp_cell`" msgstr "" -#: whatsnew/3.14.rst:1696 +#: whatsnew/3.14.rst:1921 msgid ":meth:`~symtable.Symbol.is_comp_iter`" msgstr "" -#: whatsnew/3.14.rst:1697 +#: whatsnew/3.14.rst:1922 msgid ":meth:`~symtable.Symbol.is_free_class`" msgstr "" -#: whatsnew/3.14.rst:1699 +#: whatsnew/3.14.rst:1924 msgid "(Contributed by Bénédikt Tran in :gh:`120029`.)" msgstr "" -#: whatsnew/3.14.rst:1703 +#: whatsnew/3.14.rst:1928 msgid "sys" msgstr "" -#: whatsnew/3.14.rst:1705 +#: whatsnew/3.14.rst:1930 msgid "" "The previously undocumented special function :func:`sys.getobjects`, which " "only exists in specialized builds of Python, may now return objects from " "other interpreters than the one it's called in." msgstr "" -#: whatsnew/3.14.rst:1709 +#: whatsnew/3.14.rst:1934 msgid "" "Add :func:`sys._is_immortal` for determining if an object is :term:" "`immortal`. (Contributed by Peter Bierma in :gh:`128509`.)" msgstr "" -#: whatsnew/3.14.rst:1712 +#: whatsnew/3.14.rst:1937 msgid "" "On FreeBSD, :data:`sys.platform` doesn't contain the major version anymore. " "It is always ``'freebsd'``, instead of ``'freebsd13'`` or ``'freebsd14'``." msgstr "" -#: whatsnew/3.14.rst:1715 +#: whatsnew/3.14.rst:1940 msgid "" "Raise :exc:`DeprecationWarning` for :func:`sys._clear_type_cache`. This " "function was deprecated in Python 3.13 but it didn't raise a runtime warning." msgstr "" -#: whatsnew/3.14.rst:1720 +#: whatsnew/3.14.rst:1945 msgid "sys.monitoring" msgstr "" -#: whatsnew/3.14.rst:1722 +#: whatsnew/3.14.rst:1947 msgid "" "Two new events are added: :monitoring-event:`BRANCH_LEFT` and :monitoring-" "event:`BRANCH_RIGHT`. The ``BRANCH`` event is deprecated." msgstr "" -#: whatsnew/3.14.rst:1727 +#: whatsnew/3.14.rst:1952 msgid "sysconfig" msgstr "" -#: whatsnew/3.14.rst:1729 +#: whatsnew/3.14.rst:1954 msgid "" "Add ``ABIFLAGS`` key to :func:`sysconfig.get_config_vars` on Windows. " "(Contributed by Xuehai Pan in :gh:`131799`.)" msgstr "" -#: whatsnew/3.14.rst:1734 +#: whatsnew/3.14.rst:1959 +msgid "tarfile" +msgstr "" + +#: whatsnew/3.14.rst:1961 +msgid "" +":func:`~tarfile.data_filter` now normalizes symbolic link targets in order " +"to avoid path traversal attacks. (Contributed by Petr Viktorin in :gh:" +"`127987` and :cve:`2025-4138`.)" +msgstr "" + +#: whatsnew/3.14.rst:1964 +msgid "" +":func:`~tarfile.TarFile.extractall` now skips fixing up directory attributes " +"when a directory was removed or replaced by another kind of file. " +"(Contributed by Petr Viktorin in :gh:`127987` and :cve:`2024-12718`.)" +msgstr "" + +#: whatsnew/3.14.rst:1967 +msgid "" +":func:`~tarfile.TarFile.extract` and :func:`~tarfile.TarFile.extractall` now " +"(re-)apply the extraction filter when substituting a link (hard or symbolic) " +"with a copy of another archive member, and when fixing up directory " +"attributes. The former raises a new exception, :exc:`~tarfile." +"LinkFallbackError`. (Contributed by Petr Viktorin for :cve:`2025-4330` and :" +"cve:`2024-12718`.)" +msgstr "" + +#: whatsnew/3.14.rst:1973 +msgid "" +":func:`~tarfile.TarFile.extract` and :func:`~tarfile.TarFile.extractall` no " +"longer extract rejected members when :func:`~tarfile.TarFile.errorlevel` is " +"zero. (Contributed by Matt Prodani and Petr Viktorin in :gh:`112887` and :" +"cve:`2025-4435`.)" +msgstr "" + +#: whatsnew/3.14.rst:1981 msgid "threading" msgstr "" -#: whatsnew/3.14.rst:1736 +#: whatsnew/3.14.rst:1983 msgid "" ":meth:`threading.Thread.start` now sets the operating system thread name to :" "attr:`threading.Thread.name`. (Contributed by Victor Stinner in :gh:`59705`.)" msgstr "" -#: whatsnew/3.14.rst:1742 +#: whatsnew/3.14.rst:1989 msgid "tkinter" msgstr "" -#: whatsnew/3.14.rst:1744 +#: whatsnew/3.14.rst:1991 msgid "" "Make :mod:`tkinter` widget methods :meth:`!after` and :meth:`!after_idle` " "accept arguments passed by keyword. (Contributed by Zhikang Yan in :gh:" "`126899`.)" msgstr "" -#: whatsnew/3.14.rst:1748 +#: whatsnew/3.14.rst:1995 msgid "" "Add ability to specify name for :class:`!tkinter.OptionMenu` and :class:`!" "tkinter.ttk.OptionMenu`. (Contributed by Zhikang Yan in :gh:`130482`.)" msgstr "" -#: whatsnew/3.14.rst:1753 +#: whatsnew/3.14.rst:2000 msgid "turtle" msgstr "" -#: whatsnew/3.14.rst:1755 +#: whatsnew/3.14.rst:2002 msgid "" "Add context managers for :func:`turtle.fill`, :func:`turtle.poly` and :func:" "`turtle.no_animation`. (Contributed by Marie Roald and Yngve Mardal Moe in :" "gh:`126350`.)" msgstr "" -#: whatsnew/3.14.rst:1761 +#: whatsnew/3.14.rst:2008 msgid "types" msgstr "" -#: whatsnew/3.14.rst:1763 +#: whatsnew/3.14.rst:2010 msgid "" ":class:`types.UnionType` is now an alias for :class:`typing.Union`. See :ref:" "`below ` for more details. (Contributed by Jelle " "Zijlstra in :gh:`105499`.)" msgstr "" -#: whatsnew/3.14.rst:2369 +#: whatsnew/3.14.rst:2623 msgid "typing" msgstr "" -#: whatsnew/3.14.rst:1773 +#: whatsnew/3.14.rst:2020 msgid "" ":class:`types.UnionType` and :class:`typing.Union` are now aliases for each " "other, meaning that both old-style unions (created with ``Union[int, str]``) " @@ -2648,14 +3044,14 @@ msgid "" "at runtime:" msgstr "" -#: whatsnew/3.14.rst:1779 +#: whatsnew/3.14.rst:2026 msgid "" "Both syntaxes for creating a union now produce the same string " "representation in ``repr()``. For example, ``repr(Union[int, str])`` is now " "``\"int | str\"`` instead of ``\"typing.Union[int, str]\"``." msgstr "" -#: whatsnew/3.14.rst:1782 +#: whatsnew/3.14.rst:2029 msgid "" "Unions created using the old syntax are no longer cached. Previously, " "running ``Union[int, str]`` multiple times would return the same object " @@ -2672,7 +3068,7 @@ msgid "" "in memory usage for most users." msgstr "" -#: whatsnew/3.14.rst:1795 +#: whatsnew/3.14.rst:2042 msgid "" "Previously, old-style unions were implemented using the private class " "``typing._UnionGenericAlias``. This class is no longer needed for the " @@ -2682,76 +3078,76 @@ msgid "" "of relying on private implementation details." msgstr "" -#: whatsnew/3.14.rst:1800 +#: whatsnew/3.14.rst:2047 msgid "" "It is now possible to use :class:`typing.Union` itself in :func:`isinstance` " "checks. For example, ``isinstance(int | str, typing.Union)`` will return " "``True``; previously this raised :exc:`TypeError`." msgstr "" -#: whatsnew/3.14.rst:1803 +#: whatsnew/3.14.rst:2050 msgid "" "The ``__args__`` attribute of :class:`typing.Union` objects is no longer " "writable." msgstr "" -#: whatsnew/3.14.rst:1804 +#: whatsnew/3.14.rst:2051 msgid "" "It is no longer possible to set any attributes on :class:`typing.Union` " "objects. This only ever worked for dunder attributes on previous versions, " "was never documented to work, and was subtly broken in many cases." msgstr "" -#: whatsnew/3.14.rst:1808 +#: whatsnew/3.14.rst:2055 msgid "(Contributed by Jelle Zijlstra in :gh:`105499`.)" msgstr "" -#: whatsnew/3.14.rst:1812 +#: whatsnew/3.14.rst:2059 msgid "unicodedata" msgstr "" -#: whatsnew/3.14.rst:1814 +#: whatsnew/3.14.rst:2061 msgid "The Unicode database has been updated to Unicode 16.0.0." msgstr "" -#: whatsnew/3.14.rst:1820 +#: whatsnew/3.14.rst:2067 msgid "unittest" msgstr "" -#: whatsnew/3.14.rst:1822 +#: whatsnew/3.14.rst:2069 msgid "" ":mod:`unittest` output is now colored by default. This can be controlled by :" "ref:`environment variables `. (Contributed by " "Hugo van Kemenade in :gh:`127221`.)" msgstr "" -#: whatsnew/3.14.rst:1827 +#: whatsnew/3.14.rst:2074 msgid "" "unittest discovery supports :term:`namespace package` as start directory " "again. It was removed in Python 3.11. (Contributed by Jacob Walls in :gh:" "`80958`.)" msgstr "" -#: whatsnew/3.14.rst:1831 +#: whatsnew/3.14.rst:2078 msgid "" "A number of new methods were added in the :class:`~unittest.TestCase` class " "that provide more specialized tests." msgstr "" -#: whatsnew/3.14.rst:1834 +#: whatsnew/3.14.rst:2081 msgid "" ":meth:`~unittest.TestCase.assertHasAttr` and :meth:`~unittest.TestCase." "assertNotHasAttr` check whether the object has a particular attribute." msgstr "" -#: whatsnew/3.14.rst:1837 +#: whatsnew/3.14.rst:2084 msgid "" ":meth:`~unittest.TestCase.assertIsSubclass` and :meth:`~unittest.TestCase." "assertNotIsSubclass` check whether the object is a subclass of a particular " "class, or of one of a tuple of classes." msgstr "" -#: whatsnew/3.14.rst:1840 +#: whatsnew/3.14.rst:2087 msgid "" ":meth:`~unittest.TestCase.assertStartsWith`, :meth:`~unittest.TestCase." "assertNotStartsWith`, :meth:`~unittest.TestCase.assertEndsWith` and :meth:" @@ -2759,124 +3155,124 @@ msgid "" "string starts or ends with particular string(s)." msgstr "" -#: whatsnew/3.14.rst:1846 +#: whatsnew/3.14.rst:2093 msgid "(Contributed by Serhiy Storchaka in :gh:`71339`.)" msgstr "" -#: whatsnew/3.14.rst:2377 +#: whatsnew/3.14.rst:2631 msgid "urllib" msgstr "" -#: whatsnew/3.14.rst:1852 +#: whatsnew/3.14.rst:2099 msgid "" "Upgrade HTTP digest authentication algorithm for :mod:`urllib.request` by " "supporting SHA-256 digest authentication as specified in :rfc:`7616`. " "(Contributed by Calvin Bui in :gh:`128193`.)" msgstr "" -#: whatsnew/3.14.rst:1856 +#: whatsnew/3.14.rst:2103 msgid "" "Improve ergonomics and standards compliance when parsing and emitting ``file:" "`` URLs." msgstr "" -#: whatsnew/3.14.rst:1859 +#: whatsnew/3.14.rst:2106 msgid "In :func:`urllib.request.url2pathname`:" msgstr "" -#: whatsnew/3.14.rst:1861 +#: whatsnew/3.14.rst:2108 msgid "" "Accept a complete URL when the new *require_scheme* argument is set to true." msgstr "" -#: whatsnew/3.14.rst:1863 +#: whatsnew/3.14.rst:2110 msgid "Discard URL authority if it matches the local hostname." msgstr "" -#: whatsnew/3.14.rst:1864 +#: whatsnew/3.14.rst:2111 msgid "" "Discard URL authority if it resolves to a local IP address when the new " "*resolve_host* argument is set to true." msgstr "" -#: whatsnew/3.14.rst:1866 +#: whatsnew/3.14.rst:2113 msgid "" "Raise :exc:`~urllib.error.URLError` if a URL authority isn't local, except " "on Windows where we return a UNC path as before." msgstr "" -#: whatsnew/3.14.rst:1869 +#: whatsnew/3.14.rst:2116 msgid "In :func:`urllib.request.pathname2url`:" msgstr "" -#: whatsnew/3.14.rst:1871 +#: whatsnew/3.14.rst:2118 msgid "" "Return a complete URL when the new *add_scheme* argument is set to true." msgstr "" -#: whatsnew/3.14.rst:1872 +#: whatsnew/3.14.rst:2119 msgid "" "Include an empty URL authority when a path begins with a slash. For example, " "the path ``/etc/hosts`` is converted to the URL ``///etc/hosts``." msgstr "" -#: whatsnew/3.14.rst:1875 +#: whatsnew/3.14.rst:2122 msgid "" "On Windows, drive letters are no longer converted to uppercase, and ``:`` " "characters not following a drive letter no longer cause an :exc:`OSError` " "exception to be raised." msgstr "" -#: whatsnew/3.14.rst:1879 +#: whatsnew/3.14.rst:2126 msgid "(Contributed by Barney Gale in :gh:`125866`.)" msgstr "" -#: whatsnew/3.14.rst:1971 +#: whatsnew/3.14.rst:2226 msgid "uuid" msgstr "" -#: whatsnew/3.14.rst:1885 +#: whatsnew/3.14.rst:2132 msgid "" "Add support for UUID versions 6, 7, and 8 via :func:`uuid.uuid6`, :func:" "`uuid.uuid7`, and :func:`uuid.uuid8` respectively, as specified in :rfc:" "`9562`. (Contributed by Bénédikt Tran in :gh:`89083`.)" msgstr "" -#: whatsnew/3.14.rst:1890 +#: whatsnew/3.14.rst:2137 msgid "" ":const:`uuid.NIL` and :const:`uuid.MAX` are now available to represent the " "Nil and Max UUID formats as defined by :rfc:`9562`. (Contributed by Nick " "Pope in :gh:`128427`.)" msgstr "" -#: whatsnew/3.14.rst:1894 +#: whatsnew/3.14.rst:2141 msgid "" "Allow to generate multiple UUIDs at once via :option:`python -m uuid --count " "`. (Contributed by Simon Legner in :gh:`131236`.)" msgstr "" -#: whatsnew/3.14.rst:1899 +#: whatsnew/3.14.rst:2146 msgid "webbrowser" msgstr "" -#: whatsnew/3.14.rst:1901 +#: whatsnew/3.14.rst:2148 msgid "" "Names in the :envvar:`BROWSER` environment variable can now refer to already " "registered browsers for the :mod:`webbrowser` module, instead of always " "generating a new browser command." msgstr "" -#: whatsnew/3.14.rst:1905 +#: whatsnew/3.14.rst:2152 msgid "" "This makes it possible to set :envvar:`BROWSER` to the value of one of the " "supported browsers on macOS." msgstr "" -#: whatsnew/3.14.rst:1910 +#: whatsnew/3.14.rst:2157 msgid "zipinfo" msgstr "" -#: whatsnew/3.14.rst:1912 +#: whatsnew/3.14.rst:2159 msgid "" "Added :func:`ZipInfo._for_archive ` to resolve " "suitable defaults for a :class:`~zipfile.ZipInfo` object as used by :func:" @@ -2884,18 +3280,18 @@ msgid "" "in :gh:`123424`.)" msgstr "" -#: whatsnew/3.14.rst:1917 +#: whatsnew/3.14.rst:2164 msgid "" ":meth:`zipfile.ZipFile.writestr` now respect ``SOURCE_DATE_EPOCH`` that " "distributions can set centrally and have build tools consume this in order " "to produce reproducible output. (Contributed by Jiahao Li in :gh:`91279`.)" msgstr "" -#: whatsnew/3.14.rst:1926 +#: whatsnew/3.14.rst:2173 msgid "Optimizations" msgstr "" -#: whatsnew/3.14.rst:1928 +#: whatsnew/3.14.rst:2175 msgid "" "The import time for several standard library modules has been improved, " "including :mod:`ast`, :mod:`asyncio`, :mod:`base64`, :mod:`cmd`, :mod:" @@ -2905,24 +3301,32 @@ msgid "" "`zipfile`." msgstr "" -#: whatsnew/3.14.rst:1934 +#: whatsnew/3.14.rst:2181 msgid "" "(Contributed by Adam Turner, Bénédikt Tran, Chris Markiewicz, Eli Schwartz, " "Hugo van Kemenade, Jelle Zijlstra, and others in :gh:`118761`.)" msgstr "" -#: whatsnew/3.14.rst:2184 -msgid "asyncio" +#: whatsnew/3.14.rst:2188 +msgid "" +":mod:`asyncio` has a new per-thread double linked list implementation " +"internally for :class:`native tasks ` which speeds up " +"execution by 10-20% on standard pyperformance benchmarks and reduces memory " +"usage. This enables external introspection tools such as :ref:`python -m " +"asyncio pstree ` to introspect the call " +"graph of asyncio tasks running in all threads. (Contributed by Kumar Aditya " +"in :gh:`107803`.)" msgstr "" -#: whatsnew/3.14.rst:1941 +#: whatsnew/3.14.rst:2196 msgid "" -":mod:`asyncio` now uses double linked list implementation for native tasks " -"which speeds up execution by 10% on standard pyperformance benchmarks and " -"reduces memory usage. (Contributed by Kumar Aditya in :gh:`107803`.)" +":mod:`asyncio` has first class support for :term:`free-threading builds " +"`. This enables parallel execution of multiple event loops " +"across different threads and scales linearly with the number of threads. " +"(Contributed by Kumar Aditya in :gh:`128002`.)" msgstr "" -#: whatsnew/3.14.rst:1946 +#: whatsnew/3.14.rst:2201 msgid "" ":mod:`asyncio` has new utility functions for introspecting and printing the " "program's call graph: :func:`asyncio.capture_call_graph` and :func:`asyncio." @@ -2930,18 +3334,18 @@ msgid "" "and Łukasz Langa in :gh:`91048`.)" msgstr "" -#: whatsnew/3.14.rst:1953 +#: whatsnew/3.14.rst:2208 msgid "base64" msgstr "" -#: whatsnew/3.14.rst:1955 +#: whatsnew/3.14.rst:2210 msgid "" "Improve the performance of :func:`base64.b16decode` by up to ten times, and " "reduce the import time of :mod:`base64` by up to six times. (Contributed by " "Bénédikt Tran, Chris Markiewicz, and Adam Turner in :gh:`118761`.)" msgstr "" -#: whatsnew/3.14.rst:1962 +#: whatsnew/3.14.rst:2217 msgid "" ":mod:`io` which provides the built-in :func:`open` makes less system calls " "when opening regular files as well as reading whole files. Reading a small " @@ -2951,34 +3355,34 @@ msgid "" "gh:`90102`.)" msgstr "" -#: whatsnew/3.14.rst:1973 +#: whatsnew/3.14.rst:2228 msgid "" "Improve generation of :class:`~uuid.UUID` objects via their dedicated " "functions:" msgstr "" -#: whatsnew/3.14.rst:1976 +#: whatsnew/3.14.rst:2231 msgid "" ":func:`~uuid.uuid3` and :func:`~uuid.uuid5` are both roughly 40% faster for " "16-byte names and 20% faster for 1024-byte names. Performance for longer " "names remains unchanged." msgstr "" -#: whatsnew/3.14.rst:1979 +#: whatsnew/3.14.rst:2234 msgid "" ":func:`~uuid.uuid4` and :func:`~uuid.uuid8` are 30% and 40% faster " "respectively." msgstr "" -#: whatsnew/3.14.rst:1982 +#: whatsnew/3.14.rst:2237 msgid "(Contributed by Bénédikt Tran in :gh:`128150`.)" msgstr "" -#: whatsnew/3.14.rst:1986 +#: whatsnew/3.14.rst:2241 msgid "zlib" msgstr "" -#: whatsnew/3.14.rst:1988 +#: whatsnew/3.14.rst:2243 msgid "" "On Windows, ``zlib-ng`` is now used as the implementation of the :mod:`zlib` " "module. This should produce compatible and comparable results with better " @@ -2988,84 +3392,80 @@ msgid "" "by Steve Dower in :gh:`91349`.)" msgstr "" -#: whatsnew/3.14.rst:2692 +#: whatsnew/3.14.rst:2952 msgid "Deprecated" msgstr "" -#: whatsnew/3.14.rst:2000 deprecations/pending-removal-in-future.rst:7 +#: whatsnew/3.14.rst:2255 deprecations/pending-removal-in-future.rst:7 msgid ":mod:`argparse`:" msgstr "" -#: whatsnew/3.14.rst:2002 +#: whatsnew/3.14.rst:2257 msgid "" "Passing the undocumented keyword argument *prefix_chars* to :meth:`~argparse." "ArgumentParser.add_argument_group` is now deprecated. (Contributed by " "Savannah Ostrowski in :gh:`125563`.)" msgstr "" -#: whatsnew/3.14.rst:2006 +#: whatsnew/3.14.rst:2261 msgid "" "Deprecated the :class:`argparse.FileType` type converter. Anything with " "resource management should be done downstream after the arguments are " "parsed. (Contributed by Serhiy Storchaka in :gh:`58032`.)" msgstr "" -#: whatsnew/3.14.rst:2011 deprecations/pending-removal-in-3.16.rst:19 +#: whatsnew/3.14.rst:2266 deprecations/pending-removal-in-3.16.rst:19 msgid ":mod:`asyncio`:" msgstr "" -#: whatsnew/3.14.rst:2013 deprecations/pending-removal-in-3.16.rst:21 +#: whatsnew/3.14.rst:2268 deprecations/pending-removal-in-3.16.rst:21 msgid "" ":func:`!asyncio.iscoroutinefunction` is deprecated and will be removed in " "Python 3.16; use :func:`inspect.iscoroutinefunction` instead. (Contributed " "by Jiahao Li and Kumar Aditya in :gh:`122875`.)" msgstr "" -#: whatsnew/3.14.rst:2018 deprecations/pending-removal-in-3.16.rst:26 +#: whatsnew/3.14.rst:2273 deprecations/pending-removal-in-3.16.rst:26 msgid "" ":mod:`asyncio` policy system is deprecated and will be removed in Python " "3.16. In particular, the following classes and functions are deprecated:" msgstr "" -#: whatsnew/3.14.rst:2021 deprecations/pending-removal-in-3.16.rst:29 +#: whatsnew/3.14.rst:2276 deprecations/pending-removal-in-3.16.rst:29 msgid ":class:`asyncio.AbstractEventLoopPolicy`" msgstr "" -#: whatsnew/3.14.rst:2022 deprecations/pending-removal-in-3.16.rst:30 +#: whatsnew/3.14.rst:2277 deprecations/pending-removal-in-3.16.rst:30 msgid ":class:`asyncio.DefaultEventLoopPolicy`" msgstr "" -#: whatsnew/3.14.rst:2023 deprecations/pending-removal-in-3.16.rst:31 +#: whatsnew/3.14.rst:2278 deprecations/pending-removal-in-3.16.rst:31 msgid ":class:`asyncio.WindowsSelectorEventLoopPolicy`" msgstr "" -#: whatsnew/3.14.rst:2024 deprecations/pending-removal-in-3.16.rst:32 +#: whatsnew/3.14.rst:2279 deprecations/pending-removal-in-3.16.rst:32 msgid ":class:`asyncio.WindowsProactorEventLoopPolicy`" msgstr "" -#: whatsnew/3.14.rst:2025 deprecations/pending-removal-in-3.16.rst:33 +#: whatsnew/3.14.rst:2280 deprecations/pending-removal-in-3.16.rst:33 msgid ":func:`asyncio.get_event_loop_policy`" msgstr "" -#: whatsnew/3.14.rst:2026 deprecations/pending-removal-in-3.16.rst:34 +#: whatsnew/3.14.rst:2281 deprecations/pending-removal-in-3.16.rst:34 msgid ":func:`asyncio.set_event_loop_policy`" msgstr "" -#: whatsnew/3.14.rst:2027 -msgid ":func:`asyncio.set_event_loop`" -msgstr "" - -#: whatsnew/3.14.rst:2029 deprecations/pending-removal-in-3.16.rst:36 +#: whatsnew/3.14.rst:2283 deprecations/pending-removal-in-3.16.rst:36 msgid "" "Users should use :func:`asyncio.run` or :class:`asyncio.Runner` with " "*loop_factory* to use the desired event loop implementation." msgstr "" -#: whatsnew/3.14.rst:2032 deprecations/pending-removal-in-3.16.rst:39 +#: whatsnew/3.14.rst:2286 deprecations/pending-removal-in-3.16.rst:39 msgid "For example, to use :class:`asyncio.SelectorEventLoop` on Windows::" msgstr "" -#: whatsnew/3.14.rst:2034 deprecations/pending-removal-in-3.16.rst:41 +#: whatsnew/3.14.rst:2288 deprecations/pending-removal-in-3.16.rst:41 msgid "" "import asyncio\n" "\n" @@ -3075,11 +3475,11 @@ msgid "" "asyncio.run(main(), loop_factory=asyncio.SelectorEventLoop)" msgstr "" -#: whatsnew/3.14.rst:2041 deprecations/pending-removal-in-3.16.rst:48 +#: whatsnew/3.14.rst:2295 deprecations/pending-removal-in-3.16.rst:48 msgid "(Contributed by Kumar Aditya in :gh:`127949`.)" msgstr "" -#: whatsnew/3.14.rst:2043 +#: whatsnew/3.14.rst:2297 msgid "" ":mod:`builtins`: Passing a complex number as the *real* or *imag* argument " "in the :func:`complex` constructor is now deprecated; it should only be " @@ -3087,18 +3487,18 @@ msgid "" "gh:`109218`.)" msgstr "" -#: whatsnew/3.14.rst:2049 +#: whatsnew/3.14.rst:2303 msgid "" ":mod:`codecs`: :func:`codecs.open` is now deprecated. Use :func:`open` " "instead. (Contributed by Inada Naoki in :gh:`133036`.)" msgstr "" -#: whatsnew/3.14.rst:2053 deprecations/pending-removal-in-3.15.rst:16 +#: whatsnew/3.14.rst:2307 deprecations/pending-removal-in-3.15.rst:16 #: deprecations/pending-removal-in-3.19.rst:4 msgid ":mod:`ctypes`:" msgstr "" -#: whatsnew/3.14.rst:2055 +#: whatsnew/3.14.rst:2309 msgid "" "On non-Windows platforms, setting :attr:`.Structure._pack_` to use a MSVC-" "compatible default memory layout is deprecated in favor of setting :attr:`." @@ -3106,7 +3506,7 @@ msgid "" "`131747`.)" msgstr "" -#: whatsnew/3.14.rst:2060 +#: whatsnew/3.14.rst:2314 msgid "" "Calling :func:`ctypes.POINTER` on a string is deprecated. Use :ref:`ctypes-" "incomplete-types` for self-referential structures. Also, the internal " @@ -3115,14 +3515,14 @@ msgid "" "`100926`.)" msgstr "" -#: whatsnew/3.14.rst:2066 +#: whatsnew/3.14.rst:2320 msgid "" ":mod:`functools`: Calling the Python implementation of :func:`functools." "reduce` with *function* or *sequence* as keyword arguments is now " "deprecated. (Contributed by Kirill Podoprigora in :gh:`121676`.)" msgstr "" -#: whatsnew/3.14.rst:2071 +#: whatsnew/3.14.rst:2325 msgid "" ":mod:`logging`: Support for custom logging handlers with the *strm* argument " "is deprecated and scheduled for removal in Python 3.16. Define handlers with " @@ -3130,7 +3530,7 @@ msgid "" "`115032`.)" msgstr "" -#: whatsnew/3.14.rst:2076 +#: whatsnew/3.14.rst:2330 msgid "" ":mod:`mimetypes`: Valid extensions start with a '.' or are empty for :meth:" "`mimetypes.MimeTypes.add_type`. Undotted extensions are deprecated and will " @@ -3138,14 +3538,14 @@ msgid "" "in :gh:`75223`.)" msgstr "" -#: whatsnew/3.14.rst:2083 +#: whatsnew/3.14.rst:2337 msgid "" ":mod:`!nturl2path`: This module is now deprecated. Call :func:`urllib." "request.url2pathname` and :func:`~urllib.request.pathname2url` instead. " "(Contributed by Barney Gale in :gh:`125866`.)" msgstr "" -#: whatsnew/3.14.rst:2088 +#: whatsnew/3.14.rst:2342 msgid "" ":mod:`os`: :term:`Soft deprecate ` :func:`os.popen` and :" "func:`os.spawn* ` functions. They should no longer be used to " @@ -3153,14 +3553,14 @@ msgid "" "(Contributed by Victor Stinner in :gh:`120743`.)" msgstr "" -#: whatsnew/3.14.rst:2094 +#: whatsnew/3.14.rst:2348 msgid "" ":mod:`pathlib`: :meth:`!pathlib.PurePath.as_uri` is deprecated and will be " "removed in Python 3.19. Use :meth:`pathlib.Path.as_uri` instead. " "(Contributed by Barney Gale in :gh:`123599`.)" msgstr "" -#: whatsnew/3.14.rst:2099 +#: whatsnew/3.14.rst:2353 msgid "" ":mod:`pdb`: The undocumented ``pdb.Pdb.curframe_locals`` attribute is now a " "deprecated read-only property. The low overhead dynamic frame locals access " @@ -3170,13 +3570,13 @@ msgid "" "later versions. (Contributed by Tian Gao in :gh:`124369` and :gh:`125951`.)" msgstr "" -#: whatsnew/3.14.rst:2107 +#: whatsnew/3.14.rst:2361 msgid "" ":mod:`symtable`: Deprecate :meth:`symtable.Class.get_methods` due to the " "lack of interest. (Contributed by Bénédikt Tran in :gh:`119698`.)" msgstr "" -#: whatsnew/3.14.rst:2111 +#: whatsnew/3.14.rst:2365 msgid "" ":mod:`tkinter`: The :class:`!tkinter.Variable` methods :meth:`!" "trace_variable`, :meth:`!trace_vdelete` and :meth:`!trace_vinfo` are now " @@ -3184,7 +3584,7 @@ msgid "" "trace_info` instead. (Contributed by Serhiy Storchaka in :gh:`120220`.)" msgstr "" -#: whatsnew/3.14.rst:2118 +#: whatsnew/3.14.rst:2372 msgid "" ":mod:`urllib.parse`: Accepting objects with false values (like ``0`` and " "``[]``) except empty strings, byte-like objects and ``None`` in :mod:`urllib." @@ -3335,27 +3735,36 @@ msgstr "" #: deprecations/pending-removal-in-3.15.rst:88 msgid "" +"When using the functional syntax of :class:`~typing.TypedDict`\\s, failing " +"to pass a value to the *fields* parameter (``TD = TypedDict(\"TD\")``) or " +"passing ``None`` (``TD = TypedDict(\"TD\", None)``) has been deprecated " +"since Python 3.13. Use ``class TD(TypedDict): pass`` or ``TD = " +"TypedDict(\"TD\", {})`` to create a TypedDict with zero field." +msgstr "" + +#: deprecations/pending-removal-in-3.15.rst:95 +msgid "" "The :func:`typing.no_type_check_decorator` decorator function has been " "deprecated since Python 3.13. After eight years in the :mod:`typing` module, " "it has yet to be supported by any major type checker." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:93 +#: deprecations/pending-removal-in-3.15.rst:100 msgid ":mod:`wave`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:95 +#: deprecations/pending-removal-in-3.15.rst:102 msgid "" "The :meth:`~wave.Wave_read.getmark`, :meth:`!setmark`, and :meth:`~wave." "Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:" "`~wave.Wave_write` classes have been deprecated since Python 3.13." msgstr "" -#: deprecations/pending-removal-in-3.15.rst:100 +#: deprecations/pending-removal-in-3.15.rst:107 msgid ":mod:`zipimport`:" msgstr "" -#: deprecations/pending-removal-in-3.15.rst:102 +#: deprecations/pending-removal-in-3.15.rst:109 msgid "" ":meth:`~zipimport.zipimporter.load_module` has been deprecated since Python " "3.10. Use :meth:`~zipimport.zipimporter.exec_module` instead. (Contributed " @@ -3865,17 +4274,17 @@ msgid "" "_clear_internal_caches` instead." msgstr "" -#: whatsnew/3.14.rst:2773 +#: whatsnew/3.14.rst:3033 msgid "Removed" msgstr "" -#: whatsnew/3.14.rst:2143 +#: whatsnew/3.14.rst:2397 msgid "" "Remove the *type*, *choices*, and *metavar* parameters of :class:`!argparse." "BooleanOptionalAction`. They were deprecated since 3.12." msgstr "" -#: whatsnew/3.14.rst:2147 +#: whatsnew/3.14.rst:2401 msgid "" "Calling :meth:`~argparse.ArgumentParser.add_argument_group` on an argument " "group, and calling :meth:`~argparse.ArgumentParser.add_argument_group` or :" @@ -3886,33 +4295,33 @@ msgid "" "(Contributed by Savannah Ostrowski in :gh:`127186`.)" msgstr "" -#: whatsnew/3.14.rst:2158 +#: whatsnew/3.14.rst:2412 msgid "" "Remove the following classes. They were all deprecated since Python 3.8, and " "have emitted deprecation warnings since Python 3.12:" msgstr "" -#: whatsnew/3.14.rst:2161 +#: whatsnew/3.14.rst:2415 msgid ":class:`!ast.Bytes`" msgstr "" -#: whatsnew/3.14.rst:2162 +#: whatsnew/3.14.rst:2416 msgid ":class:`!ast.Ellipsis`" msgstr "" -#: whatsnew/3.14.rst:2163 +#: whatsnew/3.14.rst:2417 msgid ":class:`!ast.NameConstant`" msgstr "" -#: whatsnew/3.14.rst:2164 +#: whatsnew/3.14.rst:2418 msgid ":class:`!ast.Num`" msgstr "" -#: whatsnew/3.14.rst:2165 +#: whatsnew/3.14.rst:2419 msgid ":class:`!ast.Str`" msgstr "" -#: whatsnew/3.14.rst:2167 +#: whatsnew/3.14.rst:2421 msgid "" "Use :class:`ast.Constant` instead. As a consequence of these removals, user-" "defined ``visit_Num``, ``visit_Str``, ``visit_Bytes``, " @@ -3922,98 +4331,98 @@ msgid "" "instead." msgstr "" -#: whatsnew/3.14.rst:2174 +#: whatsnew/3.14.rst:2428 msgid "" "Also, remove the following deprecated properties on :class:`ast.Constant`, " "which were present for compatibility with the now-removed AST classes:" msgstr "" -#: whatsnew/3.14.rst:2177 +#: whatsnew/3.14.rst:2431 msgid ":attr:`!ast.Constant.n`" msgstr "" -#: whatsnew/3.14.rst:2178 +#: whatsnew/3.14.rst:2432 msgid ":attr:`!ast.Constant.s`" msgstr "" -#: whatsnew/3.14.rst:2180 +#: whatsnew/3.14.rst:2434 msgid "" "Use :attr:`!ast.Constant.value` instead. (Contributed by Alex Waygood in :gh:" "`119562`.)" msgstr "" -#: whatsnew/3.14.rst:2186 +#: whatsnew/3.14.rst:2440 msgid "" "Remove the following classes and functions. They were all deprecated and " "emitted deprecation warnings since Python 3.12:" msgstr "" -#: whatsnew/3.14.rst:2189 +#: whatsnew/3.14.rst:2443 msgid ":func:`!asyncio.get_child_watcher`" msgstr "" -#: whatsnew/3.14.rst:2190 +#: whatsnew/3.14.rst:2444 msgid ":func:`!asyncio.set_child_watcher`" msgstr "" -#: whatsnew/3.14.rst:2191 +#: whatsnew/3.14.rst:2445 msgid ":meth:`!asyncio.AbstractEventLoopPolicy.get_child_watcher`" msgstr "" -#: whatsnew/3.14.rst:2192 +#: whatsnew/3.14.rst:2446 msgid ":meth:`!asyncio.AbstractEventLoopPolicy.set_child_watcher`" msgstr "" -#: whatsnew/3.14.rst:2193 +#: whatsnew/3.14.rst:2447 msgid ":class:`!asyncio.AbstractChildWatcher`" msgstr "" -#: whatsnew/3.14.rst:2194 +#: whatsnew/3.14.rst:2448 msgid ":class:`!asyncio.FastChildWatcher`" msgstr "" -#: whatsnew/3.14.rst:2195 +#: whatsnew/3.14.rst:2449 msgid ":class:`!asyncio.MultiLoopChildWatcher`" msgstr "" -#: whatsnew/3.14.rst:2196 +#: whatsnew/3.14.rst:2450 msgid ":class:`!asyncio.PidfdChildWatcher`" msgstr "" -#: whatsnew/3.14.rst:2197 +#: whatsnew/3.14.rst:2451 msgid ":class:`!asyncio.SafeChildWatcher`" msgstr "" -#: whatsnew/3.14.rst:2198 +#: whatsnew/3.14.rst:2452 msgid ":class:`!asyncio.ThreadedChildWatcher`" msgstr "" -#: whatsnew/3.14.rst:2200 +#: whatsnew/3.14.rst:2454 msgid "(Contributed by Kumar Aditya in :gh:`120804`.)" msgstr "" -#: whatsnew/3.14.rst:2202 +#: whatsnew/3.14.rst:2456 msgid "" "Removed implicit creation of event loop by :func:`asyncio.get_event_loop`. " "It now raises a :exc:`RuntimeError` if there is no current event loop. " "(Contributed by Kumar Aditya in :gh:`126353`.)" msgstr "" -#: whatsnew/3.14.rst:2206 +#: whatsnew/3.14.rst:2460 msgid "" "There's a few patterns that use :func:`asyncio.get_event_loop`, most of them " "can be replaced with :func:`asyncio.run`." msgstr "" -#: whatsnew/3.14.rst:2209 +#: whatsnew/3.14.rst:2463 msgid "If you're running an async function, simply use :func:`asyncio.run`." msgstr "" -#: whatsnew/3.14.rst:2234 whatsnew/3.14.rst:2260 +#: whatsnew/3.14.rst:2488 whatsnew/3.14.rst:2514 msgid "Before::" msgstr "" -#: whatsnew/3.14.rst:2213 +#: whatsnew/3.14.rst:2467 msgid "" "async def main():\n" " ...\n" @@ -4026,11 +4435,11 @@ msgid "" " loop.close()" msgstr "" -#: whatsnew/3.14.rst:2246 whatsnew/3.14.rst:2279 +#: whatsnew/3.14.rst:2500 whatsnew/3.14.rst:2533 msgid "After::" msgstr "" -#: whatsnew/3.14.rst:2225 +#: whatsnew/3.14.rst:2479 msgid "" "async def main():\n" " ...\n" @@ -4038,13 +4447,13 @@ msgid "" "asyncio.run(main())" msgstr "" -#: whatsnew/3.14.rst:2230 +#: whatsnew/3.14.rst:2484 msgid "" "If you need to start something, for example, a server listening on a socket " "and then run forever, use :func:`asyncio.run` and an :class:`asyncio.Event`." msgstr "" -#: whatsnew/3.14.rst:2236 +#: whatsnew/3.14.rst:2490 msgid "" "def start_server(loop):\n" " ...\n" @@ -4057,7 +4466,7 @@ msgid "" " loop.close()" msgstr "" -#: whatsnew/3.14.rst:2248 +#: whatsnew/3.14.rst:2502 msgid "" "def start_server(loop):\n" " ...\n" @@ -4069,13 +4478,13 @@ msgid "" "asyncio.run(main())" msgstr "" -#: whatsnew/3.14.rst:2257 +#: whatsnew/3.14.rst:2511 msgid "" "If you need to run something in an event loop, then run some blocking code " "around it, use :class:`asyncio.Runner`." msgstr "" -#: whatsnew/3.14.rst:2262 +#: whatsnew/3.14.rst:2516 msgid "" "async def operation_one():\n" " ...\n" @@ -4095,7 +4504,7 @@ msgid "" " loop.close()" msgstr "" -#: whatsnew/3.14.rst:2281 +#: whatsnew/3.14.rst:2535 msgid "" "async def operation_one():\n" " ...\n" @@ -4112,119 +4521,119 @@ msgid "" " runner.run(operation_two())" msgstr "" -#: whatsnew/3.14.rst:2298 +#: whatsnew/3.14.rst:2552 msgid "collections.abc" msgstr "" -#: whatsnew/3.14.rst:2300 +#: whatsnew/3.14.rst:2554 msgid "" "Remove :class:`!collections.abc.ByteString`. It had previously raised a :exc:" "`DeprecationWarning` since Python 3.12." msgstr "" -#: whatsnew/3.14.rst:2304 +#: whatsnew/3.14.rst:2558 msgid "email" msgstr "" -#: whatsnew/3.14.rst:2306 +#: whatsnew/3.14.rst:2560 msgid "" "Remove the *isdst* parameter from :func:`email.utils.localtime`. " "(Contributed by Hugo van Kemenade in :gh:`118798`.)" msgstr "" -#: whatsnew/3.14.rst:2310 +#: whatsnew/3.14.rst:2564 msgid "importlib" msgstr "" -#: whatsnew/3.14.rst:2312 +#: whatsnew/3.14.rst:2566 msgid "Remove deprecated :mod:`importlib.abc` classes:" msgstr "" -#: whatsnew/3.14.rst:2314 +#: whatsnew/3.14.rst:2568 msgid ":class:`!importlib.abc.ResourceReader`" msgstr "" -#: whatsnew/3.14.rst:2315 +#: whatsnew/3.14.rst:2569 msgid ":class:`!importlib.abc.Traversable`" msgstr "" -#: whatsnew/3.14.rst:2316 +#: whatsnew/3.14.rst:2570 msgid ":class:`!importlib.abc.TraversableResources`" msgstr "" -#: whatsnew/3.14.rst:2318 +#: whatsnew/3.14.rst:2572 msgid "Use :mod:`importlib.resources.abc` classes instead:" msgstr "" -#: whatsnew/3.14.rst:2320 +#: whatsnew/3.14.rst:2574 msgid ":class:`importlib.resources.abc.Traversable`" msgstr "" -#: whatsnew/3.14.rst:2321 +#: whatsnew/3.14.rst:2575 msgid ":class:`importlib.resources.abc.TraversableResources`" msgstr "" -#: whatsnew/3.14.rst:2323 +#: whatsnew/3.14.rst:2577 msgid "(Contributed by Jason R. Coombs and Hugo van Kemenade in :gh:`93963`.)" msgstr "" -#: whatsnew/3.14.rst:2326 +#: whatsnew/3.14.rst:2580 msgid "itertools" msgstr "" -#: whatsnew/3.14.rst:2328 +#: whatsnew/3.14.rst:2582 msgid "" "Remove :mod:`itertools` support for copy, deepcopy, and pickle operations. " "These had previously raised a :exc:`DeprecationWarning` since Python 3.12. " "(Contributed by Raymond Hettinger in :gh:`101588`.)" msgstr "" -#: whatsnew/3.14.rst:2335 +#: whatsnew/3.14.rst:2589 msgid "" "Remove support for passing additional keyword arguments to :class:`pathlib." "Path`. In previous versions, any such arguments are ignored." msgstr "" -#: whatsnew/3.14.rst:2337 +#: whatsnew/3.14.rst:2591 msgid "" "Remove support for passing additional positional arguments to :meth:`pathlib." "PurePath.relative_to` and :meth:`~pathlib.PurePath.is_relative_to`. In " "previous versions, any such arguments are joined onto *other*." msgstr "" -#: whatsnew/3.14.rst:2343 +#: whatsnew/3.14.rst:2597 msgid "pkgutil" msgstr "" -#: whatsnew/3.14.rst:2345 +#: whatsnew/3.14.rst:2599 msgid "" "Remove deprecated :func:`!pkgutil.get_loader` and :func:`!pkgutil." "find_loader`. These had previously raised a :exc:`DeprecationWarning` since " "Python 3.12. (Contributed by Bénédikt Tran in :gh:`97850`.)" msgstr "" -#: whatsnew/3.14.rst:2350 +#: whatsnew/3.14.rst:2604 msgid "pty" msgstr "" -#: whatsnew/3.14.rst:2352 +#: whatsnew/3.14.rst:2606 msgid "" "Remove deprecated :func:`!pty.master_open` and :func:`!pty.slave_open`. They " "had previously raised a :exc:`DeprecationWarning` since Python 3.12. Use :" "func:`pty.openpty` instead. (Contributed by Nikita Sobolev in :gh:`118824`.)" msgstr "" -#: whatsnew/3.14.rst:2358 +#: whatsnew/3.14.rst:2612 msgid "sqlite3" msgstr "" -#: whatsnew/3.14.rst:2360 +#: whatsnew/3.14.rst:2614 msgid "" "Remove :data:`!version` and :data:`!version_info` from :mod:`sqlite3`. " "(Contributed by Hugo van Kemenade in :gh:`118924`.)" msgstr "" -#: whatsnew/3.14.rst:2363 +#: whatsnew/3.14.rst:2617 msgid "" "Disallow using a sequence of parameters with named placeholders. This had " "previously raised a :exc:`DeprecationWarning` since Python 3.12; it will now " @@ -4232,31 +4641,31 @@ msgid "" "in :gh:`118928` and :gh:`101693`.)" msgstr "" -#: whatsnew/3.14.rst:2371 +#: whatsnew/3.14.rst:2625 msgid "" "Remove :class:`!typing.ByteString`. It had previously raised a :exc:" "`DeprecationWarning` since Python 3.12." msgstr "" -#: whatsnew/3.14.rst:2374 +#: whatsnew/3.14.rst:2628 msgid ":class:`typing.TypeAliasType` now supports star unpacking." msgstr "" -#: whatsnew/3.14.rst:2379 +#: whatsnew/3.14.rst:2633 msgid "" "Remove deprecated :class:`!Quoter` class from :mod:`urllib.parse`. It had " "previously raised a :exc:`DeprecationWarning` since Python 3.11. " "(Contributed by Nikita Sobolev in :gh:`118827`.)" msgstr "" -#: whatsnew/3.14.rst:2382 +#: whatsnew/3.14.rst:2636 msgid "" "Remove deprecated :class:`!URLopener` and :class:`!FancyURLopener` classes " "from :mod:`urllib.request`. They had previously raised a :exc:" "`DeprecationWarning` since Python 3.3." msgstr "" -#: whatsnew/3.14.rst:2386 +#: whatsnew/3.14.rst:2640 msgid "" "``myopener.open()`` can be replaced with :func:`~urllib.request.urlopen`, " "and ``myopener.retrieve()`` can be replaced with :func:`~urllib.request." @@ -4265,18 +4674,18 @@ msgid "" "(Contributed by Barney Gale in :gh:`84850`.)" msgstr "" -#: whatsnew/3.14.rst:2394 +#: whatsnew/3.14.rst:2648 msgid "Others" msgstr "" -#: whatsnew/3.14.rst:2396 +#: whatsnew/3.14.rst:2650 msgid "" "Using :data:`NotImplemented` in a boolean context will now raise a :exc:" "`TypeError`. It had previously raised a :exc:`DeprecationWarning` since " "Python 3.9. (Contributed by Jelle Zijlstra in :gh:`118767`.)" msgstr "" -#: whatsnew/3.14.rst:2400 +#: whatsnew/3.14.rst:2654 msgid "" "The :func:`int` built-in no longer delegates to :meth:`~object.__trunc__`. " "Classes that want to support conversion to integer must implement either :" @@ -4284,73 +4693,81 @@ msgid "" "Dickinson in :gh:`119743`.)" msgstr "" -#: whatsnew/3.14.rst:2407 +#: whatsnew/3.14.rst:2661 msgid "CPython bytecode changes" msgstr "" -#: whatsnew/3.14.rst:2409 +#: whatsnew/3.14.rst:2663 msgid "" "Replaced the opcode ``BINARY_SUBSCR`` by :opcode:`BINARY_OP` with oparg " "``NB_SUBSCR``. (Contributed by Irit Katriel in :gh:`100239`.)" msgstr "" -#: whatsnew/3.14.rst:2634 +#: whatsnew/3.14.rst:2894 msgid "Porting to Python 3.14" msgstr "" -#: whatsnew/3.14.rst:2415 +#: whatsnew/3.14.rst:2669 msgid "" "This section lists previously described changes and other bugfixes that may " "require changes to your code." msgstr "" -#: whatsnew/3.14.rst:2419 +#: whatsnew/3.14.rst:2673 msgid "Changes in the Python API" msgstr "" -#: whatsnew/3.14.rst:2421 +#: whatsnew/3.14.rst:2675 msgid "" ":class:`functools.partial` is now a method descriptor. Wrap it in :func:" "`staticmethod` if you want to preserve the old behavior. (Contributed by " "Serhiy Storchaka and Dominykas Grigonis in :gh:`121027`.)" msgstr "" -#: whatsnew/3.14.rst:2425 +#: whatsnew/3.14.rst:2679 msgid "" "The :func:`locale.nl_langinfo` function now sets temporarily the " "``LC_CTYPE`` locale in some cases. This temporary change affects other " "threads. (Contributed by Serhiy Storchaka in :gh:`69998`.)" msgstr "" -#: whatsnew/3.14.rst:2430 +#: whatsnew/3.14.rst:2684 msgid "" ":class:`types.UnionType` is now an alias for :class:`typing.Union`, causing " "changes in some behaviors. See :ref:`above ` for " "more details. (Contributed by Jelle Zijlstra in :gh:`105499`.)" msgstr "" -#: whatsnew/3.14.rst:2437 +#: whatsnew/3.14.rst:2689 +msgid "" +"The runtime behavior of annotations has changed in various ways; see :ref:" +"`above ` for details. While most code that interacts " +"with annotations should continue to work, some undocumented details may " +"behave differently." +msgstr "" + +#: whatsnew/3.14.rst:2696 msgid "Build changes" msgstr "" -#: whatsnew/3.14.rst:2439 +#: whatsnew/3.14.rst:2698 msgid "" "GNU Autoconf 2.72 is now required to generate :file:`configure`. " "(Contributed by Erlend Aasland in :gh:`115765`.)" msgstr "" -#: whatsnew/3.14.rst:2442 +#: whatsnew/3.14.rst:2701 msgid "" "``#pragma``-based linking with ``python3*.lib`` can now be switched off " "with :c:expr:`Py_NO_LINK_LIB`. (Contributed by Jean-Christophe Fillion-Robin " "in :gh:`82909`.)" msgstr "" -#: whatsnew/3.14.rst:2449 +#: whatsnew/3.14.rst:2708 msgid "PEP 761: Discontinuation of PGP signatures" msgstr "" -#: whatsnew/3.14.rst:2451 +#: whatsnew/3.14.rst:2710 msgid "" "PGP signatures will not be available for CPython 3.14 and onwards. Users " "verifying artifacts must use `Sigstore verification materials`_ for " @@ -4358,82 +4775,86 @@ msgid "" "pep:`761`." msgstr "" -#: whatsnew/3.14.rst:2460 +#: whatsnew/3.14.rst:2719 msgid "C API changes" msgstr "" -#: whatsnew/3.14.rst:2465 +#: whatsnew/3.14.rst:2724 msgid "" "Add :c:func:`PyLong_GetSign` function to get the sign of :class:`int` " "objects. (Contributed by Sergey B Kirpichev in :gh:`116560`.)" msgstr "" -#: whatsnew/3.14.rst:2468 +#: whatsnew/3.14.rst:2727 msgid "" "Add a new :c:type:`PyUnicodeWriter` API to create a Python :class:`str` " "object:" msgstr "" -#: whatsnew/3.14.rst:2471 +#: whatsnew/3.14.rst:2730 msgid ":c:func:`PyUnicodeWriter_Create`" msgstr "" -#: whatsnew/3.14.rst:2472 +#: whatsnew/3.14.rst:2731 msgid ":c:func:`PyUnicodeWriter_DecodeUTF8Stateful`" msgstr "" -#: whatsnew/3.14.rst:2473 +#: whatsnew/3.14.rst:2732 msgid ":c:func:`PyUnicodeWriter_Discard`" msgstr "" -#: whatsnew/3.14.rst:2474 +#: whatsnew/3.14.rst:2733 msgid ":c:func:`PyUnicodeWriter_Finish`" msgstr "" -#: whatsnew/3.14.rst:2475 +#: whatsnew/3.14.rst:2734 msgid ":c:func:`PyUnicodeWriter_Format`" msgstr "" -#: whatsnew/3.14.rst:2476 +#: whatsnew/3.14.rst:2735 +msgid ":c:func:`PyUnicodeWriter_WriteASCII`" +msgstr "" + +#: whatsnew/3.14.rst:2736 msgid ":c:func:`PyUnicodeWriter_WriteChar`" msgstr "" -#: whatsnew/3.14.rst:2477 +#: whatsnew/3.14.rst:2737 msgid ":c:func:`PyUnicodeWriter_WriteRepr`" msgstr "" -#: whatsnew/3.14.rst:2478 +#: whatsnew/3.14.rst:2738 msgid ":c:func:`PyUnicodeWriter_WriteStr`" msgstr "" -#: whatsnew/3.14.rst:2479 +#: whatsnew/3.14.rst:2739 msgid ":c:func:`PyUnicodeWriter_WriteSubstring`" msgstr "" -#: whatsnew/3.14.rst:2480 +#: whatsnew/3.14.rst:2740 msgid ":c:func:`PyUnicodeWriter_WriteUCS4`" msgstr "" -#: whatsnew/3.14.rst:2481 +#: whatsnew/3.14.rst:2741 msgid ":c:func:`PyUnicodeWriter_WriteUTF8`" msgstr "" -#: whatsnew/3.14.rst:2482 +#: whatsnew/3.14.rst:2742 msgid ":c:func:`PyUnicodeWriter_WriteWideChar`" msgstr "" -#: whatsnew/3.14.rst:2484 +#: whatsnew/3.14.rst:2744 msgid "(Contributed by Victor Stinner in :gh:`119182`.)" msgstr "" -#: whatsnew/3.14.rst:2486 +#: whatsnew/3.14.rst:2746 msgid "" "Add :c:func:`PyIter_NextItem` to replace :c:func:`PyIter_Next`, which has an " "ambiguous return value. (Contributed by Irit Katriel and Erlend Aasland in :" "gh:`105201`.)" msgstr "" -#: whatsnew/3.14.rst:2490 +#: whatsnew/3.14.rst:2750 msgid "" "Add :c:func:`PyLong_IsPositive`, :c:func:`PyLong_IsNegative` and :c:func:" "`PyLong_IsZero` for checking if :c:type:`PyLongObject` is positive, " @@ -4441,210 +4862,210 @@ msgid "" "Kirpichev in :gh:`126061`.)" msgstr "" -#: whatsnew/3.14.rst:2495 +#: whatsnew/3.14.rst:2755 msgid "" "Add new functions to convert C ```` numbers from/to Python :class:" "`int`:" msgstr "" -#: whatsnew/3.14.rst:2498 +#: whatsnew/3.14.rst:2758 msgid ":c:func:`PyLong_AsInt32`" msgstr "" -#: whatsnew/3.14.rst:2499 +#: whatsnew/3.14.rst:2759 msgid ":c:func:`PyLong_AsInt64`" msgstr "" -#: whatsnew/3.14.rst:2500 +#: whatsnew/3.14.rst:2760 msgid ":c:func:`PyLong_AsUInt32`" msgstr "" -#: whatsnew/3.14.rst:2501 +#: whatsnew/3.14.rst:2761 msgid ":c:func:`PyLong_AsUInt64`" msgstr "" -#: whatsnew/3.14.rst:2502 +#: whatsnew/3.14.rst:2762 msgid ":c:func:`PyLong_FromInt32`" msgstr "" -#: whatsnew/3.14.rst:2503 +#: whatsnew/3.14.rst:2763 msgid ":c:func:`PyLong_FromInt64`" msgstr "" -#: whatsnew/3.14.rst:2504 +#: whatsnew/3.14.rst:2764 msgid ":c:func:`PyLong_FromUInt32`" msgstr "" -#: whatsnew/3.14.rst:2505 +#: whatsnew/3.14.rst:2765 msgid ":c:func:`PyLong_FromUInt64`" msgstr "" -#: whatsnew/3.14.rst:2507 +#: whatsnew/3.14.rst:2767 msgid "(Contributed by Victor Stinner in :gh:`120389`.)" msgstr "" -#: whatsnew/3.14.rst:2509 +#: whatsnew/3.14.rst:2769 msgid "" "Add :c:func:`PyBytes_Join(sep, iterable) ` function, similar " "to ``sep.join(iterable)`` in Python. (Contributed by Victor Stinner in :gh:" "`121645`.)" msgstr "" -#: whatsnew/3.14.rst:2513 +#: whatsnew/3.14.rst:2773 msgid "" "Add :c:func:`Py_HashBuffer` to compute and return the hash value of a " "buffer. (Contributed by Antoine Pitrou and Victor Stinner in :gh:`122854`.)" msgstr "" -#: whatsnew/3.14.rst:2516 +#: whatsnew/3.14.rst:2776 msgid "" "Add functions to get and set the current runtime Python configuration (:pep:" "`741`):" msgstr "" -#: whatsnew/3.14.rst:2519 +#: whatsnew/3.14.rst:2779 msgid ":c:func:`PyConfig_Get`" msgstr "" -#: whatsnew/3.14.rst:2520 +#: whatsnew/3.14.rst:2780 msgid ":c:func:`PyConfig_GetInt`" msgstr "" -#: whatsnew/3.14.rst:2521 +#: whatsnew/3.14.rst:2781 msgid ":c:func:`PyConfig_Set`" msgstr "" -#: whatsnew/3.14.rst:2522 +#: whatsnew/3.14.rst:2782 msgid ":c:func:`PyConfig_Names`" msgstr "" -#: whatsnew/3.14.rst:2526 +#: whatsnew/3.14.rst:2786 msgid "Add functions to configure the Python initialization (:pep:`741`):" msgstr "" -#: whatsnew/3.14.rst:2528 +#: whatsnew/3.14.rst:2788 msgid ":c:func:`Py_InitializeFromInitConfig`" msgstr "" -#: whatsnew/3.14.rst:2529 +#: whatsnew/3.14.rst:2789 msgid ":c:func:`PyInitConfig_AddModule`" msgstr "" -#: whatsnew/3.14.rst:2530 +#: whatsnew/3.14.rst:2790 msgid ":c:func:`PyInitConfig_Create`" msgstr "" -#: whatsnew/3.14.rst:2531 +#: whatsnew/3.14.rst:2791 msgid ":c:func:`PyInitConfig_Free`" msgstr "" -#: whatsnew/3.14.rst:2532 +#: whatsnew/3.14.rst:2792 msgid ":c:func:`PyInitConfig_FreeStrList`" msgstr "" -#: whatsnew/3.14.rst:2533 +#: whatsnew/3.14.rst:2793 msgid ":c:func:`PyInitConfig_GetError`" msgstr "" -#: whatsnew/3.14.rst:2534 +#: whatsnew/3.14.rst:2794 msgid ":c:func:`PyInitConfig_GetExitCode`" msgstr "" -#: whatsnew/3.14.rst:2535 +#: whatsnew/3.14.rst:2795 msgid ":c:func:`PyInitConfig_GetInt`" msgstr "" -#: whatsnew/3.14.rst:2536 +#: whatsnew/3.14.rst:2796 msgid ":c:func:`PyInitConfig_GetStr`" msgstr "" -#: whatsnew/3.14.rst:2537 +#: whatsnew/3.14.rst:2797 msgid ":c:func:`PyInitConfig_GetStrList`" msgstr "" -#: whatsnew/3.14.rst:2538 +#: whatsnew/3.14.rst:2798 msgid ":c:func:`PyInitConfig_HasOption`" msgstr "" -#: whatsnew/3.14.rst:2539 +#: whatsnew/3.14.rst:2799 msgid ":c:func:`PyInitConfig_SetInt`" msgstr "" -#: whatsnew/3.14.rst:2540 +#: whatsnew/3.14.rst:2800 msgid ":c:func:`PyInitConfig_SetStr`" msgstr "" -#: whatsnew/3.14.rst:2541 +#: whatsnew/3.14.rst:2801 msgid ":c:func:`PyInitConfig_SetStrList`" msgstr "" -#: whatsnew/3.14.rst:2545 +#: whatsnew/3.14.rst:2805 msgid "" "Add a new import and export API for Python :class:`int` objects (:pep:`757`):" msgstr "" -#: whatsnew/3.14.rst:2547 +#: whatsnew/3.14.rst:2807 msgid ":c:func:`PyLong_GetNativeLayout`" msgstr "" -#: whatsnew/3.14.rst:2548 +#: whatsnew/3.14.rst:2808 msgid ":c:func:`PyLong_Export`" msgstr "" -#: whatsnew/3.14.rst:2549 +#: whatsnew/3.14.rst:2809 msgid ":c:func:`PyLong_FreeExport`" msgstr "" -#: whatsnew/3.14.rst:2550 +#: whatsnew/3.14.rst:2810 msgid ":c:func:`PyLongWriter_Create`" msgstr "" -#: whatsnew/3.14.rst:2551 +#: whatsnew/3.14.rst:2811 msgid ":c:func:`PyLongWriter_Finish`" msgstr "" -#: whatsnew/3.14.rst:2552 +#: whatsnew/3.14.rst:2812 msgid ":c:func:`PyLongWriter_Discard`" msgstr "" -#: whatsnew/3.14.rst:2554 +#: whatsnew/3.14.rst:2814 msgid "(Contributed by Sergey B Kirpichev and Victor Stinner in :gh:`102471`.)" msgstr "" -#: whatsnew/3.14.rst:2556 +#: whatsnew/3.14.rst:2816 msgid "" "Add :c:func:`PyType_GetBaseByToken` and :c:data:`Py_tp_token` slot for " "easier superclass identification, which attempts to resolve the `type " "checking issue `__ " -"mentioned in :pep:`630` (:gh:`124153`)." +"mentioned in :pep:`630`. (Contributed in :gh:`124153`.)" msgstr "" -#: whatsnew/3.14.rst:2561 +#: whatsnew/3.14.rst:2821 msgid "" "Add :c:func:`PyUnicode_Equal` function to the limited C API: test if two " "strings are equal. (Contributed by Victor Stinner in :gh:`124502`.)" msgstr "" -#: whatsnew/3.14.rst:2565 +#: whatsnew/3.14.rst:2825 msgid "" "Add :c:func:`PyType_Freeze` function to make a type immutable. (Contributed " "by Victor Stinner in :gh:`121654`.)" msgstr "" -#: whatsnew/3.14.rst:2568 +#: whatsnew/3.14.rst:2828 msgid "" "Add :c:func:`PyUnstable_Object_EnableDeferredRefcount` for enabling deferred " "reference counting, as outlined in :pep:`703`." msgstr "" -#: whatsnew/3.14.rst:2571 +#: whatsnew/3.14.rst:2831 msgid "" "Add :c:func:`PyMonitoring_FireBranchLeftEvent` and :c:func:" "`PyMonitoring_FireBranchRightEvent` for generating :monitoring-event:" "`BRANCH_LEFT` and :monitoring-event:`BRANCH_RIGHT` events, respectively." msgstr "" -#: whatsnew/3.14.rst:2576 +#: whatsnew/3.14.rst:2836 msgid "" "Add :c:func:`Py_fopen` function to open a file. Similar to the :c:func:`!" "fopen` function, but the *path* parameter is a Python object and an " @@ -4652,34 +5073,34 @@ msgid "" "file. (Contributed by Victor Stinner in :gh:`127350`.)" msgstr "" -#: whatsnew/3.14.rst:2582 +#: whatsnew/3.14.rst:2842 msgid "" "Add support of nullable arguments in :c:func:`PyArg_ParseTuple` and similar " "functions. Adding ``?`` after any format unit makes ``None`` be accepted as " "a value. (Contributed by Serhiy Storchaka in :gh:`112068`.)" msgstr "" -#: whatsnew/3.14.rst:2587 +#: whatsnew/3.14.rst:2847 msgid "" "The ``k`` and ``K`` formats in :c:func:`PyArg_ParseTuple` and similar " "functions now use :meth:`~object.__index__` if available, like all other " "integer formats. (Contributed by Serhiy Storchaka in :gh:`112068`.)" msgstr "" -#: whatsnew/3.14.rst:2592 +#: whatsnew/3.14.rst:2852 msgid "" "Add macros :c:func:`Py_PACK_VERSION` and :c:func:`Py_PACK_FULL_VERSION` for " "bit-packing Python version numbers. (Contributed by Petr Viktorin in :gh:" "`128629`.)" msgstr "" -#: whatsnew/3.14.rst:2596 +#: whatsnew/3.14.rst:2856 msgid "" "Add :c:func:`PyUnstable_IsImmortal` for determining whether an object is :" "term:`immortal`, for debugging purposes." msgstr "" -#: whatsnew/3.14.rst:2599 +#: whatsnew/3.14.rst:2859 msgid "" "Add :c:func:`PyImport_ImportModuleAttr` and :c:func:" "`PyImport_ImportModuleAttrString` helper functions to import a module and " @@ -4687,14 +5108,14 @@ msgid "" "`128911`.)" msgstr "" -#: whatsnew/3.14.rst:2604 +#: whatsnew/3.14.rst:2864 msgid "" "Add support for a new ``p`` format unit in :c:func:`Py_BuildValue` that " "allows to take a C integer and produce a Python :class:`bool` object. " "(Contributed by Pablo Galindo in :issue:`45325`.)" msgstr "" -#: whatsnew/3.14.rst:2608 +#: whatsnew/3.14.rst:2868 msgid "" "Add :c:func:`PyUnstable_Object_IsUniqueReferencedTemporary` to determine if " "an object is a unique temporary object on the interpreter's operand stack. " @@ -4703,18 +5124,18 @@ msgid "" "functions." msgstr "" -#: whatsnew/3.14.rst:2613 +#: whatsnew/3.14.rst:2873 msgid "" "Add :c:func:`PyUnstable_Object_IsUniquelyReferenced` as a replacement for " "``Py_REFCNT(op) == 1`` on :term:`free threaded ` builds. " "(Contributed by Peter Bierma in :gh:`133140`.)" msgstr "" -#: whatsnew/3.14.rst:2619 +#: whatsnew/3.14.rst:2879 msgid "Limited C API changes" msgstr "" -#: whatsnew/3.14.rst:2621 +#: whatsnew/3.14.rst:2881 msgid "" "In the limited C API 3.14 and newer, :c:func:`Py_TYPE` and :c:func:" "`Py_REFCNT` are now implemented as an opaque function call to hide " @@ -4722,7 +5143,7 @@ msgid "" "gh:`124127`.)" msgstr "" -#: whatsnew/3.14.rst:2626 +#: whatsnew/3.14.rst:2886 msgid "" "Remove the :c:macro:`PySequence_Fast_GET_SIZE`, :c:macro:" "`PySequence_Fast_GET_ITEM` and :c:macro:`PySequence_Fast_ITEMS` macros from " @@ -4731,7 +5152,7 @@ msgid "" "Stinner in :gh:`91417`.)" msgstr "" -#: whatsnew/3.14.rst:2636 +#: whatsnew/3.14.rst:2896 msgid "" ":c:func:`Py_Finalize` now deletes all interned strings. This is backwards " "incompatible to any C-Extension that holds onto an interned string after a " @@ -4744,14 +5165,14 @@ msgid "" "`113601`.)" msgstr "" -#: whatsnew/3.14.rst:2646 +#: whatsnew/3.14.rst:2906 msgid "" "The :ref:`Unicode Exception Objects ` C API now raises a :" "exc:`TypeError` if its exception argument is not a :exc:`UnicodeError` " "object. (Contributed by Bénédikt Tran in :gh:`127691`.)" msgstr "" -#: whatsnew/3.14.rst:2653 +#: whatsnew/3.14.rst:2913 msgid "" "The interpreter internally avoids some reference count modifications when " "loading objects onto the operands stack by :term:`borrowing `." msgstr "" -#: whatsnew/3.14.rst:2735 deprecations/c-api-pending-removal-in-3.18.rst:17 +#: whatsnew/3.14.rst:2995 deprecations/c-api-pending-removal-in-3.18.rst:17 msgid "" ":c:func:`!_PyUnicodeWriter_Finish`: replace " "``_PyUnicodeWriter_Finish(&writer)`` with :c:func:" "`PyUnicodeWriter_Finish(writer) `." msgstr "" -#: whatsnew/3.14.rst:2738 deprecations/c-api-pending-removal-in-3.18.rst:20 +#: whatsnew/3.14.rst:2998 deprecations/c-api-pending-removal-in-3.18.rst:20 msgid "" ":c:func:`!_PyUnicodeWriter_Dealloc`: replace " "``_PyUnicodeWriter_Dealloc(&writer)`` with :c:func:" "`PyUnicodeWriter_Discard(writer) `." msgstr "" -#: whatsnew/3.14.rst:2741 deprecations/c-api-pending-removal-in-3.18.rst:23 +#: whatsnew/3.14.rst:3001 deprecations/c-api-pending-removal-in-3.18.rst:23 msgid "" ":c:func:`!_PyUnicodeWriter_WriteChar`: replace " "``_PyUnicodeWriter_WriteChar(&writer, ch)`` with :c:func:" "`PyUnicodeWriter_WriteChar(writer, ch) `." msgstr "" -#: whatsnew/3.14.rst:2744 deprecations/c-api-pending-removal-in-3.18.rst:26 +#: whatsnew/3.14.rst:3004 deprecations/c-api-pending-removal-in-3.18.rst:26 msgid "" ":c:func:`!_PyUnicodeWriter_WriteStr`: replace " "``_PyUnicodeWriter_WriteStr(&writer, str)`` with :c:func:" "`PyUnicodeWriter_WriteStr(writer, str) `." msgstr "" -#: whatsnew/3.14.rst:2747 deprecations/c-api-pending-removal-in-3.18.rst:29 +#: whatsnew/3.14.rst:3007 deprecations/c-api-pending-removal-in-3.18.rst:29 msgid "" ":c:func:`!_PyUnicodeWriter_WriteSubstring`: replace " "``_PyUnicodeWriter_WriteSubstring(&writer, str, start, end)`` with :c:func:" @@ -4966,29 +5387,29 @@ msgid "" "`." msgstr "" -#: whatsnew/3.14.rst:2750 deprecations/c-api-pending-removal-in-3.18.rst:32 +#: whatsnew/3.14.rst:3010 msgid "" ":c:func:`!_PyUnicodeWriter_WriteASCIIString`: replace " "``_PyUnicodeWriter_WriteASCIIString(&writer, str)`` with :c:func:" -"`PyUnicodeWriter_WriteUTF8(writer, str) `." +"`PyUnicodeWriter_WriteASCII(writer, str) `." msgstr "" -#: whatsnew/3.14.rst:2753 deprecations/c-api-pending-removal-in-3.18.rst:35 +#: whatsnew/3.14.rst:3013 deprecations/c-api-pending-removal-in-3.18.rst:35 msgid "" ":c:func:`!_PyUnicodeWriter_WriteLatin1String`: replace " "``_PyUnicodeWriter_WriteLatin1String(&writer, str)`` with :c:func:" "`PyUnicodeWriter_WriteUTF8(writer, str) `." msgstr "" -#: whatsnew/3.14.rst:2756 deprecations/c-api-pending-removal-in-3.18.rst:40 +#: whatsnew/3.14.rst:3016 deprecations/c-api-pending-removal-in-3.18.rst:40 msgid ":c:func:`!_Py_HashPointer`: use :c:func:`Py_HashPointer`." msgstr "" -#: whatsnew/3.14.rst:2757 deprecations/c-api-pending-removal-in-3.18.rst:41 +#: whatsnew/3.14.rst:3017 deprecations/c-api-pending-removal-in-3.18.rst:41 msgid ":c:func:`!_Py_fopen_obj`: use :c:func:`Py_fopen`." msgstr "" -#: whatsnew/3.14.rst:2759 +#: whatsnew/3.14.rst:3019 msgid "" "The `pythoncapi-compat project`_ can be used to get these new public " "functions on Python 3.13 and older. (Contributed by Victor Stinner in :gh:" @@ -5279,6 +5700,13 @@ msgstr "" msgid ":c:func:`!_PyDict_Pop()`: :c:func:`PyDict_Pop`." msgstr "" +#: deprecations/c-api-pending-removal-in-3.18.rst:32 +msgid "" +":c:func:`!_PyUnicodeWriter_WriteASCIIString`: replace " +"``_PyUnicodeWriter_WriteASCIIString(&writer, str)`` with :c:func:" +"`PyUnicodeWriter_WriteUTF8(writer, str) `." +msgstr "" + #: deprecations/c-api-pending-removal-in-3.18.rst:38 msgid ":c:func:`!_PyUnicodeWriter_Prepare`: (no replacement)." msgstr "" @@ -5387,27 +5815,27 @@ msgstr "" msgid ":c:func:`PyThread_ReInitTLS`: Unneeded since Python 3.7." msgstr "" -#: whatsnew/3.14.rst:2775 +#: whatsnew/3.14.rst:3035 msgid "" "Creating :c:data:`immutable types ` with mutable " "bases was deprecated since 3.12 and now raises a :exc:`TypeError`." msgstr "" -#: whatsnew/3.14.rst:2778 +#: whatsnew/3.14.rst:3038 msgid "" "Remove ``PyDictObject.ma_version_tag`` member which was deprecated since " "Python 3.12. Use the :c:func:`PyDict_AddWatcher` API instead. (Contributed " "by Sam Gross in :gh:`124296`.)" msgstr "" -#: whatsnew/3.14.rst:2782 +#: whatsnew/3.14.rst:3042 msgid "" "Remove the private ``_Py_InitializeMain()`` function. It was a :term:" "`provisional API` added to Python 3.8 by :pep:`587`. (Contributed by Victor " "Stinner in :gh:`129033`.)" msgstr "" -#: whatsnew/3.14.rst:2786 +#: whatsnew/3.14.rst:3046 msgid "" "The undocumented APIs :c:macro:`!Py_C_RECURSION_LIMIT` and :c:member:`!" "PyThreadState.c_recursion_remaining`, added in 3.13, are removed without a " diff --git a/whatsnew/3.2.po b/whatsnew/3.2.po index fad90cb1..54464c2d 100644 --- a/whatsnew/3.2.po +++ b/whatsnew/3.2.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.3.po b/whatsnew/3.3.po index 3811991a..c27ac370 100644 --- a/whatsnew/3.3.po +++ b/whatsnew/3.3.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.4.po b/whatsnew/3.4.po index 71d04d90..73da895d 100644 --- a/whatsnew/3.4.po +++ b/whatsnew/3.4.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.5.po b/whatsnew/3.5.po index 71857bdb..d2fd0846 100644 --- a/whatsnew/3.5.po +++ b/whatsnew/3.5.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.6.po b/whatsnew/3.6.po index 86077560..4c64cde4 100644 --- a/whatsnew/3.6.po +++ b/whatsnew/3.6.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.7.po b/whatsnew/3.7.po index 549c7181..45f3bb61 100644 --- a/whatsnew/3.7.po +++ b/whatsnew/3.7.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.8.po b/whatsnew/3.8.po index ef2f5ca3..d2f933eb 100644 --- a/whatsnew/3.8.po +++ b/whatsnew/3.8.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/3.9.po b/whatsnew/3.9.po index f914e06d..974ccfff 100644 --- a/whatsnew/3.9.po +++ b/whatsnew/3.9.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/changelog.po b/whatsnew/changelog.po index 90ec123a..2e4216a6 100644 --- a/whatsnew/changelog.po +++ b/whatsnew/changelog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/whatsnew/index.po b/whatsnew/index.po index e1357a76..2625b696 100644 --- a/whatsnew/index.po +++ b/whatsnew/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-10 10:19+0300\n" +"POT-Creation-Date: 2025-06-19 17:36+0300\n" "PO-Revision-Date: 2025-05-20 15:48+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" From b1f4c186c569e60a37fd19302073e39f9f12cc67 Mon Sep 17 00:00:00 2001 From: skpanagiotis Date: Thu, 19 Jun 2025 17:53:09 +0300 Subject: [PATCH 2/5] Fix translation for building.po and mac.po --- extending/building.po | 13 +++++++++---- using/mac.po | 7 +++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/extending/building.po b/extending/building.po index 2c44a600..b60bf746 100644 --- a/extending/building.po +++ b/extending/building.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-06-19 17:36+0300\n" -"PO-Revision-Date: 2025-05-21 21:57+0300\n" +"PO-Revision-Date: 2025-06-19 17:57+0300\n" "Last-Translator: ALEXANDROS TZIORAS alextzioras23@gmail.com\n" "Language-Team: Language-Team: PyGreece \n" "Language: \n" @@ -22,18 +22,17 @@ msgid "Building C and C++ Extensions" msgstr "Κατασκευή Επεκτάσεων C και C++" #: extending/building.rst:9 -#, fuzzy msgid "" "A C extension for CPython is a shared library (for example, a ``.so`` file " "on Linux, ``.pyd`` on Windows), which exports an *initialization function*." msgstr "" "Μια επέκταση C για τη CPython είναι μια κοινόχρηστη βιβλιοθήκη (π.χ. ένα " -"αρχείο ``.so`` στο Linux, ή ``.pyd`` στα Windows), η οποία εξάγει μια " +"αρχείο ``.so`` στο Linux, ``.pyd`` στα Windows), η οποία εξάγει μια " "*συνάρτηση αρχικοποίησης*." #: extending/building.rst:12 msgid "See :ref:`extension-modules` for details." -msgstr "" +msgstr "Δείτε το :ref:`extension-modules` για περισσότερες λεπτομέρειες." #: extending/building.rst:21 msgid "Building C and C++ Extensions with setuptools" @@ -46,12 +45,18 @@ msgid "" "is Setuptools, whose documentation can be found at https://setuptools.pypa." "io/en/latest/setuptools.html." msgstr "" +"Η κατασκευή, η συσκευασία και η διανομή modules επέκτασης γίνεται καλύτερα με εργαλεία " +"τρίτων και είναι εκτός πεδίου εφαρμογής αυτού του εγγράφου. Ένα κατάλληλο εργαλείο " +"είναι το Setuptools, η τεκμηρίωση του οποίου βρίσκεται στη διεύθυνση " +"https://setuptools.pypa.io/en/latest/setuptools.html." #: extending/building.rst:29 msgid "" "The :mod:`distutils` module, which was included in the standard library " "until Python 3.12, is now maintained as part of Setuptools." msgstr "" +"Το module :mod:`distutils`, η οποία περιλαμβανόταν στην τυπική βιβλιοθήκη μέχρι την " +"Python 3.12, διατηρείται πλέον ως μέρος του Setuptools." #~ msgid "" #~ "To be importable, the shared library must be available on :envvar:" diff --git a/using/mac.po b/using/mac.po index bce68be9..e569046c 100644 --- a/using/mac.po +++ b/using/mac.po @@ -109,7 +109,6 @@ msgstr "" "macOS και να εμφανίσει το πρώτο από αρκετά βήματα παραθύρου εγκατάστασης." #: using/mac.rst:56 -#, fuzzy msgid "" "Clicking on the **Continue** button brings up the **Read Me** for this " "installer. Besides other important information, the **Read Me** documents " @@ -123,7 +122,8 @@ msgstr "" "καταγράφει ποια έκδοση Python πρόκειται να εγκατασταθεί και σε ποιες " "εκδόσεις macOS υποστηρίζεται. Ίσως χρειαστεί να κάνετε κύλιση για να " "διαβάσετε ολόκληρο το αρχείο. Από προεπιλογή, αυτό το **Read Me** θα " -"εγκατασταθεί επίσης στο |usemac_applications_folder_version| και θα είναι " +"εγκατασταθεί επίσης στο |" +"applications_python_version_literal| και θα είναι " "διαθέσιμο για ανάγνωση οποιαδήποτε στιγμή." #: using/mac.rst:64 @@ -150,7 +150,6 @@ msgstr "" "λειτουργιών εγκατάστασης είναι κατάλληλο." #: using/mac.rst:76 -#, fuzzy msgid "" "By pressing the **Customize** button, you can choose to omit or select " "certain package components of the installer. Click on each package name to " @@ -160,7 +159,7 @@ msgstr "" "Πατώντας το κουμπί **Customize**, μπορείτε να επιλέξετε να παραλείψετε ή να " "επιλέξετε ορισμένα πακέτα του εγκαταστάτη. Κάντε κλικ σε κάθε όνομα πακέτου " "για να δείτε μια περιγραφή του τι εγκαθιστά. Για να εγκαταστήσετε επίσης " -"υποστήριξη για την προαιρετική πειραματική δυνατότητα χωρίς νήματα, δείτε :" +"υποστήριξη για την προαιρετική δυνατότητα χωρίς νήματα, δείτε :" "ref:`install-freethreaded-macos`." #: using/mac.rst:84 From 34c9cc1d22c89fa27f76b480289d813825dc9dc9 Mon Sep 17 00:00:00 2001 From: skpanagiotis Date: Thu, 19 Jun 2025 21:52:53 +0300 Subject: [PATCH 3/5] Update main.txt --- dictionaries/main.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dictionaries/main.txt b/dictionaries/main.txt index 3e136e7d..409094c3 100644 --- a/dictionaries/main.txt +++ b/dictionaries/main.txt @@ -37,6 +37,7 @@ Centrum Changelog Cheese Classes +Clause Cleese Cocoa Command @@ -133,6 +134,7 @@ Laboratories Letter License Licensee +Lin Linux Lisp Literals @@ -149,6 +151,7 @@ Ltd Lu Lundh M +Ma Mac Macintosh Mailbox @@ -269,6 +272,7 @@ Tutorial Twisted U Ulf +Unbounded Unices Union United @@ -281,6 +285,7 @@ Windows Yes Zen Zope +Zstandard a abc abcdef @@ -489,6 +494,7 @@ crt cubes currency current +cut d data date @@ -546,6 +552,7 @@ documentation does doesn done +dot dots dotted doubles @@ -1430,6 +1437,7 @@ zlib αρχείο αρχειοθετημένη αρχικοποιήθηκε +αρχικοποιηθούν αρχικοποιημένες αρχικοποιημένο αρχικοποιητή @@ -1493,6 +1501,7 @@ zlib επικαλεί επικαλυπτόμενες επικαλυπτόμενων +επιστρεφόμενης επιστρεφόμενος εσωκλειόμενη εσωκλειόμενων @@ -1548,6 +1557,7 @@ zlib μπορούν να νεοδεσμευμένο +νηματοποποίησης ο οδηγίες οδηγό @@ -1574,6 +1584,7 @@ zlib παραμετροποιημένη παραμετροποιημένο παραμετροποιούν +παύλων πεζογράμμιση περιέκτης περιέχει From db7cc0f7b1e393de2cfe073e4a6eefe04f174299 Mon Sep 17 00:00:00 2001 From: skpanagiotis Date: Thu, 19 Jun 2025 21:53:01 +0300 Subject: [PATCH 4/5] Fix translation --- bugs.po | 4 +- copyright.po | 5 +- extending/building.po | 12 +-- extending/index.po | 11 +-- faq/extending.po | 4 + glossary.po | 7 +- library/stdtypes.po | 83 ++++++++++++------ license.po | 18 ++-- reference/grammar.po | 43 ++++++---- reference/introduction.po | 105 ++++++++++++++++------- sphinx.po | 24 ++---- tutorial/controlflow.po | 7 +- tutorial/index.po | 9 +- tutorial/introduction.po | 10 +-- tutorial/modules.po | 7 +- using/mac.po | 171 ++++++++++++++++++-------------------- 16 files changed, 300 insertions(+), 220 deletions(-) diff --git a/bugs.po b/bugs.po index a81a8b80..6d07837f 100644 --- a/bugs.po +++ b/bugs.po @@ -47,7 +47,6 @@ msgid "Documentation bugs" msgstr "Σφάλματα Τεκμηρίωσης" #: bugs.rst:18 -#, fuzzy msgid "" "If you find a bug in this documentation or would like to propose an " "improvement, please submit a bug report on the :ref:`issue tracker `. Εάν έχετε μια πρόταση για το πώς να το διορθώσετε, συμπεριλάβετε " "και αυτήν." @@ -68,7 +67,6 @@ msgstr "" "την τεκμηρίωση `_." #: bugs.rst:25 -#, fuzzy msgid "" "If you find a bug in the theme (HTML / CSS / JavaScript) of the " "documentation, please submit a bug report on the `python-doc-theme issue " diff --git a/copyright.po b/copyright.po index 4cb1244b..70f78b59 100644 --- a/copyright.po +++ b/copyright.po @@ -27,11 +27,8 @@ msgid "Python and this documentation is:" msgstr "Η Python και αυτή η τεκμηρίωση είναι:" #: copyright.rst:7 -#, fuzzy msgid "Copyright © 2001 Python Software Foundation. All rights reserved." -msgstr "" -"Copyright © 2001-2023 Python Software Foundation. Όλα τα δικαιώματα " -"διατηρούνται." +msgstr "Copyright © 2001 Python Software Foundation. All rights reserved." #: copyright.rst:9 msgid "Copyright © 2000 BeOpen.com. All rights reserved." diff --git a/extending/building.po b/extending/building.po index b60bf746..9b64153d 100644 --- a/extending/building.po +++ b/extending/building.po @@ -45,18 +45,18 @@ msgid "" "is Setuptools, whose documentation can be found at https://setuptools.pypa." "io/en/latest/setuptools.html." msgstr "" -"Η κατασκευή, η συσκευασία και η διανομή modules επέκτασης γίνεται καλύτερα με εργαλεία " -"τρίτων και είναι εκτός πεδίου εφαρμογής αυτού του εγγράφου. Ένα κατάλληλο εργαλείο " -"είναι το Setuptools, η τεκμηρίωση του οποίου βρίσκεται στη διεύθυνση " -"https://setuptools.pypa.io/en/latest/setuptools.html." +"Η κατασκευή, η συσκευασία και η διανομή modules επέκτασης γίνεται καλύτερα " +"με εργαλεία τρίτων και είναι εκτός πεδίου εφαρμογής αυτού του εγγράφου. Ένα " +"κατάλληλο εργαλείο είναι το Setuptools, η τεκμηρίωση του οποίου βρίσκεται " +"στη διεύθυνση https://setuptools.pypa.io/en/latest/setuptools.html." #: extending/building.rst:29 msgid "" "The :mod:`distutils` module, which was included in the standard library " "until Python 3.12, is now maintained as part of Setuptools." msgstr "" -"Το module :mod:`distutils`, η οποία περιλαμβανόταν στην τυπική βιβλιοθήκη μέχρι την " -"Python 3.12, διατηρείται πλέον ως μέρος του Setuptools." +"Το module :mod:`distutils`, η οποία περιλαμβανόταν στην τυπική βιβλιοθήκη " +"μέχρι την Python 3.12, διατηρείται πλέον ως μέρος του Setuptools." #~ msgid "" #~ "To be importable, the shared library must be available on :envvar:" diff --git a/extending/index.po b/extending/index.po index d46b7e5d..aadbba01 100644 --- a/extending/index.po +++ b/extending/index.po @@ -69,7 +69,6 @@ msgid "Recommended third party tools" msgstr "Προτεινόμενα εργαλεία τρίτων" #: extending/index.rst:28 -#, fuzzy msgid "" "This guide only covers the basic tools for creating extensions provided as " "part of this version of CPython. Some :ref:`third party tools ` " @@ -77,11 +76,9 @@ msgid "" "extensions for Python." msgstr "" "Αυτός ο οδηγός καλύπτει μόνο τα βασικά εργαλεία για τη δημιουργία επεκτάσεων " -"που παρέχονται ως μέρος αυτής της έκδοσης της CPython. Εργαλεία τρίτων όπως " -"τα `Cython `_, `cffi `_, " -"`SWIG `_ και `Numba `_ " -"προσφέρουν τόσο απλούστερες όσο και πιο εξελιγμένες προσεγγίσεις για τη " -"δημιουργία επεκτάσεων σε C και C++ για την Python." +"που παρέχονται ως μέρος αυτής της έκδοσης της CPython. Ορισμένα :ref:`third " +"party tools ` προσφέρουν απλούστερες και πιο εξελιγμένες " +"προσεγγίσεις για τη δημιουργία επεκτάσεων C και C++ για Python." #: extending/index.rst:35 msgid "Creating extensions without third party tools" @@ -101,7 +98,7 @@ msgstr "" #: extending/index.rst:44 msgid ":pep:`489` -- Multi-phase extension module initialization" -msgstr "" +msgstr ":pep:`489` -- Αρχικοποίηση πολυφασικής μονάδας επέκταση" #: extending/index.rst:57 msgid "Embedding the CPython runtime in a larger application" diff --git a/faq/extending.po b/faq/extending.po index e8cc6a55..16d83a9f 100644 --- a/faq/extending.po +++ b/faq/extending.po @@ -74,6 +74,10 @@ msgid "" "` offer both simpler and more sophisticated approaches to " "creating C and C++ extensions for Python." msgstr "" +"Υπάρχουν αρκετές εναλλακτικές λύσεις για τη σύνταξη των δικών σας επεκτάσεων " +"C, ανάλογα με το τι προσπαθείτε να κάνετε. Το :ref:`Recommended third party " +"tools ` προσφέρουν απλούστερες και πιο εξελιγμένες προσεγγίσεις " +"για τη δημιουργία επεκτάσεων C και C++ για Python." #: faq/extending.rst:46 msgid "How can I execute arbitrary Python statements from C?" diff --git a/glossary.po b/glossary.po index 7bdcfad2..70fa3926 100644 --- a/glossary.po +++ b/glossary.po @@ -907,7 +907,7 @@ msgstr "" #: glossary.rst:357 msgid "cyclic isolate" -msgstr "" +msgstr "κυκλική απομόνωση" #: glossary.rst:359 msgid "" @@ -917,6 +917,11 @@ msgid "" "these groups and break the reference cycles so that the memory can be " "reclaimed." msgstr "" +"Μια υποομάδα ενός ή περισσότερων αντικειμένων που αναφέρονται μεταξύ τους " +"σχηματίζοντας έναν κύκλο αναφορών, αλλά δεν αναφέρονται από άλλα " +"αντικείμενα εκτός της ομάδας. Ο σκοπός του :term:`cyclic garbage collector " +"` είναι να εντοπίζει αυτές τις ομάδες και να σπάει του " +"κύκλος αναφορών ώστε να μπορεί να αποδεσμευτεί η μνήμη." #: glossary.rst:363 msgid "decorator" diff --git a/library/stdtypes.po b/library/stdtypes.po index 52ab0189..6ad2ac8b 100644 --- a/library/stdtypes.po +++ b/library/stdtypes.po @@ -1899,9 +1899,8 @@ msgid "*i*\\ th item of *s*, origin 0" msgstr "*i*\\ ο στοιχείο του *s*, αρχή το 0" #: library/stdtypes.rst:1021 -#, fuzzy msgid "(3)(9)" -msgstr "(3)(4)" +msgstr "(3)(9)" #: library/stdtypes.rst:1023 msgid "``s[i:j]``" @@ -2217,6 +2216,8 @@ msgstr "" #: library/stdtypes.rst:1154 msgid "An :exc:`IndexError` is raised if *i* is outside the sequence range." msgstr "" +"Μια :exc:`IndexError` γίνεται raise εάν το *i* βρίσκεται εκτός του εύρους " +"ακολουθίας." #: library/stdtypes.rst:1160 msgid "Immutable Sequence Types" @@ -2287,14 +2288,12 @@ msgid "item *i* of *s* is replaced by *x*" msgstr "το στοιχείο *i* του *s* αντικαθίσταται από το *x*" #: library/stdtypes.rst:1220 -#, fuzzy msgid "``del s[i]``" -msgstr "``del s[i:j]``" +msgstr "``del s[i]``" #: library/stdtypes.rst:1220 -#, fuzzy msgid "removes item *i* of *s*" -msgstr "μεγαλύτερο αντικείμενο του *s*" +msgstr "αφαιρεί το στοιχείο *i* από το *s*" #: library/stdtypes.rst:1222 msgid "``s[i:j] = t``" @@ -3609,16 +3608,15 @@ msgstr "" "Unicode16.0.0/core-spec/chapter-3/#G33992>`__." #: library/stdtypes.rst:1794 -#, fuzzy msgid "" "Return centered in a string of length *width*. Padding is done using the " "specified *fillchar* (default is an ASCII space). The original string is " "returned if *width* is less than or equal to ``len(s)``. For example::" msgstr "" -"Επιστρέφει ένα κεντραρισμένο σε μια συμβολοσειρά (string) μήκους *πλάτος*. " -"Το padding γίνεται με τη χρήση του καθορισμένου *fillchar* (το default είναι " +"Επιστρέφει ένα κεντραρισμένο σε μια συμβολοσειρά (string) μήκους *width*. Το " +"padding γίνεται με τη χρήση του καθορισμένου *fillchar* (το default είναι " "ένα κενό ASCII). Η αρχική συμβολοσειρά επιστρέφεται εάν το *width* είναι " -"μικρότερο ή ίσο με το ``len(s)``." +"μικρότερο ή ίσο με το ``len(s)``. Για παράδειγμα::" #: library/stdtypes.rst:1798 msgid "" @@ -3629,6 +3627,12 @@ msgid "" ">>> 'Python'.center(4)\n" "'Python'" msgstr "" +">>> 'Python'.center(10)\n" +"' Python '\n" +">>> 'Python'.center(10, '-')\n" +"'--Python--'\n" +">>> 'Python'.center(4)\n" +"'Python'" #: library/stdtypes.rst:1808 msgid "" @@ -3641,13 +3645,13 @@ msgstr "" "*start* και *end* ερμηνεύονται όπως στο slice notation." #: library/stdtypes.rst:1812 -#, fuzzy msgid "" "If *sub* is empty, returns the number of empty strings between characters " "which is the length of the string plus one. For example::" msgstr "" "Αν το *sub* είναι κενό, επιστρέφει τον αριθμό των κενών συμβολοσειρών " -"(strings) μεταξύ των χαρακτήρων που είναι το μήκος της συμβολοσειράς συν ένα." +"(strings) μεταξύ των χαρακτήρων που είναι το μήκος της συμβολοσειράς συν " +"ένα. Για παράδειγμα::" #: library/stdtypes.rst:1815 msgid "" @@ -3662,6 +3666,16 @@ msgid "" ">>> 'spam, spam, spam'.count('')\n" "17" msgstr "" +">>> 'spam, spam, spam'.count('spam')\n" +"3\n" +">>> 'spam, spam, spam'.count('spam', 5)\n" +"2\n" +">>> 'spam, spam, spam'.count('spam', 5, 10)\n" +"1\n" +">>> 'spam, spam, spam'.count('eggs')\n" +"0\n" +">>> 'spam, spam, spam'.count('')\n" +"17" #: library/stdtypes.rst:1828 msgid "Return the string encoded to :class:`bytes`." @@ -3691,7 +3705,6 @@ msgstr "" "`error-handlers` για λεπτομέρειες." #: library/stdtypes.rst:1840 -#, fuzzy msgid "" "For performance reasons, the value of *errors* is not checked for validity " "unless an encoding error actually occurs, :ref:`devmode` is enabled or a :" @@ -3700,7 +3713,7 @@ msgstr "" "Για λόγους απόδοσης, η τιμή των *errors* δεν ελέγχεται ως προς την " "εγκυρότητα εκτός αν όντως προκύψει σφάλμα κωδικοποίησης, αν το :ref:" "`devmode` είναι ενεργοποιημένο ή αν ένα :ref:`debug build ` " -"χρησιμοποιείται." +"χρησιμοποιείται. Για παράδειγμα::" #: library/stdtypes.rst:1846 msgid "" @@ -3710,6 +3723,11 @@ msgid "" ">>> encoded_str_to_bytes\n" "b'Python'" msgstr "" +">>> encoded_str_to_bytes = 'Python'.encode()\n" +">>> type(encoded_str_to_bytes)\n" +"\n" +">>> encoded_str_to_bytes\n" +"b'Python'" #: library/stdtypes.rst:3221 msgid "Added support for keyword arguments." @@ -3724,7 +3742,6 @@ msgstr "" "`debug mode `." #: library/stdtypes.rst:1863 -#, fuzzy msgid "" "Return ``True`` if the string ends with the specified *suffix*, otherwise " "return ``False``. *suffix* can also be a tuple of suffixes to look for. " @@ -3736,7 +3753,8 @@ msgstr "" "*suffix*, αλλιώς επιστρέφει ``False``. Το *suffix* μπορεί επίσης να είναι " "ένα tuple (πλειάδα) από επιθέματα που πρέπει να αναζητηθούν. Με το " "προαιρετικό *start*, το τεστ αρχίζει από αυτή τη θέση. Με το προαιρετικό " -"*end*, η σύγκριση σταματά σε αυτή τη θέση." +"*end*, η σύγκριση σταματά σε αυτή τη θέση. Χρησιμοποιώντας *start* και *end* " +"είναι ισοδύναμο με την ``str[start:end].endswith(suffix)``. Για παράδειγμα::" #: library/stdtypes.rst:1869 msgid "" @@ -3749,13 +3767,20 @@ msgid "" ">>> 'Python is amazing'.endswith('is', 0, 9)\n" "True" msgstr "" +">>> 'Python'.endswith('on')\n" +"True\n" +">>> 'a tuple of suffixes'.endswith(('at', 'in'))\n" +"False\n" +">>> 'a tuple of suffixes'.endswith(('at', 'es'))\n" +"True\n" +">>> 'Python is amazing'.endswith('is', 0, 9)\n" +"True" #: library/stdtypes.rst:1878 msgid "See also :meth:`startswith` and :meth:`removesuffix`." -msgstr "" +msgstr "Δείτε επίσης :meth:`startswith` και :meth:`removesuffix`." #: library/stdtypes.rst:1883 -#, fuzzy msgid "" "Return a copy of the string where all tab characters are replaced by one or " "more spaces, depending on the current column and the given tab size. Tab " @@ -3782,10 +3807,9 @@ msgstr "" "γραμμή (``\\n``) ή return (``\\r``), αντιγράφεται και η τρέχουσα στήλη " "επαναφέρεται στο μηδέν. Οποιοσδήποτε άλλος χαρακτήρας αντιγράφεται " "αμετάβλητος και η τρέχουσα στήλη αυξάνεται κατά ένα, ανεξάρτητα από τον " -"τρόπο αναπαράστασης του χαρακτήρα όταν τυπώνεται." +"τρόπο αναπαράστασης του χαρακτήρα όταν τυπώνεται. Για παράδειγμα::" #: library/stdtypes.rst:1896 -#, fuzzy msgid "" ">>> '01\\t012\\t0123\\t01234'.expandtabs()\n" "'01 012 0123 01234'\n" @@ -3795,10 +3819,13 @@ msgid "" "01 012\n" "0123 01234" msgstr "" -">>> b'01\\t012\\t0123\\t01234'.expandtabs()\n" -"b'01 012 0123 01234'\n" -">>> b'01\\t012\\t0123\\t01234'.expandtabs(4)\n" -"b'01 012 0123 01234'" +">>> '01\\t012\\t0123\\t01234'.expandtabs()\n" +"'01 012 0123 01234'\n" +">>> '01\\t012\\t0123\\t01234'.expandtabs(4)\n" +"'01 012 0123 01234'\n" +">>> print('01\\t012\\n0123\\t01234'.expandtabs(4))\n" +"01 012\n" +"0123 01234" #: library/stdtypes.rst:1907 msgid "" @@ -4513,6 +4540,8 @@ msgid "" "If *sep* is not specified or is ``None`` and *maxsplit* is ``0``, only " "leading runs of consecutive whitespace are considered." msgstr "" +"Εάν δεν καθοριστεί *sep* ή είναι ``None`` και το *maxsplit* είναι ``0``, " +"λαμβάνοντας υπόψη μόνο οι πρώτες εκτελέσεις διαδοχικού κενού διαστήματος." #: library/stdtypes.rst:2321 msgid "" @@ -4523,6 +4552,12 @@ msgid "" ">>> \" foo \".split(maxsplit=0)\n" "['foo ']" msgstr "" +">>> \"\".split(None, 0)\n" +"[]\n" +">>> \" \".split(None, 0)\n" +"[]\n" +">>> \" foo \".split(maxsplit=0)\n" +"['foo ']" #: library/stdtypes.rst:2334 msgid "" diff --git a/license.po b/license.po index a9f7f59a..a97b1638 100644 --- a/license.po +++ b/license.po @@ -289,7 +289,6 @@ msgid "PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2" msgstr "PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2" #: license.rst:98 -#, fuzzy msgid "" "1. This LICENSE AGREEMENT is between the Python Software Foundation " "(\"PSF\"), and\n" @@ -2347,11 +2346,11 @@ msgstr "" #: license.rst:1051 msgid "mimalloc" -msgstr "" +msgstr "mimalloc" #: license.rst:1053 msgid "MIT License::" -msgstr "" +msgstr "MIT Άδεια::" #: license.rst:1055 msgid "" @@ -2469,7 +2468,7 @@ msgstr "" #: license.rst:1106 msgid "Global Unbounded Sequences (GUS)" -msgstr "" +msgstr "Καθολικές Απεριόριστες Ακολουθίες (ΚΑΑ)" #: license.rst:1108 msgid "" @@ -2478,6 +2477,10 @@ msgid "" "com/freebsd/freebsd-src/blob/main/sys/kern/subr_smr.c>`_. The file is " "distributed under the 2-Clause BSD License::" msgstr "" +"Το αρχείο :file:`Python/qsbr.c` είναι προσαρμοσμένο από το σύστημα ασφαλούς " +"ανάκτησης μνήμης \"Global Unbounded Sequences\" του FreeBSD, που υλοποιείται " +"στο `subr_smr.c `_. Το αρχείο διανέμεται υπό την Άδεια 2-Clause BSD::" #: license.rst:1113 msgid "" @@ -2529,7 +2532,7 @@ msgstr "" #: license.rst:1138 msgid "Zstandard bindings" -msgstr "" +msgstr "Δεσμεύσεις Zstandard" #: license.rst:1140 msgid "" @@ -2538,9 +2541,12 @@ msgid "" "pyzstd/>`_, copyright Ma Lin and contributors. The pyzstd code is " "distributed under the 3-Clause BSD License::" msgstr "" +"Οι δεσμεύσεις Zstandard στα :file:`Modules/_zstd` και :file:`Lib/compression/" +"zstd` βασίζονται σε κώδικα από τη βιβλιοθήκη `pyzstd library `_, πνευματικής ιδιοκτησίας του Ma Lin και των " +"συνεργατών του. Ο κώδικας της pyzstd διανέμεται υπό την άδεια 3-Clause BSD." #: license.rst:1145 -#, fuzzy msgid "" "Copyright (c) 2020-present, Ma Lin and contributors.\n" "All rights reserved.\n" diff --git a/reference/grammar.po b/reference/grammar.po index 5905f6d3..23d14167 100644 --- a/reference/grammar.po +++ b/reference/grammar.po @@ -38,23 +38,32 @@ msgid "" "described in the :ref:`notation ` section, except for a few extra " "complications:" msgstr "" +"Η σημειογραφία που χρησιμοποιείται εδώ είναι η ίδια με τα προηγούμενα " +"έγγραφα και περιγράφεται στην ενότητα :ref:`notation `, εκτός από " +"μερικές επιπλέον επιπλοκές:" #: reference/grammar.rst:15 msgid "" "``&e``: a positive lookahead (that is, ``e`` is required to match but not " "consumed)" msgstr "" +"``&e``: μια θετική προοπτική (δηλαδή, το ``e`` απαιτείται να ταιριάζει αλλά " +"δεν καταναλώνεται)" #: reference/grammar.rst:17 msgid "" "``!e``: a negative lookahead (that is, ``e`` is required *not* to match)" msgstr "" +"``!e``: μια αρνητική προοπτική (δηλαδή, το ``e`` απαιτείται *να μην* " +"ταιριάζει)" #: reference/grammar.rst:18 msgid "" "``~`` (\"cut\"): commit to the current alternative and fail the rule even if " "this fails to parse" msgstr "" +"``~`` (\"cut\"): ολοκλήρωση της τρέχουσας εναλλακτικής λύσης και αποτυχία " +"του κανόνα ακόμα κι αν αυτή αποτύχει να αναλυθεί" #: reference/grammar.rst:21 #, fuzzy @@ -2075,12 +2084,12 @@ msgstr "" "statements[asdl_stmt_seq*]: a=statement+ { _PyPegen_register_stmts(p, " "(asdl_stmt_seq*)_PyPegen_seq_flatten(p, a)) }\n" "\n" -"statement[asdl_stmt_seq*]: \n" -" | a=compound_stmt { (asdl_stmt_seq*)_PyPegen_singleton_seq(p, a) } \n" +"statement[asdl_stmt_seq*]:\n" +" | a=compound_stmt { (asdl_stmt_seq*)_PyPegen_singleton_seq(p, a) }\n" " | a[asdl_stmt_seq*]=simple_stmts { a }\n" "\n" "single_compound_stmt[asdl_stmt_seq*]:\n" -" | a=compound_stmt { \n" +" | a=compound_stmt {\n" " _PyPegen_register_stmts(p, (asdl_stmt_seq*)_PyPegen_singleton_seq(p, " "a)) }\n" "\n" @@ -2491,9 +2500,9 @@ msgstr "" " _PyAST_ExceptHandler(e, ((expr_ty) t)->v.Name.id, b, EXTRA) }\n" " | 'except' e=expressions ':' b=block {\n" " CHECK_VERSION(\n" -" excepthandler_ty, \n" -" 14, \n" -" \"except expressions without parentheses are\", \n" +" excepthandler_ty,\n" +" 14,\n" +" \"except expressions without parentheses are\",\n" " _PyAST_ExceptHandler(e, NULL, b, EXTRA)) }\n" " | 'except' ':' b=block { _PyAST_ExceptHandler(NULL, NULL, b, EXTRA) }\n" " | invalid_except_stmt\n" @@ -2505,9 +2514,9 @@ msgstr "" " _PyAST_ExceptHandler(e, ((expr_ty) t)->v.Name.id, b, EXTRA) }\n" " | 'except' '*' e=expressions ':' b=block {\n" " CHECK_VERSION(\n" -" excepthandler_ty, \n" -" 14, \n" -" \"except expressions without parentheses are\", \n" +" excepthandler_ty,\n" +" 14,\n" +" \"except expressions without parentheses are\",\n" " _PyAST_ExceptHandler(e, NULL, b, EXTRA)) }\n" " | invalid_except_star_stmt\n" "finally_block[asdl_stmt_seq*]:\n" @@ -3088,11 +3097,11 @@ msgstr "" " | tstring_replacement_field\n" " | t=TSTRING_MIDDLE { _PyPegen_constant_from_token(p, t) }\n" "tstring[expr_ty] (memo):\n" -" | a=TSTRING_START b=tstring_middle* c=TSTRING_END { \n" +" | a=TSTRING_START b=tstring_middle* c=TSTRING_END {\n" " CHECK_VERSION(\n" -" expr_ty, \n" -" 14, \n" -" \"t-strings are\", \n" +" expr_ty,\n" +" 14,\n" +" \"t-strings are\",\n" " _PyPegen_template_str(p, a, (asdl_expr_seq*)b, c)) }\n" "\n" "string[expr_ty]: s[Token*]=STRING { _PyPegen_constant_from_string(p, s) }\n" @@ -3609,12 +3618,12 @@ msgstr "" "after 'import'\") }\n" "invalid_dotted_as_name:\n" " | dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) a=expression {\n" -" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a,\n" " \"cannot use %s as import target\", " "_PyPegen_get_expr_name(a)) }\n" "invalid_import_from_as_name:\n" " | NAME 'as' !(NAME (',' | ')' | NEWLINE)) a=expression {\n" -" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, \n" +" RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a,\n" " \"cannot use %s as import target\", " "_PyPegen_get_expr_name(a)) }\n" "\n" @@ -3662,7 +3671,7 @@ msgstr "" " | a='except' expression ['as' NAME ] NEWLINE " "{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" " | a='except' NEWLINE { RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" -" | 'except' expression 'as' a=expression {\n" +" | 'except' expression 'as' a=expression ':' block {\n" " RAISE_SYNTAX_ERROR_KNOWN_LOCATION(\n" " a, \"cannot use except statement with %s\", " "_PyPegen_get_expr_name(a)) }\n" @@ -3674,7 +3683,7 @@ msgstr "" "{ RAISE_SYNTAX_ERROR(\"expected ':'\") }\n" " | a='except' '*' (NEWLINE | ':') { RAISE_SYNTAX_ERROR(\"expected one or " "more exception types\") }\n" -" | 'except' '*' expression 'as' a=expression {\n" +" | 'except' '*' expression 'as' a=expression ':' block {\n" " RAISE_SYNTAX_ERROR_KNOWN_LOCATION(\n" " a, \"cannot use except* statement with %s\", " "_PyPegen_get_expr_name(a)) }\n" diff --git a/reference/introduction.po b/reference/introduction.po index 22e2cbb2..9b6e5573 100644 --- a/reference/introduction.po +++ b/reference/introduction.po @@ -216,22 +216,18 @@ msgid "Notation" msgstr "Σημειογραφία" #: reference/introduction.rst:93 -#, fuzzy msgid "" "The descriptions of lexical analysis and syntax use a grammar notation that " "is a mixture of `EBNF `_ and `PEG `_. For example:" msgstr "" -"Οι περιγραφές στην λεξιλογική ανάλυση και σύνταξη χρησιμοποιούν έναν " -"τροποποιημένο γραμματικό συμβολισμό στην `μορφή Μπάκους-Νάουρ (BNF) " -"`_. Αυτό χρησιμοποιεί τον ακόλουθο τρόπο " -"ορισμού:" +"Οι περιγραφές στην λεξιλογική ανάλυση και σύνταξη χρησιμοποιούν μια " +"γραμματική σημειογραφία που είναι μείγμα των `EBNF `_ και `PEG `_. Για παράδειγμα:" #: reference/introduction.rst:106 -#, fuzzy msgid "" "In this example, the first line says that a ``name`` is a ``letter`` " "followed by a sequence of zero or more ``letter``\\ s, ``digit``\\ s, and " @@ -239,12 +235,12 @@ msgid "" "through ``'z'`` and ``A`` through ``Z``; a ``digit`` is a single character " "from ``0`` to ``9``." msgstr "" -"Η πρώτη γραμμή λέει ότι ένα ``name`` είναι ένα ``lc_letter`` ακολουθούμενο " -"από μία σειρά από μηδέν ή περισσότερα ``lc_letter``\\ s και κάτω παύλες. Ένα " -"``lc_letter`` με τη σειρά του είναι οποιοσδήποτε από τους μονούς χαρακτήρες " -"``'a'`` έως ``'z'``. (Αυτός ο κανόνας στην πραγματικότητα εφαρμόζεται για τα " -"ονόματα που ορίζονται στους λεξιλογικούς και γραμματικούς κανόνες αυτού του " -"εγγράφου.)" +"Σε αυτό το παράδειγμα, η πρώτη γραμμή αναφέρει ότι ένα ``name`` είναι ένα " +"``letter`` ακολουθούμενο από μια ακολουθία μηδενός ή περισσότερων " +"``γραμμάτος``\\ ων, ``ψηφίο``\\ α, και κάτω παύλων. Ένα ``letter`` με τη " +"σειρά του είναι οποιοσδήποτε από τους μεμονωμένους χαρακτήρες ``'a'`` έως " +"``'z'`` και ``A`` έως ``Z``∙ ένα ``digit`` είναι ένας μεμονωμένος χαρακτήρας " +"από ``0`` έως ``9``." #: reference/introduction.rst:112 msgid "" @@ -252,18 +248,25 @@ msgid "" "defined) followed by a colon, ``:``. The definition to the right of the " "colon uses the following syntax elements:" msgstr "" +"Κάθε κανόνας ξεκινά με ένα όνομα (το οποίο προσδιορίζει τον κανόνα που " +"ορίζεται) ακολουθούμενο από άνω κάτω τελεία, ``:``. Ο ορισμός στα δεξιά της " +"άνω και κάτω τελείας χρησιμοποιεί τα ακόλουθα στοιχεία σύνταξης:" #: reference/introduction.rst:116 msgid "" "``name``: A name refers to another rule. Where possible, it is a link to the " "rule's definition." msgstr "" +"``name``: Ένα όνομα αναφέρεται σε έναν άλλο κανόνα, Όπου είναι δυνατόν, " +"είναι ένας σύνδεσμος προς τον ορισμό του κανόνα." #: reference/introduction.rst:119 msgid "" "``TOKEN``: An uppercase name refers to a :term:`token`. For the purposes of " "grammar definitions, tokens are the same as rules." msgstr "" +"``TOKEN``: Ένα κεφαλαίο όνομα αναφέρεται σε ένα :term:`token`. Για τους " +"σκοπούς των γραμματικών ορισμών, τα tokens είναι το ίδιο με τους κανόνες." #: reference/introduction.rst:122 msgid "" @@ -271,16 +274,23 @@ msgid "" "literally (without the quotes). The type of quote is chosen according to the " "meaning of ``text``:" msgstr "" +"``\"text\"``, ``'text'``: Το κείμενο σε μονά ή διπλά εισαγωγικά πρέπει να " +"ταιριάζει κυριολεκτικά (χωρίς τα εισαγωγικά). Ο τύπος του εισαγωγικού " +"επιλέγεται ανάλογα με τη σημασία του ``text``:" #: reference/introduction.rst:126 msgid "``'if'``: A name in single quotes denotes a :ref:`keyword `." msgstr "" +"``'if'``: Ένα όνομα σε μονά εισαγωγικά υποδηλώνει μια :ref:`keyword " +"`." #: reference/introduction.rst:127 msgid "" "``\"case\"``: A name in double quotes denotes a :ref:`soft-keyword `." msgstr "" +"``\"case\"``: Ένα όνομα σε διπλά εισαγωγικά υποδηλώνει ένα :ref:`soft-" +"keyword `." #: reference/introduction.rst:129 msgid "" @@ -288,12 +298,17 @@ msgid "" "OP` token, that is, a :ref:`delimiter ` or :ref:`operator " "`." msgstr "" +"``'@'``: Ένα σύμβολο που δεν περιέχει γράμμα σε μονά εισαγωγικά υποδηλώνει " +"ένα :py:data:`~token.OP` token, δηλαδή, ένα :ref:`delimiter ` ή :" +"ref:`operator `." #: reference/introduction.rst:133 msgid "" "``e1 e2``: Items separated only by whitespace denote a sequence. Here, " "``e1`` must be followed by ``e2``." msgstr "" +"``e1 e2``: Τα στοιχεία που χωρίζονται μόνο με κενό υποδηλώνουν μια " +"ακολουθία. Εδώ, το ``e1`` πρέπει να ακολουθείται από το ``e2``." #: reference/introduction.rst:135 msgid "" @@ -302,30 +317,41 @@ msgid "" "traditional PEG grammars, this is written as a slash, ``/``, rather than a " "vertical bar. See :pep:`617` for more background and details." msgstr "" +"``e1 | e2``: Χρησιμοποιείται μια κάθετη γραμμή για τον διαχωρισμό των " +"εναλλακτικών λύσεων. Υποδηλώνει την \"διατεταγμένη επιλογή\" του PEG: εάν το " +"``e1`` ταιριάζει, το ``e2`` δεν λαμβάνεται υπόψη. Στις παραδοσιακές " +"γραμματικές του PEG, αυτό γράφεται ως κάθετος, ``/``, αντί για κάθετη " +"γραμμή. Δείτε το :pep:`617` για περισσότερες πληροφορίες και λεπτομέρειες." #: reference/introduction.rst:141 msgid "``e*``: A star means zero or more repetitions of the preceding item." msgstr "" +"``e*``: Ένας αστερίσκος σημαίνει μηδέν ή περισσότερες επαναλήψεις του " +"προηγούμενοι στοιχείου." #: reference/introduction.rst:142 msgid "``e+``: Likewise, a plus means one or more repetitions." -msgstr "" +msgstr "``e+``: Ομοίως, ένα συν σημαίνει μία ή περισσότερες επαναλήψεις." #: reference/introduction.rst:143 msgid "" "``[e]``: A phrase enclosed in square brackets means zero or one occurrences. " "In other words, the enclosed phrase is optional." msgstr "" +"``[e]``: Μια φράση που περικλείεται σε αγκύλες σημαίνει μηδέν ή μία " +"εμφάνιση. Με άλλα λόγια, η φράση που περικλείεται είναι προαιρετική." #: reference/introduction.rst:145 msgid "" "``e?``: A question mark has exactly the same meaning as square brackets: the " "preceding item is optional." msgstr "" +"``e?``: Ένα ερωτηματικό έχει ακριβώς την ίδια σημασία με τις αγκύλες: το " +"προηγούμενο στοιχείο είναι προαιρετικό." #: reference/introduction.rst:147 msgid "``(e)``: Parentheses are used for grouping." -msgstr "" +msgstr "``(e)``: Οι παρενθέσεις χρησιμοποιούνται για ομαδοποίηση." #: reference/introduction.rst:148 msgid "" @@ -334,6 +360,11 @@ msgid "" "characters. This notation is only used in :ref:`lexical definitions " "`." msgstr "" +"``\"a\"...\"z\"``: Δύο κυριολεκτικοί χαρακτήρες διαχωρισμένοι από τρεις " +"τελείες σημαίνουν την επιλογή οποιουδήποτε μεμονωμένου χαρακτήρα στο " +"δεδομένο (συμπεριλαμβανομένου) εύρος χαρακτήρων ASCII. Αυτή η σημειογραφία " +"χρησιμοποιείται μόνο σε :ref:`lexical definitions `." #: reference/introduction.rst:152 msgid "" @@ -343,22 +374,31 @@ msgid "" "````). This notation is only used in :ref:`lexical definitions `." msgstr "" +"``<...>``: Μια φράση μέσα σε γωνιακές αγκύλες δίνει μια άτυπη περιγραφή του " +"αντίστοιχου συμβόλου (για παράδειγμα ````), ή μια συντομογραφία που ορίζεται σε κοντινό κείμενο (για παράδειγμα, " +"````). Αυτή η σημειογραφία χρησιμοποιείται μόνο σε :ref:`lexical " +"definitions `." #: reference/introduction.rst:158 msgid "" "The unary operators (``*``, ``+``, ``?``) bind as tightly as possible; the " "vertical bar (``|``) binds most loosely." msgstr "" +"Οι μοναδιαίοι τελεστές (``*``, ``+``, ``?``) συνδέονται όσο το δυνατόν πιο " +"σφιχτά∙ η κάθετη γραμμή (``|``) συνδέεται πιο χαλαρά." #: reference/introduction.rst:161 msgid "White space is only meaningful to separate tokens." -msgstr "" +msgstr "Το κενό έχει νόημα μόνο για τον διαχωρισμό των διακριτικών." #: reference/introduction.rst:163 msgid "" "Rules are normally contained on a single line, but rules that are too long " "may be wrapped:" msgstr "" +"Οι κανόνες συνήθως περιέχονται σε μία μόνο γραμμή, αλλά οι κανόνες που είναι " +"πολύ μεγάλοι μπορούν να αναδιπλωθούν." #: reference/introduction.rst:172 msgid "" @@ -366,18 +406,19 @@ msgid "" "colon, and each alternative beginning with a vertical bar on a new line. For " "example:" msgstr "" +"Εναλλακτικά, οι κανόνες μπορούν να μορφοποιηθούν με την πρώτη γραμμή να " +"τελειών στην άνω και κάτω τελεία και κάθε εναλλακτική να ξεκινά με μια " +"κάθετη γραμμή σε μια νέα γραμμή. Για παράδειγμα:" #: reference/introduction.rst:187 msgid "This does *not* mean that there is an empty first alternative." -msgstr "" +msgstr "Αυτό *δεν* σημαίνει ότι υπάρχει μια κενή πρώτη εναλλακτική λύση." #: reference/introduction.rst:194 -#, fuzzy msgid "Lexical and Syntactic definitions" -msgstr "λεξιλογικοί ορισμοί" +msgstr "Λεξικοί και Συντακτικοί ορισμοί" #: reference/introduction.rst:196 -#, fuzzy msgid "" "There is some difference between *lexical* and *syntactic* analysis: the :" "term:`lexical analyzer` operates on the individual characters of the input " @@ -386,13 +427,12 @@ msgid "" "cases the exact boundary between the two phases is a CPython implementation " "detail." msgstr "" -"Αν και η σημειογραφία που χρησιμοποιείται είναι σχεδόν η ίδια, υπάρχει " -"μεγάλη διαφορά ανάμεσα στη σημασία των λεξιλογικών και των συντακτικών " -"ορισμών: ένας λεξιλογικός ορισμός λειτουργεί με τους μεμονωμένους χαρακτήρες " -"της πηγής εισόδου, ενώ ένας ορισμός σύνταξης λειτουργεί στην ροή των *token* " -"που δημιουργείται από τη λεξιλογική ανάλυση. Όλες οι χρήσεις του *BNF* στο " -"επόμενο κεφάλαιο (\"Λεξιλογική Ανάλυση\") είναι λεξιλογικοί ορισμοί· οι " -"χρήσεις στα ακόλουθα κεφάλαια είναι συντακτικοί ορισμοί." +"Υπάρχει κάποια διαφορά μεταξύ της *λεξικής* και της *συντακτικής* ανάλυσης: " +"ο :term:`lexical analyzer` λειτουργεί στους μεμονωμένους χαρακτήρες της " +"πηγής εισόδου, ενώ ο *αναλυτής* (συντακτικός αναλυτής) λειτουργεί στη ροή " +"των :term:`tokens ` που δημιουργούνται από τη λεξική ανάλυση. Ωστόσο, " +"σε ορισμένες περιπτώσεις το ακριβές όριο μεταξύ των δύο φάσεων είναι μια " +"λεπτομέρεια υλοποίησης της CPython." #: reference/introduction.rst:203 msgid "" @@ -402,6 +442,11 @@ msgid "" "`token.INDENT` or :data:`~token.NEWLINE`. *Syntactic* definitions then use " "these tokens, rather than source characters." msgstr "" +"Η πρακτική διαφορά μεταξύ των δύο είναι ότι στους *λεξιλογικούς* ορισμούς, " +"όλα τα κενά είναι σημαντικά. Ο λεξικός αναλυτής :ref:`discards ` " +"όλα τα κενά που δεν μετατρέπονται σε διακριτικά όπως :data:`token.INDENT` ή :" +"data:`~token.NEWLINE`. Οι *συντακτικοί* ορισμοί χρησιμοποιούν στη συνέχεια " +"αυτά τα διακριτικά, αντί για τους χαρακτήρες προέλευσης." #: reference/introduction.rst:209 msgid "" @@ -409,6 +454,10 @@ msgid "" "All uses of BNF in the next chapter (:ref:`lexical`) are lexical " "definitions; uses in subsequent chapters are syntactic definitions." msgstr "" +"Αυτή η τεκμηρίωση χρησιμοποιεί την ίδια γραμματική BNF και για τα δύο στυλ " +"ορισμών. Όλες οι χρήσεις του BNF στο επόμενο κεφάλαιο (:ref:`lexical`) είναι " +"λεξιλογικοί ορισμοί∙ οι χρήσεις στα επόμενα κεφάλαια είναι συντακτικοί " +"ορισμοί." #: reference/introduction.rst:91 msgid "BNF" diff --git a/sphinx.po b/sphinx.po index e0daedec..59e49450 100644 --- a/sphinx.po +++ b/sphinx.po @@ -27,26 +27,22 @@ msgid "In development" msgstr "Υπό ανάπτυξη" #: tools/templates/customsourcelink.html:3 -#, fuzzy msgid "This page" -msgstr "Αυτή η Σελίδα" +msgstr "Αυτή η σελίδα" #: tools/templates/customsourcelink.html:5 -#, fuzzy msgid "Report a bug" -msgstr "Ανέφερε ένα Bug" +msgstr "Ανέφερε ένα bug" #: tools/templates/customsourcelink.html:8 -#, fuzzy msgid "Show source" -msgstr "Εμφάνιση Πηγής" +msgstr "Εμφάνιση πηγαίου" #: tools/templates/download.html:2 tools/templates/indexsidebar.html:1 msgid "Download" msgstr "Κατεβάστε" #: tools/templates/download.html:30 -#, fuzzy msgid "Download Python %(dl_version)s documentation" msgstr "Κατεβάστε την τεκμηρίωση της Python %(dl_version)s" @@ -471,9 +467,8 @@ msgid "Reporting issues" msgstr "Αναφορά ζητημάτων" #: tools/templates/indexcontent.html:75 -#, fuzzy msgid "Contributing to docs" -msgstr "Συμβολή στην Τεκμηρίωση" +msgstr "Συμβολή στην τεκμηρίωση" #: tools/templates/indexcontent.html:76 msgid "Download the documentation" @@ -508,29 +503,24 @@ msgid "Other resources" msgstr "Άλλες πηγές" #: tools/templates/indexsidebar.html:12 -#, fuzzy msgid "PEP index" msgstr "Ευρετήριο PEP" #: tools/templates/indexsidebar.html:13 -#, fuzzy msgid "Beginner's guide" msgstr "Οδηγός για αρχάριους" #: tools/templates/indexsidebar.html:14 -#, fuzzy msgid "Book list" -msgstr "Λίστα Βιβλίων" +msgstr "Λίστα βιβλίων" #: tools/templates/indexsidebar.html:15 -#, fuzzy msgid "Audio/visual talks" -msgstr "Οπτικοακουστικές Ομιλίες" +msgstr "Οπτικοακουστικές ομιλίες" #: tools/templates/indexsidebar.html:16 -#, fuzzy msgid "Python developer’s guide" -msgstr "Οδηγός Προγραμματιστή Python" +msgstr "Οδηγός προγραμματιστή Python" #: tools/templates/layout.html:6 msgid "" diff --git a/tutorial/controlflow.po b/tutorial/controlflow.po index 46906efb..2b7e096e 100644 --- a/tutorial/controlflow.po +++ b/tutorial/controlflow.po @@ -2219,7 +2219,6 @@ msgstr "" "43" #: tutorial/controlflow.rst:1001 -#, fuzzy msgid "" "The above example uses a lambda expression to return a function. Another " "use is to pass a small function as an argument. For instance, :meth:`list." @@ -2227,7 +2226,8 @@ msgid "" msgstr "" "Το παραπάνω παράδειγμα χρησιμοποιεί μια έκφραση lambda για να επιστρέψει μια " "συνάρτηση. Μια άλλη χρήση είναι η μετάδοση μιας μικρής συνάρτησης ως " -"όρισμα::" +"όρισμα. Για παράδειγμα, η :meth:`list.sort` δέχεται μια συνάρτηση " +"ταξινόμησης κλειδιού *key* η οποία μπορεί να είναι μια συνάρτηση lambda::" #: tutorial/controlflow.rst:1005 msgid "" @@ -2313,7 +2313,6 @@ msgid "Here is an example of a multi-line docstring::" msgstr "Ακολουθεί ένα παράδειγμα ενός πολλαπλών γραμμών docstring::" #: tutorial/controlflow.rst:1049 -#, fuzzy msgid "" ">>> def my_function():\n" "... \"\"\"Do nothing, but document it.\n" @@ -2337,7 +2336,7 @@ msgstr "" ">>> print(my_function.__doc__)\n" "Do nothing, but document it.\n" "\n" -" No, really, it doesn't do anything." +"No, really, it doesn't do anything." #: tutorial/controlflow.rst:1065 msgid "Function Annotations" diff --git a/tutorial/index.po b/tutorial/index.po index 928241f8..3ac868f9 100644 --- a/tutorial/index.po +++ b/tutorial/index.po @@ -69,7 +69,6 @@ msgstr "" "προσαρμόσιμες εφαρμογές." #: tutorial/index.rst:27 -#, fuzzy msgid "" "This tutorial introduces the reader informally to the basic concepts and " "features of the Python language and system. Be aware that it expects you to " @@ -78,9 +77,11 @@ msgid "" "contained, so the tutorial can be read off-line as well." msgstr "" "Αυτό το tutorial εισάγει τον αναγνώστη ανεπίσημα στις βασικές έννοιες και " -"δυνατότητες της γλώσσας και του συστήματος Python. Βοηθάει να έχετε πρόχειρο " -"έναν διερμηνέα Python για πρακτική εμπειρία, αλλά όλα τα παραδείγματα είναι " -"αυτοτελή, οπότε το tutorial μπορεί να διαβαστεί και εκτός σύνδεσης." +"δυνατότητες της γλώσσας και του συστήματος Python. Λάβετε υπόψη ότι απαιτεί " +"να έχετε μια βασική κατανόηση του προγραμματισμού γενικά. Βοηθάει να έχετε " +"πρόχειρο έναν διερμηνέα Python για πρακτική εμπειρία, αλλά όλα τα " +"παραδείγματα είναι αυτοτελή, οπότε το tutorial μπορεί να διαβαστεί και εκτός " +"σύνδεσης." #: tutorial/index.rst:33 msgid "" diff --git a/tutorial/introduction.po b/tutorial/introduction.po index 080906f1..57bbc83b 100644 --- a/tutorial/introduction.po +++ b/tutorial/introduction.po @@ -39,16 +39,16 @@ msgstr "" "γραμμή∙ αυτό χρησιμοποιείται για να τερματίσετε μια εντολή πολλών γραμμών." #: tutorial/introduction.rst:16 -#, fuzzy msgid "" "You can use the \"Copy\" button (it appears in the upper-right corner when " "hovering over or tapping a code example), which strips prompts and omits " "output, to copy and paste the input lines into your interpreter." msgstr "" -"Μπορείτε να αλλάξετε την εμφάνιση των prompts και της εξόδου κάνοντας κλικ " -"στο ``>>>>`` στην επάνω δεξιά γωνία ενός πλαισίου παραδείγματος. Εάν " -"αποκρύψετε τα prompts και την έξοδο για ένα παράδειγμα, τότε μπορείτε εύκολα " -"να αντιγράψετε και να επικολλήσετε τις γραμμές εισαγωγής στον διερμηνέα σας." +"Μπορείτε να χρησιμοποιήσετε το κουμπί \"Copy\" (εμφανίζεται στην επάνω δεξιά " +"γωνία όταν τοποθετείτε τον δείκτη του ποντικιού πάνω από ένα παράδειγμα " +"κώδικα ή πατάτε αυτό), το οποίο αφαιρεί τις προτροπές και παραλείπει την " +"έξοδο, για να αντιγράψετε και να επικολλήσετε τις γραμμές εισόδου στον " +"διερμηνέα σας." #: tutorial/introduction.rst:22 msgid "" diff --git a/tutorial/modules.po b/tutorial/modules.po index 20e73c13..ac21ceb4 100644 --- a/tutorial/modules.po +++ b/tutorial/modules.po @@ -76,7 +76,6 @@ msgstr "" "περιεχόμενα::" #: tutorial/modules.rst:28 -#, fuzzy msgid "" "# Fibonacci numbers module\n" "\n" @@ -99,14 +98,16 @@ msgid "" msgstr "" "# Fibonacci numbers module\n" "\n" -"def fib(n): # write Fibonacci series up to n\n" +"def fib(n):\n" +" \"\"\"Write Fibonacci series up to n.\"\"\"\n" " a, b = 0, 1\n" " while a < n:\n" " print(a, end=' ')\n" " a, b = b, a+b\n" " print()\n" "\n" -"def fib2(n): # return Fibonacci series up to n\n" +"def fib2(n):\n" +" \"\"\"Return Fibonacci series up to n.\"\"\"\n" " result = []\n" " a, b = 0, 1\n" " while a < n:\n" diff --git a/using/mac.po b/using/mac.po index e569046c..3cd73597 100644 --- a/using/mac.po +++ b/using/mac.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Python 3.12\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-06-19 17:36+0300\n" -"PO-Revision-Date: 2025-05-21 21:25+0300\n" +"PO-Revision-Date: 2025-06-19 17:58+0300\n" "Last-Translator: Marios Giannopoulos \n" "Language-Team: PyGreece \n" "Language: el\n" @@ -122,8 +122,7 @@ msgstr "" "καταγράφει ποια έκδοση Python πρόκειται να εγκατασταθεί και σε ποιες " "εκδόσεις macOS υποστηρίζεται. Ίσως χρειαστεί να κάνετε κύλιση για να " "διαβάσετε ολόκληρο το αρχείο. Από προεπιλογή, αυτό το **Read Me** θα " -"εγκατασταθεί επίσης στο |" -"applications_python_version_literal| και θα είναι " +"εγκατασταθεί επίσης στο |applications_python_version_literal| και θα είναι " "διαθέσιμο για ανάγνωση οποιαδήποτε στιγμή." #: using/mac.rst:64 @@ -159,8 +158,8 @@ msgstr "" "Πατώντας το κουμπί **Customize**, μπορείτε να επιλέξετε να παραλείψετε ή να " "επιλέξετε ορισμένα πακέτα του εγκαταστάτη. Κάντε κλικ σε κάθε όνομα πακέτου " "για να δείτε μια περιγραφή του τι εγκαθιστά. Για να εγκαταστήσετε επίσης " -"υποστήριξη για την προαιρετική δυνατότητα χωρίς νήματα, δείτε :" -"ref:`install-freethreaded-macos`." +"υποστήριξη για την προαιρετική δυνατότητα χωρίς νήματα, δείτε :ref:`install-" +"freethreaded-macos`." #: using/mac.rst:84 msgid "" @@ -180,14 +179,13 @@ msgstr "" "Όταν ολοκληρωθεί η εγκατάσταση, θα εμφανιστεί το παράθυρο **Περίληψη**." #: using/mac.rst:92 -#, fuzzy msgid "" "Double-click on the :command:`Install Certificates.command` icon or file in " "the |applications_python_version_literal| window to complete the " "installation." msgstr "" "Διπλό κλικ στο εικονίδιο ή το αρχείο :command:`Install Certificates.command` " -"στο παράθυρο |usemac_applications_folder_version| για να ολοκληρώσετε την " +"στο παράθυρο |applications_python_version_literal| για να ολοκληρώσετε την " "εγκατάσταση." #: using/mac.rst:98 @@ -214,7 +212,6 @@ msgid "A default install will include:" msgstr "Μια προεπιλεγμένη εγκατάσταση θα περιλαμβάνει:" #: using/mac.rst:110 -#, fuzzy msgid "" "A |python_version_literal| folder in your :file:`Applications` folder. In " "here you find :program:`IDLE`, the development environment that is a " @@ -222,11 +219,11 @@ msgid "" "Launcher`, which handles double-clicking Python scripts from the macOS " "`Finder `_." msgstr "" -"Ένα φάκελο |usemac_applications_folder_name| στο φάκελο :file:" -"`Applications`. Εδώ θα βρείτε το :program:`IDLE`, το περιβάλλον ανάπτυξης " -"που είναι τυπικό μέρος των επίσημων διανομών Python. και το :program:`Python " -"Launcher`, το οποίο χειρίζεται τα διπλά κλικ σε Python scripts από το macOS " -"`Finder `_." +"Ένας |python_version_literal| φάκελος στον φάκελο :file:`Applications`. Εδώ " +"θα βρείτε το :program:`IDLE`, το περιβάλλον ανάπτυξης που είναι τυπικό μέρος " +"των επίσημων διανομών Python∙ και το :program:`Python Launcher`, το οποίο " +"χειρίζεται τα διπλά κλικ σε Python scripts από το macOS `Finder `_." #: using/mac.rst:115 msgid "" @@ -273,7 +270,6 @@ msgid "How to run a Python script" msgstr "Πώς να εκτελέσετε ένα σενάριο Python" #: using/mac.rst:135 -#, fuzzy msgid "" "There are two ways to invoke the Python interpreter. If you are familiar " "with using a Unix shell in a terminal window, you can invoke |" @@ -282,13 +278,13 @@ msgid "" "tutorial also has a useful section on :ref:`using Python interactively from " "a shell `." msgstr "" -"Υπάρχουν δύο τρόποι για να καλέσετε τον ερμηνευτή Python. Εάν είστε " +"Υπάρχουν δύο τρόποι για να καλέσετε τον διερμηνέα Python. Εάν είστε " "εξοικειωμένοι με τη χρήση ενός κελύφους Unix σε ένα παράθυρο τερματικού, " -"μπορείτε να καλέσετε |usemac_python_x_dot_y_literal| ή ``python3`` " -"προαιρετικά ακολουθούμενο από μία ή περισσότερες επιλογές γραμμής εντολών " -"(περιγράφεται στο :ref:`using-on-general`). Το εγχειρίδιο Python έχει επίσης " -"μια χρήσιμη ενότητα σχετικά με :ref:`using Python interactively from a shell " -"`." +"μπορείτε να καλέσετε |python_x_dot_y_literal| ή ``python3`` προαιρετικά " +"ακολουθούμενο από μία ή περισσότερες επιλογές γραμμής εντολών (περιγράφεται " +"στο :ref:`using-on-general`). Το εγχειρίδιο Python έχει επίσης μια χρήσιμη " +"ενότητα σχετικά με :ref:`using Python interactively from a shell `." #: using/mac.rst:142 msgid "" @@ -324,9 +320,8 @@ msgstr "" "μπορείτε να καλέσετε τον ερμηνευτή με το όνομα του αρχείου script:" #: using/mac.rst:156 -#, fuzzy msgid "|python_x_dot_y_literal| ``myscript.py``" -msgstr "|usemac_python_x_dot_y_literal| ``myscript.py``" +msgstr "|python_x_dot_y_literal| ``myscript.py``" #: using/mac.rst:158 msgid "To run your script from the Finder, you can either:" @@ -531,7 +526,6 @@ msgid "Installing Free-threaded Binaries" msgstr "Εγκατάσταση εκδόσεων Free-threaded" #: using/mac.rst:257 -#, fuzzy msgid "" "The ``python.org`` :ref:`Python for macOS ` installer package can optionally install an additional build of " @@ -541,13 +535,12 @@ msgid "" msgstr "" "Το πακέτο εγκατάστασης ``python.org`` :ref:`Python for macOS ` μπορεί προαιρετικά να εγκαταστήσει μια επιπλέον " -"έκδοση της Python |usemac_x_dot_y| που υποστηρίζει :pep:`703`, την " -"πειραματική δυνατότητα ελεύθερης νηματοποίησης (threading) (εκτέλεση με το :" -"term:`global interpreter lock` απενεργοποιημένο). Ελέγξτε τη σελίδα " -"κυκλοφορίας στο ``python.org`` για πιθανές ενημερωμένες πληροφορίες." +"έκδοση της Python |version| που υποστηρίζει :pep:`703`, την πειραματική " +"δυνατότητα ελεύθερης νηματοποίησης (threading) (εκτέλεση με το :term:`global " +"interpreter lock` απενεργοποιημένο). Ελέγξτε τη σελίδα κυκλοφορίας στο " +"``python.org`` για πιθανές ενημερωμένες πληροφορίες." #: using/mac.rst:263 -#, fuzzy msgid "" "The free-threaded mode is working and continues to be improved, but there is " "some additional overhead in single-threaded workloads compared to the " @@ -558,13 +551,17 @@ msgid "" "option, available by clicking the **Customize** button on the **Installation " "Type** step of the installer as described above." msgstr "" -"Επειδή αυτή η δυνατότητα εξακολουθεί να θεωρείται πειραματική, η υποστήριξή " -"της δεν εγκαθίσταται από προεπιλογή. Είναι συσκευασμένο ως ξεχωριστή επιλογή " -"εγκατάστασης, διαθέσιμη κάνοντας κλικ στο κουμπί **Προσαρμογή** στο βήμα " -"**Τύπος εγκατάστασης** του εγκαταστάτη όπως περιγράφεται παραπάνω." +"Η λειτουργία ελεύθερου νήματος λειτουργεί και συνεχίζει να βελτιώνεται, αλλά " +"υπάρχει κάποια πρόσθετη επιβάρυνση στα φορτία εργασίας μονού νήματος σε " +"σύγκριση με την κανονική έκδοση. Επιπλέον, τα πακέτα τρίτων κατασκευαστών, " +"ιδίως αυτά με :term:`extension module`, ενδέχεται να μην είναι έτοιμα για " +"χρήση σε μια έκδοση ελεύθερου νήματος και θα ενεργοποιήσουν ξανά το :term:" +"`GIL`. Επομένως, η υποστήριξη για ελεύθερη νηματοποποίησης δεν εγκαθίστανται " +"από προεπιλογή. Είναι συσκευασμένη ως ξεχωριστή επιλογή εγκατάστασης, " +"διαθέσιμη κάνοντας κλικ το κουμπί **Customize** στο βήμα **Installation " +"Type** του προγράμματος εγκατάστασης όπως περιγράφεται παραπάνω." #: using/mac.rst:275 -#, fuzzy msgid "" "If the box next to the **Free-threaded Python** package name is checked, a " "separate :file:`PythonT.framework` will also be installed alongside the " @@ -577,9 +574,9 @@ msgstr "" "Εάν το πλαίσιο δίπλα στο όνομα πακέτου **Free-threaded Python** είναι " "επιλεγμένο, θα εγκατασταθεί επίσης ένα ξεχωριστό :file:`PythonT.framework` " "δίπλα στο κανονικό :file:`Python.framework` στο :file:`/Library/Frameworks`. " -"Αυτή η διαμόρφωση επιτρέπει σε μια έκδοση Python |usemac_x_dot_y| ελεύθερης " +"Αυτή η διαμόρφωση επιτρέπει σε μια έκδοση Python |version| ελεύθερης " "νηματοποίησης να συγκατοικεί στο σύστημά σας με μια παραδοσιακή (μόνο GIL) " -"Python |usemac_x_dot_y| έκδοση με ελάχιστο κίνδυνο κατά την εγκατάσταση ή τη " +"Python |version| έκδοση με ελάχιστο κίνδυνο κατά την εγκατάσταση ή τη " "δοκιμή. Αυτή η διάταξη εγκατάστασης είναι πειραματική και υπόκειται σε " "αλλαγές σε μελλοντικές εκδόσεις." @@ -588,7 +585,6 @@ msgid "Known cautions and limitations:" msgstr "Γνωστές προφυλάξεις και περιορισμοί:" #: using/mac.rst:285 -#, fuzzy msgid "" "The **UNIX command-line tools** package, which is selected by default, will " "install links in :file:`/usr/local/bin` for |python_x_dot_y_t_literal|, the " @@ -600,27 +596,25 @@ msgid "" msgstr "" "To **UNIX command-line tools** πακέτο, το οποίο επιλέγεται από προεπιλογή, " "θα εγκαταστήσει συνδέσμους στο :file:`/usr/local/bin` για |" -"usemac_python_x_dot_y_t_literal|, τον ερμηνευτή ελεύθερης νηματοποίησης και |" -"usemac_python_x_dot_y_t_literal_config|, ένα βοηθητικό πρόγραμμα διαμόρφωσης " -"που μπορεί να είναι χρήσιμο για κατασκευαστές πακέτων. Δεδομένου ότι το :" -"file:`/usr/local/bin` περιλαμβάνεται συνήθως στη μεταβλητή περιβάλλοντος " -"``PATH`` του κελύφους σας, στις περισσότερες περιπτώσεις δεν θα χρειαστούν " -"αλλαγές στις μεταβλητές περιβάλλοντος ``PATH`` για να χρησιμοποιήσετε |" -"usemac_python_x_dot_y_t_literal|." +"python_x_dot_y_t_literal|, τον ερμηνευτή ελεύθερης νηματοποίησης και |" +"python_x_dot_y_t_literal_config|, ένα βοηθητικό πρόγραμμα διαμόρφωσης που " +"μπορεί να είναι χρήσιμο για κατασκευαστές πακέτων. Δεδομένου ότι το :file:`/" +"usr/local/bin` περιλαμβάνεται συνήθως στη μεταβλητή περιβάλλοντος ``PATH`` " +"του κελύφους σας, στις περισσότερες περιπτώσεις δεν θα χρειαστούν αλλαγές " +"στις μεταβλητές περιβάλλοντος ``PATH`` για να χρησιμοποιήσετε |" +"python_x_dot_y_t_literal|." #: using/mac.rst:293 -#, fuzzy msgid "" "For this release, the **Shell profile updater** package and the :file:" "`Update Shell Profile.command` in |applications_python_version_literal| do " "not support the free-threaded package." msgstr "" "Για αυτήν την έκδοση, το πακέτο **Shell profile updater** και το :file:" -"`Update Shell Profile.command` στο |usemac_applications_folder_version| δεν " -"υποστηρίζουν το πακέτο ελεύθερης νηματοποίησης." +"`Update Shell Profile.command` στο |applications_python_version_literal| " +"δεν υποστηρίζουν το πακέτο ελεύθερης νηματοποίησης." #: using/mac.rst:297 -#, fuzzy msgid "" "The free-threaded build and the traditional build have separate search paths " "and separate :file:`site-packages` directories so, by default, if you need a " @@ -633,7 +627,7 @@ msgstr "" "οπότε, από προεπιλογή, εάν χρειάζεστε ένα πακέτο διαθέσιμο και στις δύο " "εκδόσεις, μπορεί να χρειαστεί να εγκατασταθεί και στις δύο. Το πακέτο " "ελεύθερης νηματοποίησης θα εγκαταστήσει μια ξεχωριστή έκδοση του :program:" -"`pip` για χρήση με |usemac_python_x_dot_y_t_literal|." +"`pip` για χρήση με |python_x_dot_y_t_literal|." #: using/mac.rst:303 msgid "To install a package using :command:`pip` without a :command:`venv`:" @@ -642,9 +636,8 @@ msgstr "" "command:`venv`:" #: using/mac.rst:307 -#, fuzzy msgid "python\\ |version|\\ t -m pip install " -msgstr "|usemac_python_x_dot_y_t_literal| ``-m pip install ``" +msgstr "python\\ |version|\\ t -m pip install " #: using/mac.rst:309 msgid "" @@ -660,7 +653,7 @@ msgstr "" #: using/mac.rst:315 msgid "python\\ |version|\\ t -m venv " -msgstr "" +msgstr "python\\ |version|\\ t -m venv " #: using/mac.rst:318 msgid "then :command:`activate`." @@ -672,7 +665,7 @@ msgstr "Για να εκτελέσετε μια έκδοση ελεύθερης #: using/mac.rst:324 msgid "python\\ |version|\\ t -m idlelib" -msgstr "" +msgstr "python\\ |version|\\ t -m idlelib" #: using/mac.rst:327 msgid "" @@ -705,7 +698,6 @@ msgstr "" "εκτελείται μόνο μία φορά." #: using/mac.rst:340 -#, fuzzy msgid "" "If you cannot depend on the link in ``/usr/local/bin`` pointing to the " "``python.org`` free-threaded |python_x_dot_y_t_literal| (for example, if you " @@ -714,23 +706,21 @@ msgid "" "``PythonT`` framework ``bin`` directory:" msgstr "" "Εάν δεν μπορείτε να εξαρτηθείτε από το σύνδεσμο στο ``/usr/local/bin`` που " -"δείχνει στην έκδοση |usemac_python_x_dot_y_t_literal| ελεύθερης " -"νηματοποίησης (για παράδειγμα, εάν θέλετε να εγκαταστήσετε τη δική σας " -"έκδοση εκεί ή κάποια άλλη διανομή το κάνει), μπορείτε να ορίσετε ρητά τη " -"μεταβλητή περιβάλλοντος ``PATH`` του κελύφους σας για να περιλαμβάνει το " -"κατάλογο ``bin`` του πλαισίου ``PythonT``:" +"δείχνει στην έκδοση |python_x_dot_y_t_literal|ελεύθερης νηματοποίησης (για " +"παράδειγμα, εάν θέλετε να εγκαταστήσετε τη δική σας έκδοση εκεί ή κάποια " +"άλλη διανομή το κάνει), μπορείτε να ορίσετε ρητά τη μεταβλητή περιβάλλοντος " +"``PATH`` του κελύφους σας για να περιλαμβάνει το κατάλογο ``bin`` του " +"πλαισίου ``PythonT``:" #: using/mac.rst:348 -#, fuzzy msgid "" "export PATH=\"/Library/Frameworks/PythonT.framework/Versions/\\ |version|\\ /" "bin\":\"$PATH\"" msgstr "" -"export PATH=\"/Library/Frameworks/PythonT.framework/Versions/3.13/bin\":" -"\"$PATH\"" +"export PATH=\"/Library/Frameworks/PythonT.framework/Versions/\\ |version|\\ /" +"bin\":\"$PATH\"" #: using/mac.rst:350 -#, fuzzy msgid "" "The traditional framework installation by default does something similar, " "except for :file:`Python.framework`. Be aware that having both framework " @@ -744,33 +734,31 @@ msgstr "" "Η παραδοσιακή εγκατάσταση πλαισίου από προεπιλογή κάνει κάτι παρόμοιο, εκτός " "από το :file:`Python.framework`. Να είστε προσεκτικοί ότι η παρουσία και των " "δύο καταλόγων ``bin`` πλαισίου στο ``PATH`` μπορεί να οδηγήσει σε σύγχυση " -"εάν υπάρχουν διπλά ονόματα όπως ``python3.13`` και στις δύο. Ποιο " +"εάν υπάρχουν διπλά ονόματα όπως |python_x_dot_y_literal| και στις δύο∙ ποιο " "χρησιμοποιείται στην πραγματικότητα εξαρτάται από τη σειρά που εμφανίζονται " "στο ``PATH``. Οι εντολές ``which python3.x`` ή ``which python3.xt`` μπορούν " "να δείξουν ποια διαδρομή χρησιμοποιείται. Η χρήση εικονικών περιβαλλόντων " "μπορεί να βοηθήσει στην αποφυγή τέτοιων αμφισημιών. Μια άλλη επιλογή μπορεί " "να είναι η δημιουργία ενός κελύφους :command:`alias` στον επιθυμητό " -"ερμηνευτή, όπως:" +"διερμηνέα, όπως:" #: using/mac.rst:361 -#, fuzzy msgid "" "alias py\\ |version|\\ =\"/Library/Frameworks/Python.framework/Versions/\\ |" "version|\\ /bin/python\\ |version|\\ \"\n" "alias py\\ |version|\\ t=\"/Library/Frameworks/PythonT.framework/Versions/\\ " "|version|\\ /bin/python\\ |version|\\ t\"" msgstr "" -"alias py3.13=\"/Library/Frameworks/Python.framework/Versions/3.13/bin/" -"python3.13\"\n" -"alias py3.13t=\"/Library/Frameworks/PythonT.framework/Versions/3.13/bin/" -"python3.13t\"" +"alias py\\ |version|\\ =\"/Library/Frameworks/Python.framework/Versions/\\ |" +"version|\\ /bin/python\\ |version|\\ \"\n" +"alias py\\ |version|\\ t=\"/Library/Frameworks/PythonT.framework/Versions/\\ " +"|version|\\ /bin/python\\ |version|\\ t\"" #: using/mac.rst:365 msgid "Installing using the command line" msgstr "Εγκατάσταση χρησιμοποιώντας τη γραμμή εντολών" #: using/mac.rst:367 -#, fuzzy msgid "" "If you want to use automation to install the ``python.org`` installer " "package (rather than by using the familiar macOS :program:`Installer` GUI " @@ -788,11 +776,10 @@ msgstr "" "επίσης. Εάν δεν είστε εξοικειωμένοι με το :command:`installer`, μπορεί να " "είναι κάπως κρυπτικό (βλ. :command:`man installer` για περισσότερες " "πληροφορίες). Ως παράδειγμα, το παρακάτω απόσπασμα κώδικα δείχνει έναν τρόπο " -"να το κάνετε, χρησιμοποιώντας την έκδοση ``3.13.0b2`` και επιλέγοντας την " -"επιλογή ερμηνευτή ελεύθερης νηματοποίησης:" +"να το κάνετε, χρησιμοποιώντας την έκδοση |x_dot_y_b2_literal| και " +"επιλέγοντας την επιλογή διερμηνέα ελεύθερης νηματοποίησης:" #: using/mac.rst:378 -#, fuzzy msgid "" "RELEASE=\"python-\\ |version|\\ 0b2-macos11.pkg\"\n" "\n" @@ -824,17 +811,17 @@ msgid "" "sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges." "plist -target /" msgstr "" -"RELEASE=\"python-3.13.0b2-macos11.pkg\"\n" +"RELEASE=\"python-\\ |version|\\ 0b2-macos11.pkg\"\n" "\n" "# download installer pkg\n" -"curl -O https://www.python.org/ftp/python/3.13.0/${RELEASE}\n" +"curl -O \\https://www.python.org/ftp/python/\\ |version|\\ .0/${RELEASE}\n" "\n" "# create installer choicechanges to customize the install:\n" -"# enable the PythonTFramework-3.13 package\n" +"# enable the PythonTFramework-\\ |version|\\ package\n" "# while accepting the other defaults (install all other packages)\n" "cat > ./choicechanges.plist <\n" -"\n" "\n" "\n" @@ -844,7 +831,8 @@ msgstr "" " choiceAttribute\n" " selected\n" " choiceIdentifier\n" -" org.python.Python.PythonTFramework-3.13\n" +" org.python.Python.PythonTFramework-\\ |version|\\ \n" "
\n" "\n" "\n" @@ -862,7 +850,6 @@ msgstr "" "διαθέσιμοι με κάτι σαν:" #: using/mac.rst:410 -#, fuzzy msgid "" "$ # test that the free-threaded interpreter was installed if the Unix " "Command Tools package was enabled\n" @@ -886,21 +873,23 @@ msgid "" msgstr "" "$ # test that the free-threaded interpreter was installed if the Unix " "Command Tools package was enabled\n" -"$ /usr/local/bin/python3.13t -VV\n" -"Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, " -"Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)]\n" -"$ # and the traditional interpreter\n" -"$ /usr/local/bin/python3.13 -VV\n" -"Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 " +"$ /usr/local/bin/python\\ |version|\\ t -VV\n" +"Python \\ |version|\\ .0b2 free-threading build (v\\ |version|" +"\\ .0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 " "(clang-1500.3.9.4)]\n" +"$ # and the traditional interpreter\n" +"$ /usr/local/bin/python\\ |version|\\ -VV\n" +"Python \\ |version|\\ .0b2 (v\\ |version|\\ .0b2:3a83b172af, Jun 5 2024, " +"12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]\n" "$ # test that they are also available without the prefix if /usr/local/bin " "is on $PATH\n" -"$ python3.13t -VV\n" -"Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, " -"Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)]\n" -"$ python3.13 -VV\n" -"Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 " -"(clang-1500.3.9.4)]" +"$ python\\ |version|\\ t -VV\n" +"Python \\ |version|\\ .0b2 free-threading build (v\\ |version|" +"\\ .0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 " +"(clang-1500.3.9.4)]\n" +"$ python\\ |version|\\ -VV\n" +"Python \\ |version|\\ .0b2 (v\\ |version|\\ .0b2:3a83b172af, Jun 5 2024, " +"12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]" #: using/mac.rst:424 msgid "" From 270779726c95ae923a95c295d992490aad2b0b08 Mon Sep 17 00:00:00 2001 From: skpanagiotis Date: Thu, 19 Jun 2025 23:39:02 +0300 Subject: [PATCH 5/5] Minor fix --- using/mac.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/using/mac.po b/using/mac.po index 3cd73597..81ab0ee4 100644 --- a/using/mac.po +++ b/using/mac.po @@ -706,7 +706,7 @@ msgid "" "``PythonT`` framework ``bin`` directory:" msgstr "" "Εάν δεν μπορείτε να εξαρτηθείτε από το σύνδεσμο στο ``/usr/local/bin`` που " -"δείχνει στην έκδοση |python_x_dot_y_t_literal|ελεύθερης νηματοποίησης (για " +"δείχνει στην έκδοση |python_x_dot_y_t_literal| ελεύθερης νηματοποίησης (για " "παράδειγμα, εάν θέλετε να εγκαταστήσετε τη δική σας έκδοση εκεί ή κάποια " "άλλη διανομή το κάνει), μπορείτε να ορίσετε ρητά τη μεταβλητή περιβάλλοντος " "``PATH`` του κελύφους σας για να περιλαμβάνει το κατάλογο ``bin`` του "