From d5603d4b5cdc3a97c29b6c2622ca6d40161fd763 Mon Sep 17 00:00:00 2001 From: "Carlos A. Crespo" Date: Thu, 26 Feb 2026 18:34:29 -0300 Subject: [PATCH 1/2] Update the cpython submodule --- cpython | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpython b/cpython index 60403a5409..ebf955df7a 160000 --- a/cpython +++ b/cpython @@ -1 +1 @@ -Subproject commit 60403a5409ff2c3f3b07dd2ca91a7a3e096839c7 +Subproject commit ebf955df7a89ed0c7968f79faec1de49f61ed7cb From d5bab558271611f2054f35229ca79cda19a4005e Mon Sep 17 00:00:00 2001 From: "Carlos A. Crespo" Date: Thu, 26 Feb 2026 19:14:06 -0300 Subject: [PATCH 2/2] Migration 3.14 --- .github/workflows/main.yml | 4 +- Makefile | 2 +- about.po | 40 +- bugs.po | 84 +- c-api/allocation.po | 268 +- c-api/apiabiversion.po | 383 +- c-api/arg.po | 466 +- c-api/bool.po | 25 +- c-api/buffer.po | 281 +- c-api/bytearray.po | 29 +- c-api/bytes.po | 32 +- c-api/capsule.po | 80 +- c-api/code.po | 227 +- c-api/complex.po | 48 +- c-api/contextvars.po | 79 +- c-api/conversion.po | 12 +- c-api/dict.po | 65 +- c-api/exceptions.po | 1337 ++-- c-api/extension-modules.po | 361 + c-api/float.po | 42 +- c-api/frame.po | 45 +- c-api/function.po | 189 +- c-api/gcsupport.po | 186 +- c-api/hash.po | 34 +- c-api/import.po | 220 +- c-api/init.po | 3209 +++++---- c-api/init_config.po | 4456 ++++++++---- c-api/intro.po | 415 +- c-api/iter.po | 163 +- c-api/lifecycle.po | 362 + c-api/long.po | 607 +- c-api/marshal.po | 67 +- c-api/memory.po | 506 +- c-api/module.po | 873 ++- c-api/monitoring.po | 98 +- c-api/object.po | 1245 ++-- c-api/perfmaps.po | 51 +- c-api/refcounting.po | 181 +- c-api/reflection.po | 81 +- c-api/sequence.po | 38 +- c-api/slice.po | 209 +- c-api/stable.po | 86 +- c-api/structures.po | 509 +- c-api/sys.po | 356 +- c-api/time.po | 21 +- c-api/tuple.po | 172 +- c-api/type.po | 1110 ++- c-api/typeobj.po | 2313 +++--- c-api/unicode.po | 3311 +++++---- c-api/veryhigh.po | 210 +- c-api/weakref.po | 37 +- copyright.po | 6 +- deprecations/c-api-pending-removal-in-3.14.po | 373 +- deprecations/c-api-pending-removal-in-3.15.po | 315 +- deprecations/c-api-pending-removal-in-3.16.po | 29 + deprecations/c-api-pending-removal-in-3.18.po | 144 + .../c-api-pending-removal-in-future.po | 95 +- deprecations/index.po | 2027 ++++-- deprecations/pending-removal-in-3.13.po | 12 +- deprecations/pending-removal-in-3.14.po | 155 +- deprecations/pending-removal-in-3.15.po | 147 +- deprecations/pending-removal-in-3.16.po | 183 +- deprecations/pending-removal-in-3.17.po | 83 + deprecations/pending-removal-in-3.19.po | 36 + deprecations/pending-removal-in-future.po | 250 +- extending/building.po | 136 +- extending/embedding.po | 72 +- extending/extending.po | 654 +- extending/index.po | 60 +- extending/newtypes.po | 306 +- extending/newtypes_tutorial.po | 852 ++- extending/windows.po | 79 +- faq/design.po | 12 +- faq/extending.po | 201 +- faq/general.po | 52 +- faq/programming.po | 216 +- glossary.po | 1284 ++-- howto/a-conceptual-overview-of-asyncio.po | 817 +++ howto/annotations.po | 133 +- howto/argparse-optparse.po | 139 + howto/argparse.po | 389 +- howto/cporting.po | 22 +- howto/curses.po | 9 +- howto/descriptor.po | 306 +- howto/enum.po | 822 ++- howto/free-threading-extensions.po | 391 +- howto/free-threading-python.po | 146 +- howto/functional.po | 19 +- howto/gdb_helpers.po | 15 +- howto/index.po | 74 +- howto/ipaddress.po | 6 +- howto/isolating-extensions.po | 218 +- howto/logging-cookbook.po | 935 ++- howto/logging.po | 17 +- howto/mro.po | 6 +- howto/perf_profiling.po | 72 +- howto/regex.po | 369 +- howto/remote_debugging.po | 976 +++ howto/sockets.po | 8 +- howto/sorting.po | 239 +- howto/unicode.po | 19 +- howto/urllib2.po | 205 +- library/__future__.po | 206 +- library/__main__.po | 49 +- library/_thread.po | 76 +- library/abc.po | 22 +- library/aifc.po | 680 +- library/annotationlib.po | 985 +++ library/archiving.po | 21 +- library/argparse.po | 2462 ++++--- library/array.po | 87 +- library/ast.po | 818 ++- library/asynchat.po | 610 +- library/asyncio-dev.po | 114 +- library/asyncio-eventloop.po | 1041 +-- library/asyncio-future.po | 120 +- library/asyncio-graph.po | 204 + library/asyncio-llapi-index.po | 7 +- library/asyncio-platforms.po | 35 +- library/asyncio-policy.po | 671 +- library/asyncio-protocol.po | 16 +- library/asyncio-queue.po | 75 +- library/asyncio-runner.po | 108 +- library/asyncio-stream.po | 229 +- library/asyncio-subprocess.po | 241 +- library/asyncio-sync.po | 194 +- library/asyncio-task.po | 572 +- library/asyncio.po | 62 +- library/asyncore.po | 995 ++- library/audioop.po | 845 ++- library/audit_events.po | 18 +- library/base64.po | 212 +- library/bdb.po | 207 +- library/bisect.po | 84 +- library/builtins.po | 30 +- library/calendar.po | 285 +- library/cgi.po | 2048 +++--- library/cgitb.po | 308 +- library/chunk.po | 490 +- library/cmath.po | 524 +- library/cmdline.po | 118 +- library/cmdlinelibs.po | 35 + library/code.po | 68 +- library/codecs.po | 1266 ++-- library/collections.abc.po | 245 +- library/collections.po | 241 +- library/compileall.po | 137 +- library/compression.po | 56 + library/compression.zstd.po | 1157 +++ library/concurrent.futures.po | 453 +- library/concurrent.interpreters.po | 527 ++ library/concurrent.po | 21 +- library/configparser.po | 504 +- library/constants.po | 90 +- library/contextlib.po | 137 +- library/contextvars.po | 189 +- library/crypt.po | 512 +- library/csv.po | 214 +- library/ctypes.po | 1988 ++++-- library/curses.po | 1012 +-- library/dataclasses.po | 358 +- library/datetime.po | 1403 ++-- library/dbm.po | 17 +- library/decimal.po | 783 +- library/difflib.po | 24 +- library/dis.po | 1178 +-- library/distutils.po | 185 +- library/doctest.po | 1008 +-- library/email.compat32-message.po | 43 +- library/email.contentmanager.po | 42 +- library/email.errors.po | 151 +- library/email.examples.po | 12 +- library/email.header.po | 77 +- library/email.parser.po | 20 +- library/email.policy.po | 10 +- library/email.utils.po | 72 +- library/ensurepip.po | 93 +- library/enum.po | 519 +- library/errno.po | 155 +- library/exceptions.po | 445 +- library/faulthandler.po | 161 +- library/fcntl.po | 290 +- library/filecmp.po | 8 +- library/fnmatch.po | 57 +- library/fractions.po | 119 +- library/frameworks.po | 58 +- library/ftplib.po | 16 +- library/functions.po | 957 +-- library/functools.po | 330 +- library/gc.po | 275 +- library/getopt.po | 247 +- library/getpass.po | 46 +- library/graphlib.po | 55 +- library/grp.po | 14 +- library/gzip.po | 105 +- library/hashlib.po | 372 +- library/heapq.po | 249 +- library/hmac.po | 65 +- library/html.parser.po | 139 +- library/html.po | 21 +- library/http.client.po | 14 +- library/http.cookiejar.po | 21 +- library/http.cookies.po | 104 +- library/http.server.po | 456 +- library/idle.po | 654 +- library/imaplib.po | 353 +- library/imghdr.po | 295 +- library/imp.po | 1212 ++-- library/importlib.metadata.po | 567 +- library/importlib.po | 808 ++- library/inspect.po | 1067 +-- library/io.po | 794 +- library/ipaddress.po | 337 +- library/itertools.po | 656 +- library/json.po | 791 +- library/linecache.po | 25 +- library/locale.po | 456 +- library/logging.config.po | 115 +- library/logging.handlers.po | 481 +- library/logging.po | 549 +- library/mailbox.po | 591 +- library/mailcap.po | 342 +- library/marshal.po | 254 +- library/math.po | 1632 +++-- library/mimetypes.po | 232 +- library/mmap.po | 76 +- library/msilib.po | 1586 ++-- library/multiprocessing.po | 1438 ++-- library/netrc.po | 52 +- library/nis.po | 169 +- library/nntplib.po | 1556 ++-- library/operator.po | 383 +- library/optparse.po | 1236 ++-- library/os.path.po | 194 +- library/os.po | 2716 +++---- library/ossaudiodev.po | 1430 ++-- library/pathlib.po | 1383 ++-- library/pdb.po | 513 +- library/pickle.po | 488 +- library/pickletools.po | 31 +- library/pipes.po | 248 +- library/pkgutil.po | 178 +- library/platform.po | 151 +- library/plistlib.po | 69 +- library/poplib.po | 17 +- library/posix.po | 6 +- library/pprint.po | 9 +- library/profile.po | 332 +- library/pty.po | 6 +- library/pwd.po | 14 +- library/pydoc.po | 32 +- library/pyexpat.po | 300 +- library/python.po | 24 +- library/random.po | 104 +- library/re.po | 940 +-- library/readline.po | 188 +- library/removed.po | 31 + library/resource.po | 67 +- library/secrets.po | 10 +- library/security_warnings.po | 12 +- library/select.po | 306 +- library/selectors.po | 77 +- library/shutil.po | 477 +- library/signal.po | 152 +- library/site.po | 162 +- library/smtpd.po | 1075 ++- library/smtplib.po | 48 +- library/sndhdr.po | 376 +- library/socket.po | 1203 ++-- library/socketserver.po | 243 +- library/spwd.po | 335 +- library/sqlite3.po | 1018 +-- library/ssl.po | 1122 +-- library/stat.po | 6 +- library/statistics.po | 9 +- library/stdtypes.po | 4441 +++++++----- library/string.po | 667 +- library/string.templatelib.po | 331 + library/struct.po | 214 +- library/subprocess.po | 337 +- library/sunau.po | 722 +- library/superseded.po | 42 +- library/symtable.po | 138 +- library/sys.monitoring.po | 375 +- library/sys.po | 1317 ++-- library/sys_path_init.po | 122 +- library/sysconfig.po | 136 +- library/syslog.po | 12 +- library/tarfile.po | 949 ++- library/telnetlib.po | 725 +- library/termios.po | 6 +- library/test.po | 649 +- library/threading.po | 967 ++- library/time.po | 750 +- library/tk.po | 7 +- library/token.po | 720 +- library/tokenize.po | 78 +- library/tomllib.po | 105 +- library/traceback.po | 455 +- library/tty.po | 6 +- library/turtle.po | 1397 ++-- library/types.po | 291 +- library/typing.po | 3109 ++++---- library/unicodedata.po | 243 +- library/unittest.mock.po | 1038 +-- library/unittest.po | 1284 ++-- library/unix.po | 21 +- library/urllib.parse.po | 329 +- library/urllib.request.po | 1242 ++-- library/uu.po | 229 +- library/uuid.po | 405 +- library/venv.po | 361 +- library/warnings.po | 389 +- library/webbrowser.po | 211 +- library/winsound.po | 33 +- library/wsgiref.po | 264 +- library/xdrlib.po | 781 +- library/xml.dom.minidom.po | 132 +- library/xml.dom.pulldom.po | 73 +- library/xml.etree.elementtree.po | 581 +- library/xml.po | 409 +- library/xml.sax.handler.po | 111 +- library/xml.sax.po | 66 +- library/xmlrpc.client.po | 41 +- library/xmlrpc.server.po | 17 +- library/zipfile.po | 496 +- library/zipimport.po | 33 +- library/zlib.po | 35 +- library/zoneinfo.po | 29 +- license.po | 323 +- reference/compound_stmts.po | 1215 ++-- reference/datamodel.po | 2514 ++++--- reference/executionmodel.po | 157 +- reference/expressions.po | 1336 ++-- reference/grammar.po | 818 ++- reference/import.po | 857 ++- reference/introduction.po | 336 +- reference/lexical_analysis.po | 3139 +++++--- reference/simple_stmts.po | 564 +- tutorial/appendix.po | 20 +- tutorial/classes.po | 11 +- tutorial/controlflow.po | 452 +- tutorial/datastructures.po | 129 +- tutorial/errors.po | 213 +- tutorial/index.po | 29 +- tutorial/inputoutput.po | 240 +- tutorial/interactive.po | 16 +- tutorial/interpreter.po | 10 +- tutorial/introduction.po | 295 +- tutorial/modules.po | 261 +- tutorial/stdlib.po | 6 +- tutorial/stdlib2.po | 10 +- using/android.po | 72 +- using/cmdline.po | 663 +- using/configure.po | 939 ++- using/editors.po | 37 +- using/ios.po | 352 +- using/mac.po | 336 +- using/unix.po | 144 +- using/windows.po | 5603 +++++++++------ whatsnew/2.0.po | 216 +- whatsnew/2.3.po | 37 +- whatsnew/2.6.po | 900 +-- whatsnew/2.7.po | 101 +- whatsnew/3.0.po | 194 +- whatsnew/3.1.po | 428 +- whatsnew/3.10.po | 907 +-- whatsnew/3.11.po | 30 +- whatsnew/3.12.po | 2133 +++--- whatsnew/3.13.po | 2458 ++++--- whatsnew/3.14.po | 6361 +++++++++++++++++ whatsnew/3.2.po | 31 +- whatsnew/3.3.po | 2952 ++++---- whatsnew/3.4.po | 764 +- whatsnew/3.5.po | 975 +-- whatsnew/3.6.po | 269 +- whatsnew/3.7.po | 772 +- whatsnew/3.8.po | 346 +- whatsnew/3.9.po | 268 +- 379 files changed, 108741 insertions(+), 70079 deletions(-) create mode 100644 c-api/extension-modules.po create mode 100644 c-api/lifecycle.po create mode 100644 deprecations/c-api-pending-removal-in-3.16.po create mode 100644 deprecations/c-api-pending-removal-in-3.18.po create mode 100644 deprecations/pending-removal-in-3.17.po create mode 100644 deprecations/pending-removal-in-3.19.po create mode 100644 howto/a-conceptual-overview-of-asyncio.po create mode 100644 howto/argparse-optparse.po create mode 100644 howto/remote_debugging.po create mode 100644 library/annotationlib.po create mode 100644 library/asyncio-graph.po create mode 100644 library/cmdlinelibs.po create mode 100644 library/compression.po create mode 100644 library/compression.zstd.po create mode 100644 library/concurrent.interpreters.po create mode 100644 library/removed.po create mode 100644 library/string.templatelib.po create mode 100644 whatsnew/3.14.po diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9e34309dd9..835eeed937 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -23,10 +23,10 @@ jobs: fetch-depth: 2 # Instalación de dependencias - - name: Preparar Python v3.13 + - name: Preparar Python v3.14 uses: actions/setup-python@v6 with: - python-version: "3.13" + python-version: "3.14" cache: "pip" - name: Configura dpkg/apt para ejecutarse de manera eficiente uses: abbbi/github-actions-tune@v1 diff --git a/Makefile b/Makefile index 75f0f9dd50..6c2eb79e19 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ # Configuration CPYTHON_PATH := cpython # Current commit for this upstream repo is setted by the submodule -BRANCH := 3.13 +BRANCH := 3.14 LANGUAGE_TEAM := python-docs-es LANGUAGE := es diff --git a/about.po b/about.po index eef91cadc0..185258bea9 100644 --- a/about.po +++ b/about.po @@ -10,32 +10,34 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-25 19:47+0200\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2023-11-26 19:02+0100\n" "Last-Translator: Marcos Medrano \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.10.3\n" -"X-Generator: Poedit 3.4.1\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/about.rst:3 -msgid "About these documents" +#, fuzzy +msgid "About this documentation" msgstr "Acerca de estos documentos" #: ../Doc/about.rst:6 +#, fuzzy msgid "" -"These documents are generated from `reStructuredText`_ sources by `Sphinx`_, " -"a document processor specifically written for the Python documentation." +"Python's documentation is generated from `reStructuredText`_ sources using " +"`Sphinx`_, a documentation generator originally created for Python and now " +"maintained as an independent project." msgstr "" "Estos documentos son generados por `reStructuredText`_ desarrollado por " "`Sphinx`_, un procesador de documentos específicamente escrito para la " "documentación de Python." -#: ../Doc/about.rst:15 +#: ../Doc/about.rst:16 msgid "" "Development of the documentation and its toolchain is an entirely volunteer " "effort, just like Python itself. If you want to contribute, please take a " @@ -47,19 +49,20 @@ msgstr "" "favor revisa la página :ref:`reporting-bugs` para más información de cómo " "hacerlo. Los nuevos voluntarios son siempre bienvenidos!" -#: ../Doc/about.rst:20 +#: ../Doc/about.rst:21 msgid "Many thanks go to:" msgstr "Agradecemos a:" -#: ../Doc/about.rst:22 +#: ../Doc/about.rst:23 +#, fuzzy msgid "" "Fred L. Drake, Jr., the creator of the original Python documentation toolset " -"and writer of much of the content;" +"and author of much of the content;" msgstr "" "Fred L. Drake, Jr., el creador original de la documentación del conjunto de " "herramientas de Python y escritor de gran parte del contenido;" -#: ../Doc/about.rst:24 +#: ../Doc/about.rst:25 msgid "" "the `Docutils `_ project for creating " "reStructuredText and the Docutils suite;" @@ -67,7 +70,7 @@ msgstr "" "el proyecto `Docutils `_ para creación de " "reStructuredText y la suite Docutils;" -#: ../Doc/about.rst:26 +#: ../Doc/about.rst:27 msgid "" "Fredrik Lundh for his Alternative Python Reference project from which Sphinx " "got many good ideas." @@ -75,11 +78,12 @@ msgstr "" "Fredrik Lundh por su proyecto Referencia Alternativa de Python del que " "Sphinx obtuvo muchas buenas ideas." -#: ../Doc/about.rst:31 -msgid "Contributors to the Python Documentation" +#: ../Doc/about.rst:32 +#, fuzzy +msgid "Contributors to the Python documentation" msgstr "Contribuidores de la documentación de Python" -#: ../Doc/about.rst:33 +#: ../Doc/about.rst:34 msgid "" "Many people have contributed to the Python language, the Python standard " "library, and the Python documentation. See :source:`Misc/ACKS` in the " @@ -89,7 +93,7 @@ msgstr "" "estándar de Python, y la documentación de Python. Revisa :source:`Misc/ACKS` " "la distribución de Python para una lista parcial de contribuidores." -#: ../Doc/about.rst:37 +#: ../Doc/about.rst:38 msgid "" "It is only with the input and contributions of the Python community that " "Python has such wonderful documentation -- Thank You!" diff --git a/bugs.po b/bugs.po index 7b92c05ec9..4c664dd3c4 100644 --- a/bugs.po +++ b/bugs.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2023-11-26 21:55+0100\n" "Last-Translator: Marcos Medrano \n" "Language: es\n" @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/bugs.rst:5 msgid "Dealing with Bugs" @@ -51,10 +51,12 @@ msgid "Documentation bugs" msgstr "Documentación de errores" #: ../Doc/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:`tracker `. If you have a suggestion on how to fix it, include that as well." +"improvement, please submit a bug report on the :ref:`issue tracker `. If you have a suggestion on how to fix it, include that as " +"well." msgstr "" "Si encuentras un error en esta documentación o te gustaría proponer una " "mejora, por favor envía un informe de fallos en el :ref:`rastreador `_." msgstr "" -#: ../Doc/bugs.rst:29 -msgid "" -"If you're short on time, you can also email documentation bug reports to " -"docs@python.org (behavioral bugs can be sent to python-list@python.org). " -"'docs@' is a mailing list run by volunteers; your request will be noticed, " -"though it may take a while to be processed." -msgstr "" -"Si tienes poco tiempo, también puedes enviar un correo electrónico con el " -"informe de errores de documentación a la dirección docs@python.org (los " -"errores de comportamiento puedes enviarlos a la dirección python-list@python." -"org). 'docs@' es una lista de correo iniciada por voluntarios; tu petición " -"será notificada, aunque puede que lleve algo de tiempo el ser procesada." - -#: ../Doc/bugs.rst:37 +#: ../Doc/bugs.rst:31 msgid "`Documentation bugs`_" msgstr "`Documentación de errores`_" -#: ../Doc/bugs.rst:37 +#: ../Doc/bugs.rst:32 msgid "" "A list of documentation bugs that have been submitted to the Python issue " "tracker." @@ -101,17 +90,17 @@ msgstr "" "Una lista de errores (*bugs*) que ha sido enviada al issue tracker (sistema " "de seguimiento de incidentes) de Python." -#: ../Doc/bugs.rst:40 +#: ../Doc/bugs.rst:34 msgid "`Issue Tracking `_" msgstr "`Seguimiento de incidencias `_" -#: ../Doc/bugs.rst:40 +#: ../Doc/bugs.rst:35 msgid "" "Overview of the process involved in reporting an improvement on the tracker." msgstr "" "Resumen general del proceso necesario para reportar una mejora en el tracker." -#: ../Doc/bugs.rst:43 +#: ../Doc/bugs.rst:37 msgid "" "`Helping with Documentation `_" @@ -119,7 +108,7 @@ msgstr "" "`Ayudar con la documentación `_" -#: ../Doc/bugs.rst:43 +#: ../Doc/bugs.rst:38 msgid "" "Comprehensive guide for individuals that are interested in contributing to " "Python documentation." @@ -127,7 +116,7 @@ msgstr "" "Guía detallada para gente interesada en contribuir a la documentación de " "Python." -#: ../Doc/bugs.rst:45 +#: ../Doc/bugs.rst:40 #, fuzzy msgid "" "`Documentation Translations `_" -#: ../Doc/bugs.rst:46 +#: ../Doc/bugs.rst:41 msgid "" "A list of GitHub pages for documentation translation and their primary " "contacts." @@ -144,11 +133,11 @@ msgstr "" "Una lista de páginas de GitHub para la traducción de documentación y sus " "contactos principales." -#: ../Doc/bugs.rst:52 +#: ../Doc/bugs.rst:47 msgid "Using the Python issue tracker" msgstr "Utilizar el issue tracker de Python" -#: ../Doc/bugs.rst:54 +#: ../Doc/bugs.rst:49 msgid "" "Issue reports for Python itself should be submitted via the GitHub issues " "tracker (https://github.com/python/cpython/issues). The GitHub issues " @@ -160,7 +149,7 @@ msgstr "" "de incidencias de GitHub ofrece un formulario web que permite introducir la " "información pertinente y enviarla a los desarrolladores." -#: ../Doc/bugs.rst:59 +#: ../Doc/bugs.rst:54 msgid "" "The first step in filing a report is to determine whether the problem has " "already been reported. The advantage in doing so, aside from saving the " @@ -178,7 +167,7 @@ msgstr "" "¡te invitamos a incluirla si puedes!). Para hacerlo, busca en la base de " "datos de errores usando la zona de búsqueda al principio de esta página." -#: ../Doc/bugs.rst:66 +#: ../Doc/bugs.rst:61 msgid "" "If the problem you're reporting is not already in the list, log in to " "GitHub. If you don't already have a GitHub account, create a new account " @@ -190,7 +179,7 @@ msgstr "" "enlace \"Regístrate\". No es posible enviar un informe de error de forma " "anónima." -#: ../Doc/bugs.rst:71 +#: ../Doc/bugs.rst:66 msgid "" "Being now logged in, you can submit an issue. Click on the \"New issue\" " "button in the top bar to report a new issue." @@ -199,11 +188,11 @@ msgstr "" "en el botón \"New issue\" de la barra superior para notificar un nuevo " "informe de error." -#: ../Doc/bugs.rst:74 +#: ../Doc/bugs.rst:69 msgid "The submission form has two fields, \"Title\" and \"Comment\"." msgstr "El formulario de envío tiene dos campos: \"Title\" y \"Comment\"." -#: ../Doc/bugs.rst:76 +#: ../Doc/bugs.rst:71 msgid "" "For the \"Title\" field, enter a *very* short description of the problem; " "fewer than ten words is good." @@ -211,7 +200,7 @@ msgstr "" "En el campo \"Title\", introduzca una descripción *muy* breve del problema; " "menos de diez palabras es suficiente." -#: ../Doc/bugs.rst:79 +#: ../Doc/bugs.rst:74 msgid "" "In the \"Comment\" field, describe the problem in detail, including what you " "expected to happen and what did happen. Be sure to include whether any " @@ -223,7 +212,7 @@ msgstr "" "si cualquier módulo de extensión está involucrado, y qué plataformas de " "hardware y software estás usando (incluyendo las versiones correspondientes)." -#: ../Doc/bugs.rst:84 +#: ../Doc/bugs.rst:79 msgid "" "Each issue report will be reviewed by a developer who will determine what " "needs to be done to correct the problem. You will receive an update each " @@ -233,7 +222,7 @@ msgstr "" "es necesario hacer para corregir el problema. Recibirás una actualización " "cada vez que se tome una medida al respecto." -#: ../Doc/bugs.rst:93 +#: ../Doc/bugs.rst:86 msgid "" "`How to Report Bugs Effectively `_" @@ -241,7 +230,7 @@ msgstr "" "`Cómo informar de errores de manera efectiva `_" -#: ../Doc/bugs.rst:92 +#: ../Doc/bugs.rst:87 msgid "" "Article which goes into some detail about how to create a useful bug report. " "This describes what kind of information is useful and why it is useful." @@ -249,7 +238,7 @@ msgstr "" "Artículo que detalla cómo crear un informe de errores útil. Describe qué " "tipo de información es útil y por qué lo es." -#: ../Doc/bugs.rst:96 +#: ../Doc/bugs.rst:90 msgid "" "`Bug Writing Guidelines `_" @@ -257,7 +246,7 @@ msgstr "" "`Bug Writing Guidelines `_" -#: ../Doc/bugs.rst:96 +#: ../Doc/bugs.rst:91 msgid "" "Information about writing a good bug report. Some of this is specific to " "the Mozilla project, but describes general good practices." @@ -266,11 +255,11 @@ msgstr "" "información es específica al proyecto Mozilla, pero en general describe " "buenas prácticas." -#: ../Doc/bugs.rst:102 +#: ../Doc/bugs.rst:97 msgid "Getting started contributing to Python yourself" msgstr "Para empezar a contribuir en Python" -#: ../Doc/bugs.rst:104 +#: ../Doc/bugs.rst:99 msgid "" "Beyond just reporting bugs that you find, you are also welcome to submit " "patches to fix them. You can find more information on how to get started " @@ -284,3 +273,16 @@ msgstr "" "Guide`_. Si tienes preguntas, el `core-mentorship mailing list`_ es un " "agradable lugar para obtener respuestas a cualquiera y a todas las preguntas " "pertenecientes al proceso de corrección de problemas en Python." + +#~ msgid "" +#~ "If you're short on time, you can also email documentation bug reports to " +#~ "docs@python.org (behavioral bugs can be sent to python-list@python.org). " +#~ "'docs@' is a mailing list run by volunteers; your request will be " +#~ "noticed, though it may take a while to be processed." +#~ msgstr "" +#~ "Si tienes poco tiempo, también puedes enviar un correo electrónico con el " +#~ "informe de errores de documentación a la dirección docs@python.org (los " +#~ "errores de comportamiento puedes enviarlos a la dirección python-" +#~ "list@python.org). 'docs@' es una lista de correo iniciada por " +#~ "voluntarios; tu petición será notificada, aunque puede que lleve algo de " +#~ "tiempo el ser procesada." diff --git a/c-api/allocation.po b/c-api/allocation.po index dab388e66e..3eb42a94ec 100644 --- a/c-api/allocation.po +++ b/c-api/allocation.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-12 19:43+0200\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-04-09 21:56+0200\n" "Last-Translator: David Spindola\n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.13.0\n" -"X-Generator: Poedit 3.6\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/allocation.rst:6 msgid "Allocating Objects on the Heap" @@ -29,17 +28,28 @@ msgstr "Asignación de objetos en el montículo" #: ../Doc/c-api/allocation.rst:17 msgid "" "Initialize a newly allocated object *op* with its type and initial " -"reference. Returns the initialized object. If *type* indicates that the " -"object participates in the cyclic garbage detector, it is added to the " -"detector's set of observed objects. Other fields of the object are not " -"affected." +"reference. Returns the initialized object. Other fields of the object are " +"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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" -"Inicializa un objeto recién asignado *op* con su tipo y referencia inicial. " -"Retorna el objeto inicializado. Si *type* indica que el objeto participa en " -"el detector de basura cíclico, se agrega al conjunto de objetos observados " -"por el detector. Otros campos del objeto no se ven afectados." -#: ../Doc/c-api/allocation.rst:26 +#: ../Doc/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." @@ -47,14 +57,20 @@ msgstr "" "Esto hace todo lo que :c:func:`PyObject_Init` hace, y también inicializa la " "información de longitud para un objeto de tamaño variable." -#: ../Doc/c-api/allocation.rst:32 +#: ../Doc/c-api/allocation.rst:42 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." +"This function only initializes some of the object's memory. It does not " +"zero the rest." +msgstr "" + +#: ../Doc/c-api/allocation.rst:48 +#, fuzzy +msgid "" +"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 "" "Asigna un nuevo objeto de Python usando el tipo de estructura de C *TYPE* y " "el objeto de tipo Python *typeobj* (``PyTypeObject*``). Los campos no " @@ -63,43 +79,123 @@ msgstr "" "de referencias será uno). El tamaño de la asignación de memoria se determina " "a partir del campo :c:member:`~PyTypeObject.tp_basicsize` del objeto de tipo." -#: ../Doc/c-api/allocation.rst:43 -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 "" -"Asigna un nuevo objeto de Python utilizando el tipo de estructura de C " -"*TYPE* y el objeto de tipo Python *typeobj* (``PyTypeObject*``). Los campos " -"no definidos por el encabezado del objeto Python no se inicializan. La " -"memoria asignada permite la estructura *TYPE* más *size* (``Py_ssize_t``) " -"campos del tamaño dado por el campo :c:member:`~PyTypeObject.tp_itemsize` de " -"*typeobj*. Esto es útil para implementar objetos como las tuplas, que pueden " -"determinar su tamaño en el momento de la construcción. Integrar el arreglo " -"de campos en la misma asignación disminuye el número de asignaciones, " -"mejorando la eficiencia de la gestión de memoria." - -#: ../Doc/c-api/allocation.rst:57 -msgid "" -"Releases memory allocated to an object using :c:macro:`PyObject_New` " -"or :c:macro:`PyObject_NewVar`. This is normally called from " -"the :c:member:`~PyTypeObject.tp_dealloc` handler specified in the object's " -"type. The fields of the object should not be accessed after this call as " -"the memory is no longer a valid Python object." -msgstr "" -"Libera la memoria asignada a un objeto usando :c:macro:`PyObject_New` " -"o :c:macro:`PyObject_NewVar`. Esto normalmente se llama desde el " -"manejador :c:member:`~PyTypeObject.tp_dealloc` especificado en el tipo de " -"objeto. Los campos del objeto no deben ser accedidos después de esta " -"llamada, ya que la memoria ya no es un objeto de Python válido." - -#: ../Doc/c-api/allocation.rst:66 +#: ../Doc/c-api/allocation.rst:54 ../Doc/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 "" + +#: ../Doc/c-api/allocation.rst:57 ../Doc/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 "" + +#: ../Doc/c-api/allocation.rst:61 +msgid "" +"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 "" + +#: ../Doc/c-api/allocation.rst:65 +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 "" + +#: ../Doc/c-api/allocation.rst:68 +msgid "" +"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 "" + +#: ../Doc/c-api/allocation.rst:73 ../Doc/c-api/allocation.rst:123 +msgid "" +"The returned memory is not guaranteed to have been completely zeroed before " +"it was initialized." +msgstr "" + +#: ../Doc/c-api/allocation.rst:78 ../Doc/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 "" + +#: ../Doc/c-api/allocation.rst:83 +msgid "PyObject *foo = PyObject_CallNoArgs((PyObject *)&PyFoo_Type);" +msgstr "" + +#: ../Doc/c-api/allocation.rst:87 ../Doc/c-api/allocation.rst:137 +#, fuzzy +msgid ":c:func:`PyObject_Free`" +msgstr ":c:func:`PyModule_Create`" + +#: ../Doc/c-api/allocation.rst:88 +msgid ":c:macro:`PyObject_GC_New`" +msgstr "" + +#: ../Doc/c-api/allocation.rst:89 ../Doc/c-api/allocation.rst:139 +msgid ":c:func:`PyType_GenericAlloc`" +msgstr "" + +#: ../Doc/c-api/allocation.rst:90 ../Doc/c-api/allocation.rst:140 +msgid ":c:member:`~PyTypeObject.tp_alloc`" +msgstr "" + +#: ../Doc/c-api/allocation.rst:95 +msgid "Like :c:macro:`PyObject_New` except:" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/allocation.rst:100 +msgid "The memory is initialized like :c:func:`PyObject_InitVar`." +msgstr "" + +#: ../Doc/c-api/allocation.rst:102 +msgid "" +"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 "" + +#: ../Doc/c-api/allocation.rst:114 +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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/allocation.rst:133 +msgid "" +"PyObject *list_instance = PyObject_CallNoArgs((PyObject *)&PyList_Type);" +msgstr "" + +#: ../Doc/c-api/allocation.rst:138 +msgid ":c:macro:`PyObject_GC_NewVar`" +msgstr "" + +#: ../Doc/c-api/allocation.rst:145 +#, fuzzy +msgid "Same as :c:func:`PyObject_Free`." +msgstr ":c:func:`PyModule_Create`" + +#: ../Doc/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 " @@ -109,10 +205,58 @@ msgstr "" "utilizando el macro :c:macro:`Py_None`, que se evalúa como un puntero a este " "objeto." -#: ../Doc/c-api/allocation.rst:73 -msgid ":c:func:`PyModule_Create`" -msgstr ":c:func:`PyModule_Create`" +#: ../Doc/c-api/allocation.rst:156 +msgid ":ref:`moduleobjects`" +msgstr "" -#: ../Doc/c-api/allocation.rst:74 +#: ../Doc/c-api/allocation.rst:157 msgid "To allocate and create extension modules." msgstr "Para asignar y crear módulos de extensión." + +#~ msgid "" +#~ "Initialize a newly allocated object *op* with its type and initial " +#~ "reference. Returns the initialized object. If *type* indicates that the " +#~ "object participates in the cyclic garbage detector, it is added to the " +#~ "detector's set of observed objects. Other fields of the object are not " +#~ "affected." +#~ msgstr "" +#~ "Inicializa un objeto recién asignado *op* con su tipo y referencia " +#~ "inicial. Retorna el objeto inicializado. Si *type* indica que el objeto " +#~ "participa en el detector de basura cíclico, se agrega al conjunto de " +#~ "objetos observados por el detector. Otros campos del objeto no se ven " +#~ "afectados." + +#~ 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 "" +#~ "Asigna un nuevo objeto de Python utilizando el tipo de estructura de C " +#~ "*TYPE* y el objeto de tipo Python *typeobj* (``PyTypeObject*``). Los " +#~ "campos no definidos por el encabezado del objeto Python no se " +#~ "inicializan. La memoria asignada permite la estructura *TYPE* más *size* " +#~ "(``Py_ssize_t``) campos del tamaño dado por el campo :c:member:" +#~ "`~PyTypeObject.tp_itemsize` de *typeobj*. Esto es útil para implementar " +#~ "objetos como las tuplas, que pueden determinar su tamaño en el momento de " +#~ "la construcción. Integrar el arreglo de campos en la misma asignación " +#~ "disminuye el número de asignaciones, mejorando la eficiencia de la " +#~ "gestión de memoria." + +#~ msgid "" +#~ "Releases memory allocated to an object using :c:macro:`PyObject_New` or :" +#~ "c:macro:`PyObject_NewVar`. This is normally called from the :c:member:" +#~ "`~PyTypeObject.tp_dealloc` handler specified in the object's type. The " +#~ "fields of the object should not be accessed after this call as the memory " +#~ "is no longer a valid Python object." +#~ msgstr "" +#~ "Libera la memoria asignada a un objeto usando :c:macro:`PyObject_New` o :" +#~ "c:macro:`PyObject_NewVar`. Esto normalmente se llama desde el manejador :" +#~ "c:member:`~PyTypeObject.tp_dealloc` especificado en el tipo de objeto. " +#~ "Los campos del objeto no deben ser accedidos después de esta llamada, ya " +#~ "que la memoria ya no es un objeto de Python válido." diff --git a/c-api/apiabiversion.po b/c-api/apiabiversion.po index c5b8f4186f..afcdd18606 100644 --- a/c-api/apiabiversion.po +++ b/c-api/apiabiversion.po @@ -10,52 +10,56 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-12 19:43+0200\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2024-10-31 01:00-0400\n" "Last-Translator: \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.13.0\n" -"X-Generator: Poedit 3.5\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/apiabiversion.rst:7 msgid "API and ABI Versioning" msgstr "Versiones de API y ABI" -#: ../Doc/c-api/apiabiversion.rst:9 +#: ../Doc/c-api/apiabiversion.rst:11 +msgid "Build-time version constants" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:13 +#, fuzzy msgid "" "CPython exposes its version number in the following macros. Note that these " -"correspond to the version code is **built** with, not necessarily the " -"version used at **run time**." +"correspond to the version code is **built** with. See :c:var:`Py_Version` " +"for the version used at **run time**." msgstr "" "CPython expone su número de versión en las siguientes macros. Tenga en " "cuenta que estos corresponden a la versión con la que se **construye** el " "código, no necesariamente la versión utilizada en **tiempo de ejecución**." -#: ../Doc/c-api/apiabiversion.rst:13 +#: ../Doc/c-api/apiabiversion.rst:17 msgid "" "See :ref:`stable` for a discussion of API and ABI stability across versions." msgstr "" "Consulte :ref:`stable` para obtener una discusión sobre la estabilidad de " "API y ABI en todas las versiones." -#: ../Doc/c-api/apiabiversion.rst:17 +#: ../Doc/c-api/apiabiversion.rst:21 msgid "The ``3`` in ``3.4.1a2``." msgstr "El ``3`` en ``3.4.1a2``." -#: ../Doc/c-api/apiabiversion.rst:21 +#: ../Doc/c-api/apiabiversion.rst:25 msgid "The ``4`` in ``3.4.1a2``." msgstr "El ``4`` en ``3.4.1a2``." -#: ../Doc/c-api/apiabiversion.rst:25 +#: ../Doc/c-api/apiabiversion.rst:29 msgid "The ``1`` in ``3.4.1a2``." msgstr "El ``1`` en ``3.4.1a2``." -#: ../Doc/c-api/apiabiversion.rst:29 +#: ../Doc/c-api/apiabiversion.rst:33 msgid "" "The ``a`` in ``3.4.1a2``. This can be ``0xA`` for alpha, ``0xB`` for beta, " "``0xC`` for release candidate or ``0xF`` for final." @@ -64,145 +68,322 @@ msgstr "" "para la versión beta, ``0xC`` para la versión candidata o ``0xF`` para la " "versión final." -#: ../Doc/c-api/apiabiversion.rst:35 +#: ../Doc/c-api/apiabiversion.rst:39 msgid "The ``2`` in ``3.4.1a2``. Zero for final releases." msgstr "El ``2`` en ``3.4.1a2``, cero para lanzamientos finales." -#: ../Doc/c-api/apiabiversion.rst:39 -msgid "The Python version number encoded in a single integer." +#: ../Doc/c-api/apiabiversion.rst:43 +#, fuzzy +msgid "" +"The Python version number encoded in a single integer. See :c:func:" +"`Py_PACK_FULL_VERSION` for the encoding details." msgstr "El número de versión de Python codificado en un solo entero." -#: ../Doc/c-api/apiabiversion.rst:41 +#: ../Doc/c-api/apiabiversion.rst:46 +#, fuzzy msgid "" -"The underlying version information can be found by treating it as a 32 bit " -"number in the following manner:" +"Use this for numeric comparisons, for example, ``#if PY_VERSION_HEX >= ...``." msgstr "" -"La información de la versión subyacente se puede encontrar tratándola como " -"un número de 32 bits de la siguiente manera:" +"Use esto para comparaciones numéricas, por ejemplo ``#if PY_VERSION_HEX " +">= ...``." -#: ../Doc/c-api/apiabiversion.rst:45 -msgid "Bytes" -msgstr "Bytes" +#: ../Doc/c-api/apiabiversion.rst:51 +msgid "Run-time version" +msgstr "" -#: ../Doc/c-api/apiabiversion.rst:45 -msgid "Bits (big endian order)" -msgstr "Bits (orden *big-endian*)" +#: ../Doc/c-api/apiabiversion.rst:55 +#, fuzzy +msgid "" +"The Python runtime version number encoded in a single constant integer. See :" +"c:func:`Py_PACK_FULL_VERSION` for the encoding details. This contains the " +"Python version used at run time." +msgstr "" +"El número de versión de Python en tiempo de ejecución codificado en un único " +"entero constante, con el mismo formato que la macro :c:macro:" +"`PY_VERSION_HEX`. Contiene la versión de Python utilizada en tiempo de " +"ejecución." -#: ../Doc/c-api/apiabiversion.rst:45 -msgid "Meaning" -msgstr "Significado" +#: ../Doc/c-api/apiabiversion.rst:59 +#, fuzzy +msgid "" +"Use this for numeric comparisons, for example, ``if (Py_Version >= ...)``." +msgstr "" +"Use esto para comparaciones numéricas, por ejemplo ``#if PY_VERSION_HEX " +">= ...``." + +#: ../Doc/c-api/apiabiversion.rst:65 +msgid "Bit-packing macros" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:69 +msgid "" +"Return the given version, encoded as a single 32-bit integer with the " +"following structure:" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:75 +msgid "Argument" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:73 +msgid "No. of bits" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:75 +msgid "Bit mask" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:75 +msgid "Bit shift" +msgstr "" -#: ../Doc/c-api/apiabiversion.rst:45 -msgid "Value for ``3.4.1a2``" +#: ../Doc/c-api/apiabiversion.rst:73 +msgid "Example values" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:75 ../Doc/c-api/apiabiversion.rst:93 +#, fuzzy +msgid "``3.4.1a2``" msgstr "Valor para ``3.4.1a2``" -#: ../Doc/c-api/apiabiversion.rst:47 -msgid "1" -msgstr "1" +#: ../Doc/c-api/apiabiversion.rst:75 ../Doc/c-api/apiabiversion.rst:95 +#, fuzzy +msgid "``3.10.0``" +msgstr "``0x04``" + +#: ../Doc/c-api/apiabiversion.rst:77 +msgid "*major*" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:77 ../Doc/c-api/apiabiversion.rst:79 +#: ../Doc/c-api/apiabiversion.rst:81 +msgid "8" +msgstr "" -#: ../Doc/c-api/apiabiversion.rst:47 -msgid "1-8" -msgstr "1-8" +#: ../Doc/c-api/apiabiversion.rst:77 +#, fuzzy +msgid "``0xFF000000``" +msgstr "``0x04``" -#: ../Doc/c-api/apiabiversion.rst:47 -msgid "``PY_MAJOR_VERSION``" -msgstr "``PY_MAJOR_VERSION``" +#: ../Doc/c-api/apiabiversion.rst:77 +#, fuzzy +msgid "24" +msgstr "4" -#: ../Doc/c-api/apiabiversion.rst:47 +#: ../Doc/c-api/apiabiversion.rst:77 msgid "``0x03``" msgstr "``0x03``" -#: ../Doc/c-api/apiabiversion.rst:49 -msgid "2" -msgstr "2" +#: ../Doc/c-api/apiabiversion.rst:79 +msgid "*minor*" +msgstr "" -#: ../Doc/c-api/apiabiversion.rst:49 -msgid "9-16" -msgstr "9-16" +#: ../Doc/c-api/apiabiversion.rst:79 +#, fuzzy +msgid "``0x00FF0000``" +msgstr "``0x04``" -#: ../Doc/c-api/apiabiversion.rst:49 -msgid "``PY_MINOR_VERSION``" -msgstr "``PY_MINOR_VERSION``" +#: ../Doc/c-api/apiabiversion.rst:79 +#, fuzzy +msgid "16" +msgstr "9-16" -#: ../Doc/c-api/apiabiversion.rst:49 +#: ../Doc/c-api/apiabiversion.rst:79 msgid "``0x04``" msgstr "``0x04``" -#: ../Doc/c-api/apiabiversion.rst:51 -msgid "3" -msgstr "3" +#: ../Doc/c-api/apiabiversion.rst:79 +#, fuzzy +msgid "``0x0A``" +msgstr "``0xA``" -#: ../Doc/c-api/apiabiversion.rst:51 -msgid "17-24" -msgstr "17-24" +#: ../Doc/c-api/apiabiversion.rst:81 +msgid "*micro*" +msgstr "" -#: ../Doc/c-api/apiabiversion.rst:51 -msgid "``PY_MICRO_VERSION``" -msgstr "``PY_MICRO_VERSION``" +#: ../Doc/c-api/apiabiversion.rst:81 +#, fuzzy +msgid "``0x0000FF00``" +msgstr "``0x04``" -#: ../Doc/c-api/apiabiversion.rst:51 +#: ../Doc/c-api/apiabiversion.rst:81 msgid "``0x01``" msgstr "``0x01``" -#: ../Doc/c-api/apiabiversion.rst:53 +#: ../Doc/c-api/apiabiversion.rst:81 +#, fuzzy +msgid "``0x00``" +msgstr "``0x04``" + +#: ../Doc/c-api/apiabiversion.rst:83 +#, fuzzy +msgid "*release_level*" +msgstr "``PY_RELEASE_LEVEL``" + +#: ../Doc/c-api/apiabiversion.rst:83 ../Doc/c-api/apiabiversion.rst:85 msgid "4" msgstr "4" -#: ../Doc/c-api/apiabiversion.rst:53 -msgid "25-28" -msgstr "25-28" - -#: ../Doc/c-api/apiabiversion.rst:53 -msgid "``PY_RELEASE_LEVEL``" -msgstr "``PY_RELEASE_LEVEL``" +#: ../Doc/c-api/apiabiversion.rst:83 +#, fuzzy +msgid "``0x000000F0``" +msgstr "``0x04``" -#: ../Doc/c-api/apiabiversion.rst:53 +#: ../Doc/c-api/apiabiversion.rst:83 msgid "``0xA``" msgstr "``0xA``" -#: ../Doc/c-api/apiabiversion.rst:55 -msgid "29-32" -msgstr "29-32" +#: ../Doc/c-api/apiabiversion.rst:83 +#, fuzzy +msgid "``0xF``" +msgstr "``0xA``" -#: ../Doc/c-api/apiabiversion.rst:55 -msgid "``PY_RELEASE_SERIAL``" +#: ../Doc/c-api/apiabiversion.rst:85 +#, fuzzy +msgid "*release_serial*" msgstr "``PY_RELEASE_SERIAL``" -#: ../Doc/c-api/apiabiversion.rst:55 +#: ../Doc/c-api/apiabiversion.rst:85 +#, fuzzy +msgid "``0x0000000F``" +msgstr "``0x04``" + +#: ../Doc/c-api/apiabiversion.rst:85 +msgid "0" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:85 msgid "``0x2``" msgstr "``0x2``" -#: ../Doc/c-api/apiabiversion.rst:58 +#: ../Doc/c-api/apiabiversion.rst:85 +#, fuzzy +msgid "``0x0``" +msgstr "``0x04``" + +#: ../Doc/c-api/apiabiversion.rst:88 +msgid "For example:" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:91 +msgid "Version" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:91 +msgid "``Py_PACK_FULL_VERSION`` arguments" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:91 +msgid "Encoded version" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:93 +msgid "``(3, 4, 1, 0xA, 2)``" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:93 +#, fuzzy +msgid "``0x030401a2``" +msgstr "``0x04``" + +#: ../Doc/c-api/apiabiversion.rst:95 +msgid "``(3, 10, 0, 0xF, 0)``" +msgstr "" + +#: ../Doc/c-api/apiabiversion.rst:95 +#, fuzzy +msgid "``0x030a00f0``" +msgstr "``0x03``" + +#: ../Doc/c-api/apiabiversion.rst:98 msgid "" -"Thus ``3.4.1a2`` is hexversion ``0x030401a2`` and ``3.10.0`` is hexversion " -"``0x030a00f0``." +"Out-of range bits in the arguments are ignored. That is, the macro can be " +"defined as:" msgstr "" -"Así, ``3.4.1a2`` es la hexadecimal ``0x030401a2`` y ``3.10.0`` es la " -"hexadecimal ``0x030a00f0``." -#: ../Doc/c-api/apiabiversion.rst:61 -msgid "Use this for numeric comparisons, e.g. ``#if PY_VERSION_HEX >= ...``." +#: ../Doc/c-api/apiabiversion.rst:101 +msgid "" +"#ifndef Py_PACK_FULL_VERSION\n" +"#define Py_PACK_FULL_VERSION(X, Y, Z, LEVEL, SERIAL) ( \\\n" +" (((X) & 0xff) << 24) | \\\n" +" (((Y) & 0xff) << 16) | \\\n" +" (((Z) & 0xff) << 8) | \\\n" +" (((LEVEL) & 0xf) << 4) | \\\n" +" (((SERIAL) & 0xf) << 0))\n" +"#endif" msgstr "" -"Use esto para comparaciones numéricas, por ejemplo ``#if PY_VERSION_HEX " -">= ...``." -#: ../Doc/c-api/apiabiversion.rst:63 -msgid "This version is also available via the symbol :c:var:`Py_Version`." +#: ../Doc/c-api/apiabiversion.rst:112 +msgid "" +"``Py_PACK_FULL_VERSION`` is primarily a macro, intended for use in ``#if`` " +"directives, but it is also available as an exported function." msgstr "" -"Esta versión también está disponible a través del símbolo :c:var:" -"`Py_Version`." -#: ../Doc/c-api/apiabiversion.rst:67 +#: ../Doc/c-api/apiabiversion.rst:119 msgid "" -"The Python runtime version number encoded in a single constant integer, with " -"the same format as the :c:macro:`PY_VERSION_HEX` macro. This contains the " -"Python version used at run time." +"Equivalent to ``Py_PACK_FULL_VERSION(major, minor, 0, 0, 0)``. The result " +"does not correspond to any Python release, but is useful in numeric " +"comparisons." msgstr "" -"El número de versión de Python en tiempo de ejecución codificado en un único " -"entero constante, con el mismo formato que la macro :c:macro:" -"`PY_VERSION_HEX`. Contiene la versión de Python utilizada en tiempo de " -"ejecución." -#: ../Doc/c-api/apiabiversion.rst:73 -msgid "All the given macros are defined in :source:`Include/patchlevel.h`." -msgstr "Todas las macros dadas se definen en :source:`Include/patchlevel.h`." +#~ msgid "" +#~ "The underlying version information can be found by treating it as a 32 " +#~ "bit number in the following manner:" +#~ msgstr "" +#~ "La información de la versión subyacente se puede encontrar tratándola " +#~ "como un número de 32 bits de la siguiente manera:" + +#~ msgid "Bytes" +#~ msgstr "Bytes" + +#~ msgid "Bits (big endian order)" +#~ msgstr "Bits (orden *big-endian*)" + +#~ msgid "Meaning" +#~ msgstr "Significado" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "1-8" +#~ msgstr "1-8" + +#~ msgid "``PY_MAJOR_VERSION``" +#~ msgstr "``PY_MAJOR_VERSION``" + +#~ msgid "2" +#~ msgstr "2" + +#~ msgid "``PY_MINOR_VERSION``" +#~ msgstr "``PY_MINOR_VERSION``" + +#~ msgid "3" +#~ msgstr "3" + +#~ msgid "17-24" +#~ msgstr "17-24" + +#~ msgid "``PY_MICRO_VERSION``" +#~ msgstr "``PY_MICRO_VERSION``" + +#~ msgid "25-28" +#~ msgstr "25-28" + +#~ msgid "29-32" +#~ msgstr "29-32" + +#~ msgid "" +#~ "Thus ``3.4.1a2`` is hexversion ``0x030401a2`` and ``3.10.0`` is " +#~ "hexversion ``0x030a00f0``." +#~ msgstr "" +#~ "Así, ``3.4.1a2`` es la hexadecimal ``0x030401a2`` y ``3.10.0`` es la " +#~ "hexadecimal ``0x030a00f0``." + +#~ msgid "This version is also available via the symbol :c:var:`Py_Version`." +#~ msgstr "" +#~ "Esta versión también está disponible a través del símbolo :c:var:" +#~ "`Py_Version`." + +#~ msgid "All the given macros are defined in :source:`Include/patchlevel.h`." +#~ msgstr "" +#~ "Todas las macros dadas se definen en :source:`Include/patchlevel.h`." diff --git a/c-api/arg.po b/c-api/arg.po index a3c968b094..5b728b4926 100644 --- a/c-api/arg.po +++ b/c-api/arg.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2021-10-30 19:57-0300\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,15 +19,16 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/arg.rst:6 msgid "Parsing arguments and building values" msgstr "Analizando argumentos y construyendo valores" #: ../Doc/c-api/arg.rst:8 +#, fuzzy msgid "" -"These functions are useful when creating your own extensions functions and " +"These functions are useful when creating your own extension functions and " "methods. Additional information and examples are available in :ref:" "`extending-index`." msgstr "" @@ -87,8 +88,8 @@ msgid "" msgstr "" "En Python 3.12 y versiones anteriores, la macro :c:macro:`!PY_SSIZE_T_CLEAN` " "debe estar definida antes de incluir :file:`Python.h` para usar todas las " -"variantes ``#`` de formatos (``s#``, ``y#``, etc.) explicadas a continuación. " -"Esto no es necesario en Python 3.13 y versiones posteriores." +"variantes ``#`` de formatos (``s#``, ``y#``, etc.) explicadas a " +"continuación. Esto no es necesario en Python 3.13 y versiones posteriores." #: ../Doc/c-api/arg.rst:42 msgid "" @@ -107,7 +108,9 @@ msgstr "" #: ../Doc/c-api/arg.rst:48 msgid "There are three ways strings and buffers can be converted to C:" -msgstr "Hay tres formas en que las cadenas de caracteres y los búferes pueden convertirse a C:" +msgstr "" +"Hay tres formas en que las cadenas de caracteres y los búferes pueden " +"convertirse a C:" #: ../Doc/c-api/arg.rst:50 #, fuzzy @@ -133,9 +136,9 @@ msgid "" "**You have to call** :c:func:`PyMem_Free` after you have finished processing " "the data (or in any early abort case)." msgstr "" -"Los formatos ``es``, ``es#``, ``et`` y ``et#`` asignan el búfer de resultado. " -"**Debe llamar** :c:func:`PyMem_Free` después de haber terminado de procesar " -"los datos (o en cualquier caso de aborto temprano)." +"Los formatos ``es``, ``es#``, ``et`` y ``et#`` asignan el búfer de " +"resultado. **Debe llamar** :c:func:`PyMem_Free` después de haber terminado " +"de procesar los datos (o en cualquier caso de aborto temprano)." #: ../Doc/c-api/arg.rst:63 msgid "" @@ -147,10 +150,10 @@ msgid "" msgstr "" "Otros formatos toman un :class:`str` o un :term:`objeto de tipo bytes ` de solo lectura, como :class:`bytes`, y proporcionan un " -"puntero ``const char *`` a su búfer. En este caso el búfer es \"prestado\" " -"(*borrowed*): es gestionado por el objeto Python correspondiente y comparte " -"el tiempo de vida de este objeto. No tendrá que liberar ninguna memoria " -"usted mismo." +"puntero ``const char *`` a su búfer. En este caso el búfer es " +"\"prestado\" (*borrowed*): es gestionado por el objeto Python " +"correspondiente y comparte el tiempo de vida de este objeto. No tendrá que " +"liberar ninguna memoria usted mismo." #: ../Doc/c-api/arg.rst:70 msgid "" @@ -160,10 +163,10 @@ msgid "" "read-only objects such as :class:`memoryview` of :class:`bytes`." msgstr "" "Para asegurar que el búfer subyacente pueda ser prestado de forma segura, el " -"campo :c:member:`PyBufferProcs.bf_releasebuffer` del objeto debe ser ``NULL``. " -"Esto desautoriza objetos mutables comunes como :class:`bytearray`, pero " -"también algunos objetos de solo lectura como :class:`memoryview` de :class:" -"`bytes`." +"campo :c:member:`PyBufferProcs.bf_releasebuffer` del objeto debe ser " +"``NULL``. Esto desautoriza objetos mutables comunes como :class:`bytearray`, " +"pero también algunos objetos de solo lectura como :class:`memoryview` de :" +"class:`bytes`." #: ../Doc/c-api/arg.rst:76 msgid "" @@ -175,7 +178,7 @@ msgstr "" "comprobar si el objeto de entrada es inmutable (por ejemplo, si respetaría " "una solicitud de un búfer escribible, o si otro hilo puede mutar los datos)." -#: ../Doc/c-api/arg.rst:98 +#: ../Doc/c-api/arg.rst:80 msgid "``s`` (:class:`str`) [const char \\*]" msgstr "``s`` (:class:`str`) [const char \\*]" @@ -217,7 +220,7 @@ msgstr "" "Anteriormente, :exc:`TypeError` se lanzó cuando se encontraron puntos de " "código nulos incrustados en la cadena de caracteres de Python." -#: ../Doc/c-api/arg.rst:104 +#: ../Doc/c-api/arg.rst:100 msgid "``s*`` (:class:`str` or :term:`bytes-like object`) [Py_buffer]" msgstr "``s*`` (:class:`str` o :term:`bytes-like object`) [Py_buffer]" @@ -234,7 +237,7 @@ msgstr "" "NUL embebidos. Los objetos Unicode se convierten en cadenas de caracteres C " "utilizando codificación ``'utf-8'``." -#: ../Doc/c-api/arg.rst:111 +#: ../Doc/c-api/arg.rst:106 msgid "" "``s#`` (:class:`str`, read-only :term:`bytes-like object`) [const char \\*, :" "c:type:`Py_ssize_t`]" @@ -257,7 +260,7 @@ msgstr "" "contener caracteres nulos incrustados. Los objetos Unicode se convierten en " "cadenas de caracteres C utilizando codificación ``'utf-8'``." -#: ../Doc/c-api/arg.rst:115 ../Doc/c-api/arg.rst:582 +#: ../Doc/c-api/arg.rst:113 ../Doc/c-api/arg.rst:614 msgid "``z`` (:class:`str` or ``None``) [const char \\*]" msgstr "``z`` (:class:`str` o ``None``) [const char \\*]" @@ -269,7 +272,7 @@ msgstr "" "Como ``s``, pero el objeto Python también puede ser ``None``, en cuyo caso " "el puntero C se establece en ``NULL``." -#: ../Doc/c-api/arg.rst:119 +#: ../Doc/c-api/arg.rst:117 msgid "" "``z*`` (:class:`str`, :term:`bytes-like object` or ``None``) [Py_buffer]" msgstr "" @@ -284,7 +287,7 @@ msgstr "" "el miembro de ``buf`` de la estructura :c:type:`Py_buffer` se establece en " "``NULL``." -#: ../Doc/c-api/arg.rst:123 +#: ../Doc/c-api/arg.rst:121 msgid "" "``z#`` (:class:`str`, read-only :term:`bytes-like object` or ``None``) " "[const char \\*, :c:type:`Py_ssize_t`]" @@ -300,7 +303,7 @@ msgstr "" "Como ``s#``, pero el objeto Python también puede ser ``None``, en cuyo caso " "el puntero C se establece en ``NULL``." -#: ../Doc/c-api/arg.rst:134 +#: ../Doc/c-api/arg.rst:125 msgid "``y`` (read-only :term:`bytes-like object`) [const char \\*]" msgstr "``y`` (:term:`bytes-like object` de sólo lectura) [const char \\*]" @@ -325,7 +328,7 @@ msgstr "" "Anteriormente, :exc:`TypeError` se lanzó cuando bytes nulos incrustados se " "encontraron en el buffer de bytes." -#: ../Doc/c-api/arg.rst:139 +#: ../Doc/c-api/arg.rst:136 msgid "``y*`` (:term:`bytes-like object`) [Py_buffer]" msgstr "``y*`` (:term:`bytes-like object`) [Py_buffer]" @@ -337,7 +340,7 @@ msgstr "" "Esta variante de ``s*`` no acepta objetos Unicode, solamente los objetos de " "tipo bytes. **Esta es la forma recomendada para aceptar datos binarios.**" -#: ../Doc/c-api/arg.rst:143 +#: ../Doc/c-api/arg.rst:141 msgid "" "``y#`` (read-only :term:`bytes-like object`) [const char \\*, :c:type:" "`Py_ssize_t`]" @@ -353,7 +356,7 @@ msgstr "" "Esta variante en ``s#`` no acepta objetos Unicode, solo objetos similares a " "bytes." -#: ../Doc/c-api/arg.rst:148 +#: ../Doc/c-api/arg.rst:145 msgid "``S`` (:class:`bytes`) [PyBytesObject \\*]" msgstr "``S`` (:class:`bytes`) [PyBytesObject \\*]" @@ -368,7 +371,7 @@ msgstr "" "ninguna conversión. Lanza :exc:`TypeError` si el objeto no es un objeto " "bytes. La variable C también puede ser declarado como :c:type:`PyObject*`." -#: ../Doc/c-api/arg.rst:153 +#: ../Doc/c-api/arg.rst:150 msgid "``Y`` (:class:`bytearray`) [PyByteArrayObject \\*]" msgstr "``Y`` (:class:`bytearray`) [PyByteArrayObject \\*]" @@ -385,7 +388,7 @@ msgstr "" "class:`bytearray`. La variable C también puede ser declarada como :c:type:" "`PyObject*`." -#: ../Doc/c-api/arg.rst:158 +#: ../Doc/c-api/arg.rst:155 msgid "``U`` (:class:`str`) [PyObject \\*]" msgstr "``U`` (:class:`str`) [PyObject \\*]" @@ -400,7 +403,7 @@ msgstr "" "conversión. Lanza :exc:`TypeError` si el objeto no es un objeto Unicode. La " "variable C también puede ser declarada como :c:type:`PyObject*`." -#: ../Doc/c-api/arg.rst:164 +#: ../Doc/c-api/arg.rst:160 msgid "``w*`` (read-write :term:`bytes-like object`) [Py_buffer]" msgstr "``w*`` (:term:`bytes-like object` de lectura y escritura) [Py_buffer]" @@ -416,7 +419,7 @@ msgstr "" "quien llama. El búfer puede contener bytes nulos incrustados. Quien llama " "tiene que llamar :c:func:`PyBuffer_Release` cuando termina con el búfer." -#: ../Doc/c-api/arg.rst:181 +#: ../Doc/c-api/arg.rst:166 msgid "``es`` (:class:`str`) [const char \\*encoding, char \\*\\*buffer]" msgstr "``es`` (:class:`str`) [const char \\*encoding, char \\*\\*buffer]" @@ -460,7 +463,7 @@ msgstr "" "el nuevo almacenamiento asignado. Quien llama es responsable para llamar :c:" "func:`PyMem_Free` para liberar el búfer asignado después de su uso." -#: ../Doc/c-api/arg.rst:186 +#: ../Doc/c-api/arg.rst:183 msgid "" "``et`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char " "\\*encoding, char \\*\\*buffer]" @@ -479,7 +482,7 @@ msgstr "" "objeto de cadena de caracteres de bytes utiliza la codificación que se pasa " "como parámetro." -#: ../Doc/c-api/arg.rst:217 +#: ../Doc/c-api/arg.rst:188 msgid "" "``es#`` (:class:`str`) [const char \\*encoding, char \\*\\*buffer, :c:type:" "`Py_ssize_t` \\*buffer_length]" @@ -561,7 +564,7 @@ msgstr "" "En ambos casos, *\\*buffer_length* se establece a la longitud de los datos " "codificados sin el byte NUL final." -#: ../Doc/c-api/arg.rst:222 +#: ../Doc/c-api/arg.rst:219 msgid "" "``et#`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char " "\\*encoding, char \\*\\*buffer, :c:type:`Py_ssize_t` \\*buffer_length]" @@ -592,46 +595,63 @@ msgstr "" msgid "Numbers" msgstr "Números" -#: ../Doc/c-api/arg.rst:234 +#: ../Doc/c-api/arg.rst:232 +msgid "" +"These formats allow representing Python numbers or single characters as C " +"numbers. Formats that require :class:`int`, :class:`float` or :class:" +"`complex` can also use the corresponding special methods :meth:`~object." +"__index__`, :meth:`~object.__float__` or :meth:`~object.__complex__` to " +"convert the Python object to the required type." +msgstr "" + +#: ../Doc/c-api/arg.rst:238 +msgid "" +"For signed integer formats, :exc:`OverflowError` is raised if the value is " +"out of range for the C type. For unsigned integer formats, no range checking " +"is done --- the most significant bits are silently truncated when the " +"receiving field is too small to receive the value." +msgstr "" + +#: ../Doc/c-api/arg.rst:244 msgid "``b`` (:class:`int`) [unsigned char]" msgstr "``b`` (:class:`int`) [unsigned char]" -#: ../Doc/c-api/arg.rst:233 +#: ../Doc/c-api/arg.rst:245 #, fuzzy msgid "" -"Convert a nonnegative Python integer to an unsigned tiny int, stored in a C :" -"c:expr:`unsigned char`." +"Convert a nonnegative Python integer to an unsigned tiny integer, stored in " +"a C :c:expr:`unsigned char`." msgstr "" "Convierte un entero de Python no negativo en un pequeño int sin signo, " "almacenado en un :c:type:`unsigned char` de C." -#: ../Doc/c-api/arg.rst:238 ../Doc/c-api/arg.rst:616 +#: ../Doc/c-api/arg.rst:248 ../Doc/c-api/arg.rst:648 msgid "``B`` (:class:`int`) [unsigned char]" msgstr "``B`` (:class:`int`) [unsigned char]" -#: ../Doc/c-api/arg.rst:237 +#: ../Doc/c-api/arg.rst:249 #, fuzzy msgid "" -"Convert a Python integer to a tiny int without overflow checking, stored in " -"a C :c:expr:`unsigned char`." +"Convert a Python integer to a tiny integer without overflow checking, stored " +"in a C :c:expr:`unsigned char`." msgstr "" "Convierte un entero de Python en un pequeño int sin comprobación de " "desbordamiento, almacenado en un :c:type:`unsigned char` de C." -#: ../Doc/c-api/arg.rst:241 ../Doc/c-api/arg.rst:610 +#: ../Doc/c-api/arg.rst:252 ../Doc/c-api/arg.rst:642 msgid "``h`` (:class:`int`) [short int]" msgstr "``h`` (:class:`int`) [short int]" -#: ../Doc/c-api/arg.rst:241 +#: ../Doc/c-api/arg.rst:253 #, fuzzy msgid "Convert a Python integer to a C :c:expr:`short int`." msgstr "Convierte un entero de Python a un :c:type:`short int` de C." -#: ../Doc/c-api/arg.rst:245 ../Doc/c-api/arg.rst:619 +#: ../Doc/c-api/arg.rst:255 ../Doc/c-api/arg.rst:651 msgid "``H`` (:class:`int`) [unsigned short int]" msgstr "``H`` (:class:`int`) [unsigned short int]" -#: ../Doc/c-api/arg.rst:244 +#: ../Doc/c-api/arg.rst:256 #, fuzzy msgid "" "Convert a Python integer to a C :c:expr:`unsigned short int`, without " @@ -640,20 +660,20 @@ msgstr "" "Convierte un entero de Python a un :c:type:`unsigned short int` de C, sin " "verificación de desbordamiento." -#: ../Doc/c-api/arg.rst:248 ../Doc/c-api/arg.rst:604 +#: ../Doc/c-api/arg.rst:259 ../Doc/c-api/arg.rst:636 msgid "``i`` (:class:`int`) [int]" msgstr "``i`` (:class:`int`) [int]" -#: ../Doc/c-api/arg.rst:248 +#: ../Doc/c-api/arg.rst:260 #, fuzzy msgid "Convert a Python integer to a plain C :c:expr:`int`." msgstr "Convierte un entero Python a un :c:type:`int` de C plano." -#: ../Doc/c-api/arg.rst:252 ../Doc/c-api/arg.rst:622 +#: ../Doc/c-api/arg.rst:262 ../Doc/c-api/arg.rst:654 msgid "``I`` (:class:`int`) [unsigned int]" msgstr "``I`` (:class:`int`) [unsigned int]" -#: ../Doc/c-api/arg.rst:251 +#: ../Doc/c-api/arg.rst:263 #, fuzzy msgid "" "Convert a Python integer to a C :c:expr:`unsigned int`, without overflow " @@ -662,20 +682,20 @@ msgstr "" "Convierte un entero de Python a un :c:type:`unsigned int` de C, sin " "verificación de desbordamiento." -#: ../Doc/c-api/arg.rst:255 ../Doc/c-api/arg.rst:613 +#: ../Doc/c-api/arg.rst:266 ../Doc/c-api/arg.rst:645 msgid "``l`` (:class:`int`) [long int]" msgstr "``l`` (:class:`int`) [long int]" -#: ../Doc/c-api/arg.rst:255 +#: ../Doc/c-api/arg.rst:267 #, fuzzy msgid "Convert a Python integer to a C :c:expr:`long int`." msgstr "Convierte un entero Python a un :c:type:`long int` de C." -#: ../Doc/c-api/arg.rst:259 ../Doc/c-api/arg.rst:625 +#: ../Doc/c-api/arg.rst:269 ../Doc/c-api/arg.rst:657 msgid "``k`` (:class:`int`) [unsigned long]" msgstr "``k`` (:class:`int`) [unsigned long]" -#: ../Doc/c-api/arg.rst:258 +#: ../Doc/c-api/arg.rst:270 #, fuzzy msgid "" "Convert a Python integer to a C :c:expr:`unsigned long` without overflow " @@ -684,20 +704,24 @@ msgstr "" "Convierte un entero de Python a un :c:type:`unsigned long` de C, sin " "verificación de desbordamiento." -#: ../Doc/c-api/arg.rst:262 ../Doc/c-api/arg.rst:628 +#: ../Doc/c-api/arg.rst:273 ../Doc/c-api/arg.rst:283 +msgid "Use :meth:`~object.__index__` if available." +msgstr "" + +#: ../Doc/c-api/arg.rst:276 ../Doc/c-api/arg.rst:660 msgid "``L`` (:class:`int`) [long long]" msgstr "``L`` (:class:`int`) [long long]" -#: ../Doc/c-api/arg.rst:262 +#: ../Doc/c-api/arg.rst:277 #, fuzzy msgid "Convert a Python integer to a C :c:expr:`long long`." msgstr "Convierte un entero de Python a un :c:type:`long long` de C." -#: ../Doc/c-api/arg.rst:266 ../Doc/c-api/arg.rst:631 +#: ../Doc/c-api/arg.rst:279 ../Doc/c-api/arg.rst:665 msgid "``K`` (:class:`int`) [unsigned long long]" msgstr "``K`` (:class:`int`) [unsigned long long]" -#: ../Doc/c-api/arg.rst:265 +#: ../Doc/c-api/arg.rst:280 #, fuzzy msgid "" "Convert a Python integer to a C :c:expr:`unsigned long long` without " @@ -706,20 +730,20 @@ msgstr "" "Convierte un entero de Python a un :c:type:`unsigned long long` de C, sin " "verificación de desbordamiento." -#: ../Doc/c-api/arg.rst:269 ../Doc/c-api/arg.rst:634 +#: ../Doc/c-api/arg.rst:286 ../Doc/c-api/arg.rst:668 #, fuzzy msgid "``n`` (:class:`int`) [:c:type:`Py_ssize_t`]" msgstr "``n`` (:class:`int`) [Py_ssize_t]" -#: ../Doc/c-api/arg.rst:269 +#: ../Doc/c-api/arg.rst:287 msgid "Convert a Python integer to a C :c:type:`Py_ssize_t`." msgstr "Convierte un entero de Python a un :c:type:`Py_ssize_t` de C." -#: ../Doc/c-api/arg.rst:276 +#: ../Doc/c-api/arg.rst:289 msgid "``c`` (:class:`bytes` or :class:`bytearray` of length 1) [char]" msgstr "``c`` (:class:`bytes` o :class:`bytearray` de largo 1) [char]" -#: ../Doc/c-api/arg.rst:272 +#: ../Doc/c-api/arg.rst:290 #, fuzzy msgid "" "Convert a Python byte, represented as a :class:`bytes` or :class:`bytearray` " @@ -728,15 +752,15 @@ msgstr "" "Convierte un byte de Python, representado como un objeto :class:`bytes` o :" "class:`bytearray` de longitud 1, a un :c:type:`char` de C." -#: ../Doc/c-api/arg.rst:275 +#: ../Doc/c-api/arg.rst:293 msgid "Allow :class:`bytearray` objects." msgstr "Permite objetos :class:`bytearray`." -#: ../Doc/c-api/arg.rst:280 ../Doc/c-api/arg.rst:642 +#: ../Doc/c-api/arg.rst:296 ../Doc/c-api/arg.rst:686 msgid "``C`` (:class:`str` of length 1) [int]" msgstr "``C`` (:class:`str` de largo 1) [int]" -#: ../Doc/c-api/arg.rst:279 +#: ../Doc/c-api/arg.rst:297 #, fuzzy msgid "" "Convert a Python character, represented as a :class:`str` object of length " @@ -745,45 +769,45 @@ msgstr "" "Convierte un carácter Python, representado como un objeto :class:`str` de " "longitud 1, a un tipo :c:type:`int` de C." -#: ../Doc/c-api/arg.rst:283 ../Doc/c-api/arg.rst:648 +#: ../Doc/c-api/arg.rst:300 ../Doc/c-api/arg.rst:693 msgid "``f`` (:class:`float`) [float]" msgstr "``f`` (:class:`float`) [float]" -#: ../Doc/c-api/arg.rst:283 +#: ../Doc/c-api/arg.rst:301 #, fuzzy msgid "Convert a Python floating-point number to a C :c:expr:`float`." msgstr "" "Convierte un número de punto flotante de Python a un :c:type:`float` de C." -#: ../Doc/c-api/arg.rst:286 ../Doc/c-api/arg.rst:645 +#: ../Doc/c-api/arg.rst:303 ../Doc/c-api/arg.rst:690 msgid "``d`` (:class:`float`) [double]" msgstr "``d`` (:class:`float`) [double]" -#: ../Doc/c-api/arg.rst:286 +#: ../Doc/c-api/arg.rst:304 #, fuzzy msgid "Convert a Python floating-point number to a C :c:expr:`double`." msgstr "" "Convierte un número de punto flotante de Python a un :c:type:`double` de C." -#: ../Doc/c-api/arg.rst:289 +#: ../Doc/c-api/arg.rst:306 msgid "``D`` (:class:`complex`) [Py_complex]" msgstr "``D`` (:class:`complex`) [Py_complex]" -#: ../Doc/c-api/arg.rst:289 +#: ../Doc/c-api/arg.rst:307 msgid "Convert a Python complex number to a C :c:type:`Py_complex` structure." msgstr "" "Convierte un número complejo de Python en una estructura :c:type:" "`Py_complex` de C." -#: ../Doc/c-api/arg.rst:292 +#: ../Doc/c-api/arg.rst:310 msgid "Other objects" msgstr "Otros objetos" -#: ../Doc/c-api/arg.rst:299 ../Doc/c-api/arg.rst:661 +#: ../Doc/c-api/arg.rst:312 ../Doc/c-api/arg.rst:699 msgid "``O`` (object) [PyObject \\*]" msgstr "``O`` (object) [PyObject \\*]" -#: ../Doc/c-api/arg.rst:295 +#: ../Doc/c-api/arg.rst:313 #, fuzzy msgid "" "Store a Python object (without any conversion) in a C object pointer. The C " @@ -795,11 +819,11 @@ msgstr "" "C. El programa C recibe así el objeto real que se pasó. El recuento de " "referencia del objeto no aumenta. El puntero almacenado no es ``NULL``." -#: ../Doc/c-api/arg.rst:306 +#: ../Doc/c-api/arg.rst:319 msgid "``O!`` (object) [*typeobject*, PyObject \\*]" msgstr "``O!`` (object) [*typeobject*, PyObject \\*]" -#: ../Doc/c-api/arg.rst:302 +#: ../Doc/c-api/arg.rst:320 #, fuzzy msgid "" "Store a Python object in a C object pointer. This is similar to ``O``, but " @@ -814,11 +838,12 @@ msgstr "" "`PyObject*`) en el que se almacena el puntero del objeto. Si el objeto " "Python no tiene el tipo requerido, se lanza :exc:`TypeError`." -#: ../Doc/c-api/arg.rst:331 ../Doc/c-api/arg.rst:675 -msgid "``O&`` (object) [*converter*, *anything*]" +#: ../Doc/c-api/arg.rst:328 +#, fuzzy +msgid "``O&`` (object) [*converter*, *address*]" msgstr "``O&`` (object) [*converter*, *anything*]" -#: ../Doc/c-api/arg.rst:311 +#: ../Doc/c-api/arg.rst:329 #, fuzzy msgid "" "Convert a Python object to a C variable through a *converter* function. " @@ -832,11 +857,11 @@ msgstr "" "a :c:type:`void *`. La función *converter* a su vez se llama de la siguiente " "manera::" -#: ../Doc/c-api/arg.rst:316 +#: ../Doc/c-api/arg.rst:334 msgid "status = converter(object, address);" msgstr "" -#: ../Doc/c-api/arg.rst:318 +#: ../Doc/c-api/arg.rst:336 #, fuzzy msgid "" "where *object* is the Python object to be converted and *address* is the :c:" @@ -852,13 +877,14 @@ msgstr "" "la conversión ha fallado. Cuando la conversión falla, la función *converter* " "debería lanzar una excepción y dejar el contenido de *address* sin modificar." -#: ../Doc/c-api/arg.rst:324 +#: ../Doc/c-api/arg.rst:345 +#, fuzzy msgid "" -"If the *converter* returns ``Py_CLEANUP_SUPPORTED``, it may get called a " -"second time if the argument parsing eventually fails, giving the converter a " -"chance to release any memory that it had already allocated. In this second " -"call, the *object* parameter will be ``NULL``; *address* will have the same " -"value as in the original call." +"If the *converter* returns :c:macro:`!Py_CLEANUP_SUPPORTED`, it may get " +"called a second time if the argument parsing eventually fails, giving the " +"converter a chance to release any memory that it had already allocated. In " +"this second call, the *object* parameter will be ``NULL``; *address* will " +"have the same value as in the original call." msgstr "" "Si el *converter* retorna ``Py_CLEANUP_SUPPORTED``, se puede llamar por " "segunda vez si el análisis del argumento finalmente falla, dando al " @@ -866,15 +892,22 @@ msgstr "" "asignado. En esta segunda llamada, el parámetro *object* será ``NULL``; " "*address* tendrá el mismo valor que en la llamada original." -#: ../Doc/c-api/arg.rst:330 -msgid "``Py_CLEANUP_SUPPORTED`` was added." +#: ../Doc/c-api/arg.rst:351 +msgid "" +"Examples of converters: :c:func:`PyUnicode_FSConverter` and :c:func:" +"`PyUnicode_FSDecoder`." +msgstr "" + +#: ../Doc/c-api/arg.rst:354 +#, fuzzy +msgid ":c:macro:`!Py_CLEANUP_SUPPORTED` was added." msgstr "``Py_CLEANUP_SUPPORTED`` fue agregada." -#: ../Doc/c-api/arg.rst:340 +#: ../Doc/c-api/arg.rst:357 ../Doc/c-api/arg.rst:671 msgid "``p`` (:class:`bool`) [int]" msgstr "``p`` (:class:`bool`) [int]" -#: ../Doc/c-api/arg.rst:334 +#: ../Doc/c-api/arg.rst:358 msgid "" "Tests the value passed in for truth (a boolean **p**\\ redicate) and " "converts the result to its equivalent C true/false integer value. Sets the " @@ -888,38 +921,45 @@ msgstr "" "Esto acepta cualquier valor válido de Python. Consulte :ref:`truth` para " "obtener más información sobre cómo Python prueba los valores por verdad." -#: ../Doc/c-api/arg.rst:345 ../Doc/c-api/arg.rst:678 -msgid "``(items)`` (:class:`tuple`) [*matching-items*]" +#: ../Doc/c-api/arg.rst:366 +#, fuzzy +msgid "``(items)`` (sequence) [*matching-items*]" msgstr "``(items)`` (:class:`tuple`) [*matching-items*]" -#: ../Doc/c-api/arg.rst:343 +#: ../Doc/c-api/arg.rst:367 +#, fuzzy msgid "" -"The object must be a Python sequence whose length is the number of format " -"units in *items*. The C arguments must correspond to the individual format " -"units in *items*. Format units for sequences may be nested." +"The object must be a Python sequence (except :class:`str`, :class:`bytes` " +"or :class:`bytearray`) whose length is the number of format units in " +"*items*. The C arguments must correspond to the individual format units in " +"*items*. Format units for sequences may be nested." msgstr "" "El objeto debe ser una secuencia de Python cuya longitud es el número de " "unidades de formato en *items*. Los argumentos C deben corresponder a las " "unidades de formato individuales en *items*. Las unidades de formato para " "secuencias pueden estar anidadas." -#: ../Doc/c-api/arg.rst:347 -#, fuzzy +#: ../Doc/c-api/arg.rst:372 +msgid "" +"If *items* contains format units which store a :ref:`borrowed buffer ` (``s``, ``s#``, ``z``, ``z#``, ``y``, or ``y#``) or a :" +"term:`borrowed reference` (``S``, ``Y``, ``U``, ``O``, or ``O!``), the " +"object must be a Python tuple. The *converter* for the ``O&`` format unit in " +"*items* must not store a borrowed buffer or a borrowed reference." +msgstr "" + +#: ../Doc/c-api/arg.rst:379 +msgid "" +":class:`str` and :class:`bytearray` objects no longer accepted as a sequence." +msgstr "" + +#: ../Doc/c-api/arg.rst:382 msgid "" -"It is possible to pass \"long\" integers (integers whose value exceeds the " -"platform's :c:macro:`LONG_MAX`) however no proper range checking is done --- " -"the most significant bits are silently truncated when the receiving field is " -"too small to receive the value (actually, the semantics are inherited from " -"downcasts in C --- your mileage may vary)." +"Non-tuple sequences are deprecated if *items* contains format units which " +"store a borrowed buffer or a borrowed reference." msgstr "" -"Es posible pasar enteros \"largos\" (enteros cuyo valor excede el de la " -"plataforma :const:`LONG_MAX`), sin embargo, no se realiza una verificación " -"de rango adecuada --- los bits más significativos se truncan silenciosamente " -"cuando el campo receptor es demasiado pequeño para recibir el valor (en " -"realidad, la semántica se hereda de las descargas en C --- su kilometraje " -"puede variar)." -#: ../Doc/c-api/arg.rst:353 +#: ../Doc/c-api/arg.rst:386 msgid "" "A few other characters have a meaning in a format string. These may not " "occur inside nested parentheses. They are:" @@ -927,11 +967,11 @@ msgstr "" "Algunos otros caracteres tienen un significado en una cadena de formato. " "Esto puede no ocurrir dentro de paréntesis anidados. Son:" -#: ../Doc/c-api/arg.rst:361 +#: ../Doc/c-api/arg.rst:389 msgid "``|``" msgstr "``|``" -#: ../Doc/c-api/arg.rst:357 +#: ../Doc/c-api/arg.rst:390 msgid "" "Indicates that the remaining arguments in the Python argument list are " "optional. The C variables corresponding to optional arguments should be " @@ -945,11 +985,11 @@ msgstr "" "argumento opcional, :c:func:`PyArg_ParseTuple` no toca el contenido de las " "variables C correspondientes." -#: ../Doc/c-api/arg.rst:370 +#: ../Doc/c-api/arg.rst:396 msgid "``$``" msgstr "``$``" -#: ../Doc/c-api/arg.rst:364 +#: ../Doc/c-api/arg.rst:397 msgid "" ":c:func:`PyArg_ParseTupleAndKeywords` only: Indicates that the remaining " "arguments in the Python argument list are keyword-only. Currently, all " @@ -962,11 +1002,11 @@ msgstr "" "argumentos opcionales, por lo que ``|`` siempre debe especificarse antes de " "``$`` en la cadena de formato." -#: ../Doc/c-api/arg.rst:375 +#: ../Doc/c-api/arg.rst:405 msgid "``:``" msgstr "``:``" -#: ../Doc/c-api/arg.rst:373 +#: ../Doc/c-api/arg.rst:406 msgid "" "The list of format units ends here; the string after the colon is used as " "the function name in error messages (the \"associated value\" of the " @@ -976,11 +1016,11 @@ msgstr "" "puntos se usa como el nombre de la función en los mensajes de error (el " "\"valor asociado\" de la excepción que :c:func:`PyArg_ParseTuple` lanza)." -#: ../Doc/c-api/arg.rst:380 +#: ../Doc/c-api/arg.rst:410 msgid "``;``" msgstr "``;``" -#: ../Doc/c-api/arg.rst:378 +#: ../Doc/c-api/arg.rst:411 msgid "" "The list of format units ends here; the string after the semicolon is used " "as the error message *instead* of the default error message. ``:`` and ``;" @@ -990,7 +1030,7 @@ msgstr "" "coma se usa como mensaje de error *en lugar de* del mensaje de error " "predeterminado. ``:`` y ``;`` se excluyen mutuamente." -#: ../Doc/c-api/arg.rst:382 +#: ../Doc/c-api/arg.rst:415 #, fuzzy msgid "" "Note that any Python object references which are provided to the caller are " @@ -1001,7 +1041,7 @@ msgstr "" "a la persona que llama son referencias *prestadas* (*borrowed*); ¡no " "disminuya su conteo de referencias!" -#: ../Doc/c-api/arg.rst:386 +#: ../Doc/c-api/arg.rst:419 msgid "" "Additional arguments passed to these functions must be addresses of " "variables whose type is determined by the format string; these are used to " @@ -1017,7 +1057,7 @@ msgstr "" "parámetros se utilizan como valores de entrada; deben coincidir con lo " "especificado para la unidad de formato correspondiente en ese caso." -#: ../Doc/c-api/arg.rst:392 +#: ../Doc/c-api/arg.rst:425 #, fuzzy msgid "" "For the conversion to succeed, the *arg* object must match the format and " @@ -1035,11 +1075,11 @@ msgstr "" "unidades de formato, las variables en las direcciones correspondientes y las " "siguientes unidades de formato quedan intactas." -#: ../Doc/c-api/arg.rst:401 +#: ../Doc/c-api/arg.rst:434 msgid "API Functions" msgstr "Funciones API" -#: ../Doc/c-api/arg.rst:405 +#: ../Doc/c-api/arg.rst:438 msgid "" "Parse the parameters of a function that takes only positional parameters " "into local variables. Returns true on success; on failure, it returns false " @@ -1049,7 +1089,7 @@ msgstr "" "en variables locales. Retorna verdadero en el éxito; en caso de fallo, " "retorna falso y lanza la excepción apropiada." -#: ../Doc/c-api/arg.rst:412 +#: ../Doc/c-api/arg.rst:445 msgid "" "Identical to :c:func:`PyArg_ParseTuple`, except that it accepts a va_list " "rather than a variable number of arguments." @@ -1057,7 +1097,7 @@ msgstr "" "Idéntico a :c:func:`PyArg_ParseTuple`, excepto que acepta una *va_list* en " "lugar de un número variable de argumentos ." -#: ../Doc/c-api/arg.rst:418 +#: ../Doc/c-api/arg.rst:451 #, fuzzy msgid "" "Parse the parameters of a function that takes both positional and keyword " @@ -1074,14 +1114,14 @@ msgstr "" "only_parameter>`. Retorna verdadero cuando hay éxito; en caso de fallo, " "retorna falso y lanza la excepción apropiada." -#: ../Doc/c-api/arg.rst:429 +#: ../Doc/c-api/arg.rst:462 msgid "" "The *keywords* parameter declaration is :c:expr:`char * const *` in C and :c:" "expr:`const char * const *` in C++. This can be overridden with the :c:macro:" "`PY_CXX_CONST` macro." msgstr "" -#: ../Doc/c-api/arg.rst:433 +#: ../Doc/c-api/arg.rst:466 msgid "" "Added support for :ref:`positional-only parameters `." @@ -1089,14 +1129,14 @@ msgstr "" "Soporte agregado para :ref:`sólo parámetros posicionales `." -#: ../Doc/c-api/arg.rst:437 +#: ../Doc/c-api/arg.rst:470 msgid "" "The *keywords* parameter has now type :c:expr:`char * const *` in C and :c:" "expr:`const char * const *` in C++, instead of :c:expr:`char **`. Added " "support for non-ASCII keyword parameter names." msgstr "" -#: ../Doc/c-api/arg.rst:446 +#: ../Doc/c-api/arg.rst:479 msgid "" "Identical to :c:func:`PyArg_ParseTupleAndKeywords`, except that it accepts a " "va_list rather than a variable number of arguments." @@ -1104,7 +1144,7 @@ msgstr "" "Idéntico a :c:func:`PyArg_ParseTupleAndKeywords`, excepto que acepta una " "*va_list* en lugar de un número variable de argumentos." -#: ../Doc/c-api/arg.rst:452 +#: ../Doc/c-api/arg.rst:485 msgid "" "Ensure that the keys in the keywords argument dictionary are strings. This " "is only needed if :c:func:`PyArg_ParseTupleAndKeywords` is not used, since " @@ -1115,7 +1155,7 @@ msgstr "" "`PyArg_ParseTupleAndKeywords` no se utiliza, ya que este último ya hace esta " "comprobación." -#: ../Doc/c-api/arg.rst:461 +#: ../Doc/c-api/arg.rst:494 #, fuzzy msgid "" "Parse the parameter of a function that takes a single positional parameter " @@ -1126,11 +1166,11 @@ msgstr "" "en variables locales. Retorna verdadero en el éxito; en caso de fallo, " "retorna falso y lanza la excepción apropiada." -#: ../Doc/c-api/arg.rst:465 +#: ../Doc/c-api/arg.rst:498 msgid "Example::" msgstr "" -#: ../Doc/c-api/arg.rst:467 +#: ../Doc/c-api/arg.rst:500 msgid "" "// Function using METH_O calling convention\n" "static PyObject*\n" @@ -1144,7 +1184,7 @@ msgid "" "}" msgstr "" -#: ../Doc/c-api/arg.rst:481 +#: ../Doc/c-api/arg.rst:514 #, fuzzy msgid "" "A simpler form of parameter retrieval which does not use a format string to " @@ -1178,7 +1218,7 @@ msgstr "" "contiene el número incorrecto de elementos; se establecerá una excepción si " "hubo una falla." -#: ../Doc/c-api/arg.rst:496 +#: ../Doc/c-api/arg.rst:529 #, fuzzy msgid "" "This is an example of the use of this function, taken from the sources for " @@ -1187,7 +1227,7 @@ msgstr "" "Este es un ejemplo del uso de esta función, tomado de las fuentes del módulo " "auxiliar :mod:`_weakref` para referencias débiles::" -#: ../Doc/c-api/arg.rst:499 +#: ../Doc/c-api/arg.rst:532 msgid "" "static PyObject *\n" "weakref_ref(PyObject *self, PyObject *args)\n" @@ -1203,7 +1243,7 @@ msgid "" "}" msgstr "" -#: ../Doc/c-api/arg.rst:512 +#: ../Doc/c-api/arg.rst:545 msgid "" "The call to :c:func:`PyArg_UnpackTuple` in this example is entirely " "equivalent to this call to :c:func:`PyArg_ParseTuple`::" @@ -1211,11 +1251,11 @@ msgstr "" "La llamada a :c:func:`PyArg_UnpackTuple` en este ejemplo es completamente " "equivalente a esta llamada a :c:func:`PyArg_ParseTuple`::" -#: ../Doc/c-api/arg.rst:515 +#: ../Doc/c-api/arg.rst:548 msgid "PyArg_ParseTuple(args, \"O|O:ref\", &object, &callback)" msgstr "" -#: ../Doc/c-api/arg.rst:519 +#: ../Doc/c-api/arg.rst:552 msgid "" "The value to be inserted, if any, before :c:expr:`char * const *` in the " "*keywords* parameter declaration of :c:func:`PyArg_ParseTupleAndKeywords` " @@ -1224,11 +1264,11 @@ msgid "" "to the desired value before including :file:`Python.h`." msgstr "" -#: ../Doc/c-api/arg.rst:533 +#: ../Doc/c-api/arg.rst:566 msgid "Building values" msgstr "Construyendo valores" -#: ../Doc/c-api/arg.rst:537 +#: ../Doc/c-api/arg.rst:570 #, fuzzy msgid "" "Create a new value based on a format string similar to those accepted by the " @@ -1241,7 +1281,7 @@ msgstr "" "valores. Retorna el valor o ``NULL`` en caso de error; se lanzará una " "excepción si se retorna ``NULL``." -#: ../Doc/c-api/arg.rst:542 +#: ../Doc/c-api/arg.rst:575 msgid "" ":c:func:`Py_BuildValue` does not always build a tuple. It builds a tuple " "only if its format string contains two or more format units. If the format " @@ -1256,7 +1296,7 @@ msgstr "" "Para forzarlo a retornar una tupla de tamaño 0 o uno, paréntesis la cadena " "de formato." -#: ../Doc/c-api/arg.rst:548 +#: ../Doc/c-api/arg.rst:581 msgid "" "When memory buffers are passed as parameters to supply data to build " "objects, as for the ``s`` and ``s#`` formats, the required data is copied. " @@ -1275,7 +1315,7 @@ msgstr "" "de llamar a :c:func:`free` para esa memoria una vez retorna :c:func:" "`Py_BuildValue`." -#: ../Doc/c-api/arg.rst:556 +#: ../Doc/c-api/arg.rst:589 msgid "" "In the following description, the quoted form is the format unit; the entry " "in (round) parentheses is the Python object type that the format unit will " @@ -1287,7 +1327,7 @@ msgstr "" "de objeto Python que retornará la unidad de formato; y la entrada entre " "corchetes [cuadrados] es el tipo de los valores C que se pasarán." -#: ../Doc/c-api/arg.rst:560 +#: ../Doc/c-api/arg.rst:593 msgid "" "The characters space, tab, colon and comma are ignored in format strings " "(but not within format units such as ``s#``). This can be used to make long " @@ -1298,11 +1338,11 @@ msgstr "" "Esto se puede usar para hacer que las cadenas de formato largo sean un poco " "más legibles." -#: ../Doc/c-api/arg.rst:566 +#: ../Doc/c-api/arg.rst:597 msgid "``s`` (:class:`str` or ``None``) [const char \\*]" msgstr "``s`` (:class:`str` o ``None``) [const char \\*]" -#: ../Doc/c-api/arg.rst:565 +#: ../Doc/c-api/arg.rst:598 msgid "" "Convert a null-terminated C string to a Python :class:`str` object using " "``'utf-8'`` encoding. If the C string pointer is ``NULL``, ``None`` is used." @@ -1311,13 +1351,13 @@ msgstr "" "class:`str` usando la codificación ``'utf-8'``. Si el puntero de la cadena " "de caracteres C es ``NULL``, se usa ``None``." -#: ../Doc/c-api/arg.rst:571 +#: ../Doc/c-api/arg.rst:601 msgid "" "``s#`` (:class:`str` or ``None``) [const char \\*, :c:type:`Py_ssize_t`]" msgstr "" "``s#`` (:class:`str` o ``None``) [const char \\*, :c:type:`Py_ssize_t`]" -#: ../Doc/c-api/arg.rst:569 +#: ../Doc/c-api/arg.rst:602 msgid "" "Convert a C string and its length to a Python :class:`str` object using " "``'utf-8'`` encoding. If the C string pointer is ``NULL``, the length is " @@ -1328,11 +1368,11 @@ msgstr "" "cadena de caracteres de C es ``NULL``, la longitud se ignora y se retorna " "``None``." -#: ../Doc/c-api/arg.rst:575 +#: ../Doc/c-api/arg.rst:606 msgid "``y`` (:class:`bytes`) [const char \\*]" msgstr "``y`` (:class:`bytes`) [const char \\*]" -#: ../Doc/c-api/arg.rst:574 +#: ../Doc/c-api/arg.rst:607 msgid "" "This converts a C string to a Python :class:`bytes` object. If the C string " "pointer is ``NULL``, ``None`` is returned." @@ -1341,11 +1381,11 @@ msgstr "" "`bytes`. Si el puntero de la cadena de caracteres de C es ``NULL``, se " "retorna ``None``." -#: ../Doc/c-api/arg.rst:579 +#: ../Doc/c-api/arg.rst:610 msgid "``y#`` (:class:`bytes`) [const char \\*, :c:type:`Py_ssize_t`]" msgstr "``y#`` (:class:`bytes`) [const char \\*, :c:type:`Py_ssize_t`]" -#: ../Doc/c-api/arg.rst:578 +#: ../Doc/c-api/arg.rst:611 msgid "" "This converts a C string and its lengths to a Python object. If the C " "string pointer is ``NULL``, ``None`` is returned." @@ -1354,25 +1394,25 @@ msgstr "" "Python. Si el puntero de la cadena de caracteres de C es ``NULL``, se " "retorna ``None``." -#: ../Doc/c-api/arg.rst:582 ../Doc/c-api/arg.rst:598 +#: ../Doc/c-api/arg.rst:615 ../Doc/c-api/arg.rst:631 msgid "Same as ``s``." msgstr "Igual que ``s``." -#: ../Doc/c-api/arg.rst:585 +#: ../Doc/c-api/arg.rst:617 msgid "" "``z#`` (:class:`str` or ``None``) [const char \\*, :c:type:`Py_ssize_t`]" msgstr "" "``z#`` (:class:`str` o ``None``) [const char \\*, :c:type:`Py_ssize_t`]" -#: ../Doc/c-api/arg.rst:585 ../Doc/c-api/arg.rst:601 +#: ../Doc/c-api/arg.rst:618 ../Doc/c-api/arg.rst:634 msgid "Same as ``s#``." msgstr "Igual que ``s#``." -#: ../Doc/c-api/arg.rst:590 +#: ../Doc/c-api/arg.rst:620 msgid "``u`` (:class:`str`) [const wchar_t \\*]" msgstr "``u`` (:class:`str`) [const wchar_t \\*]" -#: ../Doc/c-api/arg.rst:588 +#: ../Doc/c-api/arg.rst:621 #, fuzzy msgid "" "Convert a null-terminated :c:type:`wchar_t` buffer of Unicode (UTF-16 or " @@ -1383,11 +1423,11 @@ msgstr "" "objeto Python Unicode. Si el puntero del búfer Unicode es ``NULL``, se " "retorna ``None``." -#: ../Doc/c-api/arg.rst:595 +#: ../Doc/c-api/arg.rst:625 msgid "``u#`` (:class:`str`) [const wchar_t \\*, :c:type:`Py_ssize_t`]" msgstr "``u#`` (:class:`str`) [const wchar_t \\*, :c:type:`Py_ssize_t`]" -#: ../Doc/c-api/arg.rst:593 +#: ../Doc/c-api/arg.rst:626 msgid "" "Convert a Unicode (UTF-16 or UCS-4) data buffer and its length to a Python " "Unicode object. If the Unicode buffer pointer is ``NULL``, the length is " @@ -1397,80 +1437,93 @@ msgstr "" "objeto Python Unicode. Si el puntero del búfer Unicode es ``NULL``, la " "longitud se ignora y se retorna ``None``." -#: ../Doc/c-api/arg.rst:598 +#: ../Doc/c-api/arg.rst:630 msgid "``U`` (:class:`str` or ``None``) [const char \\*]" msgstr "``U`` (:class:`str` o ``None``) [const char \\*]" -#: ../Doc/c-api/arg.rst:601 +#: ../Doc/c-api/arg.rst:633 msgid "" "``U#`` (:class:`str` or ``None``) [const char \\*, :c:type:`Py_ssize_t`]" msgstr "" "``z#`` (:class:`str` o ``None``) [const char \\*, :c:type:`Py_ssize_t`]" -#: ../Doc/c-api/arg.rst:604 +#: ../Doc/c-api/arg.rst:637 #, fuzzy msgid "Convert a plain C :c:expr:`int` to a Python integer object." msgstr "Convierte un :c:type:`int` plano de C a un objeto entero de Python." -#: ../Doc/c-api/arg.rst:607 +#: ../Doc/c-api/arg.rst:639 msgid "``b`` (:class:`int`) [char]" msgstr "``b`` (:class:`int`) [char]" -#: ../Doc/c-api/arg.rst:607 +#: ../Doc/c-api/arg.rst:640 #, fuzzy msgid "Convert a plain C :c:expr:`char` to a Python integer object." msgstr "Convierte un :c:type:`char` plano de C a un objeto entero de Python." -#: ../Doc/c-api/arg.rst:610 +#: ../Doc/c-api/arg.rst:643 #, fuzzy msgid "Convert a plain C :c:expr:`short int` to a Python integer object." msgstr "" "Convierte un :c:type:`short int` plano de C a un objeto entero de Python." -#: ../Doc/c-api/arg.rst:613 +#: ../Doc/c-api/arg.rst:646 #, fuzzy msgid "Convert a C :c:expr:`long int` to a Python integer object." msgstr "Convierta un :c:type:`long int` de C en un objeto entero de Python." -#: ../Doc/c-api/arg.rst:616 +#: ../Doc/c-api/arg.rst:649 #, fuzzy msgid "Convert a C :c:expr:`unsigned char` to a Python integer object." msgstr "Convierte un :c:type:`unsigned char` de C a un entero de Python." -#: ../Doc/c-api/arg.rst:619 +#: ../Doc/c-api/arg.rst:652 #, fuzzy msgid "Convert a C :c:expr:`unsigned short int` to a Python integer object." msgstr "Convierte un :c:type:`unsigned short int` de C a un entero de Python." -#: ../Doc/c-api/arg.rst:622 +#: ../Doc/c-api/arg.rst:655 #, fuzzy msgid "Convert a C :c:expr:`unsigned int` to a Python integer object." msgstr "Convierte un :c:type:`unsigned int` de C a un entero de Python." -#: ../Doc/c-api/arg.rst:625 +#: ../Doc/c-api/arg.rst:658 #, fuzzy msgid "Convert a C :c:expr:`unsigned long` to a Python integer object." msgstr "Convierte un :c:type:`unsigned long` de C a un entero de Python." -#: ../Doc/c-api/arg.rst:628 +#: ../Doc/c-api/arg.rst:661 #, fuzzy msgid "Convert a C :c:expr:`long long` to a Python integer object." msgstr "Convierte un :c:type:`long long` de C en un objeto entero de Python." -#: ../Doc/c-api/arg.rst:631 +#: ../Doc/c-api/arg.rst:666 #, fuzzy msgid "Convert a C :c:expr:`unsigned long long` to a Python integer object." msgstr "Convierte un :c:type:`unsigned long long` de C a un entero de Python." -#: ../Doc/c-api/arg.rst:634 +#: ../Doc/c-api/arg.rst:669 msgid "Convert a C :c:type:`Py_ssize_t` to a Python integer." msgstr "Convierte un :c:type:`Py_ssize_t` de C a un entero de Python." -#: ../Doc/c-api/arg.rst:638 +#: ../Doc/c-api/arg.rst:672 +#, fuzzy +msgid "Convert a C :c:expr:`int` to a Python :class:`bool` object." +msgstr "Convierta un :c:type:`long int` de C en un objeto entero de Python." + +#: ../Doc/c-api/arg.rst:674 +msgid "" +"Be aware that this format requires an ``int`` argument. Unlike most other " +"contexts in C, variadic arguments are not coerced to a suitable type " +"automatically. You can convert another type (for example, a pointer or a " +"float) to a suitable ``int`` value using ``(x) ? 1 : 0`` or ``!!x``." +msgstr "" + +#: ../Doc/c-api/arg.rst:682 msgid "``c`` (:class:`bytes` of length 1) [char]" msgstr "``c`` (:class:`bytes` de largo 1) [char]" -#: ../Doc/c-api/arg.rst:637 +#: ../Doc/c-api/arg.rst:683 #, fuzzy msgid "" "Convert a C :c:expr:`int` representing a byte to a Python :class:`bytes` " @@ -1479,7 +1532,7 @@ msgstr "" "Convierte un :c:type:`int` de C representando un byte a un objeto :class:" "`bytes` de Python de largo 1." -#: ../Doc/c-api/arg.rst:641 +#: ../Doc/c-api/arg.rst:687 #, fuzzy msgid "" "Convert a C :c:expr:`int` representing a character to Python :class:`str` " @@ -1488,29 +1541,29 @@ msgstr "" "Convierte un :c:type:`int` de C representando un carácter a un objeto :class:" "`str` de Python de largo 1." -#: ../Doc/c-api/arg.rst:645 +#: ../Doc/c-api/arg.rst:691 #, fuzzy msgid "Convert a C :c:expr:`double` to a Python floating-point number." msgstr "" "Convierte un :c:type:`double` de C a un número de punto flotante de Python." -#: ../Doc/c-api/arg.rst:648 +#: ../Doc/c-api/arg.rst:694 #, fuzzy msgid "Convert a C :c:expr:`float` to a Python floating-point number." msgstr "" "Convierte un :c:type:`float` de C a un número de punto flotante de Python." -#: ../Doc/c-api/arg.rst:651 +#: ../Doc/c-api/arg.rst:696 msgid "``D`` (:class:`complex`) [Py_complex \\*]" msgstr "``D`` (:class:`complex`) [Py_complex \\*]" -#: ../Doc/c-api/arg.rst:651 +#: ../Doc/c-api/arg.rst:697 msgid "Convert a C :c:type:`Py_complex` structure to a Python complex number." msgstr "" "Convierte una estructura :c:type:`Py_complex` de C en un número complejo de " "Python." -#: ../Doc/c-api/arg.rst:654 +#: ../Doc/c-api/arg.rst:700 #, fuzzy msgid "" "Pass a Python object untouched but create a new :term:`strong reference` to " @@ -1527,19 +1580,19 @@ msgstr "" "`Py_BuildValue` retornará ``NULL`` pero no lanzará una excepción. Si aún no " "se ha producido ninguna excepción, se establece :exc:`SystemError`." -#: ../Doc/c-api/arg.rst:664 +#: ../Doc/c-api/arg.rst:709 msgid "``S`` (object) [PyObject \\*]" msgstr "``S`` (object) [PyObject \\*]" -#: ../Doc/c-api/arg.rst:664 +#: ../Doc/c-api/arg.rst:710 msgid "Same as ``O``." msgstr "Igual que ``O``." -#: ../Doc/c-api/arg.rst:669 +#: ../Doc/c-api/arg.rst:712 msgid "``N`` (object) [PyObject \\*]" msgstr "``N`` (object) [PyObject \\*]" -#: ../Doc/c-api/arg.rst:667 +#: ../Doc/c-api/arg.rst:713 #, fuzzy msgid "" "Same as ``O``, except it doesn't create a new :term:`strong reference`. " @@ -1550,7 +1603,11 @@ msgstr "" "objeto. Útil cuando el objeto se crea mediante una llamada a un constructor " "de objetos en la lista de argumentos." -#: ../Doc/c-api/arg.rst:672 +#: ../Doc/c-api/arg.rst:717 +msgid "``O&`` (object) [*converter*, *anything*]" +msgstr "``O&`` (object) [*converter*, *anything*]" + +#: ../Doc/c-api/arg.rst:718 #, fuzzy msgid "" "Convert *anything* to a Python object through a *converter* function. The " @@ -1563,7 +1620,11 @@ msgstr "" "`void*`) como argumento y debería retornar un \"nuevo\" objeto de Python, o " "``NULL`` si se produjo un error." -#: ../Doc/c-api/arg.rst:678 +#: ../Doc/c-api/arg.rst:723 +msgid "``(items)`` (:class:`tuple`) [*matching-items*]" +msgstr "``(items)`` (:class:`tuple`) [*matching-items*]" + +#: ../Doc/c-api/arg.rst:724 msgid "" "Convert a sequence of C values to a Python tuple with the same number of " "items." @@ -1571,11 +1632,11 @@ msgstr "" "Convierta una secuencia de valores C en una tupla de Python con el mismo " "número de elementos." -#: ../Doc/c-api/arg.rst:681 +#: ../Doc/c-api/arg.rst:726 msgid "``[items]`` (:class:`list`) [*matching-items*]" msgstr "``[items]`` (:class:`list`) [*matching-items*]" -#: ../Doc/c-api/arg.rst:681 +#: ../Doc/c-api/arg.rst:727 msgid "" "Convert a sequence of C values to a Python list with the same number of " "items." @@ -1583,11 +1644,12 @@ msgstr "" "Convierte una secuencia de valores C en una lista de Python con el mismo " "número de elementos." -#: ../Doc/c-api/arg.rst:686 +#: ../Doc/c-api/arg.rst:729 +#, python-brace-format msgid "``{items}`` (:class:`dict`) [*matching-items*]" msgstr "``{items}`` (:class:`dict`) [*matching-items*]" -#: ../Doc/c-api/arg.rst:684 +#: ../Doc/c-api/arg.rst:730 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 " @@ -1597,7 +1659,7 @@ msgstr "" "valores C consecutivos agrega un elemento al diccionario, que sirve como " "clave y valor, respectivamente." -#: ../Doc/c-api/arg.rst:688 +#: ../Doc/c-api/arg.rst:734 msgid "" "If there is an error in the format string, the :exc:`SystemError` exception " "is set and ``NULL`` returned." @@ -1605,10 +1667,24 @@ msgstr "" "Si hay un error en la cadena de formato, se establece la excepción :exc:" "`SystemError` y se retorna ``NULL``." -#: ../Doc/c-api/arg.rst:693 +#: ../Doc/c-api/arg.rst:739 msgid "" "Identical to :c:func:`Py_BuildValue`, except that it accepts a va_list " "rather than a variable number of arguments." msgstr "" "Idéntico a :c:func:`Py_BuildValue`, excepto que acepta una *va_list* en " "lugar de un número variable de argumentos." + +#~ msgid "" +#~ "It is possible to pass \"long\" integers (integers whose value exceeds " +#~ "the platform's :c:macro:`LONG_MAX`) however no proper range checking is " +#~ "done --- the most significant bits are silently truncated when the " +#~ "receiving field is too small to receive the value (actually, the " +#~ "semantics are inherited from downcasts in C --- your mileage may vary)." +#~ msgstr "" +#~ "Es posible pasar enteros \"largos\" (enteros cuyo valor excede el de la " +#~ "plataforma :const:`LONG_MAX`), sin embargo, no se realiza una " +#~ "verificación de rango adecuada --- los bits más significativos se truncan " +#~ "silenciosamente cuando el campo receptor es demasiado pequeño para " +#~ "recibir el valor (en realidad, la semántica se hereda de las descargas en " +#~ "C --- su kilometraje puede variar)." diff --git a/c-api/bool.po b/c-api/bool.po index ea41eda60a..de255570f1 100644 --- a/c-api/bool.po +++ b/c-api/bool.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-12 19:43+0200\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-05-07 20:14-0500\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.13.0\n" -"X-Generator: Poedit 3.6\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/bool.rst:6 msgid "Boolean Objects" @@ -55,27 +54,31 @@ msgstr "" "siempre finaliza con éxito." #: ../Doc/c-api/bool.rst:28 +#, fuzzy msgid "" -"The Python ``False`` object. This object has no methods and is `immortal " -"`_." +"The Python ``False`` object. This object has no methods and is :term:" +"`immortal`." msgstr "" "El objeto ``False`` de Python. Este objeto no tiene métodos y es `inmortal " "`_." #: ../Doc/c-api/bool.rst:31 -msgid ":c:data:`Py_False` is immortal." +#, fuzzy +msgid ":c:data:`Py_False` is :term:`immortal`." msgstr ":c:data:`Py_False` es inmortal." #: ../Doc/c-api/bool.rst:37 +#, fuzzy msgid "" -"The Python ``True`` object. This object has no methods and is `immortal " -"`_." +"The Python ``True`` object. This object has no methods and is :term:" +"`immortal`." msgstr "" "El objeto ``True`` de Python. Este objeto no tiene métodos y es `inmortal " "`_." #: ../Doc/c-api/bool.rst:40 -msgid ":c:data:`Py_True` is immortal." +#, fuzzy +msgid ":c:data:`Py_True` is :term:`immortal`." msgstr ":c:data:`Py_True` es inmortal." #: ../Doc/c-api/bool.rst:46 diff --git a/c-api/buffer.po b/c-api/buffer.po index 84002fdf87..93c5d21e96 100644 --- a/c-api/buffer.po +++ b/c-api/buffer.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2022-10-31 01:46-0400\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/buffer.rst:11 msgid "Buffer Protocol" @@ -53,33 +53,38 @@ msgstr "" "búfer directamente y sin copia intermedia." #: ../Doc/c-api/buffer.rst:29 +#, fuzzy msgid "" -"Python provides such a facility at the C level in the form of the :ref:" -"`buffer protocol `. This protocol has two sides:" +"Python provides such a facility at the C and Python level in the form of " +"the :ref:`buffer protocol `. This protocol has two sides:" msgstr "" "Python proporciona una instalación de este tipo en el nivel C en la forma " "de :ref:`protocolo búfer `. Este protocolo tiene dos lados:" #: ../Doc/c-api/buffer.rst:34 +#, fuzzy msgid "" "on the producer side, a type can export a \"buffer interface\" which allows " "objects of that type to expose information about their underlying buffer. " -"This interface is described in the section :ref:`buffer-structs`;" +"This interface is described in the section :ref:`buffer-structs`; for Python " +"see :ref:`python-buffer-protocol`." msgstr "" "en el lado del productor, un tipo puede exportar una \"interfaz de búfer\" " "que permite a los objetos de ese tipo exponer información sobre su búfer " "subyacente. Esta interfaz se describe en la sección :ref:`buffer-structs`;" -#: ../Doc/c-api/buffer.rst:38 +#: ../Doc/c-api/buffer.rst:39 +#, fuzzy msgid "" "on the consumer side, several means are available to obtain a pointer to the " -"raw underlying data of an object (for example a method parameter)." +"raw underlying data of an object (for example a method parameter). For " +"Python see :class:`memoryview`." msgstr "" "en el lado del consumidor, hay varios medios disponibles para obtener un " "puntero a los datos subyacentes sin procesar de un objeto (por ejemplo, un " "parámetro de método)." -#: ../Doc/c-api/buffer.rst:41 +#: ../Doc/c-api/buffer.rst:43 msgid "" "Simple objects such as :class:`bytes` and :class:`bytearray` expose their " "underlying buffer in byte-oriented form. Other forms are possible; for " @@ -91,7 +96,7 @@ msgstr "" "ejemplo, los elementos expuestos por un :class:`array.array` pueden ser " "valores de varios bytes." -#: ../Doc/c-api/buffer.rst:45 +#: ../Doc/c-api/buffer.rst:47 #, fuzzy msgid "" "An example consumer of the buffer interface is the :meth:`~io.BufferedIOBase." @@ -113,7 +118,7 @@ msgstr "" "que los objetos permitan o rechacen selectivamente la exportación de búferes " "de lectura-escritura y solo lectura." -#: ../Doc/c-api/buffer.rst:53 +#: ../Doc/c-api/buffer.rst:55 msgid "" "There are two ways for a consumer of the buffer interface to acquire a " "buffer over a target object:" @@ -121,11 +126,11 @@ msgstr "" "Hay dos formas para que un consumidor de la interfaz del búfer adquiera un " "búfer sobre un objeto de destino:" -#: ../Doc/c-api/buffer.rst:56 +#: ../Doc/c-api/buffer.rst:58 msgid "call :c:func:`PyObject_GetBuffer` with the right parameters;" msgstr "llamar :c:func:`PyObject_GetBuffer` con los parámetros correctos;" -#: ../Doc/c-api/buffer.rst:58 +#: ../Doc/c-api/buffer.rst:60 msgid "" "call :c:func:`PyArg_ParseTuple` (or one of its siblings) with one of the " "``y*``, ``w*`` or ``s*`` :ref:`format codes `." @@ -133,7 +138,7 @@ msgstr "" "llamar :c:func:`PyArg_ParseTuple` (o uno de sus hermanos) con uno de los " "``y*``, ``w*`` o ``s*`` :ref:`códigos de formato `." -#: ../Doc/c-api/buffer.rst:61 +#: ../Doc/c-api/buffer.rst:63 msgid "" "In both cases, :c:func:`PyBuffer_Release` must be called when the buffer " "isn't needed anymore. Failure to do so could lead to various issues such as " @@ -144,10 +149,16 @@ msgstr "" "pérdidas de recursos." #: ../Doc/c-api/buffer.rst:69 +msgid "" +"The buffer protocol is now accessible in Python, see :ref:`python-buffer-" +"protocol` and :class:`memoryview`." +msgstr "" + +#: ../Doc/c-api/buffer.rst:75 msgid "Buffer structure" msgstr "Estructura de búfer" -#: ../Doc/c-api/buffer.rst:71 +#: ../Doc/c-api/buffer.rst:77 msgid "" "Buffer structures (or simply \"buffers\") are useful as a way to expose the " "binary data from another object to the Python programmer. They can also be " @@ -168,7 +179,7 @@ msgstr "" "una biblioteca del sistema operativo, o podría usarse para pasar datos " "estructurados en su formato nativo en memoria ." -#: ../Doc/c-api/buffer.rst:80 +#: ../Doc/c-api/buffer.rst:86 msgid "" "Contrary to most data types exposed by the Python interpreter, buffers are " "not :c:type:`PyObject` pointers but rather simple C structures. This allows " @@ -182,7 +193,7 @@ msgstr "" "simple. Cuando se necesita un contenedor genérico alrededor de un búfer, un " "objeto :ref:`memoryview ` puede ser creado." -#: ../Doc/c-api/buffer.rst:86 +#: ../Doc/c-api/buffer.rst:92 msgid "" "For short instructions how to write an exporting object, see :ref:`Buffer " "Object Structures `. For obtaining a buffer, see :c:func:" @@ -192,7 +203,7 @@ msgstr "" "exportación, consulte :ref:`Estructuras de objetos búfer `. " "Para obtener un búfer, consulte :c:func:`PyObject_GetBuffer`." -#: ../Doc/c-api/buffer.rst:94 +#: ../Doc/c-api/buffer.rst:100 msgid "" "A pointer to the start of the logical structure described by the buffer " "fields. This can be any location within the underlying physical memory block " @@ -204,7 +215,7 @@ msgstr "" "subyacente del exportador. Por ejemplo, con negativo :c:member:`~Py_buffer." "strides` el valor puede apuntar al final del bloque de memoria." -#: ../Doc/c-api/buffer.rst:99 +#: ../Doc/c-api/buffer.rst:105 msgid "" "For :term:`contiguous` arrays, the value points to the beginning of the " "memory block." @@ -212,7 +223,7 @@ msgstr "" "Para arreglos :term:`contiguous`, el valor apunta al comienzo del bloque de " "memoria." -#: ../Doc/c-api/buffer.rst:104 +#: ../Doc/c-api/buffer.rst:110 #, fuzzy msgid "" "A new reference to the exporting object. The reference is owned by the " @@ -225,7 +236,7 @@ msgstr "" "func:`PyBuffer_Release`. El campo es el equivalente del valor de retorno de " "cualquier función estándar de C-API." -#: ../Doc/c-api/buffer.rst:111 +#: ../Doc/c-api/buffer.rst:117 msgid "" "As a special case, for *temporary* buffers that are wrapped by :c:func:" "`PyMemoryView_FromBuffer` or :c:func:`PyBuffer_FillInfo` this field is " @@ -235,7 +246,7 @@ msgstr "" "c:func:`PyMemoryView_FromBuffer` o :c:func:`PyBuffer_FillInfo` este campo es " "``NULL``. En general, los objetos de exportación NO DEBEN usar este esquema." -#: ../Doc/c-api/buffer.rst:118 +#: ../Doc/c-api/buffer.rst:124 msgid "" "``product(shape) * itemsize``. For contiguous arrays, this is the length of " "the underlying memory block. For non-contiguous arrays, it is the length " @@ -247,7 +258,7 @@ msgstr "" "que tendría la estructura lógica si se copiara en una representación " "contigua." -#: ../Doc/c-api/buffer.rst:123 +#: ../Doc/c-api/buffer.rst:129 msgid "" "Accessing ``((char *)buf)[0] up to ((char *)buf)[len-1]`` is only valid if " "the buffer has been obtained by a request that guarantees contiguity. In " @@ -259,7 +270,7 @@ msgstr "" "En la mayoría de los casos, dicha solicitud será :c:macro:`PyBUF_SIMPLE` o :" "c:macro:`PyBUF_WRITABLE`." -#: ../Doc/c-api/buffer.rst:129 +#: ../Doc/c-api/buffer.rst:135 msgid "" "An indicator of whether the buffer is read-only. This field is controlled by " "the :c:macro:`PyBUF_WRITABLE` flag." @@ -267,7 +278,7 @@ msgstr "" "Un indicador de si el búfer es de solo lectura. Este campo está controlado " "por el indicador :c:macro:`PyBUF_WRITABLE`." -#: ../Doc/c-api/buffer.rst:134 +#: ../Doc/c-api/buffer.rst:140 msgid "" "Item size in bytes of a single element. Same as the value of :func:`struct." "calcsize` called on non-``NULL`` :c:member:`~Py_buffer.format` values." @@ -276,7 +287,7 @@ msgstr "" "func:`struct.calcsize` invocado en valores no ``NULL`` :c:member:`~Py_buffer." "format`." -#: ../Doc/c-api/buffer.rst:137 +#: ../Doc/c-api/buffer.rst:143 msgid "" "Important exception: If a consumer requests a buffer without the :c:macro:" "`PyBUF_FORMAT` flag, :c:member:`~Py_buffer.format` will be set to " @@ -288,7 +299,7 @@ msgstr "" "``NULL``, pero :c:member:`~Py_buffer.itemsize` todavía tiene el valor para " "el formato original." -#: ../Doc/c-api/buffer.rst:142 +#: ../Doc/c-api/buffer.rst:148 msgid "" "If :c:member:`~Py_buffer.shape` is present, the equality ``product(shape) * " "itemsize == len`` still holds and the consumer can use :c:member:`~Py_buffer." @@ -298,7 +309,7 @@ msgstr "" "* itemsize == len`` aún se mantiene y el consumidor puede usar :c:member:" "`~Py_buffer.itemsize` para navegar el búfer." -#: ../Doc/c-api/buffer.rst:146 +#: ../Doc/c-api/buffer.rst:152 msgid "" "If :c:member:`~Py_buffer.shape` is ``NULL`` as a result of a :c:macro:" "`PyBUF_SIMPLE` or a :c:macro:`PyBUF_WRITABLE` request, the consumer must " @@ -308,7 +319,7 @@ msgstr "" "`PyBUF_SIMPLE` o un :c:macro:`PyBUF_WRITABLE`, el consumidor debe ignorar :c:" "member:`~Py_buffer.itemsize` y asume ``itemsize == 1``." -#: ../Doc/c-api/buffer.rst:152 +#: ../Doc/c-api/buffer.rst:158 #, fuzzy msgid "" "A *NULL* terminated string in :mod:`struct` module style syntax describing " @@ -319,11 +330,11 @@ msgstr "" "modulo :mod:`struct` que describe el contenido de un solo elemento. Si esto " "es ``NULL``, se supone ``\"B\"`` (bytes sin signo)." -#: ../Doc/c-api/buffer.rst:156 +#: ../Doc/c-api/buffer.rst:162 msgid "This field is controlled by the :c:macro:`PyBUF_FORMAT` flag." msgstr "Este campo está controlado por el indicador :c:macro:`PyBUF_FORMAT`." -#: ../Doc/c-api/buffer.rst:160 +#: ../Doc/c-api/buffer.rst:166 #, fuzzy msgid "" "The number of dimensions the memory represents as an n-dimensional array. If " @@ -338,7 +349,7 @@ msgstr "" "shape`, :c:member:`~Py_buffer.strides` y :c:member:`~Py_buffer.suboffsets` " "DEBE ser ``NULL``." -#: ../Doc/c-api/buffer.rst:168 +#: ../Doc/c-api/buffer.rst:174 msgid "" "An array of :c:type:`Py_ssize_t` of length :c:member:`~Py_buffer.ndim` " "indicating the shape of the memory as an n-dimensional array. Note that " @@ -350,7 +361,7 @@ msgstr "" "cuenta que ``shape[0] * ... * shape[ndim-1] * itemsize`` DEBE ser igual a :c:" "member:`~Py_buffer.len`." -#: ../Doc/c-api/buffer.rst:173 +#: ../Doc/c-api/buffer.rst:179 msgid "" "Shape values are restricted to ``shape[n] >= 0``. The case ``shape[n] == 0`` " "requires special attention. See `complex arrays`_ for further information." @@ -359,11 +370,11 @@ msgstr "" "``shape[n] == 0`` requiere atención especial. Vea arreglos complejos " "(`complex arrays`_) para más información." -#: ../Doc/c-api/buffer.rst:177 +#: ../Doc/c-api/buffer.rst:183 msgid "The shape array is read-only for the consumer." msgstr "El arreglo de formas es de sólo lectura para el consumidor." -#: ../Doc/c-api/buffer.rst:181 +#: ../Doc/c-api/buffer.rst:187 msgid "" "An array of :c:type:`Py_ssize_t` of length :c:member:`~Py_buffer.ndim` " "giving the number of bytes to skip to get to a new element in each dimension." @@ -372,7 +383,7 @@ msgstr "" "que proporciona el número de bytes que se omiten para llegar a un nuevo " "elemento en cada dimensión." -#: ../Doc/c-api/buffer.rst:185 +#: ../Doc/c-api/buffer.rst:191 msgid "" "Stride values can be any integer. For regular arrays, strides are usually " "positive, but a consumer MUST be able to handle the case ``strides[n] <= " @@ -383,11 +394,11 @@ msgstr "" "DEBE ser capaz de manejar el caso ``strides[n] <= 0``. Ver `complex arrays`_ " "para más información." -#: ../Doc/c-api/buffer.rst:189 +#: ../Doc/c-api/buffer.rst:195 msgid "The strides array is read-only for the consumer." msgstr "El arreglo *strides* es de sólo lectura para el consumidor." -#: ../Doc/c-api/buffer.rst:193 +#: ../Doc/c-api/buffer.rst:199 msgid "" "An array of :c:type:`Py_ssize_t` of length :c:member:`~Py_buffer.ndim`. If " "``suboffsets[n] >= 0``, the values stored along the nth dimension are " @@ -402,7 +413,7 @@ msgstr "" "*suboffsets* negativo indica que no debe producirse una desreferenciación " "(*striding* en un bloque de memoria contiguo)." -#: ../Doc/c-api/buffer.rst:200 +#: ../Doc/c-api/buffer.rst:206 msgid "" "If all suboffsets are negative (i.e. no de-referencing is needed), then this " "field must be ``NULL`` (the default value)." @@ -411,7 +422,7 @@ msgstr "" "desreferenciar), entonces este campo debe ser ``NULL`` (el valor " "predeterminado)." -#: ../Doc/c-api/buffer.rst:203 +#: ../Doc/c-api/buffer.rst:209 msgid "" "This type of array representation is used by the Python Imaging Library " "(PIL). See `complex arrays`_ for further information how to access elements " @@ -421,11 +432,11 @@ msgstr "" "arreglos. Consulte `complex arrays`_ para obtener más información sobre cómo " "acceder a los elementos de dicho arreglo." -#: ../Doc/c-api/buffer.rst:207 +#: ../Doc/c-api/buffer.rst:213 msgid "The suboffsets array is read-only for the consumer." msgstr "El arreglo de *suboffsets* es de sólo lectura para el consumidor." -#: ../Doc/c-api/buffer.rst:211 +#: ../Doc/c-api/buffer.rst:217 msgid "" "This is for use internally by the exporting object. For example, this might " "be re-cast as an integer by the exporter and used to store flags about " @@ -438,11 +449,11 @@ msgstr "" "liberarse cuando se libera el búfer. El consumidor NO DEBE alterar este " "valor." -#: ../Doc/c-api/buffer.rst:218 +#: ../Doc/c-api/buffer.rst:224 msgid "Constants:" msgstr "" -#: ../Doc/c-api/buffer.rst:222 +#: ../Doc/c-api/buffer.rst:228 #, fuzzy msgid "" "The maximum number of dimensions the memory represents. Exporters MUST " @@ -454,11 +465,11 @@ msgstr "" "multidimensionales DEBEN poder manejar hasta dimensiones :c:macro:" "`PyBUF_MAX_NDIM`." -#: ../Doc/c-api/buffer.rst:231 +#: ../Doc/c-api/buffer.rst:237 msgid "Buffer request types" msgstr "Tipos de solicitud búfer" -#: ../Doc/c-api/buffer.rst:233 +#: ../Doc/c-api/buffer.rst:239 msgid "" "Buffers are usually obtained by sending a buffer request to an exporting " "object via :c:func:`PyObject_GetBuffer`. Since the complexity of the logical " @@ -471,7 +482,7 @@ msgstr "" "drásticamente, el consumidor usa el argumento *flags* para especificar el " "tipo de búfer exacto que puede manejar." -#: ../Doc/c-api/buffer.rst:238 +#: ../Doc/c-api/buffer.rst:244 #, fuzzy msgid "" "All :c:type:`Py_buffer` fields are unambiguously defined by the request type." @@ -479,11 +490,11 @@ msgstr "" "Todos los campos :c:data:`Py_buffer` están definidos inequívocamente por el " "tipo de solicitud." -#: ../Doc/c-api/buffer.rst:242 +#: ../Doc/c-api/buffer.rst:248 msgid "request-independent fields" msgstr "campos independientes de solicitud" -#: ../Doc/c-api/buffer.rst:243 +#: ../Doc/c-api/buffer.rst:249 msgid "" "The following fields are not influenced by *flags* and must always be filled " "in with the correct values: :c:member:`~Py_buffer.obj`, :c:member:" @@ -495,11 +506,11 @@ msgstr "" "`~Py_buffer.buf`, :c:member:`~Py_buffer.len`, :c:member:`~Py_buffer." "itemsize`, :c:member:`~Py_buffer.ndim`." -#: ../Doc/c-api/buffer.rst:248 +#: ../Doc/c-api/buffer.rst:254 msgid "readonly, format" msgstr "formato de sólo lectura" -#: ../Doc/c-api/buffer.rst:252 +#: ../Doc/c-api/buffer.rst:258 #, fuzzy msgid "" "Controls the :c:member:`~Py_buffer.readonly` field. If set, the exporter " @@ -514,7 +525,7 @@ msgstr "" "búfer de solo lectura o de escritura, pero la elección DEBE ser coherente " "para todos los consumidores." -#: ../Doc/c-api/buffer.rst:260 +#: ../Doc/c-api/buffer.rst:266 msgid "" "Controls the :c:member:`~Py_buffer.format` field. If set, this field MUST be " "filled in correctly. Otherwise, this field MUST be ``NULL``." @@ -523,7 +534,7 @@ msgstr "" "DEBE completarse correctamente. De lo contrario, este campo DEBE ser " "``NULL``." -#: ../Doc/c-api/buffer.rst:264 +#: ../Doc/c-api/buffer.rst:270 msgid "" ":c:macro:`PyBUF_WRITABLE` can be \\|'d to any of the flags in the next " "section. Since :c:macro:`PyBUF_SIMPLE` is defined as 0, :c:macro:" @@ -535,7 +546,7 @@ msgstr "" "macro:`PyBUF_WRITABLE` puede usarse como un indicador independiente para " "solicitar un búfer de escritura simple." -#: ../Doc/c-api/buffer.rst:268 +#: ../Doc/c-api/buffer.rst:274 #, fuzzy msgid "" ":c:macro:`PyBUF_FORMAT` must be \\|'d to any of the flags except :c:macro:" @@ -546,11 +557,11 @@ msgstr "" "excepto :c:macro:`PyBUF_SIMPLE`. Este último ya implica el formato ``B`` " "(bytes sin signo)." -#: ../Doc/c-api/buffer.rst:274 +#: ../Doc/c-api/buffer.rst:280 msgid "shape, strides, suboffsets" msgstr "formas, *strides*, *suboffsets*" -#: ../Doc/c-api/buffer.rst:276 +#: ../Doc/c-api/buffer.rst:282 msgid "" "The flags that control the logical structure of the memory are listed in " "decreasing order of complexity. Note that each flag contains all bits of the " @@ -560,57 +571,57 @@ msgstr "" "orden decreciente de complejidad. Tenga en cuenta que cada bandera contiene " "todos los bits de las banderas debajo de ella." -#: ../Doc/c-api/buffer.rst:283 ../Doc/c-api/buffer.rst:307 -#: ../Doc/c-api/buffer.rst:332 +#: ../Doc/c-api/buffer.rst:289 ../Doc/c-api/buffer.rst:313 +#: ../Doc/c-api/buffer.rst:338 msgid "Request" msgstr "Solicitud" -#: ../Doc/c-api/buffer.rst:283 ../Doc/c-api/buffer.rst:307 -#: ../Doc/c-api/buffer.rst:332 +#: ../Doc/c-api/buffer.rst:289 ../Doc/c-api/buffer.rst:313 +#: ../Doc/c-api/buffer.rst:338 msgid "shape" msgstr "forma" -#: ../Doc/c-api/buffer.rst:283 ../Doc/c-api/buffer.rst:307 -#: ../Doc/c-api/buffer.rst:332 +#: ../Doc/c-api/buffer.rst:289 ../Doc/c-api/buffer.rst:313 +#: ../Doc/c-api/buffer.rst:338 msgid "strides" msgstr "*strides*" -#: ../Doc/c-api/buffer.rst:283 ../Doc/c-api/buffer.rst:307 -#: ../Doc/c-api/buffer.rst:332 +#: ../Doc/c-api/buffer.rst:289 ../Doc/c-api/buffer.rst:313 +#: ../Doc/c-api/buffer.rst:338 msgid "suboffsets" msgstr "*suboffsets*" -#: ../Doc/c-api/buffer.rst:285 ../Doc/c-api/buffer.rst:287 -#: ../Doc/c-api/buffer.rst:289 ../Doc/c-api/buffer.rst:309 -#: ../Doc/c-api/buffer.rst:311 ../Doc/c-api/buffer.rst:313 -#: ../Doc/c-api/buffer.rst:315 ../Doc/c-api/buffer.rst:334 -#: ../Doc/c-api/buffer.rst:336 ../Doc/c-api/buffer.rst:338 -#: ../Doc/c-api/buffer.rst:340 ../Doc/c-api/buffer.rst:342 -#: ../Doc/c-api/buffer.rst:344 ../Doc/c-api/buffer.rst:346 -#: ../Doc/c-api/buffer.rst:348 +#: ../Doc/c-api/buffer.rst:291 ../Doc/c-api/buffer.rst:293 +#: ../Doc/c-api/buffer.rst:295 ../Doc/c-api/buffer.rst:315 +#: ../Doc/c-api/buffer.rst:317 ../Doc/c-api/buffer.rst:319 +#: ../Doc/c-api/buffer.rst:321 ../Doc/c-api/buffer.rst:340 +#: ../Doc/c-api/buffer.rst:342 ../Doc/c-api/buffer.rst:344 +#: ../Doc/c-api/buffer.rst:346 ../Doc/c-api/buffer.rst:348 +#: ../Doc/c-api/buffer.rst:350 ../Doc/c-api/buffer.rst:352 +#: ../Doc/c-api/buffer.rst:354 msgid "yes" msgstr "sí" -#: ../Doc/c-api/buffer.rst:285 ../Doc/c-api/buffer.rst:334 -#: ../Doc/c-api/buffer.rst:336 +#: ../Doc/c-api/buffer.rst:291 ../Doc/c-api/buffer.rst:340 +#: ../Doc/c-api/buffer.rst:342 msgid "if needed" msgstr "si es necesario" -#: ../Doc/c-api/buffer.rst:287 ../Doc/c-api/buffer.rst:289 -#: ../Doc/c-api/buffer.rst:291 ../Doc/c-api/buffer.rst:309 -#: ../Doc/c-api/buffer.rst:311 ../Doc/c-api/buffer.rst:313 -#: ../Doc/c-api/buffer.rst:315 ../Doc/c-api/buffer.rst:338 -#: ../Doc/c-api/buffer.rst:340 ../Doc/c-api/buffer.rst:342 -#: ../Doc/c-api/buffer.rst:344 ../Doc/c-api/buffer.rst:346 -#: ../Doc/c-api/buffer.rst:348 +#: ../Doc/c-api/buffer.rst:293 ../Doc/c-api/buffer.rst:295 +#: ../Doc/c-api/buffer.rst:297 ../Doc/c-api/buffer.rst:315 +#: ../Doc/c-api/buffer.rst:317 ../Doc/c-api/buffer.rst:319 +#: ../Doc/c-api/buffer.rst:321 ../Doc/c-api/buffer.rst:344 +#: ../Doc/c-api/buffer.rst:346 ../Doc/c-api/buffer.rst:348 +#: ../Doc/c-api/buffer.rst:350 ../Doc/c-api/buffer.rst:352 +#: ../Doc/c-api/buffer.rst:354 msgid "NULL" msgstr "NULL" -#: ../Doc/c-api/buffer.rst:298 +#: ../Doc/c-api/buffer.rst:304 msgid "contiguity requests" msgstr "solicitudes de contigüidad" -#: ../Doc/c-api/buffer.rst:300 +#: ../Doc/c-api/buffer.rst:306 msgid "" "C or Fortran :term:`contiguity ` can be explicitly requested, " "with and without stride information. Without stride information, the buffer " @@ -621,32 +632,32 @@ msgstr "" "búfer debe ser C-contiguo." # NOTE: Sera arreglado en 3.12.1? -#: ../Doc/c-api/buffer.rst:307 ../Doc/c-api/buffer.rst:332 +#: ../Doc/c-api/buffer.rst:313 ../Doc/c-api/buffer.rst:338 msgid "contig" msgstr "contig" -#: ../Doc/c-api/buffer.rst:309 ../Doc/c-api/buffer.rst:315 -#: ../Doc/c-api/buffer.rst:346 ../Doc/c-api/buffer.rst:348 +#: ../Doc/c-api/buffer.rst:315 ../Doc/c-api/buffer.rst:321 +#: ../Doc/c-api/buffer.rst:352 ../Doc/c-api/buffer.rst:354 msgid "C" msgstr "C" -#: ../Doc/c-api/buffer.rst:311 +#: ../Doc/c-api/buffer.rst:317 msgid "F" msgstr "F" -#: ../Doc/c-api/buffer.rst:313 +#: ../Doc/c-api/buffer.rst:319 msgid "C or F" msgstr "C o F" -#: ../Doc/c-api/buffer.rst:315 +#: ../Doc/c-api/buffer.rst:321 msgid ":c:macro:`PyBUF_ND`" msgstr ":c:macro:`PyBUF_ND`" -#: ../Doc/c-api/buffer.rst:320 +#: ../Doc/c-api/buffer.rst:326 msgid "compound requests" msgstr "solicitudes compuestas" -#: ../Doc/c-api/buffer.rst:322 +#: ../Doc/c-api/buffer.rst:328 msgid "" "All possible requests are fully defined by some combination of the flags in " "the previous section. For convenience, the buffer protocol provides " @@ -657,7 +668,7 @@ msgstr "" "protocolo de memoria intermedia proporciona combinaciones de uso frecuente " "como indicadores únicos." -#: ../Doc/c-api/buffer.rst:326 +#: ../Doc/c-api/buffer.rst:332 msgid "" "In the following table *U* stands for undefined contiguity. The consumer " "would have to call :c:func:`PyBuffer_IsContiguous` to determine contiguity." @@ -666,39 +677,39 @@ msgstr "" "tendría que llamar a :c:func:`PyBuffer_IsContiguous` para determinar la " "contigüidad." -#: ../Doc/c-api/buffer.rst:332 +#: ../Doc/c-api/buffer.rst:338 msgid "readonly" msgstr "sólo lectura" -#: ../Doc/c-api/buffer.rst:332 +#: ../Doc/c-api/buffer.rst:338 msgid "format" msgstr "formato" -#: ../Doc/c-api/buffer.rst:334 ../Doc/c-api/buffer.rst:336 -#: ../Doc/c-api/buffer.rst:338 ../Doc/c-api/buffer.rst:340 -#: ../Doc/c-api/buffer.rst:342 ../Doc/c-api/buffer.rst:344 +#: ../Doc/c-api/buffer.rst:340 ../Doc/c-api/buffer.rst:342 +#: ../Doc/c-api/buffer.rst:344 ../Doc/c-api/buffer.rst:346 +#: ../Doc/c-api/buffer.rst:348 ../Doc/c-api/buffer.rst:350 msgid "U" msgstr "U" -#: ../Doc/c-api/buffer.rst:334 ../Doc/c-api/buffer.rst:338 -#: ../Doc/c-api/buffer.rst:342 ../Doc/c-api/buffer.rst:346 +#: ../Doc/c-api/buffer.rst:340 ../Doc/c-api/buffer.rst:344 +#: ../Doc/c-api/buffer.rst:348 ../Doc/c-api/buffer.rst:352 msgid "0" msgstr "0" -#: ../Doc/c-api/buffer.rst:336 ../Doc/c-api/buffer.rst:340 -#: ../Doc/c-api/buffer.rst:344 ../Doc/c-api/buffer.rst:348 +#: ../Doc/c-api/buffer.rst:342 ../Doc/c-api/buffer.rst:346 +#: ../Doc/c-api/buffer.rst:350 ../Doc/c-api/buffer.rst:354 msgid "1 or 0" msgstr "1 o 0" -#: ../Doc/c-api/buffer.rst:353 +#: ../Doc/c-api/buffer.rst:359 msgid "Complex arrays" msgstr "Arreglos complejos" -#: ../Doc/c-api/buffer.rst:356 +#: ../Doc/c-api/buffer.rst:362 msgid "NumPy-style: shape and strides" msgstr "Estilo NumPy: forma y *strides*" -#: ../Doc/c-api/buffer.rst:358 +#: ../Doc/c-api/buffer.rst:364 msgid "" "The logical structure of NumPy-style arrays is defined by :c:member:" "`~Py_buffer.itemsize`, :c:member:`~Py_buffer.ndim`, :c:member:`~Py_buffer." @@ -708,7 +719,7 @@ msgstr "" "member:`~Py_buffer.itemsize`, :c:member:`~Py_buffer.ndim`, :c:member:" "`~Py_buffer.shape` y :c:member:`~Py_buffer.strides`." -#: ../Doc/c-api/buffer.rst:361 +#: ../Doc/c-api/buffer.rst:367 msgid "" "If ``ndim == 0``, the memory location pointed to by :c:member:`~Py_buffer." "buf` is interpreted as a scalar of size :c:member:`~Py_buffer.itemsize`. In " @@ -720,7 +731,7 @@ msgstr "" "itemsize`. En ese caso, tanto :c:member:`~Py_buffer.shape` como :c:member:" "`~Py_buffer.strides` son ``NULL``." -#: ../Doc/c-api/buffer.rst:365 +#: ../Doc/c-api/buffer.rst:371 msgid "" "If :c:member:`~Py_buffer.strides` is ``NULL``, the array is interpreted as a " "standard n-dimensional C-array. Otherwise, the consumer must access an n-" @@ -730,14 +741,14 @@ msgstr "" "un arreglo C n-dimensional estándar. De lo contrario, el consumidor debe " "acceder a un arreglo n-dimensional de la siguiente manera:" -#: ../Doc/c-api/buffer.rst:369 +#: ../Doc/c-api/buffer.rst:375 msgid "" "ptr = (char *)buf + indices[0] * strides[0] + ... + indices[n-1] * " "strides[n-1];\n" "item = *((typeof(item) *)ptr);" msgstr "" -#: ../Doc/c-api/buffer.rst:375 +#: ../Doc/c-api/buffer.rst:381 msgid "" "As noted above, :c:member:`~Py_buffer.buf` can point to any location within " "the actual memory block. An exporter can check the validity of a buffer with " @@ -747,7 +758,7 @@ msgstr "" "cualquier ubicación dentro del bloque de memoria real. Un exportador puede " "verificar la validez de un búfer con esta función:" -#: ../Doc/c-api/buffer.rst:379 +#: ../Doc/c-api/buffer.rst:385 #, python-format msgid "" "def verify_structure(memlen, itemsize, ndim, shape, strides, offset):\n" @@ -777,11 +788,11 @@ msgid "" " return 0 <= offset+imin and offset+imax+itemsize <= memlen" msgstr "" -#: ../Doc/c-api/buffer.rst:409 +#: ../Doc/c-api/buffer.rst:415 msgid "PIL-style: shape, strides and suboffsets" msgstr "Estilo PIL: forma, *strides* y *suboffsets*" -#: ../Doc/c-api/buffer.rst:411 +#: ../Doc/c-api/buffer.rst:417 msgid "" "In addition to the regular items, PIL-style arrays can contain pointers that " "must be followed in order to get to the next element in a dimension. For " @@ -800,7 +811,7 @@ msgstr "" "`~Py_buffer.buf`, apuntando a dos matrices ``char x[2][3]`` que pueden " "ubicarse en cualquier lugar de la memoria." -#: ../Doc/c-api/buffer.rst:420 +#: ../Doc/c-api/buffer.rst:426 msgid "" "Here is a function that returns a pointer to the element in an N-D array " "pointed to by an N-dimensional index when there are both non-``NULL`` " @@ -810,7 +821,7 @@ msgstr "" "la que apunta un índice N-dimensional cuando hay *strides* y *suboffsets* no " "``NULL``:" -#: ../Doc/c-api/buffer.rst:424 +#: ../Doc/c-api/buffer.rst:430 msgid "" "void *get_item_pointer(int ndim, void *buf, Py_ssize_t *strides,\n" " Py_ssize_t *suboffsets, Py_ssize_t *indices) {\n" @@ -826,11 +837,11 @@ msgid "" "}" msgstr "" -#: ../Doc/c-api/buffer.rst:439 +#: ../Doc/c-api/buffer.rst:445 msgid "Buffer-related functions" msgstr "Funciones relacionadas a búfer" -#: ../Doc/c-api/buffer.rst:443 +#: ../Doc/c-api/buffer.rst:449 msgid "" "Return ``1`` if *obj* supports the buffer interface otherwise ``0``. When " "``1`` is returned, it doesn't guarantee that :c:func:`PyObject_GetBuffer` " @@ -840,7 +851,7 @@ msgstr "" "cuando se retorna ``1``, no garantiza que :c:func:`PyObject_GetBuffer` tenga " "éxito. Esta función siempre finaliza con éxito." -#: ../Doc/c-api/buffer.rst:450 +#: ../Doc/c-api/buffer.rst:456 #, fuzzy msgid "" "Send a request to *exporter* to fill in *view* as specified by *flags*. If " @@ -852,7 +863,7 @@ msgstr "" "del tipo exacto, DEBE lanzar :c:data:`PyExc_BufferError`, establecer ``view-" ">obj`` en ``NULL`` y retornar ``-1``." -#: ../Doc/c-api/buffer.rst:455 +#: ../Doc/c-api/buffer.rst:461 msgid "" "On success, fill in *view*, set ``view->obj`` to a new reference to " "*exporter* and return 0. In the case of chained buffer providers that " @@ -865,7 +876,7 @@ msgstr "" "PUEDE referirse a este objeto en lugar de *exporter* (Ver :ref:`Estructuras " "de objetos de búfer `)." -#: ../Doc/c-api/buffer.rst:460 +#: ../Doc/c-api/buffer.rst:466 msgid "" "Successful calls to :c:func:`PyObject_GetBuffer` must be paired with calls " "to :c:func:`PyBuffer_Release`, similar to :c:func:`malloc` and :c:func:" @@ -877,7 +888,7 @@ msgstr "" "func:`free`. Por lo tanto, después de que el consumidor haya terminado con " "el búfer, :c:func:`PyBuffer_Release` debe llamarse exactamente una vez." -#: ../Doc/c-api/buffer.rst:468 +#: ../Doc/c-api/buffer.rst:474 #, fuzzy msgid "" "Release the buffer *view* and release the :term:`strong reference` (i.e. " @@ -889,7 +900,7 @@ msgstr "" ">obj``. Esta función DEBE llamarse cuando el búfer ya no se utiliza, de lo " "contrario, pueden producirse fugas de referencia." -#: ../Doc/c-api/buffer.rst:473 +#: ../Doc/c-api/buffer.rst:479 msgid "" "It is an error to call this function on a buffer that was not obtained via :" "c:func:`PyObject_GetBuffer`." @@ -897,7 +908,7 @@ msgstr "" "Es un error llamar a esta función en un búfer que no se obtuvo a través de :" "c:func:`PyObject_GetBuffer`." -#: ../Doc/c-api/buffer.rst:479 +#: ../Doc/c-api/buffer.rst:485 #, fuzzy msgid "" "Return the implied :c:member:`~Py_buffer.itemsize` from :c:member:" @@ -906,7 +917,7 @@ msgstr "" "Retorna el :c:data:`~Py_buffer.itemsize` implícito de :c:data:`~Py_buffer." "format`. En caso de error, lanza una excepción y retorna -1." -#: ../Doc/c-api/buffer.rst:487 +#: ../Doc/c-api/buffer.rst:493 msgid "" "Return ``1`` if the memory defined by the *view* is C-style (*order* is " "``'C'``) or Fortran-style (*order* is ``'F'``) :term:`contiguous` or either " @@ -918,7 +929,7 @@ msgstr "" "cualquiera (*order* es ``'A'``). Retorna ``0`` de lo contrario. Esta función " "siempre finaliza con éxito." -#: ../Doc/c-api/buffer.rst:494 +#: ../Doc/c-api/buffer.rst:500 msgid "" "Get the memory area pointed to by the *indices* inside the given *view*. " "*indices* must point to an array of ``view->ndim`` indices." @@ -926,7 +937,7 @@ msgstr "" "Obtiene el área de memoria señalada por los *indices* dentro del *view* " "dado. *indices* deben apuntar a un arreglo de índices ``view->ndim``." -#: ../Doc/c-api/buffer.rst:500 +#: ../Doc/c-api/buffer.rst:506 msgid "" "Copy contiguous *len* bytes from *buf* to *view*. *fort* can be ``'C'`` or " "``'F'`` (for C-style or Fortran-style ordering). ``0`` is returned on " @@ -936,7 +947,7 @@ msgstr "" "``'F'`` (para pedidos al estilo C o al estilo Fortran). ``0`` se retorna en " "caso de éxito, ``-1`` en caso de error." -#: ../Doc/c-api/buffer.rst:507 +#: ../Doc/c-api/buffer.rst:513 msgid "" "Copy *len* bytes from *src* to its contiguous representation in *buf*. " "*order* can be ``'C'`` or ``'F'`` or ``'A'`` (for C-style or Fortran-style " @@ -947,11 +958,11 @@ msgstr "" "Fortran o cualquiera) ``0`` se retorna en caso de éxito, ``-1`` en caso de " "error." -#: ../Doc/c-api/buffer.rst:511 +#: ../Doc/c-api/buffer.rst:517 msgid "This function fails if *len* != *src->len*." msgstr "Esta función falla si *len* != *src->len*." -#: ../Doc/c-api/buffer.rst:516 +#: ../Doc/c-api/buffer.rst:522 msgid "" "Copy data from *src* to *dest* buffer. Can convert between C-style and or " "Fortran-style buffers." @@ -959,11 +970,11 @@ msgstr "" "Copiar datos del búfer *src* al *dest*. Puede convertir entre búferes de " "estilo C o Fortran." -#: ../Doc/c-api/buffer.rst:519 +#: ../Doc/c-api/buffer.rst:525 msgid "``0`` is returned on success, ``-1`` on error." msgstr "Se retorna ``0`` en caso de éxito, ``-1`` en caso de error." -#: ../Doc/c-api/buffer.rst:523 +#: ../Doc/c-api/buffer.rst:529 msgid "" "Fill the *strides* array with byte-strides of a :term:`contiguous` (C-style " "if *order* is ``'C'`` or Fortran-style if *order* is ``'F'``) array of the " @@ -973,7 +984,7 @@ msgstr "" "(estilo C si *order* es ``'C'`` o estilo Fortran si *order* es ``'F '`` ) " "arreglo de la forma dada con el número dado de bytes por elemento." -#: ../Doc/c-api/buffer.rst:530 +#: ../Doc/c-api/buffer.rst:536 msgid "" "Handle buffer requests for an exporter that wants to expose *buf* of size " "*len* with writability set according to *readonly*. *buf* is interpreted as " @@ -983,7 +994,7 @@ msgstr "" "de tamaño *len* con capacidad de escritura establecida de acuerdo con " "*readonly*. *buf* se interpreta como una secuencia de bytes sin signo." -#: ../Doc/c-api/buffer.rst:534 +#: ../Doc/c-api/buffer.rst:540 msgid "" "The *flags* argument indicates the request type. This function always fills " "in *view* as specified by flags, unless *buf* has been designated as read-" @@ -994,7 +1005,7 @@ msgstr "" "designado como solo lectura y :c:macro:`PyBUF_WRITABLE` esté configurado en " "*flags*." -#: ../Doc/c-api/buffer.rst:538 +#: ../Doc/c-api/buffer.rst:544 #, fuzzy msgid "" "On success, set ``view->obj`` to a new reference to *exporter* and return 0. " @@ -1005,7 +1016,7 @@ msgstr "" "y retorna 0. De lo contrario, aumenta :c:data:`PyExc_BufferError`, establece " "``view->obj`` en ``NULL`` y retorna ``-1``;" -#: ../Doc/c-api/buffer.rst:542 +#: ../Doc/c-api/buffer.rst:548 msgid "" "If this function is used as part of a :ref:`getbufferproc `, " "*exporter* MUST be set to the exporting object and *flags* must be passed " @@ -1041,16 +1052,16 @@ msgstr "Protocolo búfer" msgid "PyBufferProcs (C type)" msgstr "Protocolo búfer" -#: ../Doc/c-api/buffer.rst:295 +#: ../Doc/c-api/buffer.rst:301 #, fuzzy msgid "contiguous" msgstr "contig" -#: ../Doc/c-api/buffer.rst:295 +#: ../Doc/c-api/buffer.rst:301 #, fuzzy msgid "C-contiguous" msgstr "contig" -#: ../Doc/c-api/buffer.rst:295 +#: ../Doc/c-api/buffer.rst:301 msgid "Fortran contiguous" msgstr "" diff --git a/c-api/bytearray.po b/c-api/bytearray.po index a04bbe978a..21ebfd72e8 100644 --- a/c-api/bytearray.po +++ b/c-api/bytearray.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-04-09 09:25+0200\n" "Last-Translator: David Spindola\n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.6\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/bytearray.rst:6 msgid "Byte Array Objects" @@ -69,8 +68,8 @@ msgstr "Funciones API directas" #: ../Doc/c-api/bytearray.rst:42 msgid "" -"Return a new bytearray object from any object, *o*, that implements " -"the :ref:`buffer protocol `." +"Return a new bytearray object from any object, *o*, that implements the :ref:" +"`buffer protocol `." msgstr "" "Retorna un nuevo objeto de arreglo de bytes de cualquier objeto, *o*, que " "implementa el :ref:`buffer protocol `." @@ -108,24 +107,32 @@ msgstr "" "nulo adicional agregado." #: ../Doc/c-api/bytearray.rst:76 -msgid "Resize the internal buffer of *bytearray* to *len*." +#, fuzzy +msgid "" +"Resize the internal buffer of *bytearray* to *len*. Failure is a ``-1`` " +"return with an exception set." msgstr "Cambia el tamaño del búfer interno de *bytearray* a *len*." #: ../Doc/c-api/bytearray.rst:79 +msgid "" +"A negative *len* will now result in an exception being set and -1 returned." +msgstr "" + +#: ../Doc/c-api/bytearray.rst:84 msgid "Macros" msgstr "Macros" -#: ../Doc/c-api/bytearray.rst:81 +#: ../Doc/c-api/bytearray.rst:86 msgid "These macros trade safety for speed and they don't check pointers." msgstr "" "Estos macros intercambian seguridad por velocidad y no comprueban punteros." -#: ../Doc/c-api/bytearray.rst:85 +#: ../Doc/c-api/bytearray.rst:90 msgid "Similar to :c:func:`PyByteArray_AsString`, but without error checking." msgstr "" "Similar a :c:func:`PyByteArray_AsString`, pero sin comprobación de errores." -#: ../Doc/c-api/bytearray.rst:90 +#: ../Doc/c-api/bytearray.rst:95 msgid "Similar to :c:func:`PyByteArray_Size`, but without error checking." msgstr "" "Similar a :c:func:`PyByteArray_Size`, pero sin comprobación de errores." diff --git a/c-api/bytes.po b/c-api/bytes.po index 6af47b82a9..e8c25a4e98 100644 --- a/c-api/bytes.po +++ b/c-api/bytes.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-10-13 01:23-0600\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.7\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/bytes.rst:6 msgid "Bytes Objects" @@ -399,6 +398,29 @@ msgstr "" "reference` a *newpart* (es decir, disminuye su recuento de referencias)." #: ../Doc/c-api/bytes.rst:194 +msgid "Similar to ``sep.join(iterable)`` in Python." +msgstr "" + +#: ../Doc/c-api/bytes.rst:196 +msgid "" +"*sep* must be Python :class:`bytes` object. (Note that :c:func:" +"`PyUnicode_Join` accepts ``NULL`` separator and treats it as a space, " +"whereas :c:func:`PyBytes_Join` doesn't accept ``NULL`` separator.)" +msgstr "" + +#: ../Doc/c-api/bytes.rst:201 +msgid "" +"*iterable* must be an iterable object yielding objects that implement the :" +"ref:`buffer protocol `." +msgstr "" + +#: ../Doc/c-api/bytes.rst:204 +msgid "" +"On success, return a new :class:`bytes` object. On error, set an exception " +"and return ``NULL``." +msgstr "" + +#: ../Doc/c-api/bytes.rst:212 msgid "" "Resize a bytes object. *newsize* will be the new length of the bytes object. " "You can think of it as creating a new bytes object and destroying the old " diff --git a/c-api/capsule.po b/c-api/capsule.po index 97a0afb310..a21c559e1c 100644 --- a/c-api/capsule.po +++ b/c-api/capsule.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-04-11 20:18+0100\n" "Last-Translator: David Spindola\n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.6\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/capsule.rst:6 msgid "Capsules" @@ -43,12 +42,11 @@ msgid "" "loaded modules." msgstr "" "Este subtipo de :c:type:`PyObject` representa un valor opaco, útil para los " -"módulos de extensión C que necesitan pasar un valor opaco (como un " -"puntero :c:expr:`void*`) a través del código Python a otro código C . A " -"menudo se usa para hacer que un puntero de función C definido en un módulo " -"esté disponible para otros módulos, por lo que el mecanismo de importación " -"regular se puede usar para acceder a las API C definidas en módulos cargados " -"dinámicamente." +"módulos de extensión C que necesitan pasar un valor opaco (como un puntero :" +"c:expr:`void*`) a través del código Python a otro código C . A menudo se usa " +"para hacer que un puntero de función C definido en un módulo esté disponible " +"para otros módulos, por lo que el mecanismo de importación regular se puede " +"usar para acceder a las API C definidas en módulos cargados dinámicamente." #: ../Doc/c-api/capsule.rst:27 msgid "The type of a destructor callback for a capsule. Defined as::" @@ -147,8 +145,8 @@ msgstr "" #: ../Doc/c-api/capsule.rst:76 msgid "" "It is legal for a capsule to have a ``NULL`` destructor. This makes a " -"``NULL`` return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` " -"or :c:func:`PyErr_Occurred` to disambiguate." +"``NULL`` return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or :" +"c:func:`PyErr_Occurred` to disambiguate." msgstr "" "Es legal que una cápsula tenga un destructor ``NULL``. Esto hace que un " "código de retorno ``NULL`` sea algo ambiguo; use :c:func:`PyCapsule_IsValid` " @@ -165,12 +163,12 @@ msgstr "" #: ../Doc/c-api/capsule.rst:86 msgid "" "It is legal for a capsule to have a ``NULL`` context. This makes a ``NULL`` " -"return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` " -"or :c:func:`PyErr_Occurred` to disambiguate." +"return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or :c:func:" +"`PyErr_Occurred` to disambiguate." msgstr "" "Es legal que una cápsula tenga un contexto ``NULL``. Esto hace que un código " -"de retorno ``NULL`` sea algo ambiguo; use :c:func:`PyCapsule_IsValid` " -"o :c:func:`PyErr_Occurred` para desambiguar." +"de retorno ``NULL`` sea algo ambiguo; use :c:func:`PyCapsule_IsValid` o :c:" +"func:`PyErr_Occurred` para desambiguar." #: ../Doc/c-api/capsule.rst:93 msgid "" @@ -183,12 +181,12 @@ msgstr "" #: ../Doc/c-api/capsule.rst:96 msgid "" "It is legal for a capsule to have a ``NULL`` name. This makes a ``NULL`` " -"return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` " -"or :c:func:`PyErr_Occurred` to disambiguate." +"return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or :c:func:" +"`PyErr_Occurred` to disambiguate." msgstr "" "Es legal que una cápsula tenga un nombre ``NULL``. Esto hace que un código " -"de retorno ``NULL`` sea algo ambiguo; use :c:func:`PyCapsule_IsValid` " -"o :c:func:`PyErr_Occurred` para desambiguar." +"de retorno ``NULL`` sea algo ambiguo; use :c:func:`PyCapsule_IsValid` o :c:" +"func:`PyErr_Occurred` para desambiguar." #: ../Doc/c-api/capsule.rst:103 msgid "" @@ -204,17 +202,31 @@ msgstr "" #: ../Doc/c-api/capsule.rst:108 msgid "" +"This function splits *name* on the ``.`` character, and imports the first " +"element. It then processes further elements using attribute lookups." +msgstr "" + +#: ../Doc/c-api/capsule.rst:111 +msgid "" "Return the capsule's internal *pointer* on success. On failure, set an " "exception and return ``NULL``." msgstr "" "Retorna el puntero *pointer* interno de la cápsula en caso de éxito. En caso " "de falla, establece una excepción y retorna ``NULL``." -#: ../Doc/c-api/capsule.rst:111 +#: ../Doc/c-api/capsule.rst:116 +msgid "" +"If *name* points to an attribute of some submodule or subpackage, this " +"submodule or subpackage must be previously imported using other means (for " +"example, by using :c:func:`PyImport_ImportModule`) for the attribute lookups " +"to succeed." +msgstr "" + +#: ../Doc/c-api/capsule.rst:121 msgid "*no_block* has no effect anymore." msgstr "*no_block* ya no tiene efecto." -#: ../Doc/c-api/capsule.rst:117 +#: ../Doc/c-api/capsule.rst:127 msgid "" "Determines whether or not *capsule* is a valid capsule. A valid capsule is " "non-``NULL``, passes :c:func:`PyCapsule_CheckExact`, has a non-``NULL`` " @@ -224,11 +236,11 @@ msgid "" msgstr "" "Determina si *capsule* es o no una cápsula válida. Una cápsula válida no es " "``NULL``, pasa :c:func:`PyCapsule_CheckExact`, tiene un puntero no ``NULL`` " -"almacenado y su nombre interno coincide con el parámetro *name*. " -"(Consulte :c:func:`PyCapsule_GetPointer` para obtener información sobre cómo " -"se comparan los nombres de las cápsulas)." +"almacenado y su nombre interno coincide con el parámetro *name*. (Consulte :" +"c:func:`PyCapsule_GetPointer` para obtener información sobre cómo se " +"comparan los nombres de las cápsulas)." -#: ../Doc/c-api/capsule.rst:123 +#: ../Doc/c-api/capsule.rst:133 msgid "" "In other words, if :c:func:`PyCapsule_IsValid` returns a true value, calls " "to any of the accessors (any function starting with ``PyCapsule_Get``) are " @@ -238,7 +250,7 @@ msgstr "" "verdadero, se garantiza que las llamadas a cualquiera de las funciones de " "acceso (cualquier función que comience con ``PyCapsule_Get``) tendrán éxito." -#: ../Doc/c-api/capsule.rst:127 +#: ../Doc/c-api/capsule.rst:137 msgid "" "Return a nonzero value if the object is valid and matches the name passed " "in. Return ``0`` otherwise. This function will not fail." @@ -246,23 +258,23 @@ msgstr "" "Retorna un valor distinto de cero si el objeto es válido y coincide con el " "nombre pasado. Retorna ``0`` de lo contrario. Esta función no fallará." -#: ../Doc/c-api/capsule.rst:133 +#: ../Doc/c-api/capsule.rst:143 msgid "Set the context pointer inside *capsule* to *context*." msgstr "Establece el puntero de contexto dentro de *capsule* a *context*." -#: ../Doc/c-api/capsule.rst:135 ../Doc/c-api/capsule.rst:142 -#: ../Doc/c-api/capsule.rst:151 ../Doc/c-api/capsule.rst:159 +#: ../Doc/c-api/capsule.rst:145 ../Doc/c-api/capsule.rst:152 +#: ../Doc/c-api/capsule.rst:161 ../Doc/c-api/capsule.rst:169 msgid "" "Return ``0`` on success. Return nonzero and set an exception on failure." msgstr "" "Retorna ``0`` en caso de éxito. Retorna distinto de cero y establece una " "excepción en caso de error." -#: ../Doc/c-api/capsule.rst:140 +#: ../Doc/c-api/capsule.rst:150 msgid "Set the destructor inside *capsule* to *destructor*." msgstr "Establece el destructor dentro de *capsule* en *destructor*." -#: ../Doc/c-api/capsule.rst:147 +#: ../Doc/c-api/capsule.rst:157 msgid "" "Set the name inside *capsule* to *name*. If non-``NULL``, the name must " "outlive the capsule. If the previous *name* stored in the capsule was not " @@ -272,7 +284,7 @@ msgstr "" "nombre debe sobrevivir a la cápsula. Si el *name* anterior almacenado en la " "cápsula no era ``NULL``, no se intenta liberarlo." -#: ../Doc/c-api/capsule.rst:156 +#: ../Doc/c-api/capsule.rst:166 msgid "" "Set the void pointer inside *capsule* to *pointer*. The pointer may not be " "``NULL``." diff --git a/c-api/code.po b/c-api/code.po index 4abd7357a9..3325aae5ca 100644 --- a/c-api/code.po +++ b/c-api/code.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2022-10-30 17:20-0300\n" "Last-Translator: Sofía Denner \n" "Language: es\n" @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/code.rst:8 msgid "Code Objects" @@ -63,34 +63,38 @@ msgstr "" #: ../Doc/c-api/code.rst:35 #, fuzzy -msgid "Return the number of free variables in a code object." +msgid "" +"Return the number of :term:`free (closure) variables ` in " +"a code object." msgstr "Retorna el número de variables libres en *co*." -#: ../Doc/c-api/code.rst:39 +#: ../Doc/c-api/code.rst:40 #, fuzzy -msgid "Return the position of the first free variable in a code object." +msgid "" +"Return the position of the first :term:`free (closure) variable ` in a code object." msgstr "Retorna el número de variables libres en *co*." -#: ../Doc/c-api/code.rst:43 +#: ../Doc/c-api/code.rst:45 msgid "" "Renamed from ``PyCode_GetFirstFree`` as part of :ref:`unstable-c-api`. The " "old name is deprecated, but will remain available until the signature " "changes again." msgstr "" -#: ../Doc/c-api/code.rst:49 +#: ../Doc/c-api/code.rst:51 msgid "" "Return a new code object. If you need a dummy code object to create a " "frame, use :c:func:`PyCode_NewEmpty` instead." msgstr "" -#: ../Doc/c-api/code.rst:52 +#: ../Doc/c-api/code.rst:54 msgid "" "Since the definition of the bytecode changes often, calling :c:func:" "`PyUnstable_Code_New` directly can bind you to a precise Python version." msgstr "" -#: ../Doc/c-api/code.rst:55 +#: ../Doc/c-api/code.rst:57 #, fuzzy msgid "" "The many arguments of this function are inter-dependent in complex ways, " @@ -106,18 +110,18 @@ msgstr "" "estos valores probablemente resulten en ejecuciones incorrectas o fallas en " "la VM." -#: ../Doc/c-api/code.rst:59 +#: ../Doc/c-api/code.rst:61 #, fuzzy msgid "Added ``qualname`` and ``exceptiontable`` parameters." msgstr "Se agregó el parámetro ``exceptiontable``." -#: ../Doc/c-api/code.rst:66 +#: ../Doc/c-api/code.rst:68 msgid "" "Renamed from ``PyCode_New`` as part of :ref:`unstable-c-api`. The old name " "is deprecated, but will remain available until the signature changes again." msgstr "" -#: ../Doc/c-api/code.rst:72 +#: ../Doc/c-api/code.rst:74 #, fuzzy msgid "" "Similar to :c:func:`PyUnstable_Code_New`, but with an extra " @@ -128,22 +132,22 @@ msgstr "" "para argumentos solo posicionales. Las mismas advertencias que aplican a " "``PyCode_New`` también aplican a esta función." -#: ../Doc/c-api/code.rst:77 +#: ../Doc/c-api/code.rst:79 msgid "as ``PyCode_NewWithPosOnlyArgs``" msgstr "" -#: ../Doc/c-api/code.rst:79 +#: ../Doc/c-api/code.rst:81 #, fuzzy msgid "Added ``qualname`` and ``exceptiontable`` parameters." msgstr "Se agregó el parámetro ``exceptiontable``." -#: ../Doc/c-api/code.rst:84 +#: ../Doc/c-api/code.rst:86 msgid "" "Renamed to ``PyUnstable_Code_NewWithPosOnlyArgs``. The old name is " "deprecated, but will remain available until the signature changes again." msgstr "" -#: ../Doc/c-api/code.rst:90 +#: ../Doc/c-api/code.rst:92 msgid "" "Return a new empty code object with the specified filename, function name, " "and first line number. The resulting code object will raise an ``Exception`` " @@ -153,7 +157,7 @@ msgstr "" "especificado, el nombre de la función y el número de la primera línea. Si el " "objeto código resultante es ejecutado, lanzará una ``Exception``." -#: ../Doc/c-api/code.rst:96 +#: ../Doc/c-api/code.rst:98 msgid "" "Return the line number of the instruction that occurs on or before " "``byte_offset`` and ends after it. If you just need the line number of a " @@ -163,7 +167,7 @@ msgstr "" "``byte_offset`` y finaliza después. Si solo necesita el número de línea de " "un marco, use :c:func:`PyFrame_GetLineNumber` en su lugar." -#: ../Doc/c-api/code.rst:99 +#: ../Doc/c-api/code.rst:101 #, fuzzy msgid "" "For efficiently iterating over the line numbers in a code object, use :pep:" @@ -173,7 +177,7 @@ msgstr "" "código, use `la API descrita en PEP 626 `_." -#: ../Doc/c-api/code.rst:104 +#: ../Doc/c-api/code.rst:106 msgid "" "Sets the passed ``int`` pointers to the source code line and column numbers " "for the instruction at ``byte_offset``. Sets the value to ``0`` when " @@ -184,11 +188,11 @@ msgstr "" "en ``0`` cuando la información no está disponible para algún elemento en " "particular." -#: ../Doc/c-api/code.rst:108 +#: ../Doc/c-api/code.rst:110 msgid "Returns ``1`` if the function succeeds and 0 otherwise." msgstr "Retorna ``1`` si la función fue exitosa y ``0`` de lo contrario." -#: ../Doc/c-api/code.rst:114 +#: ../Doc/c-api/code.rst:116 msgid "" "Equivalent to the Python code ``getattr(co, 'co_code')``. Returns a strong " "reference to a :c:type:`PyBytesObject` representing the bytecode in a code " @@ -199,7 +203,7 @@ msgstr "" "un objecto código. En caso de error se retorna ``NULL`` y se lanza una " "excepción." -#: ../Doc/c-api/code.rst:119 +#: ../Doc/c-api/code.rst:121 msgid "" "This ``PyBytesObject`` may be created on-demand by the interpreter and does " "not necessarily represent the bytecode actually executed by CPython. The " @@ -210,7 +214,7 @@ msgstr "" "CPython. Los casos de uso principales para esta función son depuradores y " "perfiladores." -#: ../Doc/c-api/code.rst:127 +#: ../Doc/c-api/code.rst:129 msgid "" "Equivalent to the Python code ``getattr(co, 'co_varnames')``. Returns a new " "reference to a :c:type:`PyTupleObject` containing the names of the local " @@ -221,7 +225,7 @@ msgstr "" "las variables locales. En caso de error, retorna ``NULL`` y lanza una " "excepción." -#: ../Doc/c-api/code.rst:136 +#: ../Doc/c-api/code.rst:138 msgid "" "Equivalent to the Python code ``getattr(co, 'co_cellvars')``. Returns a new " "reference to a :c:type:`PyTupleObject` containing the names of the local " @@ -233,18 +237,20 @@ msgstr "" "las variables locales referenciadas por funciones anidadas. En caso de " "error, retorna ``NULL`` y lanza una excepción." -#: ../Doc/c-api/code.rst:145 +#: ../Doc/c-api/code.rst:147 +#, fuzzy msgid "" "Equivalent to the Python code ``getattr(co, 'co_freevars')``. Returns a new " -"reference to a :c:type:`PyTupleObject` containing the names of the free " -"variables. On error, ``NULL`` is returned and an exception is raised." +"reference to a :c:type:`PyTupleObject` containing the names of the :term:" +"`free (closure) variables `. On error, ``NULL`` is " +"returned and an exception is raised." msgstr "" "Equivalente al código Python ``getattr(co, 'co_freevars')``. Retorna una " "nueva referencia a un :c:type:`PyTupleObject` que contiene los nombres de " "las variables libres. En caso de error, retorna ``NULL`` y lanza una " "excepción." -#: ../Doc/c-api/code.rst:153 +#: ../Doc/c-api/code.rst:156 msgid "" "Register *callback* as a code object watcher for the current interpreter. " "Return an ID which may be passed to :c:func:`PyCode_ClearWatcher`. In case " @@ -252,7 +258,7 @@ msgid "" "exception." msgstr "" -#: ../Doc/c-api/code.rst:162 +#: ../Doc/c-api/code.rst:165 msgid "" "Clear watcher identified by *watcher_id* previously returned from :c:func:" "`PyCode_AddWatcher` for the current interpreter. Return ``0`` on success, or " @@ -260,25 +266,25 @@ msgid "" "never registered.)" msgstr "" -#: ../Doc/c-api/code.rst:171 +#: ../Doc/c-api/code.rst:174 msgid "" "Enumeration of possible code object watcher events: - " "``PY_CODE_EVENT_CREATE`` - ``PY_CODE_EVENT_DESTROY``" msgstr "" -#: ../Doc/c-api/code.rst:179 +#: ../Doc/c-api/code.rst:182 msgid "Type of a code object watcher callback function." msgstr "" -#: ../Doc/c-api/code.rst:181 +#: ../Doc/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 "" -#: ../Doc/c-api/code.rst:186 +#: ../Doc/c-api/code.rst:189 msgid "" "If *event* is ``PY_CODE_EVENT_DESTROY``, taking a reference in the callback " "to the about-to-be-destroyed code object will resurrect it and prevent it " @@ -286,7 +292,7 @@ msgid "" "later, any watcher callbacks active at that time will be called again." msgstr "" -#: ../Doc/c-api/code.rst:191 +#: ../Doc/c-api/code.rst:194 msgid "" "Users of this API should not rely on internal runtime implementation " "details. Such details may include, but are not limited to, the exact order " @@ -296,14 +302,14 @@ msgid "" "the Python code being executed." msgstr "" -#: ../Doc/c-api/code.rst:198 +#: ../Doc/c-api/code.rst:201 msgid "" "If the callback sets an exception, it must return ``-1``; this exception " "will be printed as an unraisable exception using :c:func:" "`PyErr_WriteUnraisable`. Otherwise it should return ``0``." msgstr "" -#: ../Doc/c-api/code.rst:202 +#: ../Doc/c-api/code.rst:205 msgid "" "There may already be a pending exception set on entry to the callback. In " "this case, the callback should return ``0`` with the same exception still " @@ -312,85 +318,192 @@ msgid "" "it before returning." msgstr "" -#: ../Doc/c-api/code.rst:212 +#: ../Doc/c-api/code.rst:217 +#, fuzzy +msgid "Code Object Flags" +msgstr "Objetos código" + +#: ../Doc/c-api/code.rst:219 +msgid "" +"Code objects contain a bit-field of flags, which can be retrieved as the :" +"attr:`~codeobject.co_flags` Python attribute (for example using :c:func:" +"`PyObject_GetAttrString`), and set using a *flags* argument to :c:func:" +"`PyUnstable_Code_New` and similar functions." +msgstr "" + +#: ../Doc/c-api/code.rst:224 +msgid "" +"Flags whose names start with ``CO_FUTURE_`` correspond to features normally " +"selectable by :ref:`future statements `. These flags can be used in :" +"c:member:`PyCompilerFlags.cf_flags`. Note that many ``CO_FUTURE_`` flags are " +"mandatory in current versions of Python, and setting them has no effect." +msgstr "" + +#: ../Doc/c-api/code.rst:230 +msgid "" +"The following flags are available. For their meaning, see the linked " +"documentation of their Python equivalents." +msgstr "" + +#: ../Doc/c-api/code.rst:238 +msgid "Flag" +msgstr "" + +#: ../Doc/c-api/code.rst:239 +msgid "Meaning" +msgstr "" + +#: ../Doc/c-api/code.rst:241 +msgid ":py:data:`inspect.CO_OPTIMIZED`" +msgstr "" + +#: ../Doc/c-api/code.rst:243 +msgid ":py:data:`inspect.CO_NEWLOCALS`" +msgstr "" + +#: ../Doc/c-api/code.rst:245 +msgid ":py:data:`inspect.CO_VARARGS`" +msgstr "" + +#: ../Doc/c-api/code.rst:247 +msgid ":py:data:`inspect.CO_VARKEYWORDS`" +msgstr "" + +#: ../Doc/c-api/code.rst:249 +msgid ":py:data:`inspect.CO_NESTED`" +msgstr "" + +#: ../Doc/c-api/code.rst:251 +msgid ":py:data:`inspect.CO_GENERATOR`" +msgstr "" + +#: ../Doc/c-api/code.rst:253 +msgid ":py:data:`inspect.CO_COROUTINE`" +msgstr "" + +#: ../Doc/c-api/code.rst:255 +msgid ":py:data:`inspect.CO_ITERABLE_COROUTINE`" +msgstr "" + +#: ../Doc/c-api/code.rst:257 +msgid ":py:data:`inspect.CO_ASYNC_GENERATOR`" +msgstr "" + +#: ../Doc/c-api/code.rst:259 +msgid ":py:data:`inspect.CO_HAS_DOCSTRING`" +msgstr "" + +#: ../Doc/c-api/code.rst:261 +msgid ":py:data:`inspect.CO_METHOD`" +msgstr "" + +#: ../Doc/c-api/code.rst:264 +msgid "no effect (:py:data:`__future__.division`)" +msgstr "" + +#: ../Doc/c-api/code.rst:266 +msgid "no effect (:py:data:`__future__.absolute_import`)" +msgstr "" + +#: ../Doc/c-api/code.rst:268 +msgid "no effect (:py:data:`__future__.with_statement`)" +msgstr "" + +#: ../Doc/c-api/code.rst:270 +msgid "no effect (:py:data:`__future__.print_function`)" +msgstr "" + +#: ../Doc/c-api/code.rst:272 +msgid "no effect (:py:data:`__future__.unicode_literals`)" +msgstr "" + +#: ../Doc/c-api/code.rst:274 +msgid "no effect (:py:data:`__future__.generator_stop`)" +msgstr "" + +#: ../Doc/c-api/code.rst:276 +msgid ":py:data:`__future__.annotations`" +msgstr "" + +#: ../Doc/c-api/code.rst:280 msgid "Extra information" msgstr "" -#: ../Doc/c-api/code.rst:214 +#: ../Doc/c-api/code.rst:282 msgid "" "To support low-level extensions to frame evaluation, such as external just-" "in-time compilers, it is possible to attach arbitrary extra data to code " "objects." msgstr "" -#: ../Doc/c-api/code.rst:218 +#: ../Doc/c-api/code.rst:286 msgid "" "These functions are part of the unstable C API tier: this functionality is a " "CPython implementation detail, and the API may change without deprecation " "warnings." msgstr "" -#: ../Doc/c-api/code.rst:224 +#: ../Doc/c-api/code.rst:292 msgid "Return a new an opaque index value used to adding data to code objects." msgstr "" -#: ../Doc/c-api/code.rst:226 +#: ../Doc/c-api/code.rst:294 msgid "" "You generally call this function once (per interpreter) and use the result " "with ``PyCode_GetExtra`` and ``PyCode_SetExtra`` to manipulate data on " "individual code objects." msgstr "" -#: ../Doc/c-api/code.rst:230 +#: ../Doc/c-api/code.rst:298 msgid "" "If *free* is not ``NULL``: when a code object is deallocated, *free* will be " "called on non-``NULL`` data stored under the new index. Use :c:func:" "`Py_DecRef` when storing :c:type:`PyObject`." msgstr "" -#: ../Doc/c-api/code.rst:236 +#: ../Doc/c-api/code.rst:304 msgid "as ``_PyEval_RequestCodeExtraIndex``" msgstr "" -#: ../Doc/c-api/code.rst:240 +#: ../Doc/c-api/code.rst:308 msgid "" "Renamed to ``PyUnstable_Eval_RequestCodeExtraIndex``. The old private name " "is deprecated, but will be available until the API changes." msgstr "" -#: ../Doc/c-api/code.rst:246 +#: ../Doc/c-api/code.rst:314 msgid "" "Set *extra* to the extra data stored under the given index. Return 0 on " "success. Set an exception and return -1 on failure." msgstr "" -#: ../Doc/c-api/code.rst:249 +#: ../Doc/c-api/code.rst:317 msgid "" "If no data was set under the index, set *extra* to ``NULL`` and return 0 " "without setting an exception." msgstr "" -#: ../Doc/c-api/code.rst:254 +#: ../Doc/c-api/code.rst:322 msgid "as ``_PyCode_GetExtra``" msgstr "" -#: ../Doc/c-api/code.rst:258 +#: ../Doc/c-api/code.rst:326 msgid "" "Renamed to ``PyUnstable_Code_GetExtra``. The old private name is deprecated, " "but will be available until the API changes." msgstr "" -#: ../Doc/c-api/code.rst:264 +#: ../Doc/c-api/code.rst:332 msgid "" "Set the extra data stored under the given index to *extra*. Return 0 on " "success. Set an exception and return -1 on failure." msgstr "" -#: ../Doc/c-api/code.rst:269 +#: ../Doc/c-api/code.rst:337 msgid "as ``_PyCode_SetExtra``" msgstr "" -#: ../Doc/c-api/code.rst:273 +#: ../Doc/c-api/code.rst:341 msgid "" "Renamed to ``PyUnstable_Code_SetExtra``. The old private name is deprecated, " "but will be available until the API changes." @@ -410,22 +523,22 @@ msgstr "" msgid "code object" msgstr "Objetos código" -#: ../Doc/c-api/code.rst:62 +#: ../Doc/c-api/code.rst:64 msgid "PyCode_New (C function)" msgstr "" -#: ../Doc/c-api/code.rst:75 +#: ../Doc/c-api/code.rst:77 msgid "PyCode_NewWithPosOnlyArgs (C function)" msgstr "" -#: ../Doc/c-api/code.rst:234 +#: ../Doc/c-api/code.rst:302 msgid "_PyEval_RequestCodeExtraIndex (C function)" msgstr "" -#: ../Doc/c-api/code.rst:252 +#: ../Doc/c-api/code.rst:320 msgid "_PyCode_GetExtra (C function)" msgstr "" -#: ../Doc/c-api/code.rst:267 +#: ../Doc/c-api/code.rst:335 msgid "_PyCode_SetExtra (C function)" msgstr "" diff --git a/c-api/complex.po b/c-api/complex.po index 5dc96c0222..1121869ce9 100644 --- a/c-api/complex.po +++ b/c-api/complex.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-10-07 00:11-0600\n" "Last-Translator: Rodrigo Tobar \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.7\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/complex.rst:6 msgid "Complex Number Objects" @@ -70,6 +69,7 @@ msgid "The structure is defined as::" msgstr "La estructura se define como::" #: ../Doc/c-api/complex.rst:35 +#, python-brace-format msgid "" "typedef struct {\n" " double real;\n" @@ -145,18 +145,22 @@ msgstr "" "Si *num* es nulo y *exp* no es un número real positivo, este método retorna " "cero y establece :c:data:`errno` a :c:macro:`!EDOM`." -#: ../Doc/c-api/complex.rst:84 +#: ../Doc/c-api/complex.rst:82 +msgid "Set :c:data:`errno` to :c:macro:`!ERANGE` on overflows." +msgstr "" + +#: ../Doc/c-api/complex.rst:86 msgid "Complex Numbers as Python Objects" msgstr "Números complejos como objetos de Python" -#: ../Doc/c-api/complex.rst:89 +#: ../Doc/c-api/complex.rst:91 msgid "" "This subtype of :c:type:`PyObject` represents a Python complex number object." msgstr "" "Este subtipo de :c:type:`PyObject` representa un objeto de número complejo " "de Python." -#: ../Doc/c-api/complex.rst:94 +#: ../Doc/c-api/complex.rst:96 msgid "" "This instance of :c:type:`PyTypeObject` represents the Python complex number " "type. It is the same object as :class:`complex` in the Python layer." @@ -165,7 +169,7 @@ msgstr "" "complejo de Python. Es el mismo objeto que :class:`complex` en la capa de " "Python." -#: ../Doc/c-api/complex.rst:100 +#: ../Doc/c-api/complex.rst:102 msgid "" "Return true if its argument is a :c:type:`PyComplexObject` or a subtype of :" "c:type:`PyComplexObject`. This function always succeeds." @@ -174,7 +178,7 @@ msgstr "" "subtipo de :c:type:`PyComplexObject`. Esta función siempre finaliza con " "éxito." -#: ../Doc/c-api/complex.rst:106 +#: ../Doc/c-api/complex.rst:108 msgid "" "Return true if its argument is a :c:type:`PyComplexObject`, but not a " "subtype of :c:type:`PyComplexObject`. This function always succeeds." @@ -183,7 +187,7 @@ msgstr "" "un subtipo de :c:type:`PyComplexObject`. Esta función siempre finaliza con " "éxito." -#: ../Doc/c-api/complex.rst:112 +#: ../Doc/c-api/complex.rst:114 msgid "" "Create a new Python complex number object from a C :c:type:`Py_complex` " "value. Return ``NULL`` with an exception set on error." @@ -192,7 +196,7 @@ msgstr "" "type:`Py_complex`. Retorna ``NULL`` con una excepción establecida en caso de " "error." -#: ../Doc/c-api/complex.rst:118 +#: ../Doc/c-api/complex.rst:120 msgid "" "Return a new :c:type:`PyComplexObject` object from *real* and *imag*. Return " "``NULL`` with an exception set on error." @@ -200,11 +204,11 @@ msgstr "" "Retorna un nuevo objeto :c:type:`PyComplexObject` de *real* e *imag*. " "Retorna ``NULL`` con una excepción establecida en caso de error." -#: ../Doc/c-api/complex.rst:124 +#: ../Doc/c-api/complex.rst:126 msgid "Return the real part of *op* as a C :c:expr:`double`." msgstr "Retorna la parte real de *op* como :c:expr:`double` en C." -#: ../Doc/c-api/complex.rst:126 +#: ../Doc/c-api/complex.rst:128 msgid "" "If *op* is not a Python complex number object but has a :meth:`~object." "__complex__` method, this method will first be called to convert *op* to a " @@ -217,7 +221,7 @@ msgstr "" "está definido, entonces recurre a :c:func:`PyFloat_AsDouble` y retorna su " "resultado." -#: ../Doc/c-api/complex.rst:132 ../Doc/c-api/complex.rst:148 +#: ../Doc/c-api/complex.rst:134 ../Doc/c-api/complex.rst:150 msgid "" "Upon failure, this method returns ``-1.0`` with an exception set, so one " "should call :c:func:`PyErr_Occurred` to check for errors." @@ -226,15 +230,15 @@ msgstr "" "establecida, por lo que se debe llamar :c:func:`PyErr_Occurred` para " "verificar si hay errores." -#: ../Doc/c-api/complex.rst:135 ../Doc/c-api/complex.rst:151 +#: ../Doc/c-api/complex.rst:137 ../Doc/c-api/complex.rst:153 msgid "Use :meth:`~object.__complex__` if available." msgstr "Use :meth:`~object.__complex__` si está disponible." -#: ../Doc/c-api/complex.rst:140 +#: ../Doc/c-api/complex.rst:142 msgid "Return the imaginary part of *op* as a C :c:expr:`double`." msgstr "Retorna la parte imaginaria de *op* como un :c:expr:`double` de C." -#: ../Doc/c-api/complex.rst:142 +#: ../Doc/c-api/complex.rst:144 msgid "" "If *op* is not a Python complex number object but has a :meth:`~object." "__complex__` method, this method will first be called to convert *op* to a " @@ -248,11 +252,11 @@ msgstr "" "está definido, entonces recurre a :c:func:`PyFloat_AsDouble` y retorna " "``0.0`` en caso de éxito." -#: ../Doc/c-api/complex.rst:156 +#: ../Doc/c-api/complex.rst:158 msgid "Return the :c:type:`Py_complex` value of the complex number *op*." msgstr "Retorna el valor :c:type:`Py_complex` del número complejo *op*." -#: ../Doc/c-api/complex.rst:158 +#: ../Doc/c-api/complex.rst:160 msgid "" "If *op* is not a Python complex number object but has a :meth:`~object." "__complex__` method, this method will first be called to convert *op* to a " @@ -266,7 +270,7 @@ msgstr "" "está definido, entonces recurre a :meth:`~object.__float__`. Si :meth:`!" "__float__` no está definido, entonces recurre a :meth:`~object.__index__`." -#: ../Doc/c-api/complex.rst:164 +#: ../Doc/c-api/complex.rst:166 msgid "" "Upon failure, this method returns :c:type:`Py_complex` with :c:member:" "`~Py_complex.real` set to ``-1.0`` and with an exception set, so one should " @@ -277,7 +281,7 @@ msgstr "" "por lo que se debe llamar a :c:func:`PyErr_Occurred` para verificar si hay " "errores." -#: ../Doc/c-api/complex.rst:168 +#: ../Doc/c-api/complex.rst:170 msgid "Use :meth:`~object.__index__` if available." msgstr "Use :meth:`~object.__index__` si está disponible." diff --git a/c-api/contextvars.po b/c-api/contextvars.po index 1d02d39fd8..d538576821 100644 --- a/c-api/contextvars.po +++ b/c-api/contextvars.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2024-12-10 21:07-0600\n" "Last-Translator: Rodrigo Tobar \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.5\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/contextvars.rst:6 msgid "Context Variables Objects" @@ -166,11 +165,61 @@ msgstr "" "actual para el hilo actual. Retorna ``0`` en caso de éxito y ``-1`` en caso " "de error." -#: ../Doc/c-api/contextvars.rst:105 +#: ../Doc/c-api/contextvars.rst:106 +msgid "" +"Register *callback* as a context object watcher for the current interpreter. " +"Return an ID which may be passed to :c:func:`PyContext_ClearWatcher`. In " +"case of error (e.g. no more watcher IDs available), return ``-1`` and set an " +"exception." +msgstr "" + +#: ../Doc/c-api/contextvars.rst:115 +msgid "" +"Clear watcher identified by *watcher_id* previously returned from :c:func:" +"`PyContext_AddWatcher` for the current interpreter. Return ``0`` on success, " +"or ``-1`` and set an exception on error (e.g. if the given *watcher_id* was " +"never registered.)" +msgstr "" + +#: ../Doc/c-api/contextvars.rst:124 +msgid "Enumeration of possible context object watcher events:" +msgstr "" + +#: ../Doc/c-api/contextvars.rst:126 +msgid "" +"``Py_CONTEXT_SWITCHED``: The :term:`current context` has switched to a " +"different context. The object passed to the watch callback is the now-" +"current :class:`contextvars.Context` object, or None if no context is " +"current." +msgstr "" + +#: ../Doc/c-api/contextvars.rst:135 +msgid "" +"Context object watcher callback function. The object passed to the callback " +"is event-specific; see :c:type:`PyContextEvent` for details." +msgstr "" + +#: ../Doc/c-api/contextvars.rst:138 +msgid "" +"If the callback returns with an exception set, it must return ``-1``; this " +"exception will be printed as an unraisable exception using :c:func:" +"`PyErr_FormatUnraisable`. Otherwise it should return ``0``." +msgstr "" + +#: ../Doc/c-api/contextvars.rst:142 +msgid "" +"There may already be a pending exception set on entry to the callback. In " +"this case, the callback should return ``0`` with the same exception still " +"set. This means the callback may not call any other API that can set an " +"exception unless it saves and clears the exception state first, and restores " +"it before returning." +msgstr "" + +#: ../Doc/c-api/contextvars.rst:151 msgid "Context variable functions:" msgstr "Funciones variables de contexto:" -#: ../Doc/c-api/contextvars.rst:109 +#: ../Doc/c-api/contextvars.rst:155 msgid "" "Create a new ``ContextVar`` object. The *name* parameter is used for " "introspection and debug purposes. The *def* parameter specifies a default " @@ -183,7 +232,7 @@ msgstr "" "especificar un valor predeterminado. Si se ha producido un error, esta " "función retorna ``NULL``." -#: ../Doc/c-api/contextvars.rst:116 +#: ../Doc/c-api/contextvars.rst:162 msgid "" "Get the value of a context variable. Returns ``-1`` if an error has " "occurred during lookup, and ``0`` if no error occurred, whether or not a " @@ -193,7 +242,7 @@ msgstr "" "un error durante la búsqueda y ``0`` si no se produjo ningún error, se haya " "encontrado o no un valor." -#: ../Doc/c-api/contextvars.rst:120 +#: ../Doc/c-api/contextvars.rst:166 msgid "" "If the context variable was found, *value* will be a pointer to it. If the " "context variable was *not* found, *value* will point to:" @@ -201,23 +250,23 @@ msgstr "" "Si se encontró la variable de contexto, *value* será un puntero a ella. Si " "la variable de contexto *not* se encontró, *value* apuntará a:" -#: ../Doc/c-api/contextvars.rst:123 +#: ../Doc/c-api/contextvars.rst:169 msgid "*default_value*, if not ``NULL``;" msgstr "*default_value*, si no es ``NULL``;" -#: ../Doc/c-api/contextvars.rst:124 +#: ../Doc/c-api/contextvars.rst:170 msgid "the default value of *var*, if not ``NULL``;" msgstr "el valor predeterminado de *var*, si no es ``NULL``;" -#: ../Doc/c-api/contextvars.rst:125 +#: ../Doc/c-api/contextvars.rst:171 msgid "``NULL``" msgstr "``NULL``" -#: ../Doc/c-api/contextvars.rst:127 +#: ../Doc/c-api/contextvars.rst:173 msgid "Except for ``NULL``, the function returns a new reference." msgstr "A excepción de ``NULL``, la función retorna una nueva referencia." -#: ../Doc/c-api/contextvars.rst:131 +#: ../Doc/c-api/contextvars.rst:177 msgid "" "Set the value of *var* to *value* in the current context. Returns a new " "token object for this change, or ``NULL`` if an error has occurred." @@ -225,7 +274,7 @@ msgstr "" "Establece el valor de *var* en *value* en el contexto actual. Retorna un " "nuevo objeto token para este cambio, o ``NULL`` si se ha producido un error." -#: ../Doc/c-api/contextvars.rst:136 +#: ../Doc/c-api/contextvars.rst:182 msgid "" "Reset the state of the *var* context variable to that it was in before :c:" "func:`PyContextVar_Set` that returned the *token* was called. This function " diff --git a/c-api/conversion.po b/c-api/conversion.po index 76376b95c2..66910c9292 100644 --- a/c-api/conversion.po +++ b/c-api/conversion.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-05-09 19:20+0200\n" "Last-Translator: Carlos Mena Pérez <@carlosm00>\n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.5\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/conversion.rst:6 msgid "String conversion and formatting" @@ -229,10 +228,11 @@ msgstr "" "retorna ``-1.0``." #: ../Doc/c-api/conversion.rst:106 +#, fuzzy msgid "" "If ``s`` represents a value that is too large to store in a float (for " "example, ``\"1e500\"`` is such a string on many platforms) then if " -"``overflow_exception`` is ``NULL`` return ``Py_HUGE_VAL`` (with an " +"``overflow_exception`` is ``NULL`` return ``Py_INFINITY`` (with an " "appropriate sign) and don't set any exception. Otherwise, " "``overflow_exception`` must point to a Python exception object; raise that " "exception and return ``-1.0``. In both cases, set ``*endptr`` to point to " diff --git a/c-api/dict.po b/c-api/dict.po index 83848fca31..8856309e07 100644 --- a/c-api/dict.po +++ b/c-api/dict.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2021-08-01 20:34+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/dict.rst:6 msgid "Dictionary Objects" @@ -194,9 +194,10 @@ msgstr "" "de errores, utilice :c:func:`PyDict_GetItemWithError ()` en su lugar." #: ../Doc/c-api/dict.rst:129 +#, fuzzy msgid "" -"Calling this API without :term:`GIL` held had been allowed for historical " -"reason. It is no longer allowed." +"Calling this API without an :term:`attached thread state` had been allowed " +"for historical reason. It is no longer allowed." msgstr "" "Llamar a esta API sin retener el :term:`GIL` había sido permitido por " "motivos históricos.Ya no está permitido." @@ -238,9 +239,8 @@ msgstr "" #: ../Doc/c-api/dict.rst:159 #, fuzzy msgid "" -"Similar than :c:func:`PyDict_GetItemRef`, but *key* is specified as a :c:" -"expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" -"`PyObject*`." +"Similar to :c:func:`PyDict_GetItemRef`, but *key* is specified as a :c:expr:" +"`const char*` UTF-8 encoded bytes string, rather than a :c:expr:`PyObject*`." msgstr "" "Esto es lo mismo que :c:func:`PyDict_GetItem`, pero *key* se especifica como " "un :c:type:`const char*`, en lugar de un :c:type:`PyObject*`." @@ -301,8 +301,8 @@ msgstr "" #: ../Doc/c-api/dict.rst:209 msgid "" -"This is similar to :meth:`dict.pop`, but without the default value and not " -"raising :exc:`KeyError` if the key missing." +"Similar to :meth:`dict.pop`, but without the default value and not raising :" +"exc:`KeyError` if the key missing." msgstr "" #: ../Doc/c-api/dict.rst:217 @@ -375,6 +375,7 @@ msgid "For example::" msgstr "Por ejemplo::" #: ../Doc/c-api/dict.rst:263 +#, python-brace-format msgid "" "PyObject *key, *value;\n" "Py_ssize_t pos = 0;\n" @@ -424,6 +425,7 @@ msgid "" msgstr "" #: ../Doc/c-api/dict.rst:298 +#, python-brace-format msgid "" "Py_BEGIN_CRITICAL_SECTION(self->dict);\n" "while (PyDict_Next(self->dict, &pos, &key, &value)) {\n" @@ -432,7 +434,18 @@ msgid "" "Py_END_CRITICAL_SECTION();" msgstr "" -#: ../Doc/c-api/dict.rst:307 +#: ../Doc/c-api/dict.rst:306 +msgid "" +"On the free-threaded build, this function can be used safely inside a " +"critical section. However, the references returned for *pkey* and *pvalue* " +"are :term:`borrowed ` and are only valid while the " +"critical section is held. If you need to use these objects outside the " +"critical section or when the critical section can be suspended, create a :" +"term:`strong reference ` (for example, using :c:func:" +"`Py_NewRef`)." +msgstr "" + +#: ../Doc/c-api/dict.rst:316 msgid "" "Iterate over mapping object *b* adding key-value pairs to dictionary *a*. " "*b* may be a dictionary, or any object supporting :c:func:`PyMapping_Keys` " @@ -449,7 +462,7 @@ msgstr "" "si no hay una clave coincidente en *a*. Retorna ``0`` en caso de éxito o " "``-1`` si se lanza una excepción." -#: ../Doc/c-api/dict.rst:317 +#: ../Doc/c-api/dict.rst:326 msgid "" "This is the same as ``PyDict_Merge(a, b, 1)`` in C, and is similar to ``a." "update(b)`` in Python except that :c:func:`PyDict_Update` doesn't fall back " @@ -463,7 +476,7 @@ msgstr "" "argumento no tiene el atributo \"claves\". Retorna ``0`` en caso de éxito o " "``-1`` si se produjo una excepción." -#: ../Doc/c-api/dict.rst:326 +#: ../Doc/c-api/dict.rst:335 msgid "" "Update or merge into dictionary *a*, from the key-value pairs in *seq2*. " "*seq2* must be an iterable object producing iterable objects of length 2, " @@ -478,7 +491,7 @@ msgstr "" "Retorna ``0`` en caso de éxito o ``-1`` si se produjo una excepción. El " "equivalente en Python (excepto el valor de retorno) ::" -#: ../Doc/c-api/dict.rst:333 +#: ../Doc/c-api/dict.rst:342 msgid "" "def PyDict_MergeFromSeq2(a, seq2, override):\n" " for key, value in seq2:\n" @@ -486,7 +499,7 @@ msgid "" " a[key] = value" msgstr "" -#: ../Doc/c-api/dict.rst:340 +#: ../Doc/c-api/dict.rst:349 msgid "" "Register *callback* as a dictionary watcher. Return a non-negative integer " "id which must be passed to future calls to :c:func:`PyDict_Watch`. In case " @@ -494,21 +507,21 @@ msgid "" "exception." msgstr "" -#: ../Doc/c-api/dict.rst:349 +#: ../Doc/c-api/dict.rst:358 msgid "" "Clear watcher identified by *watcher_id* previously returned from :c:func:" "`PyDict_AddWatcher`. Return ``0`` on success, ``-1`` on error (e.g. if the " "given *watcher_id* was never registered.)" msgstr "" -#: ../Doc/c-api/dict.rst:357 +#: ../Doc/c-api/dict.rst:366 msgid "" "Mark dictionary *dict* as watched. The callback granted *watcher_id* by :c:" "func:`PyDict_AddWatcher` will be called when *dict* is modified or " "deallocated. Return ``0`` on success or ``-1`` on error." msgstr "" -#: ../Doc/c-api/dict.rst:365 +#: ../Doc/c-api/dict.rst:374 msgid "" "Mark dictionary *dict* as no longer watched. The callback granted " "*watcher_id* by :c:func:`PyDict_AddWatcher` will no longer be called when " @@ -516,7 +529,7 @@ msgid "" "watched by this watcher. Return ``0`` on success or ``-1`` on error." msgstr "" -#: ../Doc/c-api/dict.rst:374 +#: ../Doc/c-api/dict.rst:383 msgid "" "Enumeration of possible dictionary watcher events: ``PyDict_EVENT_ADDED``, " "``PyDict_EVENT_MODIFIED``, ``PyDict_EVENT_DELETED``, " @@ -524,11 +537,11 @@ msgid "" "``PyDict_EVENT_DEALLOCATED``." msgstr "" -#: ../Doc/c-api/dict.rst:382 +#: ../Doc/c-api/dict.rst:391 msgid "Type of a dict watcher callback function." msgstr "" -#: ../Doc/c-api/dict.rst:384 +#: ../Doc/c-api/dict.rst:393 msgid "" "If *event* is ``PyDict_EVENT_CLEARED`` or ``PyDict_EVENT_DEALLOCATED``, both " "*key* and *new_value* will be ``NULL``. If *event* is ``PyDict_EVENT_ADDED`` " @@ -537,7 +550,7 @@ msgid "" "dictionary and *new_value* will be ``NULL``." msgstr "" -#: ../Doc/c-api/dict.rst:390 +#: ../Doc/c-api/dict.rst:399 msgid "" "``PyDict_EVENT_CLONED`` occurs when *dict* was previously empty and another " "dict is merged into it. To maintain efficiency of this operation, per-key " @@ -545,14 +558,14 @@ msgid "" "``PyDict_EVENT_CLONED`` is issued, and *key* will be the source dictionary." msgstr "" -#: ../Doc/c-api/dict.rst:396 +#: ../Doc/c-api/dict.rst:405 msgid "" "The callback may inspect but must not modify *dict*; doing so could have " "unpredictable effects, including infinite recursion. Do not trigger Python " "code execution in the callback, as it could modify the dict as a side effect." msgstr "" -#: ../Doc/c-api/dict.rst:400 +#: ../Doc/c-api/dict.rst:409 msgid "" "If *event* is ``PyDict_EVENT_DEALLOCATED``, taking a new reference in the " "callback to the about-to-be-destroyed dictionary will resurrect it and " @@ -561,20 +574,20 @@ msgid "" "again." msgstr "" -#: ../Doc/c-api/dict.rst:406 +#: ../Doc/c-api/dict.rst:415 msgid "" "Callbacks occur before the notified modification to *dict* takes place, so " "the prior state of *dict* can be inspected." msgstr "" -#: ../Doc/c-api/dict.rst:409 +#: ../Doc/c-api/dict.rst:418 msgid "" "If the callback sets an exception, it must return ``-1``; this exception " "will be printed as an unraisable exception using :c:func:" "`PyErr_WriteUnraisable`. Otherwise it should return ``0``." msgstr "" -#: ../Doc/c-api/dict.rst:413 +#: ../Doc/c-api/dict.rst:422 msgid "" "There may already be a pending exception set on entry to the callback. In " "this case, the callback should return ``0`` with the same exception still " diff --git a/c-api/exceptions.po b/c-api/exceptions.po index 140dbcb82f..6ab2feb2c5 100644 --- a/c-api/exceptions.po +++ b/c-api/exceptions.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2022-10-30 23:02-0300\n" "Last-Translator: Marco Richetta \n" "Language: es\n" @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/exceptions.rst:8 msgid "Exception Handling" @@ -380,8 +380,8 @@ msgstr "" #: ../Doc/c-api/exceptions.rst:234 ../Doc/c-api/exceptions.rst:242 #: ../Doc/c-api/exceptions.rst:253 ../Doc/c-api/exceptions.rst:263 #: ../Doc/c-api/exceptions.rst:271 ../Doc/c-api/exceptions.rst:281 -msgid ":ref:`Availability `: Windows." -msgstr ":ref:`Disponibilidad `: Windows." +msgid "Availability" +msgstr "" #: ../Doc/c-api/exceptions.rst:239 msgid "" @@ -631,8 +631,8 @@ msgstr "" "por lo que no necesita usar :c:func:`Py_DECREF`." #: ../Doc/c-api/exceptions.rst:416 -msgid "The caller must hold the GIL." -msgstr "La persona que llama debe retener el GIL." +msgid "The caller must have an :term:`attached thread state`." +msgstr "" #: ../Doc/c-api/exceptions.rst:420 msgid "" @@ -691,6 +691,7 @@ msgid "For example::" msgstr "" #: ../Doc/c-api/exceptions.rst:451 +#, python-brace-format msgid "" "{\n" " PyObject *exc = PyErr_GetRaisedException();\n" @@ -746,6 +747,7 @@ msgstr "" "error temporalmente, por ejemplo:" #: ../Doc/c-api/exceptions.rst:495 +#, python-brace-format msgid "" "{\n" " PyObject *type, *value, *traceback;\n" @@ -830,6 +832,7 @@ msgstr "" "se necesita el siguiente fragmento adicional:" #: ../Doc/c-api/exceptions.rst:550 +#, python-brace-format msgid "" "if (tb != NULL) {\n" " PyException_SetTraceback(val, tb);\n" @@ -1021,9 +1024,10 @@ msgstr "" "equivalente a ``PyErr_SetInterruptEx(SIGINT)``." #: ../Doc/c-api/exceptions.rst:677 ../Doc/c-api/exceptions.rst:704 +#, fuzzy msgid "" -"This function is async-signal-safe. It can be called without the :term:" -"`GIL` and from a C signal handler." +"This function is async-signal-safe. It can be called without an :term:" +"`attached thread state` and from a C signal handler." msgstr "" "Esta función es segura para señales asíncronas. Se puede llamar sin el :term:" "`GIL` y desde un manejador de señales de C." @@ -1141,11 +1145,21 @@ msgstr "" "es ``NULL``, se utilizará como la cadena de documentación para la clase de " "excepción." -#: ../Doc/c-api/exceptions.rst:753 +#: ../Doc/c-api/exceptions.rst:754 +msgid "" +"Return non-zero if *ob* is an exception class, zero otherwise. This function " +"always succeeds." +msgstr "" + +#: ../Doc/c-api/exceptions.rst:759 +msgid "Return :c:member:`~PyTypeObject.tp_name` of the exception class *ob*." +msgstr "" + +#: ../Doc/c-api/exceptions.rst:763 msgid "Exception Objects" msgstr "Objetos excepción" -#: ../Doc/c-api/exceptions.rst:757 +#: ../Doc/c-api/exceptions.rst:767 #, fuzzy msgid "" "Return the traceback associated with the exception as a new reference, as " @@ -1156,7 +1170,7 @@ msgstr "" "accesible desde Python a través de :attr:`__traceback__`. Si no hay un " "rastreo asociado, esto retorna ``NULL``." -#: ../Doc/c-api/exceptions.rst:765 +#: ../Doc/c-api/exceptions.rst:775 msgid "" "Set the traceback associated with the exception to *tb*. Use ``Py_None`` to " "clear it." @@ -1164,7 +1178,7 @@ msgstr "" "Establezca el rastreo asociado con la excepción a *tb*. Use ``Py_None`` para " "borrarlo." -#: ../Doc/c-api/exceptions.rst:771 +#: ../Doc/c-api/exceptions.rst:781 #, fuzzy msgid "" "Return the context (another exception instance during whose handling *ex* " @@ -1177,7 +1191,7 @@ msgstr "" "Python a través de :attr:`__context__`. Si no hay un contexto asociado, esto " "retorna ``NULL``." -#: ../Doc/c-api/exceptions.rst:779 +#: ../Doc/c-api/exceptions.rst:789 msgid "" "Set the context associated with the exception to *ctx*. Use ``NULL`` to " "clear it. There is no type check to make sure that *ctx* is an exception " @@ -1187,7 +1201,7 @@ msgstr "" "borrarlo. No hay verificación de tipo para asegurarse de que *ctx* es una " "instancia de excepción. Esto roba una referencia a *ctx*." -#: ../Doc/c-api/exceptions.rst:786 +#: ../Doc/c-api/exceptions.rst:796 #, fuzzy msgid "" "Return the cause (either an exception instance, or ``None``, set by " @@ -1199,7 +1213,7 @@ msgstr "" "establecida por ``raise ... from ...``) asociada con la excepción como una " "nueva referencia, como accesible desde Python a través de :attr:`__causa__`." -#: ../Doc/c-api/exceptions.rst:794 +#: ../Doc/c-api/exceptions.rst:804 #, fuzzy msgid "" "Set the cause associated with the exception to *cause*. Use ``NULL`` to " @@ -1210,7 +1224,7 @@ msgstr "" "borrarlo. No hay verificación de tipo para asegurarse de que *cause* sea una " "instancia de excepción o :const:`None`. Esto roba una referencia a *cause*." -#: ../Doc/c-api/exceptions.rst:798 +#: ../Doc/c-api/exceptions.rst:808 #, fuzzy msgid "" "The :attr:`~BaseException.__suppress_context__` attribute is implicitly set " @@ -1219,15 +1233,15 @@ msgstr "" ":attr:`__suppress_context__` es implícitamente establecido en ``True`` por " "esta función." -#: ../Doc/c-api/exceptions.rst:804 +#: ../Doc/c-api/exceptions.rst:814 msgid "Return :attr:`~BaseException.args` of exception *ex*." msgstr "" -#: ../Doc/c-api/exceptions.rst:809 +#: ../Doc/c-api/exceptions.rst:819 msgid "Set :attr:`~BaseException.args` of exception *ex* to *args*." msgstr "" -#: ../Doc/c-api/exceptions.rst:813 +#: ../Doc/c-api/exceptions.rst:823 msgid "" "Implement part of the interpreter's implementation of :keyword:`!except*`. " "*orig* is the original exception that was caught, and *excs* is the list of " @@ -1239,11 +1253,11 @@ msgid "" "if there is nothing to reraise." msgstr "" -#: ../Doc/c-api/exceptions.rst:827 +#: ../Doc/c-api/exceptions.rst:837 msgid "Unicode Exception Objects" msgstr "Objetos unicode de excepción" -#: ../Doc/c-api/exceptions.rst:829 +#: ../Doc/c-api/exceptions.rst:839 msgid "" "The following functions are used to create and modify Unicode exceptions " "from C." @@ -1251,7 +1265,7 @@ msgstr "" "Las siguientes funciones se utilizan para crear y modificar excepciones " "Unicode de C." -#: ../Doc/c-api/exceptions.rst:833 +#: ../Doc/c-api/exceptions.rst:843 msgid "" "Create a :class:`UnicodeDecodeError` object with the attributes *encoding*, " "*object*, *length*, *start*, *end* and *reason*. *encoding* and *reason* are " @@ -1261,15 +1275,15 @@ msgstr "" "*object*, *length*, *start*, *end* y *reason*. *encoding* y *reason* son " "cadenas codificadas UTF-8." -#: ../Doc/c-api/exceptions.rst:840 +#: ../Doc/c-api/exceptions.rst:850 msgid "Return the *encoding* attribute of the given exception object." msgstr "Retorna el atributo *encoding* del objeto de excepción dado." -#: ../Doc/c-api/exceptions.rst:846 +#: ../Doc/c-api/exceptions.rst:856 msgid "Return the *object* attribute of the given exception object." msgstr "Retorna el atributo *object* del objeto de excepción dado." -#: ../Doc/c-api/exceptions.rst:852 +#: ../Doc/c-api/exceptions.rst:862 msgid "" "Get the *start* attribute of the given exception object and place it into " "*\\*start*. *start* must not be ``NULL``. Return ``0`` on success, ``-1`` " @@ -1279,15 +1293,33 @@ msgstr "" "*\\*start*. *start* no debe ser ``NULL``. retorna ``0`` en caso de éxito, " "``-1`` en caso de error." -#: ../Doc/c-api/exceptions.rst:860 +#: ../Doc/c-api/exceptions.rst:866 +msgid "" +"If the :attr:`UnicodeError.object` is an empty sequence, the resulting " +"*start* is ``0``. Otherwise, it is clipped to ``[0, len(object) - 1]``." +msgstr "" + +#: ../Doc/c-api/exceptions.rst:869 +#, fuzzy +msgid ":attr:`UnicodeError.start`" +msgstr ":exc:`UnicodeError`" + +#: ../Doc/c-api/exceptions.rst:875 +#, fuzzy msgid "" -"Set the *start* attribute of the given exception object to *start*. Return " +"Set the *start* attribute of the given exception object to *start*. Return " "``0`` on success, ``-1`` on failure." msgstr "" "Establece el atributo *start* del objeto de excepción dado en *start*. " "Retorna ``0`` en caso de éxito, ``-1`` en caso de error." -#: ../Doc/c-api/exceptions.rst:867 +#: ../Doc/c-api/exceptions.rst:880 +msgid "" +"While passing a negative *start* does not raise an exception, the " +"corresponding getters will not consider it as a relative offset." +msgstr "" + +#: ../Doc/c-api/exceptions.rst:888 msgid "" "Get the *end* attribute of the given exception object and place it into " "*\\*end*. *end* must not be ``NULL``. Return ``0`` on success, ``-1`` on " @@ -1297,7 +1329,13 @@ msgstr "" "*\\*end*. *end* no debe ser ``NULL``. retorna ``0`` en caso de éxito, ``-1`` " "en caso de error." -#: ../Doc/c-api/exceptions.rst:875 +#: ../Doc/c-api/exceptions.rst:892 +msgid "" +"If the :attr:`UnicodeError.object` is an empty sequence, the resulting *end* " +"is ``0``. Otherwise, it is clipped to ``[1, len(object)]``." +msgstr "" + +#: ../Doc/c-api/exceptions.rst:899 msgid "" "Set the *end* attribute of the given exception object to *end*. Return " "``0`` on success, ``-1`` on failure." @@ -1305,11 +1343,16 @@ msgstr "" "Establece el atributo *end* del objeto de excepción dado en *end*. Retorna " "``0`` en caso de éxito, ``-1`` en caso de error." -#: ../Doc/c-api/exceptions.rst:882 +#: ../Doc/c-api/exceptions.rst:902 +#, fuzzy +msgid ":attr:`UnicodeError.end`" +msgstr ":exc:`UnicodeError`" + +#: ../Doc/c-api/exceptions.rst:908 msgid "Return the *reason* attribute of the given exception object." msgstr "Retorna el atributo *reason* del objeto de excepción dado." -#: ../Doc/c-api/exceptions.rst:888 +#: ../Doc/c-api/exceptions.rst:914 msgid "" "Set the *reason* attribute of the given exception object to *reason*. " "Return ``0`` on success, ``-1`` on failure." @@ -1317,11 +1360,11 @@ msgstr "" "Establece el atributo *reason* del objeto de excepción dado en *reason*. " "Retorna ``0`` en caso de éxito, ``-1`` en caso de error." -#: ../Doc/c-api/exceptions.rst:895 +#: ../Doc/c-api/exceptions.rst:921 msgid "Recursion Control" msgstr "Control de recursión" -#: ../Doc/c-api/exceptions.rst:897 +#: ../Doc/c-api/exceptions.rst:923 msgid "" "These two functions provide a way to perform safe recursive calls at the C " "level, both in the core and in extension modules. They are needed if the " @@ -1337,26 +1380,16 @@ msgstr "" "son necesarios para las implementaciones de *tp_call* porque :ref:`call " "protocol ` se encarga del manejo de la recursividad." -#: ../Doc/c-api/exceptions.rst:906 +#: ../Doc/c-api/exceptions.rst:932 msgid "Marks a point where a recursive C-level call is about to be performed." msgstr "" "Marca un punto donde una llamada recursiva de nivel C está a punto de " "realizarse." -#: ../Doc/c-api/exceptions.rst:908 +#: ../Doc/c-api/exceptions.rst:934 #, fuzzy msgid "" -"If :c:macro:`!USE_STACKCHECK` is defined, this function checks if the OS " -"stack overflowed using :c:func:`PyOS_CheckStack`. If this is the case, it " -"sets a :exc:`MemoryError` and returns a nonzero value." -msgstr "" -"Si :const:`USE_STACKCHECK` está definido, esta función verifica si la pila " -"del SO se desbordó usando :c:func:`PyOS_CheckStack`. En este caso, establece " -"un :exc:`MemoryError` y retorna un valor distinto de cero." - -#: ../Doc/c-api/exceptions.rst:912 -msgid "" -"The function then checks if the recursion limit is reached. If this is the " +"The function then checks if the stack limit is reached. If this is the " "case, a :exc:`RecursionError` is set and a nonzero value is returned. " "Otherwise, zero is returned." msgstr "" @@ -1364,7 +1397,7 @@ msgstr "" "caso, se establece a :exc:`RecursionError` y se retorna un valor distinto de " "cero. De lo contrario, se retorna cero." -#: ../Doc/c-api/exceptions.rst:916 +#: ../Doc/c-api/exceptions.rst:938 msgid "" "*where* should be a UTF-8 encoded string such as ``\" in instance check\"`` " "to be concatenated to the :exc:`RecursionError` message caused by the " @@ -1374,14 +1407,14 @@ msgstr "" "la comprobación de instancia\"`` para concatenarse con el mensaje :exc:" "`RecursionError` causado por el límite de profundidad de recursión." -#: ../Doc/c-api/exceptions.rst:920 ../Doc/c-api/exceptions.rst:928 +#: ../Doc/c-api/exceptions.rst:942 ../Doc/c-api/exceptions.rst:950 #, fuzzy msgid "" "This function is now also available in the :ref:`limited API `." msgstr "Esta función ahora también está disponible en la API limitada." -#: ../Doc/c-api/exceptions.rst:925 +#: ../Doc/c-api/exceptions.rst:947 msgid "" "Ends a :c:func:`Py_EnterRecursiveCall`. Must be called once for each " "*successful* invocation of :c:func:`Py_EnterRecursiveCall`." @@ -1389,7 +1422,7 @@ msgstr "" "Termina una :c:func:`Py_EnterRecursiveCall`. Se debe llamar una vez por cada " "invocación *exitosa* de :c:func:`Py_EnterRecursiveCall`." -#: ../Doc/c-api/exceptions.rst:931 +#: ../Doc/c-api/exceptions.rst:953 msgid "" "Properly implementing :c:member:`~PyTypeObject.tp_repr` for container types " "requires special recursion handling. In addition to protecting the stack, :" @@ -1404,7 +1437,7 @@ msgstr "" "esta funcionalidad. Efectivamente, estos son los C equivalentes a :func:" "`reprlib.recursive_repr`." -#: ../Doc/c-api/exceptions.rst:939 +#: ../Doc/c-api/exceptions.rst:961 msgid "" "Called at the beginning of the :c:member:`~PyTypeObject.tp_repr` " "implementation to detect cycles." @@ -1412,7 +1445,8 @@ msgstr "" "Llamado al comienzo de la implementación :c:member:`~PyTypeObject.tp_repr` " "para detectar ciclos." -#: ../Doc/c-api/exceptions.rst:942 +#: ../Doc/c-api/exceptions.rst:964 +#, python-brace-format msgid "" "If the object has already been processed, the function returns a positive " "integer. In that case the :c:member:`~PyTypeObject.tp_repr` implementation " @@ -1425,7 +1459,7 @@ msgstr "" "objetos :class:`dict` retornan ``{...}`` y los objetos :class:`list` " "retornan ``[...]``." -#: ../Doc/c-api/exceptions.rst:948 +#: ../Doc/c-api/exceptions.rst:970 msgid "" "The function will return a negative integer if the recursion limit is " "reached. In that case the :c:member:`~PyTypeObject.tp_repr` implementation " @@ -1435,7 +1469,7 @@ msgstr "" "recursión. En ese caso, la implementación :c:member:`~PyTypeObject.tp_repr` " "normalmente debería retornar ``NULL``." -#: ../Doc/c-api/exceptions.rst:952 +#: ../Doc/c-api/exceptions.rst:974 msgid "" "Otherwise, the function returns zero and the :c:member:`~PyTypeObject." "tp_repr` implementation can continue normally." @@ -1443,7 +1477,7 @@ msgstr "" "De lo contrario, la función retorna cero y la implementación :c:member:" "`~PyTypeObject.tp_repr` puede continuar normalmente." -#: ../Doc/c-api/exceptions.rst:957 +#: ../Doc/c-api/exceptions.rst:979 msgid "" "Ends a :c:func:`Py_ReprEnter`. Must be called once for each invocation of :" "c:func:`Py_ReprEnter` that returns zero." @@ -1451,477 +1485,268 @@ msgstr "" "Termina a :c:func:`Py_ReprEnter`. Se debe llamar una vez por cada invocación " "de :c:func:`Py_ReprEnter` que retorna cero." -#: ../Doc/c-api/exceptions.rst:964 -msgid "Standard Exceptions" -msgstr "Excepciones estándar" +#: ../Doc/c-api/exceptions.rst:986 +#, fuzzy +msgid "Exception and warning types" +msgstr "Manejo de excepciones" -#: ../Doc/c-api/exceptions.rst:966 +#: ../Doc/c-api/exceptions.rst:988 +#, fuzzy msgid "" -"All standard Python exceptions are available as global variables whose names " -"are ``PyExc_`` followed by the Python exception name. These have the type :" -"c:expr:`PyObject*`; they are all class objects. For completeness, here are " -"all the variables:" +"All standard Python exceptions and warning categories are available as " +"global variables whose names are ``PyExc_`` followed by the Python exception " +"name. These have the type :c:expr:`PyObject*`; they are all class objects." msgstr "" -"Todas las excepciones estándar de Python están disponibles como variables " -"globales cuyos nombres son ``PyExc_`` seguidos del nombre de excepción de " -"Python. Estos tienen el tipo :c:expr:`PyObject*`; todos son objetos de " -"clase. Para completar, aquí están todas las variables:" +"Todas las categorías de advertencia estándar de Python están disponibles " +"como variables globales cuyos nombres son ``PyExc_`` seguidos del nombre de " +"excepción de Python. Estos tienen el tipo :c:expr:`PyObject*`; todos son " +"objetos de clase. Para completar, aquí están todas las variables:" -#: ../Doc/c-api/exceptions.rst:1028 ../Doc/c-api/exceptions.rst:1163 -#: ../Doc/c-api/exceptions.rst:1208 -msgid "C Name" -msgstr "Nombre en C" +#: ../Doc/c-api/exceptions.rst:992 +msgid "For completeness, here are all the variables:" +msgstr "" -#: ../Doc/c-api/exceptions.rst:1028 ../Doc/c-api/exceptions.rst:1208 -msgid "Python Name" -msgstr "Nombre en Python" +#: ../Doc/c-api/exceptions.rst:995 +#, fuzzy +msgid "Exception types" +msgstr "Objetos excepción" -#: ../Doc/c-api/exceptions.rst:1028 ../Doc/c-api/exceptions.rst:1163 -#: ../Doc/c-api/exceptions.rst:1208 -msgid "Notes" -msgstr "Notas" +#: ../Doc/c-api/exceptions.rst:1002 ../Doc/c-api/exceptions.rst:1148 +#: ../Doc/c-api/exceptions.rst:1178 +#, fuzzy +msgid "C name" +msgstr "Nombre en C" -#: ../Doc/c-api/exceptions.rst:1030 -msgid ":c:data:`PyExc_BaseException`" -msgstr ":c:data:`PyExc_BaseException`" +#: ../Doc/c-api/exceptions.rst:1003 ../Doc/c-api/exceptions.rst:1149 +#: ../Doc/c-api/exceptions.rst:1179 +#, fuzzy +msgid "Python name" +msgstr "Nombre en Python" -#: ../Doc/c-api/exceptions.rst:1030 +#: ../Doc/c-api/exceptions.rst:1005 msgid ":exc:`BaseException`" msgstr ":exc:`BaseException`" -#: ../Doc/c-api/exceptions.rst:1030 ../Doc/c-api/exceptions.rst:1032 -#: ../Doc/c-api/exceptions.rst:1034 ../Doc/c-api/exceptions.rst:1080 -#: ../Doc/c-api/exceptions.rst:1092 -msgid "[1]_" -msgstr "[1]_" - -#: ../Doc/c-api/exceptions.rst:1032 -msgid ":c:data:`PyExc_Exception`" -msgstr ":c:data:`PyExc_Exception`" +#: ../Doc/c-api/exceptions.rst:1007 +#, fuzzy +msgid ":exc:`BaseExceptionGroup`" +msgstr ":exc:`BaseException`" -#: ../Doc/c-api/exceptions.rst:1032 +#: ../Doc/c-api/exceptions.rst:1009 msgid ":exc:`Exception`" msgstr ":exc:`Exception`" -#: ../Doc/c-api/exceptions.rst:1034 -msgid ":c:data:`PyExc_ArithmeticError`" -msgstr ":c:data:`PyExc_ArithmeticError`" - -#: ../Doc/c-api/exceptions.rst:1034 +#: ../Doc/c-api/exceptions.rst:1011 msgid ":exc:`ArithmeticError`" msgstr ":exc:`ArithmeticError`" -#: ../Doc/c-api/exceptions.rst:1036 -msgid ":c:data:`PyExc_AssertionError`" -msgstr ":c:data:`PyExc_AssertionError`" - -#: ../Doc/c-api/exceptions.rst:1036 +#: ../Doc/c-api/exceptions.rst:1013 msgid ":exc:`AssertionError`" msgstr ":exc:`AssertionError`" -#: ../Doc/c-api/exceptions.rst:1038 -msgid ":c:data:`PyExc_AttributeError`" -msgstr ":c:data:`PyExc_AttributeError`" - -#: ../Doc/c-api/exceptions.rst:1038 +#: ../Doc/c-api/exceptions.rst:1015 msgid ":exc:`AttributeError`" msgstr ":exc:`AttributeError`" -#: ../Doc/c-api/exceptions.rst:1040 -msgid ":c:data:`PyExc_BlockingIOError`" -msgstr ":c:data:`PyExc_BlockingIOError`" - -#: ../Doc/c-api/exceptions.rst:1040 +#: ../Doc/c-api/exceptions.rst:1017 msgid ":exc:`BlockingIOError`" msgstr ":exc:`BlockingIOError`" -#: ../Doc/c-api/exceptions.rst:1042 -msgid ":c:data:`PyExc_BrokenPipeError`" -msgstr ":c:data:`PyExc_BrokenPipeError`" - -#: ../Doc/c-api/exceptions.rst:1042 +#: ../Doc/c-api/exceptions.rst:1019 msgid ":exc:`BrokenPipeError`" msgstr ":exc:`BrokenPipeError`" -#: ../Doc/c-api/exceptions.rst:1044 -msgid ":c:data:`PyExc_BufferError`" -msgstr ":c:data:`PyExc_BufferError`" - -#: ../Doc/c-api/exceptions.rst:1044 +#: ../Doc/c-api/exceptions.rst:1021 msgid ":exc:`BufferError`" msgstr ":exc:`BufferError`" -#: ../Doc/c-api/exceptions.rst:1046 -msgid ":c:data:`PyExc_ChildProcessError`" -msgstr ":c:data:`PyExc_ChildProcessError`" - -#: ../Doc/c-api/exceptions.rst:1046 +#: ../Doc/c-api/exceptions.rst:1023 msgid ":exc:`ChildProcessError`" msgstr ":exc:`ChildProcessError`" -#: ../Doc/c-api/exceptions.rst:1048 -msgid ":c:data:`PyExc_ConnectionAbortedError`" -msgstr ":c:data:`PyExc_ConnectionAbortedError`" - -#: ../Doc/c-api/exceptions.rst:1048 +#: ../Doc/c-api/exceptions.rst:1025 msgid ":exc:`ConnectionAbortedError`" msgstr ":exc:`ConnectionAbortedError`" -#: ../Doc/c-api/exceptions.rst:1050 -msgid ":c:data:`PyExc_ConnectionError`" -msgstr ":c:data:`PyExc_ConnectionError`" - -#: ../Doc/c-api/exceptions.rst:1050 +#: ../Doc/c-api/exceptions.rst:1027 msgid ":exc:`ConnectionError`" msgstr ":exc:`ConnectionError`" -#: ../Doc/c-api/exceptions.rst:1052 -msgid ":c:data:`PyExc_ConnectionRefusedError`" -msgstr ":c:data:`PyExc_ConnectionRefusedError`" - -#: ../Doc/c-api/exceptions.rst:1052 +#: ../Doc/c-api/exceptions.rst:1029 msgid ":exc:`ConnectionRefusedError`" msgstr ":exc:`ConnectionRefusedError`" -#: ../Doc/c-api/exceptions.rst:1054 -msgid ":c:data:`PyExc_ConnectionResetError`" -msgstr ":c:data:`PyExc_ConnectionResetError`" - -#: ../Doc/c-api/exceptions.rst:1054 +#: ../Doc/c-api/exceptions.rst:1031 msgid ":exc:`ConnectionResetError`" msgstr ":exc:`ConnectionResetError`" -#: ../Doc/c-api/exceptions.rst:1056 -msgid ":c:data:`PyExc_EOFError`" -msgstr ":c:data:`PyExc_EOFError`" - -#: ../Doc/c-api/exceptions.rst:1056 +#: ../Doc/c-api/exceptions.rst:1033 msgid ":exc:`EOFError`" msgstr ":exc:`EOFError`" -#: ../Doc/c-api/exceptions.rst:1058 -msgid ":c:data:`PyExc_FileExistsError`" -msgstr ":c:data:`PyExc_FileExistsError`" - -#: ../Doc/c-api/exceptions.rst:1058 +#: ../Doc/c-api/exceptions.rst:1035 msgid ":exc:`FileExistsError`" msgstr ":exc:`FileExistsError`" -#: ../Doc/c-api/exceptions.rst:1060 -msgid ":c:data:`PyExc_FileNotFoundError`" -msgstr ":c:data:`PyExc_FileNotFoundError`" - -#: ../Doc/c-api/exceptions.rst:1060 +#: ../Doc/c-api/exceptions.rst:1037 msgid ":exc:`FileNotFoundError`" msgstr ":exc:`FileNotFoundError`" -#: ../Doc/c-api/exceptions.rst:1062 -msgid ":c:data:`PyExc_FloatingPointError`" -msgstr ":c:data:`PyExc_FloatingPointError`" - -#: ../Doc/c-api/exceptions.rst:1062 +#: ../Doc/c-api/exceptions.rst:1039 msgid ":exc:`FloatingPointError`" msgstr ":exc:`FloatingPointError`" -#: ../Doc/c-api/exceptions.rst:1064 -msgid ":c:data:`PyExc_GeneratorExit`" -msgstr ":c:data:`PyExc_GeneratorExit`" - -#: ../Doc/c-api/exceptions.rst:1064 +#: ../Doc/c-api/exceptions.rst:1041 msgid ":exc:`GeneratorExit`" msgstr ":exc:`GeneratorExit`" -#: ../Doc/c-api/exceptions.rst:1066 -msgid ":c:data:`PyExc_ImportError`" -msgstr ":c:data:`PyExc_ImportError`" - -#: ../Doc/c-api/exceptions.rst:1066 +#: ../Doc/c-api/exceptions.rst:1043 msgid ":exc:`ImportError`" msgstr ":exc:`ImportError`" -#: ../Doc/c-api/exceptions.rst:1068 -msgid ":c:data:`PyExc_IndentationError`" -msgstr ":c:data:`PyExc_IndentationError`" - -#: ../Doc/c-api/exceptions.rst:1068 +#: ../Doc/c-api/exceptions.rst:1045 msgid ":exc:`IndentationError`" msgstr ":exc:`IndentationError`" -#: ../Doc/c-api/exceptions.rst:1070 -msgid ":c:data:`PyExc_IndexError`" -msgstr ":c:data:`PyExc_IndexError`" - -#: ../Doc/c-api/exceptions.rst:1070 +#: ../Doc/c-api/exceptions.rst:1047 msgid ":exc:`IndexError`" msgstr ":exc:`IndexError`" -#: ../Doc/c-api/exceptions.rst:1072 -msgid ":c:data:`PyExc_InterruptedError`" -msgstr ":c:data:`PyExc_InterruptedError`" - -#: ../Doc/c-api/exceptions.rst:1072 +#: ../Doc/c-api/exceptions.rst:1049 msgid ":exc:`InterruptedError`" msgstr ":exc:`InterruptedError`" -#: ../Doc/c-api/exceptions.rst:1074 -msgid ":c:data:`PyExc_IsADirectoryError`" -msgstr ":c:data:`PyExc_IsADirectoryError`" - -#: ../Doc/c-api/exceptions.rst:1074 +#: ../Doc/c-api/exceptions.rst:1051 msgid ":exc:`IsADirectoryError`" msgstr ":exc:`IsADirectoryError`" -#: ../Doc/c-api/exceptions.rst:1076 -msgid ":c:data:`PyExc_KeyError`" -msgstr ":c:data:`PyExc_KeyError`" - -#: ../Doc/c-api/exceptions.rst:1076 +#: ../Doc/c-api/exceptions.rst:1053 msgid ":exc:`KeyError`" msgstr ":exc:`KeyError`" -#: ../Doc/c-api/exceptions.rst:1078 -msgid ":c:data:`PyExc_KeyboardInterrupt`" -msgstr ":c:data:`PyExc_KeyboardInterrupt`" - -#: ../Doc/c-api/exceptions.rst:1078 +#: ../Doc/c-api/exceptions.rst:1055 msgid ":exc:`KeyboardInterrupt`" msgstr ":exc:`KeyboardInterrupt`" -#: ../Doc/c-api/exceptions.rst:1080 -msgid ":c:data:`PyExc_LookupError`" -msgstr ":c:data:`PyExc_LookupError`" - -#: ../Doc/c-api/exceptions.rst:1080 +#: ../Doc/c-api/exceptions.rst:1057 msgid ":exc:`LookupError`" msgstr ":exc:`LookupError`" -#: ../Doc/c-api/exceptions.rst:1082 -msgid ":c:data:`PyExc_MemoryError`" -msgstr ":c:data:`PyExc_MemoryError`" - -#: ../Doc/c-api/exceptions.rst:1082 +#: ../Doc/c-api/exceptions.rst:1059 msgid ":exc:`MemoryError`" msgstr ":exc:`MemoryError`" -#: ../Doc/c-api/exceptions.rst:1084 -msgid ":c:data:`PyExc_ModuleNotFoundError`" -msgstr ":c:data:`PyExc_ModuleNotFoundError`" - -#: ../Doc/c-api/exceptions.rst:1084 +#: ../Doc/c-api/exceptions.rst:1061 msgid ":exc:`ModuleNotFoundError`" msgstr ":exc:`ModuleNotFoundError`" -#: ../Doc/c-api/exceptions.rst:1086 -msgid ":c:data:`PyExc_NameError`" -msgstr ":c:data:`PyExc_NameError`" - -#: ../Doc/c-api/exceptions.rst:1086 +#: ../Doc/c-api/exceptions.rst:1063 msgid ":exc:`NameError`" msgstr ":exc:`NameError`" -#: ../Doc/c-api/exceptions.rst:1088 -msgid ":c:data:`PyExc_NotADirectoryError`" -msgstr ":c:data:`PyExc_NotADirectoryError`" - -#: ../Doc/c-api/exceptions.rst:1088 +#: ../Doc/c-api/exceptions.rst:1065 msgid ":exc:`NotADirectoryError`" msgstr ":exc:`NotADirectoryError`" -#: ../Doc/c-api/exceptions.rst:1090 -msgid ":c:data:`PyExc_NotImplementedError`" -msgstr ":c:data:`PyExc_NotImplementedError`" - -#: ../Doc/c-api/exceptions.rst:1090 +#: ../Doc/c-api/exceptions.rst:1067 msgid ":exc:`NotImplementedError`" msgstr ":exc:`NotImplementedError`" -#: ../Doc/c-api/exceptions.rst:1092 -msgid ":c:data:`PyExc_OSError`" -msgstr ":c:data:`PyExc_OSError`" - -#: ../Doc/c-api/exceptions.rst:1092 +#: ../Doc/c-api/exceptions.rst:1069 ../Doc/c-api/exceptions.rst:1152 +#: ../Doc/c-api/exceptions.rst:1155 ../Doc/c-api/exceptions.rst:1158 msgid ":exc:`OSError`" msgstr ":exc:`OSError`" -#: ../Doc/c-api/exceptions.rst:1094 -msgid ":c:data:`PyExc_OverflowError`" -msgstr ":c:data:`PyExc_OverflowError`" - -#: ../Doc/c-api/exceptions.rst:1094 +#: ../Doc/c-api/exceptions.rst:1071 msgid ":exc:`OverflowError`" msgstr ":exc:`OverflowError`" -#: ../Doc/c-api/exceptions.rst:1096 -msgid ":c:data:`PyExc_PermissionError`" -msgstr ":c:data:`PyExc_PermissionError`" - -#: ../Doc/c-api/exceptions.rst:1096 +#: ../Doc/c-api/exceptions.rst:1073 msgid ":exc:`PermissionError`" msgstr ":exc:`PermissionError`" -#: ../Doc/c-api/exceptions.rst:1098 -msgid ":c:data:`PyExc_ProcessLookupError`" -msgstr ":c:data:`PyExc_ProcessLookupError`" - -#: ../Doc/c-api/exceptions.rst:1098 +#: ../Doc/c-api/exceptions.rst:1075 msgid ":exc:`ProcessLookupError`" msgstr ":exc:`ProcessLookupError`" -#: ../Doc/c-api/exceptions.rst:1100 -#, fuzzy -msgid ":c:data:`PyExc_PythonFinalizationError`" -msgstr ":c:data:`PyExc_ConnectionError`" - -#: ../Doc/c-api/exceptions.rst:1100 +#: ../Doc/c-api/exceptions.rst:1077 #, fuzzy msgid ":exc:`PythonFinalizationError`" msgstr ":exc:`ConnectionError`" -#: ../Doc/c-api/exceptions.rst:1102 -msgid ":c:data:`PyExc_RecursionError`" -msgstr ":c:data:`PyExc_RecursionError`" - -#: ../Doc/c-api/exceptions.rst:1102 +#: ../Doc/c-api/exceptions.rst:1079 msgid ":exc:`RecursionError`" msgstr ":exc:`RecursionError`" -#: ../Doc/c-api/exceptions.rst:1104 -msgid ":c:data:`PyExc_ReferenceError`" -msgstr ":c:data:`PyExc_ReferenceError`" - -#: ../Doc/c-api/exceptions.rst:1104 +#: ../Doc/c-api/exceptions.rst:1081 msgid ":exc:`ReferenceError`" msgstr ":exc:`ReferenceError`" -#: ../Doc/c-api/exceptions.rst:1106 -msgid ":c:data:`PyExc_RuntimeError`" -msgstr ":c:data:`PyExc_RuntimeError`" - -#: ../Doc/c-api/exceptions.rst:1106 +#: ../Doc/c-api/exceptions.rst:1083 msgid ":exc:`RuntimeError`" msgstr ":exc:`RuntimeError`" -#: ../Doc/c-api/exceptions.rst:1108 -msgid ":c:data:`PyExc_StopAsyncIteration`" -msgstr ":c:data:`PyExc_StopAsyncIteration`" - -#: ../Doc/c-api/exceptions.rst:1108 +#: ../Doc/c-api/exceptions.rst:1085 msgid ":exc:`StopAsyncIteration`" msgstr ":exc:`StopAsyncIteration`" -#: ../Doc/c-api/exceptions.rst:1110 -msgid ":c:data:`PyExc_StopIteration`" -msgstr ":c:data:`PyExc_StopIteration`" - -#: ../Doc/c-api/exceptions.rst:1110 +#: ../Doc/c-api/exceptions.rst:1087 msgid ":exc:`StopIteration`" msgstr ":exc:`StopIteration`" -#: ../Doc/c-api/exceptions.rst:1112 -msgid ":c:data:`PyExc_SyntaxError`" -msgstr ":c:data:`PyExc_SyntaxError`" - -#: ../Doc/c-api/exceptions.rst:1112 +#: ../Doc/c-api/exceptions.rst:1089 msgid ":exc:`SyntaxError`" msgstr ":exc:`SyntaxError`" -#: ../Doc/c-api/exceptions.rst:1114 -msgid ":c:data:`PyExc_SystemError`" -msgstr ":c:data:`PyExc_SystemError`" - -#: ../Doc/c-api/exceptions.rst:1114 +#: ../Doc/c-api/exceptions.rst:1091 msgid ":exc:`SystemError`" msgstr ":exc:`SystemError`" -#: ../Doc/c-api/exceptions.rst:1116 -msgid ":c:data:`PyExc_SystemExit`" -msgstr ":c:data:`PyExc_SystemExit`" - -#: ../Doc/c-api/exceptions.rst:1116 +#: ../Doc/c-api/exceptions.rst:1093 msgid ":exc:`SystemExit`" msgstr ":exc:`SystemExit`" -#: ../Doc/c-api/exceptions.rst:1118 -msgid ":c:data:`PyExc_TabError`" -msgstr ":c:data:`PyExc_TabError`" - -#: ../Doc/c-api/exceptions.rst:1118 +#: ../Doc/c-api/exceptions.rst:1095 msgid ":exc:`TabError`" msgstr ":exc:`TabError`" -#: ../Doc/c-api/exceptions.rst:1120 -msgid ":c:data:`PyExc_TimeoutError`" -msgstr ":c:data:`PyExc_TimeoutError`" - -#: ../Doc/c-api/exceptions.rst:1120 +#: ../Doc/c-api/exceptions.rst:1097 msgid ":exc:`TimeoutError`" msgstr ":exc:`TimeoutError`" -#: ../Doc/c-api/exceptions.rst:1122 -msgid ":c:data:`PyExc_TypeError`" -msgstr ":c:data:`PyExc_TypeError`" - -#: ../Doc/c-api/exceptions.rst:1122 +#: ../Doc/c-api/exceptions.rst:1099 msgid ":exc:`TypeError`" msgstr ":exc:`TypeError`" -#: ../Doc/c-api/exceptions.rst:1124 -msgid ":c:data:`PyExc_UnboundLocalError`" -msgstr ":c:data:`PyExc_UnboundLocalError`" - -#: ../Doc/c-api/exceptions.rst:1124 +#: ../Doc/c-api/exceptions.rst:1101 msgid ":exc:`UnboundLocalError`" msgstr ":exc:`UnboundLocalError`" -#: ../Doc/c-api/exceptions.rst:1126 -msgid ":c:data:`PyExc_UnicodeDecodeError`" -msgstr ":c:data:`PyExc_UnicodeDecodeError`" - -#: ../Doc/c-api/exceptions.rst:1126 +#: ../Doc/c-api/exceptions.rst:1103 msgid ":exc:`UnicodeDecodeError`" msgstr ":exc:`UnicodeDecodeError`" -#: ../Doc/c-api/exceptions.rst:1128 -msgid ":c:data:`PyExc_UnicodeEncodeError`" -msgstr ":c:data:`PyExc_UnicodeEncodeError`" - -#: ../Doc/c-api/exceptions.rst:1128 +#: ../Doc/c-api/exceptions.rst:1105 msgid ":exc:`UnicodeEncodeError`" msgstr ":exc:`UnicodeEncodeError`" -#: ../Doc/c-api/exceptions.rst:1130 -msgid ":c:data:`PyExc_UnicodeError`" -msgstr ":c:data:`PyExc_UnicodeError`" - -#: ../Doc/c-api/exceptions.rst:1130 +#: ../Doc/c-api/exceptions.rst:1107 msgid ":exc:`UnicodeError`" msgstr ":exc:`UnicodeError`" -#: ../Doc/c-api/exceptions.rst:1132 -msgid ":c:data:`PyExc_UnicodeTranslateError`" -msgstr ":c:data:`PyExc_UnicodeTranslateError`" - -#: ../Doc/c-api/exceptions.rst:1132 +#: ../Doc/c-api/exceptions.rst:1109 msgid ":exc:`UnicodeTranslateError`" msgstr ":exc:`UnicodeTranslateError`" -#: ../Doc/c-api/exceptions.rst:1134 -msgid ":c:data:`PyExc_ValueError`" -msgstr ":c:data:`PyExc_ValueError`" - -#: ../Doc/c-api/exceptions.rst:1134 +#: ../Doc/c-api/exceptions.rst:1111 msgid ":exc:`ValueError`" msgstr ":exc:`ValueError`" -#: ../Doc/c-api/exceptions.rst:1136 -msgid ":c:data:`PyExc_ZeroDivisionError`" -msgstr ":c:data:`PyExc_ZeroDivisionError`" - -#: ../Doc/c-api/exceptions.rst:1136 +#: ../Doc/c-api/exceptions.rst:1113 msgid ":exc:`ZeroDivisionError`" msgstr ":exc:`ZeroDivisionError`" -#: ../Doc/c-api/exceptions.rst:1139 +#: ../Doc/c-api/exceptions.rst:1115 msgid "" ":c:data:`PyExc_BlockingIOError`, :c:data:`PyExc_BrokenPipeError`, :c:data:" "`PyExc_ChildProcessError`, :c:data:`PyExc_ConnectionError`, :c:data:" @@ -1941,172 +1766,115 @@ msgstr "" "`PyExc_PermissionError`, :c:data:`PyExc_ProcessLookupError` y :c:data:" "`PyExc_TimeoutError` fueron introducidos luego de :pep:`3151`." -#: ../Doc/c-api/exceptions.rst:1149 +#: ../Doc/c-api/exceptions.rst:1125 msgid ":c:data:`PyExc_StopAsyncIteration` and :c:data:`PyExc_RecursionError`." msgstr ":c:data:`PyExc_StopAsyncIteration` y :c:data:`PyExc_RecursionError`." -#: ../Doc/c-api/exceptions.rst:1152 +#: ../Doc/c-api/exceptions.rst:1128 msgid ":c:data:`PyExc_ModuleNotFoundError`." msgstr ":c:data:`PyExc_ModuleNotFoundError`." -#: ../Doc/c-api/exceptions.rst:1155 -msgid "These are compatibility aliases to :c:data:`PyExc_OSError`:" -msgstr "Estos son alias de compatibilidad para :c:data:`PyExc_OSError`:" - -#: ../Doc/c-api/exceptions.rst:1165 +#: ../Doc/c-api/exceptions.rst:1131 #, fuzzy -msgid ":c:data:`!PyExc_EnvironmentError`" -msgstr ":c:data:`PyExc_EnvironmentError`" +msgid ":c:data:`PyExc_BaseExceptionGroup`." +msgstr ":c:data:`PyExc_BaseException`" -#: ../Doc/c-api/exceptions.rst:1167 -#, fuzzy -msgid ":c:data:`!PyExc_IOError`" -msgstr ":c:data:`PyExc_IOError`" +#: ../Doc/c-api/exceptions.rst:1136 +msgid "OSError aliases" +msgstr "" -#: ../Doc/c-api/exceptions.rst:1169 +#: ../Doc/c-api/exceptions.rst:1138 #, fuzzy -msgid ":c:data:`!PyExc_WindowsError`" -msgstr ":c:data:`PyExc_WindowsError`" - -#: ../Doc/c-api/exceptions.rst:1169 -msgid "[2]_" -msgstr "[2]_" +msgid "The following are a compatibility aliases to :c:data:`PyExc_OSError`." +msgstr "Estos son alias de compatibilidad para :c:data:`PyExc_OSError`:" -#: ../Doc/c-api/exceptions.rst:1172 +#: ../Doc/c-api/exceptions.rst:1140 msgid "These aliases used to be separate exception types." msgstr "Estos alias solían ser tipos de excepción separados." -#: ../Doc/c-api/exceptions.rst:1175 ../Doc/c-api/exceptions.rst:1236 +#: ../Doc/c-api/exceptions.rst:1150 +msgid "Notes" +msgstr "Notas" + +#: ../Doc/c-api/exceptions.rst:1159 +#, fuzzy +msgid "[win]_" +msgstr "[3]_" + +#: ../Doc/c-api/exceptions.rst:1161 msgid "Notes:" msgstr "Notas:" -#: ../Doc/c-api/exceptions.rst:1178 -msgid "This is a base class for other standard exceptions." -msgstr "Esta es una clase base para otras excepciones estándar." - -#: ../Doc/c-api/exceptions.rst:1181 +#: ../Doc/c-api/exceptions.rst:1164 +#, fuzzy msgid "" -"Only defined on Windows; protect code that uses this by testing that the " -"preprocessor macro ``MS_WINDOWS`` is defined." +":c:var:`!PyExc_WindowsError` is only defined on Windows; protect code that " +"uses this by testing that the preprocessor macro ``MS_WINDOWS`` is defined." msgstr "" "Solo se define en Windows; proteja el código que usa esto probando que la " "macro del preprocesador ``MS_WINDOWS`` está definida." -#: ../Doc/c-api/exceptions.rst:1187 -msgid "Standard Warning Categories" -msgstr "Categorías de advertencia estándar" - -#: ../Doc/c-api/exceptions.rst:1189 -msgid "" -"All standard Python warning categories are available as global variables " -"whose names are ``PyExc_`` followed by the Python exception name. These have " -"the type :c:expr:`PyObject*`; they are all class objects. For completeness, " -"here are all the variables:" +#: ../Doc/c-api/exceptions.rst:1171 +msgid "Warning types" msgstr "" -"Todas las categorías de advertencia estándar de Python están disponibles " -"como variables globales cuyos nombres son ``PyExc_`` seguidos del nombre de " -"excepción de Python. Estos tienen el tipo :c:expr:`PyObject*`; todos son " -"objetos de clase. Para completar, aquí están todas las variables:" - -#: ../Doc/c-api/exceptions.rst:1210 -msgid ":c:data:`PyExc_Warning`" -msgstr ":c:data:`PyExc_Warning`" -#: ../Doc/c-api/exceptions.rst:1210 +#: ../Doc/c-api/exceptions.rst:1181 msgid ":exc:`Warning`" msgstr ":exc:`Warning`" -#: ../Doc/c-api/exceptions.rst:1210 -msgid "[3]_" -msgstr "[3]_" - -#: ../Doc/c-api/exceptions.rst:1212 -msgid ":c:data:`PyExc_BytesWarning`" -msgstr ":c:data:`PyExc_BytesWarning`" - -#: ../Doc/c-api/exceptions.rst:1212 +#: ../Doc/c-api/exceptions.rst:1183 msgid ":exc:`BytesWarning`" msgstr ":exc:`BytesWarning`" -#: ../Doc/c-api/exceptions.rst:1214 -msgid ":c:data:`PyExc_DeprecationWarning`" -msgstr ":c:data:`PyExc_DeprecationWarning`" - -#: ../Doc/c-api/exceptions.rst:1214 +#: ../Doc/c-api/exceptions.rst:1185 msgid ":exc:`DeprecationWarning`" msgstr ":exc:`DeprecationWarning`" -#: ../Doc/c-api/exceptions.rst:1216 -msgid ":c:data:`PyExc_FutureWarning`" -msgstr ":c:data:`PyExc_FutureWarning`" +#: ../Doc/c-api/exceptions.rst:1187 +#, fuzzy +msgid ":exc:`EncodingWarning`" +msgstr ":exc:`UnicodeWarning`" -#: ../Doc/c-api/exceptions.rst:1216 +#: ../Doc/c-api/exceptions.rst:1189 msgid ":exc:`FutureWarning`" msgstr ":exc:`FutureWarning`" -#: ../Doc/c-api/exceptions.rst:1218 -msgid ":c:data:`PyExc_ImportWarning`" -msgstr ":c:data:`PyExc_ImportWarning`" - -#: ../Doc/c-api/exceptions.rst:1218 +#: ../Doc/c-api/exceptions.rst:1191 msgid ":exc:`ImportWarning`" msgstr ":exc:`ImportWarning`" -#: ../Doc/c-api/exceptions.rst:1220 -msgid ":c:data:`PyExc_PendingDeprecationWarning`" -msgstr ":c:data:`PyExc_PendingDeprecationWarning`" - -#: ../Doc/c-api/exceptions.rst:1220 +#: ../Doc/c-api/exceptions.rst:1193 msgid ":exc:`PendingDeprecationWarning`" msgstr ":exc:`PendingDeprecationWarning`" -#: ../Doc/c-api/exceptions.rst:1222 -msgid ":c:data:`PyExc_ResourceWarning`" -msgstr ":c:data:`PyExc_ResourceWarning`" - -#: ../Doc/c-api/exceptions.rst:1222 +#: ../Doc/c-api/exceptions.rst:1195 msgid ":exc:`ResourceWarning`" msgstr ":exc:`ResourceWarning`" -#: ../Doc/c-api/exceptions.rst:1224 -msgid ":c:data:`PyExc_RuntimeWarning`" -msgstr ":c:data:`PyExc_RuntimeWarning`" - -#: ../Doc/c-api/exceptions.rst:1224 +#: ../Doc/c-api/exceptions.rst:1197 msgid ":exc:`RuntimeWarning`" msgstr ":exc:`RuntimeWarning`" -#: ../Doc/c-api/exceptions.rst:1226 -msgid ":c:data:`PyExc_SyntaxWarning`" -msgstr ":c:data:`PyExc_SyntaxWarning`" - -#: ../Doc/c-api/exceptions.rst:1226 +#: ../Doc/c-api/exceptions.rst:1199 msgid ":exc:`SyntaxWarning`" msgstr ":exc:`SyntaxWarning`" -#: ../Doc/c-api/exceptions.rst:1228 -msgid ":c:data:`PyExc_UnicodeWarning`" -msgstr ":c:data:`PyExc_UnicodeWarning`" - -#: ../Doc/c-api/exceptions.rst:1228 +#: ../Doc/c-api/exceptions.rst:1201 msgid ":exc:`UnicodeWarning`" msgstr ":exc:`UnicodeWarning`" -#: ../Doc/c-api/exceptions.rst:1230 -msgid ":c:data:`PyExc_UserWarning`" -msgstr ":c:data:`PyExc_UserWarning`" - -#: ../Doc/c-api/exceptions.rst:1230 +#: ../Doc/c-api/exceptions.rst:1203 msgid ":exc:`UserWarning`" msgstr ":exc:`UserWarning`" -#: ../Doc/c-api/exceptions.rst:1233 +#: ../Doc/c-api/exceptions.rst:1205 msgid ":c:data:`PyExc_ResourceWarning`." msgstr ":c:data:`PyExc_ResourceWarning`." -#: ../Doc/c-api/exceptions.rst:1239 -msgid "This is a base class for other standard warning categories." -msgstr "Esta es una clase base para otras categorías de advertencia estándar." +#: ../Doc/c-api/exceptions.rst:1208 +#, fuzzy +msgid ":c:data:`PyExc_EncodingWarning`." +msgstr ":c:data:`PyExc_UnicodeWarning`" #: ../Doc/c-api/exceptions.rst:183 msgid "strerror (C function)" @@ -2131,342 +1899,449 @@ msgstr "" msgid "KeyboardInterrupt (built-in exception)" msgstr "" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_BaseException (C var)" -msgstr ":exc:`BaseException`" +#~ msgid ":ref:`Availability `: Windows." +#~ msgstr ":ref:`Disponibilidad `: Windows." -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_Exception (C var)" -msgstr ":exc:`Exception`" +#~ msgid "The caller must hold the GIL." +#~ msgstr "La persona que llama debe retener el GIL." -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_ArithmeticError (C var)" -msgstr ":exc:`ArithmeticError`" +#~ msgid "" +#~ "If :c:macro:`!USE_STACKCHECK` is defined, this function checks if the OS " +#~ "stack overflowed using :c:func:`PyOS_CheckStack`. If this is the case, " +#~ "it sets a :exc:`MemoryError` and returns a nonzero value." +#~ msgstr "" +#~ "Si :const:`USE_STACKCHECK` está definido, esta función verifica si la " +#~ "pila del SO se desbordó usando :c:func:`PyOS_CheckStack`. En este caso, " +#~ "establece un :exc:`MemoryError` y retorna un valor distinto de cero." -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_AssertionError (C var)" -msgstr ":exc:`AssertionError`" +#~ msgid "Standard Exceptions" +#~ msgstr "Excepciones estándar" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_AttributeError (C var)" -msgstr ":exc:`AttributeError`" +#~ msgid "" +#~ "All standard Python exceptions are available as global variables whose " +#~ "names are ``PyExc_`` followed by the Python exception name. These have " +#~ "the type :c:expr:`PyObject*`; they are all class objects. For " +#~ "completeness, here are all the variables:" +#~ msgstr "" +#~ "Todas las excepciones estándar de Python están disponibles como variables " +#~ "globales cuyos nombres son ``PyExc_`` seguidos del nombre de excepción de " +#~ "Python. Estos tienen el tipo :c:expr:`PyObject*`; todos son objetos de " +#~ "clase. Para completar, aquí están todas las variables:" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_BlockingIOError (C var)" -msgstr ":exc:`BlockingIOError`" +#~ msgid "[1]_" +#~ msgstr "[1]_" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_BrokenPipeError (C var)" -msgstr ":exc:`BrokenPipeError`" +#~ msgid ":c:data:`PyExc_Exception`" +#~ msgstr ":c:data:`PyExc_Exception`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_BufferError (C var)" -msgstr ":exc:`BufferError`" +#~ msgid ":c:data:`PyExc_ArithmeticError`" +#~ msgstr ":c:data:`PyExc_ArithmeticError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_ChildProcessError (C var)" -msgstr ":exc:`ChildProcessError`" +#~ msgid ":c:data:`PyExc_AssertionError`" +#~ msgstr ":c:data:`PyExc_AssertionError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_ConnectionAbortedError (C var)" -msgstr ":exc:`ConnectionAbortedError`" +#~ msgid ":c:data:`PyExc_AttributeError`" +#~ msgstr ":c:data:`PyExc_AttributeError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_ConnectionError (C var)" -msgstr ":exc:`ConnectionError`" +#~ msgid ":c:data:`PyExc_BlockingIOError`" +#~ msgstr ":c:data:`PyExc_BlockingIOError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_ConnectionRefusedError (C var)" -msgstr ":exc:`ConnectionRefusedError`" +#~ msgid ":c:data:`PyExc_BrokenPipeError`" +#~ msgstr ":c:data:`PyExc_BrokenPipeError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_ConnectionResetError (C var)" -msgstr ":exc:`ConnectionResetError`" +#~ msgid ":c:data:`PyExc_BufferError`" +#~ msgstr ":c:data:`PyExc_BufferError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_EOFError (C var)" -msgstr ":exc:`EOFError`" +#~ msgid ":c:data:`PyExc_ChildProcessError`" +#~ msgstr ":c:data:`PyExc_ChildProcessError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_FileExistsError (C var)" -msgstr ":exc:`FileExistsError`" +#~ msgid ":c:data:`PyExc_ConnectionAbortedError`" +#~ msgstr ":c:data:`PyExc_ConnectionAbortedError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_FileNotFoundError (C var)" -msgstr ":exc:`FileNotFoundError`" +#~ msgid ":c:data:`PyExc_ConnectionError`" +#~ msgstr ":c:data:`PyExc_ConnectionError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_FloatingPointError (C var)" -msgstr ":exc:`FloatingPointError`" +#~ msgid ":c:data:`PyExc_ConnectionRefusedError`" +#~ msgstr ":c:data:`PyExc_ConnectionRefusedError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_GeneratorExit (C var)" -msgstr ":exc:`GeneratorExit`" +#~ msgid ":c:data:`PyExc_ConnectionResetError`" +#~ msgstr ":c:data:`PyExc_ConnectionResetError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_ImportError (C var)" -msgstr ":exc:`ImportError`" +#~ msgid ":c:data:`PyExc_EOFError`" +#~ msgstr ":c:data:`PyExc_EOFError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_IndentationError (C var)" -msgstr ":exc:`IndentationError`" +#~ msgid ":c:data:`PyExc_FileExistsError`" +#~ msgstr ":c:data:`PyExc_FileExistsError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_IndexError (C var)" -msgstr ":exc:`IndexError`" +#~ msgid ":c:data:`PyExc_FileNotFoundError`" +#~ msgstr ":c:data:`PyExc_FileNotFoundError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_InterruptedError (C var)" -msgstr ":exc:`InterruptedError`" +#~ msgid ":c:data:`PyExc_FloatingPointError`" +#~ msgstr ":c:data:`PyExc_FloatingPointError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_IsADirectoryError (C var)" -msgstr ":exc:`IsADirectoryError`" +#~ msgid ":c:data:`PyExc_GeneratorExit`" +#~ msgstr ":c:data:`PyExc_GeneratorExit`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_KeyError (C var)" -msgstr ":exc:`KeyError`" +#~ msgid ":c:data:`PyExc_ImportError`" +#~ msgstr ":c:data:`PyExc_ImportError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_KeyboardInterrupt (C var)" -msgstr ":exc:`KeyboardInterrupt`" +#~ msgid ":c:data:`PyExc_IndentationError`" +#~ msgstr ":c:data:`PyExc_IndentationError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_LookupError (C var)" -msgstr ":exc:`LookupError`" +#~ msgid ":c:data:`PyExc_IndexError`" +#~ msgstr ":c:data:`PyExc_IndexError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_MemoryError (C var)" -msgstr ":exc:`MemoryError`" +#~ msgid ":c:data:`PyExc_InterruptedError`" +#~ msgstr ":c:data:`PyExc_InterruptedError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_ModuleNotFoundError (C var)" -msgstr ":exc:`ModuleNotFoundError`" +#~ msgid ":c:data:`PyExc_IsADirectoryError`" +#~ msgstr ":c:data:`PyExc_IsADirectoryError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_NameError (C var)" -msgstr ":exc:`NameError`" +#~ msgid ":c:data:`PyExc_KeyError`" +#~ msgstr ":c:data:`PyExc_KeyError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_NotADirectoryError (C var)" -msgstr ":exc:`NotADirectoryError`" +#~ msgid ":c:data:`PyExc_KeyboardInterrupt`" +#~ msgstr ":c:data:`PyExc_KeyboardInterrupt`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_NotImplementedError (C var)" -msgstr ":exc:`NotImplementedError`" +#~ msgid ":c:data:`PyExc_LookupError`" +#~ msgstr ":c:data:`PyExc_LookupError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_OSError (C var)" -msgstr ":exc:`OSError`" +#~ msgid ":c:data:`PyExc_MemoryError`" +#~ msgstr ":c:data:`PyExc_MemoryError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_OverflowError (C var)" -msgstr ":exc:`OverflowError`" +#~ msgid ":c:data:`PyExc_ModuleNotFoundError`" +#~ msgstr ":c:data:`PyExc_ModuleNotFoundError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_PermissionError (C var)" -msgstr ":exc:`PermissionError`" +#~ msgid ":c:data:`PyExc_NameError`" +#~ msgstr ":c:data:`PyExc_NameError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_ProcessLookupError (C var)" -msgstr ":exc:`ProcessLookupError`" +#~ msgid ":c:data:`PyExc_NotADirectoryError`" +#~ msgstr ":c:data:`PyExc_NotADirectoryError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_PythonFinalizationError (C var)" -msgstr ":exc:`ConnectionError`" +#~ msgid ":c:data:`PyExc_NotImplementedError`" +#~ msgstr ":c:data:`PyExc_NotImplementedError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_RecursionError (C var)" -msgstr ":exc:`RecursionError`" +#~ msgid ":c:data:`PyExc_OSError`" +#~ msgstr ":c:data:`PyExc_OSError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_ReferenceError (C var)" -msgstr ":exc:`ReferenceError`" +#~ msgid ":c:data:`PyExc_OverflowError`" +#~ msgstr ":c:data:`PyExc_OverflowError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_RuntimeError (C var)" -msgstr ":exc:`RuntimeError`" +#~ msgid ":c:data:`PyExc_PermissionError`" +#~ msgstr ":c:data:`PyExc_PermissionError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_StopAsyncIteration (C var)" -msgstr ":exc:`StopAsyncIteration`" +#~ msgid ":c:data:`PyExc_ProcessLookupError`" +#~ msgstr ":c:data:`PyExc_ProcessLookupError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_StopIteration (C var)" -msgstr ":exc:`StopIteration`" +#~ msgid ":c:data:`PyExc_PythonFinalizationError`" +#~ msgstr ":c:data:`PyExc_ConnectionError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_SyntaxError (C var)" -msgstr ":exc:`SyntaxError`" +#~ msgid ":c:data:`PyExc_RecursionError`" +#~ msgstr ":c:data:`PyExc_RecursionError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_SystemError (C var)" -msgstr ":exc:`SystemError`" +#~ msgid ":c:data:`PyExc_ReferenceError`" +#~ msgstr ":c:data:`PyExc_ReferenceError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_SystemExit (C var)" -msgstr ":exc:`SystemExit`" +#~ msgid ":c:data:`PyExc_RuntimeError`" +#~ msgstr ":c:data:`PyExc_RuntimeError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_TabError (C var)" -msgstr ":exc:`TabError`" +#~ msgid ":c:data:`PyExc_StopAsyncIteration`" +#~ msgstr ":c:data:`PyExc_StopAsyncIteration`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_TimeoutError (C var)" -msgstr ":exc:`TimeoutError`" +#~ msgid ":c:data:`PyExc_StopIteration`" +#~ msgstr ":c:data:`PyExc_StopIteration`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_TypeError (C var)" -msgstr ":exc:`TypeError`" +#~ msgid ":c:data:`PyExc_SyntaxError`" +#~ msgstr ":c:data:`PyExc_SyntaxError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_UnboundLocalError (C var)" -msgstr ":exc:`UnboundLocalError`" +#~ msgid ":c:data:`PyExc_SystemError`" +#~ msgstr ":c:data:`PyExc_SystemError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_UnicodeDecodeError (C var)" -msgstr ":exc:`UnicodeDecodeError`" +#~ msgid ":c:data:`PyExc_SystemExit`" +#~ msgstr ":c:data:`PyExc_SystemExit`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_UnicodeEncodeError (C var)" -msgstr ":exc:`UnicodeEncodeError`" +#~ msgid ":c:data:`PyExc_TabError`" +#~ msgstr ":c:data:`PyExc_TabError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_UnicodeError (C var)" -msgstr ":exc:`UnicodeError`" +#~ msgid ":c:data:`PyExc_TimeoutError`" +#~ msgstr ":c:data:`PyExc_TimeoutError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_UnicodeTranslateError (C var)" -msgstr ":exc:`UnicodeTranslateError`" +#~ msgid ":c:data:`PyExc_TypeError`" +#~ msgstr ":c:data:`PyExc_TypeError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_ValueError (C var)" -msgstr ":exc:`ValueError`" +#~ msgid ":c:data:`PyExc_UnboundLocalError`" +#~ msgstr ":c:data:`PyExc_UnboundLocalError`" -#: ../Doc/c-api/exceptions.rst:971 -#, fuzzy -msgid "PyExc_ZeroDivisionError (C var)" -msgstr ":exc:`ZeroDivisionError`" +#~ msgid ":c:data:`PyExc_UnicodeDecodeError`" +#~ msgstr ":c:data:`PyExc_UnicodeDecodeError`" -#: ../Doc/c-api/exceptions.rst:1157 -#, fuzzy -msgid "PyExc_EnvironmentError (C var)" -msgstr ":c:data:`PyExc_EnvironmentError`" +#~ msgid ":c:data:`PyExc_UnicodeEncodeError`" +#~ msgstr ":c:data:`PyExc_UnicodeEncodeError`" -#: ../Doc/c-api/exceptions.rst:1157 -#, fuzzy -msgid "PyExc_IOError (C var)" -msgstr ":c:data:`PyExc_IOError`" +#~ msgid ":c:data:`PyExc_UnicodeError`" +#~ msgstr ":c:data:`PyExc_UnicodeError`" -#: ../Doc/c-api/exceptions.rst:1157 -#, fuzzy -msgid "PyExc_WindowsError (C var)" -msgstr ":c:data:`PyExc_WindowsError`" +#~ msgid ":c:data:`PyExc_UnicodeTranslateError`" +#~ msgstr ":c:data:`PyExc_UnicodeTranslateError`" -#: ../Doc/c-api/exceptions.rst:1194 -#, fuzzy -msgid "PyExc_Warning (C var)" -msgstr ":exc:`Warning`" +#~ msgid ":c:data:`PyExc_ValueError`" +#~ msgstr ":c:data:`PyExc_ValueError`" -#: ../Doc/c-api/exceptions.rst:1194 -#, fuzzy -msgid "PyExc_BytesWarning (C var)" -msgstr ":exc:`BytesWarning`" +#~ msgid ":c:data:`PyExc_ZeroDivisionError`" +#~ msgstr ":c:data:`PyExc_ZeroDivisionError`" -#: ../Doc/c-api/exceptions.rst:1194 -#, fuzzy -msgid "PyExc_DeprecationWarning (C var)" -msgstr ":exc:`DeprecationWarning`" +#~ msgid ":c:data:`!PyExc_EnvironmentError`" +#~ msgstr ":c:data:`PyExc_EnvironmentError`" -#: ../Doc/c-api/exceptions.rst:1194 -#, fuzzy -msgid "PyExc_FutureWarning (C var)" -msgstr ":exc:`FutureWarning`" +#~ msgid ":c:data:`!PyExc_IOError`" +#~ msgstr ":c:data:`PyExc_IOError`" -#: ../Doc/c-api/exceptions.rst:1194 -#, fuzzy -msgid "PyExc_ImportWarning (C var)" -msgstr ":exc:`ImportWarning`" +#~ msgid ":c:data:`!PyExc_WindowsError`" +#~ msgstr ":c:data:`PyExc_WindowsError`" -#: ../Doc/c-api/exceptions.rst:1194 -#, fuzzy -msgid "PyExc_PendingDeprecationWarning (C var)" -msgstr ":exc:`PendingDeprecationWarning`" +#~ msgid "[2]_" +#~ msgstr "[2]_" -#: ../Doc/c-api/exceptions.rst:1194 -#, fuzzy -msgid "PyExc_ResourceWarning (C var)" -msgstr ":exc:`ResourceWarning`" +#~ msgid "This is a base class for other standard exceptions." +#~ msgstr "Esta es una clase base para otras excepciones estándar." -#: ../Doc/c-api/exceptions.rst:1194 -#, fuzzy -msgid "PyExc_RuntimeWarning (C var)" -msgstr ":exc:`RuntimeWarning`" +#~ msgid "Standard Warning Categories" +#~ msgstr "Categorías de advertencia estándar" -#: ../Doc/c-api/exceptions.rst:1194 -#, fuzzy -msgid "PyExc_SyntaxWarning (C var)" -msgstr ":exc:`SyntaxWarning`" +#~ msgid ":c:data:`PyExc_Warning`" +#~ msgstr ":c:data:`PyExc_Warning`" -#: ../Doc/c-api/exceptions.rst:1194 -#, fuzzy -msgid "PyExc_UnicodeWarning (C var)" -msgstr ":exc:`UnicodeWarning`" +#~ msgid ":c:data:`PyExc_BytesWarning`" +#~ msgstr ":c:data:`PyExc_BytesWarning`" -#: ../Doc/c-api/exceptions.rst:1194 -#, fuzzy -msgid "PyExc_UserWarning (C var)" -msgstr ":exc:`UserWarning`" +#~ msgid ":c:data:`PyExc_DeprecationWarning`" +#~ msgstr ":c:data:`PyExc_DeprecationWarning`" + +#~ msgid ":c:data:`PyExc_FutureWarning`" +#~ msgstr ":c:data:`PyExc_FutureWarning`" + +#~ msgid ":c:data:`PyExc_ImportWarning`" +#~ msgstr ":c:data:`PyExc_ImportWarning`" + +#~ msgid ":c:data:`PyExc_PendingDeprecationWarning`" +#~ msgstr ":c:data:`PyExc_PendingDeprecationWarning`" + +#~ msgid ":c:data:`PyExc_ResourceWarning`" +#~ msgstr ":c:data:`PyExc_ResourceWarning`" + +#~ msgid ":c:data:`PyExc_RuntimeWarning`" +#~ msgstr ":c:data:`PyExc_RuntimeWarning`" + +#~ msgid ":c:data:`PyExc_SyntaxWarning`" +#~ msgstr ":c:data:`PyExc_SyntaxWarning`" + +#~ msgid ":c:data:`PyExc_UserWarning`" +#~ msgstr ":c:data:`PyExc_UserWarning`" + +#~ msgid "This is a base class for other standard warning categories." +#~ msgstr "" +#~ "Esta es una clase base para otras categorías de advertencia estándar." + +#~ msgid "PyExc_BaseException (C var)" +#~ msgstr ":exc:`BaseException`" + +#~ msgid "PyExc_Exception (C var)" +#~ msgstr ":exc:`Exception`" + +#~ msgid "PyExc_ArithmeticError (C var)" +#~ msgstr ":exc:`ArithmeticError`" + +#~ msgid "PyExc_AssertionError (C var)" +#~ msgstr ":exc:`AssertionError`" + +#~ msgid "PyExc_AttributeError (C var)" +#~ msgstr ":exc:`AttributeError`" + +#~ msgid "PyExc_BlockingIOError (C var)" +#~ msgstr ":exc:`BlockingIOError`" + +#~ msgid "PyExc_BrokenPipeError (C var)" +#~ msgstr ":exc:`BrokenPipeError`" + +#~ msgid "PyExc_BufferError (C var)" +#~ msgstr ":exc:`BufferError`" + +#~ msgid "PyExc_ChildProcessError (C var)" +#~ msgstr ":exc:`ChildProcessError`" + +#~ msgid "PyExc_ConnectionAbortedError (C var)" +#~ msgstr ":exc:`ConnectionAbortedError`" + +#~ msgid "PyExc_ConnectionError (C var)" +#~ msgstr ":exc:`ConnectionError`" + +#~ msgid "PyExc_ConnectionRefusedError (C var)" +#~ msgstr ":exc:`ConnectionRefusedError`" + +#~ msgid "PyExc_ConnectionResetError (C var)" +#~ msgstr ":exc:`ConnectionResetError`" + +#~ msgid "PyExc_EOFError (C var)" +#~ msgstr ":exc:`EOFError`" + +#~ msgid "PyExc_FileExistsError (C var)" +#~ msgstr ":exc:`FileExistsError`" + +#~ msgid "PyExc_FileNotFoundError (C var)" +#~ msgstr ":exc:`FileNotFoundError`" + +#~ msgid "PyExc_FloatingPointError (C var)" +#~ msgstr ":exc:`FloatingPointError`" + +#~ msgid "PyExc_GeneratorExit (C var)" +#~ msgstr ":exc:`GeneratorExit`" + +#~ msgid "PyExc_ImportError (C var)" +#~ msgstr ":exc:`ImportError`" + +#~ msgid "PyExc_IndentationError (C var)" +#~ msgstr ":exc:`IndentationError`" + +#~ msgid "PyExc_IndexError (C var)" +#~ msgstr ":exc:`IndexError`" + +#~ msgid "PyExc_InterruptedError (C var)" +#~ msgstr ":exc:`InterruptedError`" + +#~ msgid "PyExc_IsADirectoryError (C var)" +#~ msgstr ":exc:`IsADirectoryError`" + +#~ msgid "PyExc_KeyError (C var)" +#~ msgstr ":exc:`KeyError`" + +#~ msgid "PyExc_KeyboardInterrupt (C var)" +#~ msgstr ":exc:`KeyboardInterrupt`" + +#~ msgid "PyExc_LookupError (C var)" +#~ msgstr ":exc:`LookupError`" + +#~ msgid "PyExc_MemoryError (C var)" +#~ msgstr ":exc:`MemoryError`" + +#~ msgid "PyExc_ModuleNotFoundError (C var)" +#~ msgstr ":exc:`ModuleNotFoundError`" + +#~ msgid "PyExc_NameError (C var)" +#~ msgstr ":exc:`NameError`" + +#~ msgid "PyExc_NotADirectoryError (C var)" +#~ msgstr ":exc:`NotADirectoryError`" + +#~ msgid "PyExc_NotImplementedError (C var)" +#~ msgstr ":exc:`NotImplementedError`" + +#~ msgid "PyExc_OSError (C var)" +#~ msgstr ":exc:`OSError`" + +#~ msgid "PyExc_OverflowError (C var)" +#~ msgstr ":exc:`OverflowError`" + +#~ msgid "PyExc_PermissionError (C var)" +#~ msgstr ":exc:`PermissionError`" + +#~ msgid "PyExc_ProcessLookupError (C var)" +#~ msgstr ":exc:`ProcessLookupError`" + +#~ msgid "PyExc_PythonFinalizationError (C var)" +#~ msgstr ":exc:`ConnectionError`" + +#~ msgid "PyExc_RecursionError (C var)" +#~ msgstr ":exc:`RecursionError`" + +#~ msgid "PyExc_ReferenceError (C var)" +#~ msgstr ":exc:`ReferenceError`" + +#~ msgid "PyExc_RuntimeError (C var)" +#~ msgstr ":exc:`RuntimeError`" + +#~ msgid "PyExc_StopAsyncIteration (C var)" +#~ msgstr ":exc:`StopAsyncIteration`" + +#~ msgid "PyExc_StopIteration (C var)" +#~ msgstr ":exc:`StopIteration`" + +#~ msgid "PyExc_SyntaxError (C var)" +#~ msgstr ":exc:`SyntaxError`" + +#~ msgid "PyExc_SystemError (C var)" +#~ msgstr ":exc:`SystemError`" + +#~ msgid "PyExc_SystemExit (C var)" +#~ msgstr ":exc:`SystemExit`" + +#~ msgid "PyExc_TabError (C var)" +#~ msgstr ":exc:`TabError`" + +#~ msgid "PyExc_TimeoutError (C var)" +#~ msgstr ":exc:`TimeoutError`" + +#~ msgid "PyExc_TypeError (C var)" +#~ msgstr ":exc:`TypeError`" + +#~ msgid "PyExc_UnboundLocalError (C var)" +#~ msgstr ":exc:`UnboundLocalError`" + +#~ msgid "PyExc_UnicodeDecodeError (C var)" +#~ msgstr ":exc:`UnicodeDecodeError`" + +#~ msgid "PyExc_UnicodeEncodeError (C var)" +#~ msgstr ":exc:`UnicodeEncodeError`" + +#~ msgid "PyExc_UnicodeError (C var)" +#~ msgstr ":exc:`UnicodeError`" + +#~ msgid "PyExc_UnicodeTranslateError (C var)" +#~ msgstr ":exc:`UnicodeTranslateError`" + +#~ msgid "PyExc_ValueError (C var)" +#~ msgstr ":exc:`ValueError`" + +#~ msgid "PyExc_ZeroDivisionError (C var)" +#~ msgstr ":exc:`ZeroDivisionError`" + +#~ msgid "PyExc_EnvironmentError (C var)" +#~ msgstr ":c:data:`PyExc_EnvironmentError`" + +#~ msgid "PyExc_IOError (C var)" +#~ msgstr ":c:data:`PyExc_IOError`" + +#~ msgid "PyExc_WindowsError (C var)" +#~ msgstr ":c:data:`PyExc_WindowsError`" + +#~ msgid "PyExc_Warning (C var)" +#~ msgstr ":exc:`Warning`" + +#~ msgid "PyExc_BytesWarning (C var)" +#~ msgstr ":exc:`BytesWarning`" + +#~ msgid "PyExc_DeprecationWarning (C var)" +#~ msgstr ":exc:`DeprecationWarning`" + +#~ msgid "PyExc_FutureWarning (C var)" +#~ msgstr ":exc:`FutureWarning`" + +#~ msgid "PyExc_ImportWarning (C var)" +#~ msgstr ":exc:`ImportWarning`" + +#~ msgid "PyExc_PendingDeprecationWarning (C var)" +#~ msgstr ":exc:`PendingDeprecationWarning`" + +#~ msgid "PyExc_ResourceWarning (C var)" +#~ msgstr ":exc:`ResourceWarning`" + +#~ msgid "PyExc_RuntimeWarning (C var)" +#~ msgstr ":exc:`RuntimeWarning`" + +#~ msgid "PyExc_SyntaxWarning (C var)" +#~ msgstr ":exc:`SyntaxWarning`" + +#~ msgid "PyExc_UnicodeWarning (C var)" +#~ msgstr ":exc:`UnicodeWarning`" + +#~ msgid "PyExc_UserWarning (C var)" +#~ msgstr ":exc:`UserWarning`" diff --git a/c-api/extension-modules.po b/c-api/extension-modules.po new file mode 100644 index 0000000000..cde4754229 --- /dev/null +++ b/c-api/extension-modules.po @@ -0,0 +1,361 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 Python Software Foundation +# This file is distributed under the same license as the Python en Español +# package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python en Español 3.14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: es\n" +"Language-Team: es \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../Doc/c-api/extension-modules.rst:6 +msgid "Defining extension modules" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/extension-modules.rst:48 +msgid "Added support for multi-phase initialization (:pep:`489`)." +msgstr "" + +#: ../Doc/c-api/extension-modules.rst:52 +msgid "Multiple module instances" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/extension-modules.rst:74 +msgid "" +"A simpler way to avoid these issues is :ref:`raising an error on repeated " +"initialization `." +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/extension-modules.rst:89 +msgid "Initialization function" +msgstr "" + +#: ../Doc/c-api/extension-modules.rst:91 +msgid "" +"The initialization function defined by an extension module has the following " +"signature:" +msgstr "" + +#: ../Doc/c-api/extension-modules.rst:96 +#, python-brace-format +msgid "" +"Its name should be :samp:`PyInit_{}`, with ```` replaced by the " +"name of the module." +msgstr "" + +#: ../Doc/c-api/extension-modules.rst:99 +#, python-brace-format +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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/extension-modules.rst:115 +msgid "" +"It is recommended to define the initialization function using a helper macro:" +msgstr "" + +#: ../Doc/c-api/extension-modules.rst:119 +msgid "Declare an extension module initialization function. This macro:" +msgstr "" + +#: ../Doc/c-api/extension-modules.rst:122 +msgid "specifies the :c:expr:`PyObject*` return type," +msgstr "" + +#: ../Doc/c-api/extension-modules.rst:123 +msgid "adds any special linkage declarations required by the platform, and" +msgstr "" + +#: ../Doc/c-api/extension-modules.rst:124 +msgid "for C++, declares the function as ``extern \"C\"``." +msgstr "" + +#: ../Doc/c-api/extension-modules.rst:126 +msgid "For example, a module called ``spam`` would be defined like this::" +msgstr "" + +#: ../Doc/c-api/extension-modules.rst:128 +#, python-brace-format +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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/extension-modules.rst:154 +msgid "Multi-phase initialization" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/extension-modules.rst:168 +msgid "Return *def* cast to ``PyObject*``, or ``NULL`` if an error occurred." +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/extension-modules.rst:184 +msgid "Legacy single-phase initialization" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/extension-modules.rst:197 +msgid "" +"Single-phase initialization differs from the :ref:`default ` in the following ways:" +msgstr "" + +#: ../Doc/c-api/extension-modules.rst:200 +msgid "Single-phase modules are, or rather *contain*, “singletons”." +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/extension-modules.rst:229 +msgid "" +"The exact behavior should be considered a CPython implementation detail." +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/extension-modules.rst:240 +msgid "Non-ASCII module names (``PyInitU_modulename``) are not supported." +msgstr "" + +#: ../Doc/c-api/extension-modules.rst:242 +msgid "" +"Single-phase modules support module lookup functions like :c:func:" +"`PyState_FindModule`." +msgstr "" + +#: ../Doc/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/float.po b/c-api/float.po index 42d3ff876d..3e46c6b8c5 100644 --- a/c-api/float.po +++ b/c-api/float.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2024-09-26 15:15-0600\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/float.rst:6 #, fuzzy @@ -171,6 +171,12 @@ msgstr "" #: ../Doc/c-api/float.rst:99 msgid "" +"Note that NaNs type may not be preserved on IEEE platforms (silent NaN " +"become quiet), for example on x86 systems in 32-bit mode." +msgstr "" + +#: ../Doc/c-api/float.rst:102 +msgid "" "On non-IEEE platforms with more precision, or larger dynamic range, than " "IEEE 754 supports, not all values can be packed; on non-IEEE platforms with " "less precision, or smaller dynamic range, not all values can be unpacked. " @@ -182,11 +188,11 @@ msgstr "" "pequeño, no se pueden desempaquetar todos los valores. Lo que sucede en " "tales casos es en parte accidental (desafortunadamente)." -#: ../Doc/c-api/float.rst:107 +#: ../Doc/c-api/float.rst:110 msgid "Pack functions" msgstr "Funciones de Empaquetado" -#: ../Doc/c-api/float.rst:109 +#: ../Doc/c-api/float.rst:112 msgid "" "The pack routines write 2, 4 or 8 bytes, starting at *p*. *le* is an :c:expr:" "`int` argument, non-zero if you want the bytes string in little-endian " @@ -203,7 +209,7 @@ msgstr "" "usar para emplear el endian nativo: es igual a ``1`` en el procesador big-" "endian, o ``0`` en el procesador little-endian." -#: ../Doc/c-api/float.rst:116 +#: ../Doc/c-api/float.rst:119 msgid "" "Return value: ``0`` if all is OK, ``-1`` if error (and an exception is set, " "most likely :exc:`OverflowError`)." @@ -211,38 +217,38 @@ msgstr "" "Valor retornado: ``0`` si todo está bien, ``-1`` si hay error (y se " "establece una excepción, probablemente :exc:`OverflowError`)." -#: ../Doc/c-api/float.rst:119 +#: ../Doc/c-api/float.rst:122 msgid "There are two problems on non-IEEE platforms:" msgstr "Hay dos problemas en plataformas que no son IEEE:" -#: ../Doc/c-api/float.rst:121 +#: ../Doc/c-api/float.rst:124 msgid "What this does is undefined if *x* is a NaN or infinity." msgstr "Lo que esto hace es indefinido si *x* es un NaN o infinito." -#: ../Doc/c-api/float.rst:122 +#: ../Doc/c-api/float.rst:125 msgid "``-0.0`` and ``+0.0`` produce the same bytes string." msgstr "``-0.0`` and ``+0.0`` produce la misma cadena de bytes." -#: ../Doc/c-api/float.rst:126 +#: ../Doc/c-api/float.rst:129 msgid "Pack a C double as the IEEE 754 binary16 half-precision format." msgstr "" "Empaquete un C doble como el formato de media precisión IEEE 754 binary16." -#: ../Doc/c-api/float.rst:130 +#: ../Doc/c-api/float.rst:133 msgid "Pack a C double as the IEEE 754 binary32 single precision format." msgstr "" "Empaque un C doble como el formato de precisión simple IEEE 754 binary32." -#: ../Doc/c-api/float.rst:134 +#: ../Doc/c-api/float.rst:137 msgid "Pack a C double as the IEEE 754 binary64 double precision format." msgstr "" "Empaque un C doble como el formato de doble precisión IEEE 754 binary64." -#: ../Doc/c-api/float.rst:138 +#: ../Doc/c-api/float.rst:141 msgid "Unpack functions" msgstr "Funciones de Desempaquetado" -#: ../Doc/c-api/float.rst:140 +#: ../Doc/c-api/float.rst:143 msgid "" "The unpack routines read 2, 4 or 8 bytes, starting at *p*. *le* is an :c:" "expr:`int` argument, non-zero if the bytes string is in little-endian format " @@ -259,7 +265,7 @@ msgstr "" "nativo: es igual a ``1`` en un procesador big endian, o ``0`` en un " "procesador little-endian." -#: ../Doc/c-api/float.rst:147 +#: ../Doc/c-api/float.rst:150 msgid "" "Return value: The unpacked double. On error, this is ``-1.0`` and :c:func:" "`PyErr_Occurred` is true (and an exception is set, most likely :exc:" @@ -269,7 +275,7 @@ msgstr "" "`PyErr_Occurred` es verdadero (y se establece una excepción, probablemente :" "exc:`OverflowError`)." -#: ../Doc/c-api/float.rst:151 +#: ../Doc/c-api/float.rst:154 msgid "" "Note that on a non-IEEE platform this will refuse to unpack a bytes string " "that represents a NaN or infinity." @@ -277,17 +283,17 @@ msgstr "" "Hay que tener en cuenta que en una plataforma que no sea IEEE, esto se " "negará a desempaquetar una cadena de bytes que representa un NaN o infinito." -#: ../Doc/c-api/float.rst:156 +#: ../Doc/c-api/float.rst:159 msgid "Unpack the IEEE 754 binary16 half-precision format as a C double." msgstr "" "Descomprima el formato de media precisión IEEE 754 binary16 como un doble C." -#: ../Doc/c-api/float.rst:160 +#: ../Doc/c-api/float.rst:163 msgid "Unpack the IEEE 754 binary32 single precision format as a C double." msgstr "" "Descomprima el formato de precisión simple IEEE 754 binary32 como un doble C." -#: ../Doc/c-api/float.rst:164 +#: ../Doc/c-api/float.rst:167 msgid "Unpack the IEEE 754 binary64 double precision format as a C double." msgstr "" "Descomprima el formato de doble precisión IEEE 754 binary64 como un doble C." diff --git a/c-api/frame.po b/c-api/frame.po index 14c1f38bc7..c352946539 100644 --- a/c-api/frame.po +++ b/c-api/frame.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python en Español 3.11\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2022-11-04 09:53-0300\n" "Last-Translator: Rodrigo Poblete \n" "Language: es\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/frame.rst:4 msgid "Frame Objects" @@ -175,37 +175,64 @@ msgid "" msgstr "" #: ../Doc/c-api/frame.rst:134 -msgid "As part of :pep:`667`, return a proxy object for optimized scopes." +msgid "" +"As part of :pep:`667`, return an instance of :c:var:" +"`PyFrameLocalsProxy_Type`." msgstr "" #: ../Doc/c-api/frame.rst:140 msgid "Return the line number that *frame* is currently executing." msgstr "Retorna el número de línea en la que se está ejecutando el *frame*." -#: ../Doc/c-api/frame.rst:145 +#: ../Doc/c-api/frame.rst:144 +msgid "Frame Locals Proxies" +msgstr "" + +#: ../Doc/c-api/frame.rst:148 +msgid "" +"The :attr:`~frame.f_locals` attribute on a :ref:`frame object ` is an instance of a \"frame-locals proxy\". The proxy object " +"exposes a write-through view of the underlying locals dictionary for the " +"frame. This ensures that the variables exposed by ``f_locals`` are always up " +"to date with the live local variables in the frame itself." +msgstr "" + +#: ../Doc/c-api/frame.rst:154 +msgid "See :pep:`667` for more information." +msgstr "" + +#: ../Doc/c-api/frame.rst:158 +msgid "The type of frame :func:`locals` proxy objects." +msgstr "" + +#: ../Doc/c-api/frame.rst:162 +msgid "Return non-zero if *obj* is a frame :func:`locals` proxy." +msgstr "" + +#: ../Doc/c-api/frame.rst:165 msgid "Internal Frames" msgstr "" -#: ../Doc/c-api/frame.rst:147 +#: ../Doc/c-api/frame.rst:167 msgid "Unless using :pep:`523`, you will not need this." msgstr "" -#: ../Doc/c-api/frame.rst:151 +#: ../Doc/c-api/frame.rst:171 msgid "The interpreter's internal frame representation." msgstr "" -#: ../Doc/c-api/frame.rst:157 +#: ../Doc/c-api/frame.rst:177 #, fuzzy msgid "Return a :term:`strong reference` to the code object for the frame." msgstr "" "Retorna una :term:`strong reference`, o ``NULL`` si *frame* no tiene frame " "exterior." -#: ../Doc/c-api/frame.rst:164 +#: ../Doc/c-api/frame.rst:184 msgid "Return the byte offset into the last executed instruction." msgstr "" -#: ../Doc/c-api/frame.rst:171 +#: ../Doc/c-api/frame.rst:191 msgid "" "Return the currently executing line number, or -1 if there is no line number." msgstr "" diff --git a/c-api/function.po b/c-api/function.po index be33ef241d..8fe11af4df 100644 --- a/c-api/function.po +++ b/c-api/function.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2021-12-09 10:29+0800\n" "Last-Translator: Erick G. Islas-Osuna \n" "Language: es\n" @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/function.rst:6 msgid "Function Objects" @@ -36,22 +36,22 @@ msgstr "La estructura C utilizada para las funciones." #: ../Doc/c-api/function.rst:22 msgid "" "This is an instance of :c:type:`PyTypeObject` and represents the Python " -"function type. It is exposed to Python programmers as " -"``types.FunctionType``." +"function type. It is exposed to Python programmers as ``types." +"FunctionType``." msgstr "" "Esta es una instancia de :c:type:`PyTypeObject` y representa el tipo función " -"de Python. Está expuesto a los programadores de Python como " -"``types.FunctionType``." +"de Python. Está expuesto a los programadores de Python como ``types." +"FunctionType``." #: ../Doc/c-api/function.rst:28 msgid "" -"Return true if *o* is a function object (has " -"type :c:data:`PyFunction_Type`). The parameter must not be ``NULL``. This " -"function always succeeds." +"Return true if *o* is a function object (has type :c:data:" +"`PyFunction_Type`). The parameter must not be ``NULL``. This function " +"always succeeds." msgstr "" -"Retorna verdadero si *o* es un objeto función (tiene " -"tipo :c:data:`PyFunction_Type`). El parámetro no debe ser ``NULL``. Esta " -"función siempre finaliza con éxito." +"Retorna verdadero si *o* es un objeto función (tiene tipo :c:data:" +"`PyFunction_Type`). El parámetro no debe ser ``NULL``. Esta función siempre " +"finaliza con éxito." #: ../Doc/c-api/function.rst:34 msgid "" @@ -65,31 +65,30 @@ msgstr "" #: ../Doc/c-api/function.rst:37 msgid "" -"The function's docstring and name are retrieved from the code " -"object. :attr:`~function.__module__` is retrieved from *globals*. The " -"argument defaults, annotations and closure are set to " -"``NULL``. :attr:`~function.__qualname__` is set to the same value as the " -"code object's :attr:`~codeobject.co_qualname` field." +"The function's docstring and name are retrieved from the code object. :attr:" +"`~function.__module__` is retrieved from *globals*. The argument defaults, " +"annotations and closure are set to ``NULL``. :attr:`~function.__qualname__` " +"is set to the same value as the code object's :attr:`~codeobject." +"co_qualname` field." msgstr "" -"El docstring y el nombre de la función se obtienen del objeto " -"código. :attr:`~function.__module__` se obtiene de *globals*. Los argumentos " -"por defecto, anotaciones y clausura se establecen en " -"``NULL``. :attr:`~function.__qualname__` se establece en el mismo valor que " -"el campo :attr:`~codeobject.co_qualname` del objeto código." +"El docstring y el nombre de la función se obtienen del objeto código. :attr:" +"`~function.__module__` se obtiene de *globals*. Los argumentos por defecto, " +"anotaciones y clausura se establecen en ``NULL``. :attr:`~function." +"__qualname__` se establece en el mismo valor que el campo :attr:`~codeobject." +"co_qualname` del objeto código." #: ../Doc/c-api/function.rst:46 msgid "" -"As :c:func:`PyFunction_New`, but also allows setting the function " -"object's :attr:`~function.__qualname__` attribute. *qualname* should be a " -"unicode object or ``NULL``; if ``NULL``, the :attr:`!__qualname__` attribute " -"is set to the same value as the code " -"object's :attr:`~codeobject.co_qualname` field." +"As :c:func:`PyFunction_New`, but also allows setting the function object's :" +"attr:`~function.__qualname__` attribute. *qualname* should be a unicode " +"object or ``NULL``; if ``NULL``, the :attr:`!__qualname__` attribute is set " +"to the same value as the code object's :attr:`~codeobject.co_qualname` field." msgstr "" -"Como :c:func:`PyFunction_New`, pero también permite configurar el " -"atributo :attr:`~function.__qualname__` del objeto función. *qualname* debe " -"ser un objeto unicode o ``NULL``; si es ``NULL``, el atributo :attr:`!" -"__qualname__` se establece en el mismo valor que el " -"campo :attr:`~codeobject.co_qualname` del objeto código." +"Como :c:func:`PyFunction_New`, pero también permite configurar el atributo :" +"attr:`~function.__qualname__` del objeto función. *qualname* debe ser un " +"objeto unicode o ``NULL``; si es ``NULL``, el atributo :attr:`!__qualname__` " +"se establece en el mismo valor que el campo :attr:`~codeobject.co_qualname` " +"del objeto código." #: ../Doc/c-api/function.rst:57 msgid "Return the code object associated with the function object *op*." @@ -105,9 +104,9 @@ msgid "" "attribute of the :ref:`function object ` *op*. It can be " "*NULL*." msgstr "" -"Retorna una :term:`referencia prestada` al " -"atributo :attr:`~function.__module__` del :ref:`objeto función ` *op*. Puede ser *NULL*." +"Retorna una :term:`referencia prestada` al atributo :attr:`~function." +"__module__` del :ref:`objeto función ` *op*. Puede ser " +"*NULL*." #: ../Doc/c-api/function.rst:71 msgid "" @@ -134,8 +133,8 @@ msgstr "" "Establece los valores predeterminados del argumento para el objeto función " "*op*. *defaults* deben ser ``Py_None`` o una tupla." -#: ../Doc/c-api/function.rst:86 ../Doc/c-api/function.rst:109 -#: ../Doc/c-api/function.rst:123 +#: ../Doc/c-api/function.rst:86 ../Doc/c-api/function.rst:116 +#: ../Doc/c-api/function.rst:130 msgid "Raises :exc:`SystemError` and returns ``-1`` on failure." msgstr "Lanza :exc:`SystemError` y retorna ``-1`` en caso de error." @@ -151,7 +150,16 @@ msgstr "" "Advertencia: ¡las extensiones que usan esta API deben preservar el " "comportamiento de la función vectorcall inalterada (por defecto)!" -#: ../Doc/c-api/function.rst:100 +#: ../Doc/c-api/function.rst:101 +#, fuzzy +msgid "" +"Return the keyword-only argument default values of the function object *op*. " +"This can be a dictionary of arguments or ``NULL``." +msgstr "" +"Retorna los valores predeterminados del argumento del objeto función *op*. " +"Esto puede ser una tupla de argumentos o ``NULL``." + +#: ../Doc/c-api/function.rst:107 msgid "" "Return the closure associated with the function object *op*. This can be " "``NULL`` or a tuple of cell objects." @@ -159,7 +167,7 @@ msgstr "" "Retorna el cierre asociado con el objeto función *op*. Esto puede ser " "``NULL`` o una tupla de objetos celda." -#: ../Doc/c-api/function.rst:106 +#: ../Doc/c-api/function.rst:113 msgid "" "Set the closure associated with the function object *op*. *closure* must be " "``Py_None`` or a tuple of cell objects." @@ -167,7 +175,7 @@ msgstr "" "Establece el cierre asociado con el objeto función *op*. *cierre* debe ser " "``Py_None`` o una tupla de objetos celda." -#: ../Doc/c-api/function.rst:114 +#: ../Doc/c-api/function.rst:121 msgid "" "Return the annotations of the function object *op*. This can be a mutable " "dictionary or ``NULL``." @@ -175,7 +183,7 @@ msgstr "" "Retorna las anotaciones del objeto función *op*. Este puede ser un " "diccionario mutable o ``NULL``." -#: ../Doc/c-api/function.rst:120 +#: ../Doc/c-api/function.rst:127 msgid "" "Set the annotations for the function object *op*. *annotations* must be a " "dictionary or ``Py_None``." @@ -183,7 +191,14 @@ msgstr "" "Establece las anotaciones para el objeto función *op*. *annotations* debe " "ser un diccionario o ``Py_None``." -#: ../Doc/c-api/function.rst:128 +#: ../Doc/c-api/function.rst:141 +msgid "" +"These functions are similar to their ``PyFunction_Get*`` counterparts, but " +"do not do type checking. Passing anything other than an instance of :c:data:" +"`PyFunction_Type` is undefined behavior." +msgstr "" + +#: ../Doc/c-api/function.rst:148 msgid "" "Register *callback* as a function watcher for the current interpreter. " "Return an ID which may be passed to :c:func:`PyFunction_ClearWatcher`. In " @@ -195,47 +210,59 @@ msgstr "" "de error (por ejemplo, no hay más IDs de observador disponibles), retorna " "``-1`` y establece una excepción." -#: ../Doc/c-api/function.rst:138 +#: ../Doc/c-api/function.rst:158 msgid "" -"Clear watcher identified by *watcher_id* previously returned " -"from :c:func:`PyFunction_AddWatcher` for the current interpreter. Return " -"``0`` on success, or ``-1`` and set an exception on error (e.g. if the " -"given *watcher_id* was never registered.)" +"Clear watcher identified by *watcher_id* previously returned from :c:func:" +"`PyFunction_AddWatcher` for the current interpreter. Return ``0`` on " +"success, or ``-1`` and set an exception on error (e.g. if the given " +"*watcher_id* was never registered.)" msgstr "" -"Limpia el observador identificado por *watcher_id* previamente retornado " -"de :c:func:`PyFunction_AddWatcher` para el intérprete actual. Retorna ``0`` " -"en caso de éxito, o ``-1`` y establece una excepción en caso de error (por " +"Limpia el observador identificado por *watcher_id* previamente retornado de :" +"c:func:`PyFunction_AddWatcher` para el intérprete actual. Retorna ``0`` en " +"caso de éxito, o ``-1`` y establece una excepción en caso de error (por " "ejemplo, si el *watcher_id* dado nunca fue registrado)." -#: ../Doc/c-api/function.rst:148 -msgid "" -"Enumeration of possible function watcher events: - " -"``PyFunction_EVENT_CREATE`` - ``PyFunction_EVENT_DESTROY`` - " -"``PyFunction_EVENT_MODIFY_CODE`` - ``PyFunction_EVENT_MODIFY_DEFAULTS`` - " -"``PyFunction_EVENT_MODIFY_KWDEFAULTS``" +#: ../Doc/c-api/function.rst:168 +msgid "Enumeration of possible function watcher events:" msgstr "" -"Enumeración de posibles eventos de observador de función: - " -"``PyFunction_EVENT_CREATE`` - ``PyFunction_EVENT_DESTROY`` - " -"``PyFunction_EVENT_MODIFY_CODE`` - ``PyFunction_EVENT_MODIFY_DEFAULTS`` - " -"``PyFunction_EVENT_MODIFY_KWDEFAULTS``" -#: ../Doc/c-api/function.rst:160 +#: ../Doc/c-api/function.rst:170 +msgid "``PyFunction_EVENT_CREATE``" +msgstr "" + +#: ../Doc/c-api/function.rst:171 +msgid "``PyFunction_EVENT_DESTROY``" +msgstr "" + +#: ../Doc/c-api/function.rst:172 +msgid "``PyFunction_EVENT_MODIFY_CODE``" +msgstr "" + +#: ../Doc/c-api/function.rst:173 +msgid "``PyFunction_EVENT_MODIFY_DEFAULTS``" +msgstr "" + +#: ../Doc/c-api/function.rst:174 +msgid "``PyFunction_EVENT_MODIFY_KWDEFAULTS``" +msgstr "" + +#: ../Doc/c-api/function.rst:181 msgid "Type of a function watcher callback function." msgstr "Tipo de una función callback de observador de función." -#: ../Doc/c-api/function.rst:162 +#: ../Doc/c-api/function.rst:183 msgid "" "If *event* is ``PyFunction_EVENT_CREATE`` or ``PyFunction_EVENT_DESTROY`` " -"then *new_value* will be ``NULL``. Otherwise, *new_value* will hold " -"a :term:`borrowed reference` to the new value that is about to be stored in " -"*func* for the attribute that is being modified." +"then *new_value* will be ``NULL``. Otherwise, *new_value* will hold a :term:" +"`borrowed reference` to the new value that is about to be stored in *func* " +"for the attribute that is being modified." msgstr "" "Si *event* es ``PyFunction_EVENT_CREATE`` o ``PyFunction_EVENT_DESTROY`` " "entonces *new_value* será ``NULL``. De lo contrario, *new_value* mantendrá " "una :term:`referencia prestada` al nuevo valor que está a punto de " "almacenarse en *func* para el atributo que se está modificando." -#: ../Doc/c-api/function.rst:167 +#: ../Doc/c-api/function.rst:188 msgid "" "The callback may inspect but must not modify *func*; doing so could have " "unpredictable effects, including infinite recursion." @@ -243,10 +270,11 @@ msgstr "" "El callback puede inspeccionar pero no debe modificar *func*; hacerlo podría " "tener efectos impredecibles, incluyendo recursión infinita." -#: ../Doc/c-api/function.rst:170 +#: ../Doc/c-api/function.rst:191 +#, fuzzy 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. " @@ -264,7 +292,7 @@ msgstr "" "ejecución dependiendo de las decisiones de optimización, no cambia la " "semántica del código Python que se está ejecutando." -#: ../Doc/c-api/function.rst:179 +#: ../Doc/c-api/function.rst:200 msgid "" "If *event* is ``PyFunction_EVENT_DESTROY``, Taking a reference in the " "callback to the about-to-be-destroyed function will resurrect it, preventing " @@ -277,17 +305,17 @@ msgstr "" "tarde, cualquier callback observador activo en ese momento será llamado de " "nuevo." -#: ../Doc/c-api/function.rst:184 +#: ../Doc/c-api/function.rst:205 msgid "" "If the callback sets an exception, it must return ``-1``; this exception " -"will be printed as an unraisable exception " -"using :c:func:`PyErr_WriteUnraisable`. Otherwise it should return ``0``." +"will be printed as an unraisable exception using :c:func:" +"`PyErr_WriteUnraisable`. Otherwise it should return ``0``." msgstr "" "Si el callback establece una excepción, debe retornar ``-1``; esta excepción " -"se imprimirá como una excepción no lanzable " -"usando :c:func:`PyErr_WriteUnraisable`. De lo contrario debe retornar ``0``." +"se imprimirá como una excepción no lanzable usando :c:func:" +"`PyErr_WriteUnraisable`. De lo contrario debe retornar ``0``." -#: ../Doc/c-api/function.rst:188 +#: ../Doc/c-api/function.rst:209 msgid "" "There may already be a pending exception set on entry to the callback. In " "this case, the callback should return ``0`` with the same exception still " @@ -312,3 +340,14 @@ msgstr "función" #: ../Doc/c-api/function.rst:20 msgid "MethodType (in module types)" msgstr "MethodType (en module types)" + +#~ msgid "" +#~ "Enumeration of possible function watcher events: - " +#~ "``PyFunction_EVENT_CREATE`` - ``PyFunction_EVENT_DESTROY`` - " +#~ "``PyFunction_EVENT_MODIFY_CODE`` - ``PyFunction_EVENT_MODIFY_DEFAULTS`` - " +#~ "``PyFunction_EVENT_MODIFY_KWDEFAULTS``" +#~ msgstr "" +#~ "Enumeración de posibles eventos de observador de función: - " +#~ "``PyFunction_EVENT_CREATE`` - ``PyFunction_EVENT_DESTROY`` - " +#~ "``PyFunction_EVENT_MODIFY_CODE`` - ``PyFunction_EVENT_MODIFY_DEFAULTS`` - " +#~ "``PyFunction_EVENT_MODIFY_KWDEFAULTS``" diff --git a/c-api/gcsupport.po b/c-api/gcsupport.po index 0e2615e57a..0a046f8461 100644 --- a/c-api/gcsupport.po +++ b/c-api/gcsupport.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-10-07 00:51-0600\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.7\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/gcsupport.rst:6 msgid "Supporting Cyclic Garbage Collection" @@ -56,7 +55,7 @@ msgstr "" "tp_traverse`. Si las instancias del tipo son mutables, también se debe " "proporcionar una implementación a :c:member:`~PyTypeObject.tp_clear`." -#: ../Doc/c-api/gcsupport.rst:24 +#: ../Doc/c-api/gcsupport.rst:21 msgid ":c:macro:`Py_TPFLAGS_HAVE_GC`" msgstr ":c:macro:`Py_TPFLAGS_HAVE_GC`" @@ -150,7 +149,43 @@ msgstr "" "Análogo a :c:macro:`PyObject_New` pero para objetos de contenedor con el " "*flag* :c:macro:`Py_TPFLAGS_HAVE_GC` establecido." -#: ../Doc/c-api/gcsupport.rst:62 +#: ../Doc/c-api/gcsupport.rst:60 ../Doc/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 "" + +#: ../Doc/c-api/gcsupport.rst:63 ../Doc/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 "" + +#: ../Doc/c-api/gcsupport.rst:67 ../Doc/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 "" + +#: ../Doc/c-api/gcsupport.rst:73 ../Doc/c-api/gcsupport.rst:97 +msgid ":c:func:`PyObject_GC_Del`" +msgstr "" + +#: ../Doc/c-api/gcsupport.rst:74 +msgid ":c:macro:`PyObject_New`" +msgstr "" + +#: ../Doc/c-api/gcsupport.rst:75 ../Doc/c-api/gcsupport.rst:99 +#: ../Doc/c-api/gcsupport.rst:193 +msgid ":c:func:`PyType_GenericAlloc`" +msgstr "" + +#: ../Doc/c-api/gcsupport.rst:76 ../Doc/c-api/gcsupport.rst:100 +msgid ":c:member:`~PyTypeObject.tp_alloc`" +msgstr "" + +#: ../Doc/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." @@ -158,19 +193,23 @@ msgstr "" "Análogo a :c:macro:`PyObject_NewVar` pero para objetos de contenedor con el " "*flag* :c:macro:`Py_TPFLAGS_HAVE_GC` establecido." -#: ../Doc/c-api/gcsupport.rst:67 +#: ../Doc/c-api/gcsupport.rst:98 +msgid ":c:macro:`PyObject_NewVar`" +msgstr "" + +#: ../Doc/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`). " "The allocated memory is initialized to zeros, except for the :c:type:`Python " "object header `." msgstr "" -"Análogo a :c:macro:`PyObject_GC_New` pero asigna *extra_size* bytes al " -"final del objeto (en el desplazamiento :c:member:`~PyTypeObject." -"tp_basicsize`). La memoria asignada se inicializa a ceros, excepto para el :" -"c:type:`encabezado del objeto Python `." +"Análogo a :c:macro:`PyObject_GC_New` pero asigna *extra_size* bytes al final " +"del objeto (en el desplazamiento :c:member:`~PyTypeObject.tp_basicsize`). La " +"memoria asignada se inicializa a ceros, excepto para el :c:type:`encabezado " +"del objeto Python `." -#: ../Doc/c-api/gcsupport.rst:73 +#: ../Doc/c-api/gcsupport.rst:111 msgid "" "The extra data will be deallocated with the object, but otherwise it is not " "managed by Python." @@ -178,7 +217,14 @@ msgstr "" "Los datos extras se desasignarán con el objeto, pero por lo demás no se " "gestionan por Python." -#: ../Doc/c-api/gcsupport.rst:77 +#: ../Doc/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 "" + +#: ../Doc/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 " @@ -190,7 +236,7 @@ msgstr "" "asignar un número variable de campos, se recomienda usar en su lugar :c:type:" "`PyVarObject` y :c:member:`~PyTypeObject.tp_itemsize`." -#: ../Doc/c-api/gcsupport.rst:88 +#: ../Doc/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 " @@ -200,7 +246,7 @@ msgstr "" "Retorna el objeto redimensionado de tipo ``TYPE*`` (se refiere a cualquier " "tipo de C) o ``NULL`` en caso de falla." -#: ../Doc/c-api/gcsupport.rst:92 +#: ../Doc/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`." @@ -208,7 +254,7 @@ msgstr "" "*op* debe ser de tipo :c:expr:`PyVarObject *` y aún no debe ser rastreado " "por el recolector. *newsize* debe ser de tipo :c:type:`Py_ssize_t`." -#: ../Doc/c-api/gcsupport.rst:99 +#: ../Doc/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 " @@ -223,7 +269,7 @@ msgstr "" "por :c:member:`~PyTypeObject.tp_traverse` se vuelven válidos, generalmente " "cerca del final del constructor." -#: ../Doc/c-api/gcsupport.rst:108 +#: ../Doc/c-api/gcsupport.rst:150 msgid "" "Returns non-zero if the object implements the garbage collector protocol, " "otherwise returns 0." @@ -231,7 +277,7 @@ msgstr "" "Retorna un valor distinto de cero si el objeto implementa el protocolo del " "recolector de basura; de lo contrario, retorna 0." -#: ../Doc/c-api/gcsupport.rst:111 +#: ../Doc/c-api/gcsupport.rst:153 msgid "" "The object cannot be tracked by the garbage collector if this function " "returns 0." @@ -239,7 +285,7 @@ msgstr "" "El recolector de basura no puede rastrear el objeto si esta función retorna " "0." -#: ../Doc/c-api/gcsupport.rst:116 +#: ../Doc/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." @@ -247,11 +293,11 @@ msgstr "" "Retorna 1 si el tipo de objeto de *op* implementa el protocolo GC y el " "recolector de basura está rastreando *op* y 0 en caso contrario." -#: ../Doc/c-api/gcsupport.rst:119 +#: ../Doc/c-api/gcsupport.rst:161 msgid "This is analogous to the Python function :func:`gc.is_tracked`." msgstr "Esto es análogo a la función de Python :func:`gc.is_tracked`." -#: ../Doc/c-api/gcsupport.rst:126 +#: ../Doc/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." @@ -259,11 +305,11 @@ msgstr "" "Retorna 1 si el tipo de objeto de *op* implementa el protocolo GC y *op* ya " "ha sido finalizado por el recolector de basura y 0 en caso contrario." -#: ../Doc/c-api/gcsupport.rst:129 +#: ../Doc/c-api/gcsupport.rst:171 msgid "This is analogous to the Python function :func:`gc.is_finalized`." msgstr "Esto es análogo a la función de Python :func:`gc.is_finalized`." -#: ../Doc/c-api/gcsupport.rst:136 +#: ../Doc/c-api/gcsupport.rst:178 msgid "" "Releases memory allocated to an object using :c:macro:`PyObject_GC_New` or :" "c:macro:`PyObject_GC_NewVar`." @@ -271,7 +317,37 @@ msgstr "" "Libera memoria asignada a un objeto usando :c:macro:`PyObject_GC_New` o :c:" "macro:`PyObject_GC_NewVar`." -#: ../Doc/c-api/gcsupport.rst:142 +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/gcsupport.rst:190 +msgid ":c:func:`PyObject_Free` is the non-GC equivalent of this function." +msgstr "" + +#: ../Doc/c-api/gcsupport.rst:191 +#, fuzzy +msgid ":c:macro:`PyObject_GC_New`" +msgstr ":c:macro:`Py_TPFLAGS_HAVE_GC`" + +#: ../Doc/c-api/gcsupport.rst:192 +msgid ":c:macro:`PyObject_GC_NewVar`" +msgstr "" + +#: ../Doc/c-api/gcsupport.rst:194 +msgid ":c:member:`~PyTypeObject.tp_free`" +msgstr "" + +#: ../Doc/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 " @@ -288,7 +364,7 @@ msgstr "" "cualquiera de los campos utilizados por el manejador :c:member:" "`~PyTypeObject.tp_traverse` no sea válido." -#: ../Doc/c-api/gcsupport.rst:151 +#: ../Doc/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." @@ -296,7 +372,7 @@ msgstr "" "Los macros :c:func:`!_PyObject_GC_TRACK` y :c:func:`!_PyObject_GC_UNTRACK` " "se han eliminado de la API pública de C." -#: ../Doc/c-api/gcsupport.rst:154 +#: ../Doc/c-api/gcsupport.rst:211 msgid "" "The :c:member:`~PyTypeObject.tp_traverse` handler accepts a function " "parameter of this type:" @@ -304,7 +380,7 @@ msgstr "" "El manejador :c:member:`~PyTypeObject.tp_traverse` acepta un parámetro de " "función de este tipo:" -#: ../Doc/c-api/gcsupport.rst:159 +#: ../Doc/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 " @@ -320,7 +396,7 @@ msgstr "" "funciones visitantes para implementar la detección de basura cíclica; No se " "espera que los usuarios necesiten escribir sus propias funciones visitante." -#: ../Doc/c-api/gcsupport.rst:166 +#: ../Doc/c-api/gcsupport.rst:223 msgid "" "The :c:member:`~PyTypeObject.tp_traverse` handler must have the following " "type:" @@ -328,7 +404,7 @@ msgstr "" "El manejador :c:member:`~PyTypeObject.tp_traverse` debe tener el siguiente " "tipo:" -#: ../Doc/c-api/gcsupport.rst:171 +#: ../Doc/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 " @@ -344,7 +420,7 @@ msgstr "" "de objeto ``NULL``. Si *visit* retorna un valor distinto de cero, ese valor " "debe retornarse inmediatamente." -#: ../Doc/c-api/gcsupport.rst:178 +#: ../Doc/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:" @@ -356,18 +432,21 @@ msgstr "" "macro, la implementación :c:member:`~PyTypeObject.tp_traverse` debe nombrar " "sus argumentos exactamente *visit* y *arg*:" -#: ../Doc/c-api/gcsupport.rst:185 +#: ../Doc/c-api/gcsupport.rst:242 +#, fuzzy 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 "" "Si *o* no es ``NULL``, llama a la devolución de llamada (*callback*) " "*visit*, con argumentos *o* y *arg*. Si *visit* retorna un valor distinto de " "cero, lo retorna. Usando este macro, los manejadores :c:member:" "`~PyTypeObject.tp_traverse` tienen el siguiente aspecto:" -#: ../Doc/c-api/gcsupport.rst:190 +#: ../Doc/c-api/gcsupport.rst:247 +#, python-brace-format msgid "" "static int\n" "my_traverse(Noddy *self, visitproc visit, void *arg)\n" @@ -385,7 +464,7 @@ msgstr "" " return 0;\n" "}" -#: ../Doc/c-api/gcsupport.rst:198 +#: ../Doc/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." @@ -393,7 +472,7 @@ msgstr "" "El manejador :c:member:`~PyTypeObject.tp_clear` debe ser del tipo :c:type:" "`query`, o ``NULL`` si el objeto es inmutable." -#: ../Doc/c-api/gcsupport.rst:204 +#: ../Doc/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 " @@ -409,11 +488,11 @@ msgstr "" "`Py_DECREF` en una referencia). El recolector de basura llamará a este " "método si detecta que este objeto está involucrado en un ciclo de referencia." -#: ../Doc/c-api/gcsupport.rst:213 +#: ../Doc/c-api/gcsupport.rst:270 msgid "Controlling the Garbage Collector State" msgstr "Controlar el estado del recolector de basura" -#: ../Doc/c-api/gcsupport.rst:215 +#: ../Doc/c-api/gcsupport.rst:272 msgid "" "The C-API provides the following functions for controlling garbage " "collection runs." @@ -421,7 +500,7 @@ msgstr "" "La C-API proporciona las siguientes funciones para controlar las ejecuciones " "de recolección de basura." -#: ../Doc/c-api/gcsupport.rst:220 +#: ../Doc/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.)" @@ -430,7 +509,7 @@ msgstr "" "habilitado. (Tenga en cuenta que :func:`gc.collect` lo ejecuta " "incondicionalmente)." -#: ../Doc/c-api/gcsupport.rst:223 +#: ../Doc/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, " @@ -443,7 +522,7 @@ msgstr "" "recolección de basura se pasan a :data:`sys.unraisablehook`. Esta función no " "genera excepciones." -#: ../Doc/c-api/gcsupport.rst:233 +#: ../Doc/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." @@ -451,7 +530,7 @@ msgstr "" "Habilita el recolector de basura: similar a :func:`gc.enable`. Retorna el " "estado anterior, 0 para deshabilitado y 1 para habilitado." -#: ../Doc/c-api/gcsupport.rst:241 +#: ../Doc/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." @@ -459,7 +538,7 @@ msgstr "" "Deshabilita el recolector de basura: similar a :func:`gc.disable`. Retorna " "el estado anterior, 0 para deshabilitado y 1 para habilitado." -#: ../Doc/c-api/gcsupport.rst:249 +#: ../Doc/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." @@ -467,11 +546,11 @@ msgstr "" "Consulta el estado del recolector de basura: similar a :func:`gc.isenabled`. " "Retorna el estado actual, 0 para deshabilitado y 1 para habilitado." -#: ../Doc/c-api/gcsupport.rst:256 +#: ../Doc/c-api/gcsupport.rst:313 msgid "Querying Garbage Collector State" msgstr "Consultar el estado del recolector de basura" -#: ../Doc/c-api/gcsupport.rst:258 +#: ../Doc/c-api/gcsupport.rst:315 msgid "" "The C-API provides the following interface for querying information about " "the garbage collector." @@ -479,7 +558,7 @@ msgstr "" "La C-API proporciona la siguiente interfaz para consultar información sobre " "el recolector de basura." -#: ../Doc/c-api/gcsupport.rst:263 +#: ../Doc/c-api/gcsupport.rst:320 msgid "" "Run supplied *callback* on all live GC-capable objects. *arg* is passed " "through to all invocations of *callback*." @@ -487,7 +566,7 @@ msgstr "" "Ejecuta la *callback* suministrada en todos los objetos activos con " "capacidad para GC. *arg* se pasa a todas las invocaciones de *callback*." -#: ../Doc/c-api/gcsupport.rst:267 +#: ../Doc/c-api/gcsupport.rst:324 msgid "" "If new objects are (de)allocated by the callback it is undefined if they " "will be visited." @@ -495,7 +574,7 @@ msgstr "" "Si la devolución de llamada (des)asigna nuevos objetos, no está definido si " "serán visitados." -#: ../Doc/c-api/gcsupport.rst:270 +#: ../Doc/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 " @@ -506,12 +585,13 @@ msgstr "" "comportamiento indefinido, por ejemplo, visitar los mismos objetos varias " "veces o no visitarlos en absoluto." -#: ../Doc/c-api/gcsupport.rst:278 +#: ../Doc/c-api/gcsupport.rst:335 +#, fuzzy msgid "" "Type of the visitor function to be passed to :c:func:" "`PyUnstable_GC_VisitObjects`. *arg* is the same as the *arg* passed to " -"``PyUnstable_GC_VisitObjects``. Return ``0`` to continue iteration, return " -"``1`` to stop iteration. Other return values are reserved for now so " +"``PyUnstable_GC_VisitObjects``. Return ``1`` to continue iteration, return " +"``0`` to stop iteration. Other return values are reserved for now so " "behavior on returning anything else is undefined." msgstr "" "Tipo de la función de visitante que se pasará a :c:func:" diff --git a/c-api/hash.po b/c-api/hash.po index ebf9b56ae6..3db90bd0ac 100644 --- a/c-api/hash.po +++ b/c-api/hash.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Python en Español 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/hash.rst:4 msgid "PyHash API" @@ -63,6 +63,10 @@ msgstr "" msgid "Hash function definition used by :c:func:`PyHash_GetFuncDef`." msgstr "" +#: ../Doc/c-api/hash.rst:56 +msgid "Hash function." +msgstr "" + #: ../Doc/c-api/hash.rst:60 msgid "Hash function name (UTF-8 encoded string)." msgstr "" @@ -93,12 +97,34 @@ msgstr "" msgid "The function cannot fail: it cannot return ``-1``." msgstr "" -#: ../Doc/c-api/hash.rst:94 +#: ../Doc/c-api/hash.rst:95 +msgid "" +"Compute and return the hash value of a buffer of *len* bytes starting at " +"address *ptr*. The hash is guaranteed to match that of :class:`bytes`, :" +"class:`memoryview`, and other built-in objects that implement the :ref:" +"`buffer protocol `." +msgstr "" + +#: ../Doc/c-api/hash.rst:100 +msgid "" +"Use this function to implement hashing for immutable objects whose :c:member:" +"`~PyTypeObject.tp_richcompare` function compares to another object's buffer." +msgstr "" + +#: ../Doc/c-api/hash.rst:104 +msgid "*len* must be greater than or equal to ``0``." +msgstr "" + +#: ../Doc/c-api/hash.rst:106 +msgid "This function always succeeds." +msgstr "" + +#: ../Doc/c-api/hash.rst:113 msgid "" "Generic hashing function that is meant to be put into a type object's " "``tp_hash`` slot. Its result only depends on the object's identity." msgstr "" -#: ../Doc/c-api/hash.rst:99 +#: ../Doc/c-api/hash.rst:118 msgid "In CPython, it is equivalent to :c:func:`Py_HashPointer`." msgstr "" diff --git a/c-api/import.po b/c-api/import.po index 85c5000025..0c4de1154a 100644 --- a/c-api/import.po +++ b/c-api/import.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2022-10-28 17:44+0200\n" "Last-Translator: Erick G. Islas-Osuna \n" "Language: es\n" @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/import.rst:6 msgid "Importing Modules" @@ -27,11 +27,11 @@ msgstr "Importando módulos" #: ../Doc/c-api/import.rst:16 msgid "" -"This is a wrapper around :c:func:`PyImport_Import()` which takes " -"a :c:expr:`const char *` as an argument instead of a :c:expr:`PyObject *`." +"This is a wrapper around :c:func:`PyImport_Import()` which takes a :c:expr:" +"`const char *` as an argument instead of a :c:expr:`PyObject *`." msgstr "" -"Esta es una envoltura alrededor de :c:func:`PyImport_Import()` que toma " -"un :c:expr:`const char *` como argumento en lugar de un :c:expr:`PyObject *`." +"Esta es una envoltura alrededor de :c:func:`PyImport_Import()` que toma un :" +"c:expr:`const char *` como argumento en lugar de un :c:expr:`PyObject *`." #: ../Doc/c-api/import.rst:21 msgid "This function is a deprecated alias of :c:func:`PyImport_ImportModule`." @@ -64,10 +64,9 @@ msgstr "" #: ../Doc/c-api/import.rst:40 ../Doc/c-api/import.rst:56 msgid "" "The return value is a new reference to the imported module or top-level " -"package, or ``NULL`` with an exception set on failure. Like " -"for :func:`__import__`, the return value when a submodule of a package was " -"requested is normally the top-level package, unless a non-empty *fromlist* " -"was given." +"package, or ``NULL`` with an exception set on failure. Like for :func:" +"`__import__`, the return value when a submodule of a package was requested " +"is normally the top-level package, unless a non-empty *fromlist* was given." msgstr "" "El valor de retorno es una nueva referencia al módulo importado o paquete de " "nivel superior, o ``NULL`` con una excepción establecida en caso de error. " @@ -77,8 +76,8 @@ msgstr "" #: ../Doc/c-api/import.rst:46 msgid "" -"Failing imports remove incomplete module objects, like " -"with :c:func:`PyImport_ImportModule`." +"Failing imports remove incomplete module objects, like with :c:func:" +"`PyImport_ImportModule`." msgstr "" "Las importaciones que fallan eliminan objetos de módulo incompletos, como " "con :c:func:`PyImport_ImportModule`." @@ -90,8 +89,8 @@ msgid "" "calls this function directly." msgstr "" "Importa un módulo. Esto se describe mejor haciendo referencia a la función " -"Python incorporada :func:`__import__`, ya que la función " -"estándar :func:`__import__` llama a esta función directamente." +"Python incorporada :func:`__import__`, ya que la función estándar :func:" +"`__import__` llama a esta función directamente." #: ../Doc/c-api/import.rst:66 msgid "" @@ -162,10 +161,10 @@ msgstr "El nombre del módulo *name* se decodifica desde UTF-8." #: ../Doc/c-api/import.rst:102 msgid "" "This function does not load or import the module; if the module wasn't " -"already loaded, you will get an empty module object. " -"Use :c:func:`PyImport_ImportModule` or one of its variants to import a " -"module. Package structures implied by a dotted name for *name* are not " -"created if not already present." +"already loaded, you will get an empty module object. Use :c:func:" +"`PyImport_ImportModule` or one of its variants to import a module. Package " +"structures implied by a dotted name for *name* are not created if not " +"already present." msgstr "" "Esta función no carga ni importa el módulo; si el módulo no estaba cargado, " "obtendrás un objeto de módulo vacío. Utiliza :c:func:`PyImport_ImportModule` " @@ -178,16 +177,16 @@ msgid "" "Similar to :c:func:`PyImport_AddModuleRef`, but return a :term:`borrowed " "reference` and *name* is a Python :class:`str` object." msgstr "" -"Similar a :c:func:`PyImport_AddModuleRef`, pero retorna " -"una :term:`referencia prestada` y *name* es un objeto Python :class:`str`." +"Similar a :c:func:`PyImport_AddModuleRef`, pero retorna una :term:" +"`referencia prestada` y *name* es un objeto Python :class:`str`." #: ../Doc/c-api/import.rst:121 msgid "" "Similar to :c:func:`PyImport_AddModuleRef`, but return a :term:`borrowed " "reference`." msgstr "" -"Similar a :c:func:`PyImport_AddModuleRef`, pero retorna " -"una :term:`referencia prestada`." +"Similar a :c:func:`PyImport_AddModuleRef`, pero retorna una :term:" +"`referencia prestada`." #: ../Doc/c-api/import.rst:129 msgid "" @@ -196,55 +195,57 @@ msgid "" "function :func:`compile`, load the module. Return a new reference to the " "module object, or ``NULL`` with an exception set if an error occurred. " "*name* is removed from :data:`sys.modules` in error cases, even if *name* " -"was already in :data:`sys.modules` on entry " -"to :c:func:`PyImport_ExecCodeModule`. Leaving incompletely initialized " -"modules in :data:`sys.modules` is dangerous, as imports of such modules have " -"no way to know that the module object is an unknown (and probably damaged " -"with respect to the module author's intents) state." +"was already in :data:`sys.modules` on entry to :c:func:" +"`PyImport_ExecCodeModule`. Leaving incompletely initialized modules in :" +"data:`sys.modules` is dangerous, as imports of such modules have no way to " +"know that the module object is an unknown (and probably damaged with respect " +"to the module author's intents) state." msgstr "" "Dado un nombre de módulo (posiblemente de la forma ``package.module``) y un " "objeto código leído desde un archivo de *bytecode* de Python u obtenido de " "la función incorporada :func:`compile`, carga el módulo. Retorna una nueva " "referencia al objeto módulo, o ``NULL`` con una excepción establecida si se " "produjo un error. *name* se elimina de :data:`sys.modules` en casos de " -"error, incluso si *name* ya estaba en :data:`sys.modules` en la entrada " -"a :c:func:`PyImport_ExecCodeModule`. Dejar módulos inicializados de forma " +"error, incluso si *name* ya estaba en :data:`sys.modules` en la entrada a :c:" +"func:`PyImport_ExecCodeModule`. Dejar módulos inicializados de forma " "incompleta en :data:`sys.modules` es peligroso, ya que las importaciones de " "dichos módulos no tienen forma de saber que el objeto del módulo es un " "estado desconocido (y probablemente dañado con respecto a las intenciones " "del autor del módulo)." #: ../Doc/c-api/import.rst:139 +#, fuzzy msgid "" -"The module's :attr:`__spec__` and :attr:`__loader__` will be set, if not set " -"already, with the appropriate values. The spec's loader will be set to the " -"module's ``__loader__`` (if set) and to an instance " +"The module's :attr:`~module.__spec__` and :attr:`~module.__loader__` will be " +"set, if not set already, with the appropriate values. The spec's loader " +"will be set to the module's :attr:`!__loader__` (if set) and to an instance " "of :class:`~importlib.machinery.SourceFileLoader` otherwise." msgstr "" "Los :attr:`__spec__` y :attr:`__loader__` del módulo se establecerán, si no " "se han configurado ya, con los valores apropiados. El cargador de la " "especificación se establecerá en el ``__loader__`` del módulo (si está " -"configurado) y en una instancia " -"de :class:`~importlib.machinery.SourceFileLoader` de lo contrario." +"configurado) y en una instancia de :class:`~importlib.machinery." +"SourceFileLoader` de lo contrario." #: ../Doc/c-api/import.rst:144 +#, fuzzy msgid "" -"The module's :attr:`__file__` attribute will be set to the code " -"object's :attr:`~codeobject.co_filename`. If applicable, :attr:`__cached__` " -"will also be set." +"The module's :attr:`~module.__file__` attribute will be set to the code " +"object's :attr:`~codeobject.co_filename`. If applicable, :attr:`~module." +"__cached__` will also be set." msgstr "" -"El atributo :attr:`__file__` del módulo se establecerá " -"al :attr:`~codeobject.co_filename` del objeto código. Si corresponde, " -"también se establecerá :attr:`__cached__`." +"El atributo :attr:`__file__` del módulo se establecerá al :attr:`~codeobject." +"co_filename` del objeto código. Si corresponde, también se establecerá :attr:" +"`__cached__`." #: ../Doc/c-api/import.rst:148 msgid "" -"This function will reload the module if it was already imported. " -"See :c:func:`PyImport_ReloadModule` for the intended way to reload a module." +"This function will reload the module if it was already imported. See :c:" +"func:`PyImport_ReloadModule` for the intended way to reload a module." msgstr "" -"Esta función volverá a cargar el módulo si ya se importó. " -"Consulte :c:func:`PyImport_ReloadModule` para conocer la forma prevista de " -"volver a cargar un módulo." +"Esta función volverá a cargar el módulo si ya se importó. Consulte :c:func:" +"`PyImport_ReloadModule` para conocer la forma prevista de volver a cargar un " +"módulo." #: ../Doc/c-api/import.rst:151 msgid "" @@ -256,24 +257,26 @@ msgstr "" #: ../Doc/c-api/import.rst:154 msgid "" -"See also :c:func:`PyImport_ExecCodeModuleEx` " -"and :c:func:`PyImport_ExecCodeModuleWithPathnames`." +"See also :c:func:`PyImport_ExecCodeModuleEx` and :c:func:" +"`PyImport_ExecCodeModuleWithPathnames`." msgstr "" -"Ver también :c:func:`PyImport_ExecCodeModuleEx` " -"y :c:func:`PyImport_ExecCodeModuleWithPathnames`." +"Ver también :c:func:`PyImport_ExecCodeModuleEx` y :c:func:" +"`PyImport_ExecCodeModuleWithPathnames`." #: ../Doc/c-api/import.rst:157 +#, fuzzy msgid "" -"The setting of :attr:`__cached__` and :attr:`__loader__` is deprecated. " -"See :class:`~importlib.machinery.ModuleSpec` for alternatives." +"The setting of :attr:`~module.__cached__` and :attr:`~module.__loader__` is " +"deprecated. See :class:`~importlib.machinery.ModuleSpec` for alternatives." msgstr "" "El establecimiento de :attr:`__cached__` y :attr:`__loader__` está obsoleto. " "Ver :class:`~importlib.machinery.ModuleSpec` para alternativas." #: ../Doc/c-api/import.rst:165 +#, fuzzy msgid "" -"Like :c:func:`PyImport_ExecCodeModule`, but the :attr:`__file__` attribute " -"of the module object is set to *pathname* if it is non-``NULL``." +"Like :c:func:`PyImport_ExecCodeModule`, but the :attr:`~module.__file__` " +"attribute of the module object is set to *pathname* if it is non-``NULL``." msgstr "" "Como :c:func:`PyImport_ExecCodeModule`, pero el atributo :attr:`__file__` " "del objeto del módulo se establece en *pathname* si no es ``NULL``." @@ -283,22 +286,24 @@ msgid "See also :c:func:`PyImport_ExecCodeModuleWithPathnames`." msgstr "Ver también :c:func:`PyImport_ExecCodeModuleWithPathnames`." #: ../Doc/c-api/import.rst:173 +#, fuzzy msgid "" -"Like :c:func:`PyImport_ExecCodeModuleEx`, but the :attr:`__cached__` " +"Like :c:func:`PyImport_ExecCodeModuleEx`, but the :attr:`~module.__cached__` " "attribute of the module object is set to *cpathname* if it is non-``NULL``. " "Of the three functions, this is the preferred one to use." msgstr "" -"Como :c:func:`PyImport_ExecCodeModuleEx`, pero el " -"atributo :attr:`__cached__` del objeto módulo se establece en *cpathname* si " -"no es ``NULL``. De las tres funciones, esta es la recomendada para usar." +"Como :c:func:`PyImport_ExecCodeModuleEx`, pero el atributo :attr:" +"`__cached__` del objeto módulo se establece en *cpathname* si no es " +"``NULL``. De las tres funciones, esta es la recomendada para usar." #: ../Doc/c-api/import.rst:179 +#, fuzzy msgid "" -"Setting :attr:`__cached__` is deprecated. " -"See :class:`~importlib.machinery.ModuleSpec` for alternatives." +"Setting :attr:`~module.__cached__` is deprecated. See :class:`~importlib." +"machinery.ModuleSpec` for alternatives." msgstr "" -"El establecimiento de :attr:`__cached__` está obsoleto. " -"Ver :class:`~importlib.machinery.ModuleSpec` para alternativas." +"El establecimiento de :attr:`__cached__` está obsoleto. Ver :class:" +"`~importlib.machinery.ModuleSpec` para alternativas." #: ../Doc/c-api/import.rst:186 msgid "" @@ -352,8 +357,8 @@ msgstr "" #: ../Doc/c-api/import.rst:219 msgid "" -"Return the dictionary used for the module administration (a.k.a. " -"``sys.modules``). Note that this is a per-interpreter variable." +"Return the dictionary used for the module administration (a.k.a. ``sys." +"modules``). Note that this is a per-interpreter variable." msgstr "" "Retorna el diccionario utilizado para la administración del módulo (también " "conocido como ``sys.modules``). Tenga en cuenta que esta es una variable por " @@ -376,27 +381,26 @@ msgid "" "dict. If it wasn't yet cached, traverse :data:`sys.path_hooks` until a hook " "is found that can handle the path item. Return ``None`` if no hook could; " "this tells our caller that the :term:`path based finder` could not find a " -"finder for this path item. Cache the result " -"in :data:`sys.path_importer_cache`. Return a new reference to the finder " -"object." +"finder for this path item. Cache the result in :data:`sys." +"path_importer_cache`. Return a new reference to the finder object." msgstr "" "Retorna un objeto buscador para un elemento *path* :data:`sys.path`/:attr:`!" -"pkg.__path__`, posiblemente obteniéndolo del " -"diccionario :data:`sys.path_importer_cache`. Si aún no estaba en caché, " -"atraviesa :data:`sys.path_hooks` hasta que se encuentre un gancho (*hook*) " -"que pueda manejar el elemento de ruta. Retorna ``None`` si ningún gancho " -"(*hook*) podría; esto le dice a la persona que llama que :term:`path based " -"finder` no pudo encontrar un buscador para este elemento de ruta. Guarda en " -"el resultado (caché) en :data:`sys.path_importer_cache`. Retorna una nueva " -"referencia al objeto del buscador." +"pkg.__path__`, posiblemente obteniéndolo del diccionario :data:`sys." +"path_importer_cache`. Si aún no estaba en caché, atraviesa :data:`sys." +"path_hooks` hasta que se encuentre un gancho (*hook*) que pueda manejar el " +"elemento de ruta. Retorna ``None`` si ningún gancho (*hook*) podría; esto le " +"dice a la persona que llama que :term:`path based finder` no pudo encontrar " +"un buscador para este elemento de ruta. Guarda en el resultado (caché) en :" +"data:`sys.path_importer_cache`. Retorna una nueva referencia al objeto del " +"buscador." #: ../Doc/c-api/import.rst:243 msgid "" "Load a frozen module named *name*. Return ``1`` for success, ``0`` if the " "module is not found, and ``-1`` with an exception set if the initialization " -"failed. To access the imported module on a successful load, " -"use :c:func:`PyImport_ImportModule`. (Note the misnomer --- this function " -"would reload the module if it was already imported.)" +"failed. To access the imported module on a successful load, use :c:func:" +"`PyImport_ImportModule`. (Note the misnomer --- this function would reload " +"the module if it was already imported.)" msgstr "" "Carga un módulo congelado llamado *name*. Retorna ``1`` para el éxito, ``0`` " "si no se encuentra el módulo y ``-1`` con una excepción establecida si falla " @@ -420,8 +424,8 @@ msgstr "" msgid "" "This is the structure type definition for frozen module descriptors, as " "generated by the :program:`freeze` utility (see :file:`Tools/freeze/` in the " -"Python source distribution). Its definition, found in :file:`Include/" -"import.h`, is::" +"Python source distribution). Its definition, found in :file:`Include/import." +"h`, is::" msgstr "" "Esta es la definición del tipo de estructura para los descriptores de " "módulos congelados, según lo generado con la herramienta :program:`freeze` " @@ -429,6 +433,7 @@ msgstr "" "definición, que se encuentra en :file:`Include/import.h`, es::" #: ../Doc/c-api/import.rst:270 +#, python-brace-format msgid "" "struct _frozen {\n" " const char *name;\n" @@ -460,11 +465,11 @@ msgid "" "could play tricks with this to provide a dynamically created collection of " "frozen modules." msgstr "" -"Este puntero se inicializa para apuntar a un arreglo de " -"registros :c:struct:`_frozen`, terminado por uno cuyos registros son todos " -"``NULL`` o cero. Cuando se importa un módulo congelado, se busca en esta " -"tabla. El código de terceros podría jugar con esto para proporcionar una " -"colección de módulos congelados creada dinámicamente." +"Este puntero se inicializa para apuntar a un arreglo de registros :c:struct:" +"`_frozen`, terminado por uno cuyos registros son todos ``NULL`` o cero. " +"Cuando se importa un módulo congelado, se busca en esta tabla. El código de " +"terceros podría jugar con esto para proporcionar una colección de módulos " +"congelados creada dinámicamente." #: ../Doc/c-api/import.rst:291 msgid "" @@ -493,8 +498,8 @@ msgstr "" "incorporados. Cada una de estas estructuras proporciona el nombre y la " "función de inicialización de un módulo incorporado en el intérprete. El " "nombre es una cadena de caracteres codificada ASCII. Los programas que " -"incorporan Python pueden usar una matriz de estas estructuras junto " -"con :c:func:`PyImport_ExtendInittab` para proporcionar módulos integrados " +"incorporan Python pueden usar una matriz de estas estructuras junto con :c:" +"func:`PyImport_ExtendInittab` para proporcionar módulos integrados " "adicionales. La estructura se define en :file:`Include/import.h` como::" #: ../Doc/c-api/import.rst:309 @@ -508,12 +513,12 @@ msgstr "Función de inicialización para un módulo incorporado en el intérpret #: ../Doc/c-api/import.rst:318 msgid "" "Add a collection of modules to the table of built-in modules. The *newtab* " -"array must end with a sentinel entry which contains ``NULL`` for " -"the :c:member:`~_inittab.name` field; failure to provide the sentinel value " -"can result in a memory fault. Returns ``0`` on success or ``-1`` if " -"insufficient memory could be allocated to extend the internal table. In the " -"event of failure, no modules are added to the internal table. This must be " -"called before :c:func:`Py_Initialize`." +"array must end with a sentinel entry which contains ``NULL`` for the :c:" +"member:`~_inittab.name` field; failure to provide the sentinel value can " +"result in a memory fault. Returns ``0`` on success or ``-1`` if insufficient " +"memory could be allocated to extend the internal table. In the event of " +"failure, no modules are added to the internal table. This must be called " +"before :c:func:`Py_Initialize`." msgstr "" "Agrega una colección de módulos a la tabla de módulos integrados. El arreglo " "*newtab* debe terminar con una entrada centinela que contiene ``NULL`` para " @@ -529,9 +534,34 @@ msgid "" "or :c:func:`PyImport_ExtendInittab` must be called before each Python " "initialization." msgstr "" -"Si Python es inicializado múltiples veces, se debe " -"llamar :c:func:`PyImport_AppendInittab` o :c:func:`PyImport_ExtendInittab` " -"antes de cada inicialización de Python." +"Si Python es inicializado múltiples veces, se debe llamar :c:func:" +"`PyImport_AppendInittab` o :c:func:`PyImport_ExtendInittab` antes de cada " +"inicialización de Python." + +#: ../Doc/c-api/import.rst:332 +msgid "Import the module *mod_name* and get its attribute *attr_name*." +msgstr "" + +#: ../Doc/c-api/import.rst:334 +msgid "Names must be Python :class:`str` objects." +msgstr "" + +#: ../Doc/c-api/import.rst:336 +msgid "" +"Helper function combining :c:func:`PyImport_Import` and :c:func:" +"`PyObject_GetAttr`. For example, it can raise :exc:`ImportError` if the " +"module is not found, and :exc:`AttributeError` if the attribute doesn't " +"exist." +msgstr "" + +#: ../Doc/c-api/import.rst:345 +#, fuzzy +msgid "" +"Similar to :c:func:`PyImport_ImportModuleAttr`, but names are UTF-8 encoded " +"strings instead of Python :class:`str` objects." +msgstr "" +"Similar a :c:func:`PyImport_ImportModuleLevelObject`, pero el nombre es una " +"cadena de caracteres codificada UTF-8 en lugar de un objeto Unicode." #: ../Doc/c-api/import.rst:11 msgid "package variable" diff --git a/c-api/init.po b/c-api/init.po index 297d52deb6..5d7c6b4cf3 100644 --- a/c-api/init.po +++ b/c-api/init.po @@ -10,239 +10,289 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-10-14 13:14+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.6\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/init.rst:8 msgid "Initialization, Finalization, and Threads" msgstr "Inicialización, finalización e hilos" #: ../Doc/c-api/init.rst:10 -msgid "See also :ref:`Python Initialization Configuration `." +#, fuzzy +msgid "" +"See :ref:`Python Initialization Configuration ` for details on " +"how to configure the interpreter prior to initialization." msgstr "" "Consulte también :ref:`Configuración de inicialización de Python `." -#: ../Doc/c-api/init.rst:15 +#: ../Doc/c-api/init.rst:16 msgid "Before Python Initialization" msgstr "Antes de la inicialización de Python" -#: ../Doc/c-api/init.rst:17 +#: ../Doc/c-api/init.rst:18 msgid "" "In an application embedding Python, the :c:func:`Py_Initialize` function " "must be called before using any other Python/C API functions; with the " "exception of a few functions and the :ref:`global configuration variables " "`." msgstr "" -"En una aplicación que incorpora Python, se debe llamar a la " -"función :c:func:`Py_Initialize` antes de usar cualquier otra función de API " -"Python/C; con la excepción de algunas funciones y :ref:`variables de " -"configuración global `." +"En una aplicación que incorpora Python, se debe llamar a la función :c:func:" +"`Py_Initialize` antes de usar cualquier otra función de API Python/C; con la " +"excepción de algunas funciones y :ref:`variables de configuración global " +"`." -#: ../Doc/c-api/init.rst:22 +#: ../Doc/c-api/init.rst:23 msgid "" "The following functions can be safely called before Python is initialized:" msgstr "" "Las siguientes funciones se pueden invocar de forma segura antes de que se " "inicializa Python:" -#: ../Doc/c-api/init.rst:24 +#: ../Doc/c-api/init.rst:25 +msgid "Functions that initialize the interpreter:" +msgstr "" + +#: ../Doc/c-api/init.rst:27 +#, fuzzy +msgid ":c:func:`Py_Initialize`" +msgstr ":c:func:`Py_IsInitialized`" + +#: ../Doc/c-api/init.rst:28 +#, fuzzy +msgid ":c:func:`Py_InitializeEx`" +msgstr ":c:func:`Py_IsInitialized`" + +#: ../Doc/c-api/init.rst:29 +#, fuzzy +msgid ":c:func:`Py_InitializeFromConfig`" +msgstr ":c:func:`Py_IsInitialized`" + +#: ../Doc/c-api/init.rst:30 +#, fuzzy +msgid ":c:func:`Py_BytesMain`" +msgstr ":c:func:`Py_GetVersion`" + +#: ../Doc/c-api/init.rst:31 +#, fuzzy +msgid ":c:func:`Py_Main`" +msgstr ":c:func:`Py_GetVersion`" + +#: ../Doc/c-api/init.rst:32 +msgid "the runtime pre-initialization functions covered in :ref:`init-config`" +msgstr "" + +#: ../Doc/c-api/init.rst:34 msgid "Configuration functions:" msgstr "Funciones de configuración:" -#: ../Doc/c-api/init.rst:26 +#: ../Doc/c-api/init.rst:36 msgid ":c:func:`PyImport_AppendInittab`" msgstr ":c:func:`PyImport_AppendInittab`" -#: ../Doc/c-api/init.rst:27 +#: ../Doc/c-api/init.rst:37 msgid ":c:func:`PyImport_ExtendInittab`" msgstr ":c:func:`PyImport_ExtendInittab`" -#: ../Doc/c-api/init.rst:28 +#: ../Doc/c-api/init.rst:38 msgid ":c:func:`!PyInitFrozenExtensions`" msgstr ":c:func:`!PyInitFrozenExtensions`" -#: ../Doc/c-api/init.rst:29 +#: ../Doc/c-api/init.rst:39 msgid ":c:func:`PyMem_SetAllocator`" msgstr ":c:func:`PyMem_SetAllocator`" -#: ../Doc/c-api/init.rst:30 +#: ../Doc/c-api/init.rst:40 msgid ":c:func:`PyMem_SetupDebugHooks`" msgstr ":c:func:`PyMem_SetupDebugHooks`" -#: ../Doc/c-api/init.rst:31 +#: ../Doc/c-api/init.rst:41 msgid ":c:func:`PyObject_SetArenaAllocator`" msgstr ":c:func:`PyObject_SetArenaAllocator`" -#: ../Doc/c-api/init.rst:32 +#: ../Doc/c-api/init.rst:42 msgid ":c:func:`Py_SetProgramName`" msgstr ":c:func:`Py_SetProgramName`" -#: ../Doc/c-api/init.rst:33 +#: ../Doc/c-api/init.rst:43 msgid ":c:func:`Py_SetPythonHome`" msgstr ":c:func:`Py_SetPythonHome`" -#: ../Doc/c-api/init.rst:34 +#: ../Doc/c-api/init.rst:44 msgid ":c:func:`PySys_ResetWarnOptions`" msgstr ":c:func:`PySys_ResetWarnOptions`" -#: ../Doc/c-api/init.rst:36 +#: ../Doc/c-api/init.rst:45 +msgid "the configuration functions covered in :ref:`init-config`" +msgstr "" + +#: ../Doc/c-api/init.rst:47 msgid "Informative functions:" msgstr "Funciones informativas:" -#: ../Doc/c-api/init.rst:38 +#: ../Doc/c-api/init.rst:49 ../Doc/c-api/init.rst:57 msgid ":c:func:`Py_IsInitialized`" msgstr ":c:func:`Py_IsInitialized`" -#: ../Doc/c-api/init.rst:39 +#: ../Doc/c-api/init.rst:50 msgid ":c:func:`PyMem_GetAllocator`" msgstr ":c:func:`PyMem_GetAllocator`" -#: ../Doc/c-api/init.rst:40 +#: ../Doc/c-api/init.rst:51 msgid ":c:func:`PyObject_GetArenaAllocator`" msgstr ":c:func:`PyObject_GetArenaAllocator`" -#: ../Doc/c-api/init.rst:41 +#: ../Doc/c-api/init.rst:52 msgid ":c:func:`Py_GetBuildInfo`" msgstr ":c:func:`Py_GetBuildInfo`" -#: ../Doc/c-api/init.rst:42 +#: ../Doc/c-api/init.rst:53 msgid ":c:func:`Py_GetCompiler`" msgstr ":c:func:`Py_GetCompiler`" -#: ../Doc/c-api/init.rst:43 +#: ../Doc/c-api/init.rst:54 msgid ":c:func:`Py_GetCopyright`" msgstr ":c:func:`Py_GetCopyright`" -#: ../Doc/c-api/init.rst:44 +#: ../Doc/c-api/init.rst:55 msgid ":c:func:`Py_GetPlatform`" msgstr ":c:func:`Py_GetPlatform`" -#: ../Doc/c-api/init.rst:45 +#: ../Doc/c-api/init.rst:56 msgid ":c:func:`Py_GetVersion`" msgstr ":c:func:`Py_GetVersion`" -#: ../Doc/c-api/init.rst:47 +#: ../Doc/c-api/init.rst:59 msgid "Utilities:" msgstr "Utilidades:" -#: ../Doc/c-api/init.rst:49 +#: ../Doc/c-api/init.rst:61 msgid ":c:func:`Py_DecodeLocale`" msgstr ":c:func:`Py_DecodeLocale`" -#: ../Doc/c-api/init.rst:51 +#: ../Doc/c-api/init.rst:62 +msgid "" +"the status reporting and utility functions covered in :ref:`init-config`" +msgstr "" + +#: ../Doc/c-api/init.rst:64 msgid "Memory allocators:" msgstr "Asignadores de memoria:" -#: ../Doc/c-api/init.rst:53 +#: ../Doc/c-api/init.rst:66 msgid ":c:func:`PyMem_RawMalloc`" msgstr ":c:func:`PyMem_RawMalloc`" -#: ../Doc/c-api/init.rst:54 +#: ../Doc/c-api/init.rst:67 msgid ":c:func:`PyMem_RawRealloc`" msgstr ":c:func:`PyMem_RawRealloc`" -#: ../Doc/c-api/init.rst:55 +#: ../Doc/c-api/init.rst:68 msgid ":c:func:`PyMem_RawCalloc`" msgstr ":c:func:`PyMem_RawCalloc`" -#: ../Doc/c-api/init.rst:56 +#: ../Doc/c-api/init.rst:69 msgid ":c:func:`PyMem_RawFree`" msgstr ":c:func:`PyMem_RawFree`" -#: ../Doc/c-api/init.rst:58 +#: ../Doc/c-api/init.rst:71 msgid "Synchronization:" msgstr "Sincronización:" -#: ../Doc/c-api/init.rst:60 +#: ../Doc/c-api/init.rst:73 msgid ":c:func:`PyMutex_Lock`" msgstr ":c:func:`PyMutex_Lock`" -#: ../Doc/c-api/init.rst:61 +#: ../Doc/c-api/init.rst:74 msgid ":c:func:`PyMutex_Unlock`" msgstr ":c:func:`PyMutex_Unlock`" -#: ../Doc/c-api/init.rst:65 +#: ../Doc/c-api/init.rst:78 +#, fuzzy msgid "" -"The following functions **should not be called** " -"before :c:func:`Py_Initialize`: :c:func:`Py_EncodeLocale`, :c:func:`Py_GetPath`, :c:func:`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, :c:func:`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome`, :c:func:`Py_GetProgramName` " -"and :c:func:`PyEval_InitThreads`." +"Despite their apparent similarity to some of the functions listed above, the " +"following functions **should not be called** before the interpreter has been " +"initialized: :c:func:`Py_EncodeLocale`, :c:func:`Py_GetPath`, :c:func:" +"`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, :c:func:" +"`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome`, :c:func:" +"`Py_GetProgramName`, :c:func:`PyEval_InitThreads`, and :c:func:`Py_RunMain`." msgstr "" -"Las siguientes funciones **no deben llamarse** antes " -"de :c:func:`Py_Initialize`: :c:func:`Py_EncodeLocale`, :c:func:`Py_GetPath`, :c:func:`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, :c:func:`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome`, :c:func:`Py_GetProgramName` " -"y :c:func:`PyEval_InitThreads`." +"Las siguientes funciones **no deben llamarse** antes de :c:func:" +"`Py_Initialize`: :c:func:`Py_EncodeLocale`, :c:func:`Py_GetPath`, :c:func:" +"`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, :c:func:" +"`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome`, :c:func:" +"`Py_GetProgramName` y :c:func:`PyEval_InitThreads`." -#: ../Doc/c-api/init.rst:75 +#: ../Doc/c-api/init.rst:90 msgid "Global configuration variables" msgstr "Variables de configuración global" -#: ../Doc/c-api/init.rst:77 +#: ../Doc/c-api/init.rst:92 msgid "" "Python has variables for the global configuration to control different " -"features and options. By default, these flags are controlled " -"by :ref:`command line options `." +"features and options. By default, these flags are controlled by :ref:" +"`command line options `." msgstr "" "Python tiene variables para la configuración global para controlar " "diferentes características y opciones. De forma predeterminada, estos " "indicadores están controlados por :ref:`opciones de línea de comando `." -#: ../Doc/c-api/init.rst:81 +#: ../Doc/c-api/init.rst:96 msgid "" "When a flag is set by an option, the value of the flag is the number of " -"times that the option was set. For example, ``-b`` " -"sets :c:data:`Py_BytesWarningFlag` to 1 and ``-bb`` " -"sets :c:data:`Py_BytesWarningFlag` to 2." +"times that the option was set. For example, ``-b`` sets :c:data:" +"`Py_BytesWarningFlag` to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to " +"2." msgstr "" "Cuando una opción establece un indicador, el valor del indicador es la " -"cantidad de veces que se configuró la opción. Por ejemplo, ``-b`` " -"establece :c:data:`Py_BytesWarningFlag` en 1 y ``-bb`` " -"establece :c:data:`Py_BytesWarningFlag` en 2." +"cantidad de veces que se configuró la opción. Por ejemplo, ``-b`` establece :" +"c:data:`Py_BytesWarningFlag` en 1 y ``-bb`` establece :c:data:" +"`Py_BytesWarningFlag` en 2." -#: ../Doc/c-api/init.rst:87 +#: ../Doc/c-api/init.rst:102 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.bytes_warning` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"bytes_warning` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.bytes_warning` en su lugar, " "consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:91 +#: ../Doc/c-api/init.rst:106 msgid "" -"Issue a warning when comparing :class:`bytes` or :class:`bytearray` " -"with :class:`str` or :class:`bytes` with :class:`int`. Issue an error if " -"greater or equal to ``2``." +"Issue a warning when comparing :class:`bytes` or :class:`bytearray` with :" +"class:`str` or :class:`bytes` with :class:`int`. Issue an error if greater " +"or equal to ``2``." msgstr "" -"Emite una advertencia al comparar :class:`bytes` o :class:`bytearray` " -"con :class:`str` o :class:`bytes` con :class:`int`. Emite un error si es " -"mayor o igual a ``2``." +"Emite una advertencia al comparar :class:`bytes` o :class:`bytearray` con :" +"class:`str` o :class:`bytes` con :class:`int`. Emite un error si es mayor o " +"igual a ``2``." -#: ../Doc/c-api/init.rst:95 +#: ../Doc/c-api/init.rst:110 msgid "Set by the :option:`-b` option." msgstr "Establecido por la opción :option:`-b`." -#: ../Doc/c-api/init.rst:101 +#: ../Doc/c-api/init.rst:116 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.parser_debug` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"parser_debug` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.parser_debug` en su lugar, " "consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:105 +#: ../Doc/c-api/init.rst:120 msgid "" "Turn on parser debugging output (for expert only, depending on compilation " "options)." @@ -250,25 +300,25 @@ msgstr "" "Activa la salida de depuración del analizador (solo para expertos, según las " "opciones de compilación)." -#: ../Doc/c-api/init.rst:108 +#: ../Doc/c-api/init.rst:123 msgid "" "Set by the :option:`-d` option and the :envvar:`PYTHONDEBUG` environment " "variable." msgstr "" -"Establecido por la opción :option:`-d` y la variable de " -"entorno :envvar:`PYTHONDEBUG`." +"Establecido por la opción :option:`-d` y la variable de entorno :envvar:" +"`PYTHONDEBUG`." -#: ../Doc/c-api/init.rst:115 +#: ../Doc/c-api/init.rst:130 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.write_bytecode` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"write_bytecode` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.write_bytecode` en su lugar, " "consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:119 +#: ../Doc/c-api/init.rst:134 msgid "" "If set to non-zero, Python won't try to write ``.pyc`` files on the import " "of source modules." @@ -276,51 +326,50 @@ msgstr "" "Si se establece en un valor distinto de cero, Python no intentará escribir " "archivos ``.pyc`` en la importación de módulos fuente." -#: ../Doc/c-api/init.rst:122 +#: ../Doc/c-api/init.rst:137 msgid "" "Set by the :option:`-B` option and the :envvar:`PYTHONDONTWRITEBYTECODE` " "environment variable." msgstr "" -"Establecido por la opción :option:`-B` y la variable de " -"entorno :envvar:`PYTHONDONTWRITEBYTECODE`." +"Establecido por la opción :option:`-B` y la variable de entorno :envvar:" +"`PYTHONDONTWRITEBYTECODE`." -#: ../Doc/c-api/init.rst:129 +#: ../Doc/c-api/init.rst:144 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.pathconfig_warnings` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"pathconfig_warnings` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.pathconfig_warnings` en su " "lugar, consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:133 +#: ../Doc/c-api/init.rst:148 msgid "" -"Suppress error messages when calculating the module search path " -"in :c:func:`Py_GetPath`." +"Suppress error messages when calculating the module search path in :c:func:" +"`Py_GetPath`." msgstr "" -"Suprime los mensajes de error al calcular la ruta de búsqueda del módulo " -"en :c:func:`Py_GetPath`." +"Suprime los mensajes de error al calcular la ruta de búsqueda del módulo en :" +"c:func:`Py_GetPath`." -#: ../Doc/c-api/init.rst:136 +#: ../Doc/c-api/init.rst:151 msgid "Private flag used by ``_freeze_module`` and ``frozenmain`` programs." msgstr "" "Indicador privado utilizado por los programas ``_freeze_module`` y " "``frozenmain``." -#: ../Doc/c-api/init.rst:142 +#: ../Doc/c-api/init.rst:157 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.hash_seed` " -"and :c:member:`PyConfig.use_hash_seed` should be used instead, " +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"hash_seed` and :c:member:`PyConfig.use_hash_seed` should be used instead, " "see :ref:`Python Initialization Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se deben " -"utilizar las configuraciones :c:member:`PyConfig.hash_seed` " -"y :c:member:`PyConfig.use_hash_seed` en su lugar, consulte :ref:`Python " -"Initialization Configuration `." +"utilizar las configuraciones :c:member:`PyConfig.hash_seed` y :c:member:" +"`PyConfig.use_hash_seed` en su lugar, consulte :ref:`Python Initialization " +"Configuration `." -#: ../Doc/c-api/init.rst:147 +#: ../Doc/c-api/init.rst:162 msgid "" "Set to ``1`` if the :envvar:`PYTHONHASHSEED` environment variable is set to " "a non-empty string." @@ -328,49 +377,47 @@ msgstr "" "Se establece en ``1`` si la variable de entorno :envvar:`PYTHONHASHSEED` se " "establece en una cadena de caracteres no vacía." -#: ../Doc/c-api/init.rst:150 +#: ../Doc/c-api/init.rst:165 msgid "" "If the flag is non-zero, read the :envvar:`PYTHONHASHSEED` environment " "variable to initialize the secret hash seed." msgstr "" -"Si el indicador no es cero, lee la variable de " -"entorno :envvar:`PYTHONHASHSEED` para inicializar la semilla de *hash* " -"secreta." +"Si el indicador no es cero, lee la variable de entorno :envvar:" +"`PYTHONHASHSEED` para inicializar la semilla de *hash* secreta." -#: ../Doc/c-api/init.rst:157 +#: ../Doc/c-api/init.rst:172 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.use_environment` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"use_environment` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.use_environment` en su lugar, " "consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:161 +#: ../Doc/c-api/init.rst:176 msgid "" -"Ignore all :envvar:`!PYTHON*` environment variables, " -"e.g. :envvar:`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set." +"Ignore all :envvar:`!PYTHON*` environment variables, e.g. :envvar:" +"`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set." msgstr "" -"Ignore todas las variables de entorno :envvar:`!PYTHON*`, por " -"ejemplo, :envvar:`PYTHONPATH` y :envvar:`PYTHONHOME`, que puedan estar " -"configuradas." +"Ignore todas las variables de entorno :envvar:`!PYTHON*`, por ejemplo, :" +"envvar:`PYTHONPATH` y :envvar:`PYTHONHOME`, que puedan estar configuradas." -#: ../Doc/c-api/init.rst:164 +#: ../Doc/c-api/init.rst:179 msgid "Set by the :option:`-E` and :option:`-I` options." msgstr "Establecido por las opciones :option:`-E` y :option:`-I`." -#: ../Doc/c-api/init.rst:170 +#: ../Doc/c-api/init.rst:185 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.inspect` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"inspect` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.inspect` en su lugar, " "consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:174 +#: ../Doc/c-api/init.rst:189 msgid "" "When a script is passed as first argument or the :option:`-c` option is " "used, enter interactive mode after executing the script or the command, even " @@ -378,42 +425,42 @@ msgid "" msgstr "" "Cuando se pasa una secuencia de comandos (*script*) como primer argumento o " "se usa la opción :option:`-c`, ingresa al modo interactivo después de " -"ejecutar la secuencia de comandos o el comando, incluso " -"cuando :data:`sys.stdin` no parece ser un terminal." +"ejecutar la secuencia de comandos o el comando, incluso cuando :data:`sys." +"stdin` no parece ser un terminal." -#: ../Doc/c-api/init.rst:178 +#: ../Doc/c-api/init.rst:193 msgid "" "Set by the :option:`-i` option and the :envvar:`PYTHONINSPECT` environment " "variable." msgstr "" -"Establecido por la opción :option:`-i` y la variable de " -"entorno :envvar:`PYTHONINSPECT`." +"Establecido por la opción :option:`-i` y la variable de entorno :envvar:" +"`PYTHONINSPECT`." -#: ../Doc/c-api/init.rst:185 +#: ../Doc/c-api/init.rst:200 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.interactive` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"interactive` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.interactive` en su lugar, " "consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:189 +#: ../Doc/c-api/init.rst:204 msgid "Set by the :option:`-i` option." msgstr "Establecido por la opción :option:`-i`." -#: ../Doc/c-api/init.rst:195 +#: ../Doc/c-api/init.rst:210 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.isolated` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"isolated` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.isolated` en su lugar, " "consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:199 +#: ../Doc/c-api/init.rst:214 msgid "" "Run Python in isolated mode. In isolated mode :data:`sys.path` contains " "neither the script's directory nor the user's site-packages directory." @@ -422,22 +469,22 @@ msgstr "" "ni el directorio de la secuencia de comandos (*script*) ni el directorio de " "paquetes del sitio del usuario (*site-pacages*)." -#: ../Doc/c-api/init.rst:202 +#: ../Doc/c-api/init.rst:217 msgid "Set by the :option:`-I` option." msgstr "Establecido por la opción :option:`-I`." -#: ../Doc/c-api/init.rst:210 +#: ../Doc/c-api/init.rst:225 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyPreConfig.legacy_windows_fs_encoding` should be used " -"instead, see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyPreConfig." +"legacy_windows_fs_encoding` should be used instead, see :ref:`Python " +"Initialization Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyPreConfig.legacy_windows_fs_encoding` " "en su lugar, consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:214 +#: ../Doc/c-api/init.rst:229 msgid "" "If the flag is non-zero, use the ``mbcs`` encoding with ``replace`` error " "handler, instead of the UTF-8 encoding with ``surrogatepass`` error handler, " @@ -448,179 +495,179 @@ msgstr "" "``surrogatepass``, para la :term:`filesystem encoding and error handler` " "(codificación del sistema de archivos y gestor de errores)." -#: ../Doc/c-api/init.rst:218 +#: ../Doc/c-api/init.rst:233 msgid "" "Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment " "variable is set to a non-empty string." msgstr "" -"Establece en ``1`` si la variable de " -"entorno :envvar:`PYTHONLEGACYWINDOWSFSENCODING` está configurada en una " -"cadena de caracteres no vacía." +"Establece en ``1`` si la variable de entorno :envvar:" +"`PYTHONLEGACYWINDOWSFSENCODING` está configurada en una cadena de caracteres " +"no vacía." -#: ../Doc/c-api/init.rst:221 +#: ../Doc/c-api/init.rst:236 msgid "See :pep:`529` for more details." msgstr "Ver :pep:`529` para más detalles." -#: ../Doc/c-api/init.rst:223 ../Doc/c-api/init.rst:241 -msgid ":ref:`Availability `: Windows." -msgstr ":ref:`Disponibilidad `: Windows." +#: ../Doc/c-api/init.rst:238 ../Doc/c-api/init.rst:256 +msgid "Availability" +msgstr "" -#: ../Doc/c-api/init.rst:229 +#: ../Doc/c-api/init.rst:244 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.legacy_windows_stdio` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"legacy_windows_stdio` should be used instead, see :ref:`Python " +"Initialization Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.legacy_windows_stdio` en su " "lugar, consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:233 +#: ../Doc/c-api/init.rst:248 msgid "" -"If the flag is non-zero, use :class:`io.FileIO` instead of :class:`!" -"io._WindowsConsoleIO` for :mod:`sys` standard streams." +"If the flag is non-zero, use :class:`io.FileIO` instead of :class:`!io." +"_WindowsConsoleIO` for :mod:`sys` standard streams." msgstr "" "Si el indicador no es cero, utilice :class:`io.FileIO` en lugar de :class:`!" "io._WindowsConsoleIO` para las transmisiones estándar :mod:`sys`." -#: ../Doc/c-api/init.rst:236 +#: ../Doc/c-api/init.rst:251 msgid "" "Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSSTDIO` environment variable " "is set to a non-empty string." msgstr "" -"Establece en ``1`` si la variable de " -"entorno :envvar:`PYTHONLEGACYWINDOWSSTDIO` está configurada en una cadena de " -"caracteres no vacía." +"Establece en ``1`` si la variable de entorno :envvar:" +"`PYTHONLEGACYWINDOWSSTDIO` está configurada en una cadena de caracteres no " +"vacía." -#: ../Doc/c-api/init.rst:239 +#: ../Doc/c-api/init.rst:254 msgid "See :pep:`528` for more details." msgstr "Ver :pep:`528` para más detalles." -#: ../Doc/c-api/init.rst:247 +#: ../Doc/c-api/init.rst:262 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.site_import` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"site_import` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.site_import` en su lugar, " "consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:251 +#: ../Doc/c-api/init.rst:266 msgid "" "Disable the import of the module :mod:`site` and the site-dependent " "manipulations of :data:`sys.path` that it entails. Also disable these " -"manipulations if :mod:`site` is explicitly imported later " -"(call :func:`site.main` if you want them to be triggered)." +"manipulations if :mod:`site` is explicitly imported later (call :func:`site." +"main` if you want them to be triggered)." msgstr "" "Deshabilita la importación del módulo :mod:`site` y las manipulaciones " "dependientes del sitio de :data:`sys.path` que conlleva. También deshabilita " "estas manipulaciones si :mod:`site` se importa explícitamente más tarde " "(llama a :func:`site.main` si desea que se activen)." -#: ../Doc/c-api/init.rst:256 +#: ../Doc/c-api/init.rst:271 msgid "Set by the :option:`-S` option." msgstr "Establecido por la opción :option:`-S`." -#: ../Doc/c-api/init.rst:262 +#: ../Doc/c-api/init.rst:277 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.user_site_directory` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"user_site_directory` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.user_site_directory` en su " "lugar, consulte :ref:`Configuración de inicialización de Python `." -#: ../Doc/c-api/init.rst:266 +#: ../Doc/c-api/init.rst:281 msgid "" -"Don't add the :data:`user site-packages directory ` " -"to :data:`sys.path`." +"Don't add the :data:`user site-packages directory ` to :data:" +"`sys.path`." msgstr "" -"No agregue el :data:`directorio de paquetes de sitio del usuario " -"` (*site-packages*) a :data:`sys.path`." +"No agregue el :data:`directorio de paquetes de sitio del usuario ` (*site-packages*) a :data:`sys.path`." -#: ../Doc/c-api/init.rst:269 +#: ../Doc/c-api/init.rst:284 msgid "" -"Set by the :option:`-s` and :option:`-I` options, and " -"the :envvar:`PYTHONNOUSERSITE` environment variable." +"Set by the :option:`-s` and :option:`-I` options, and the :envvar:" +"`PYTHONNOUSERSITE` environment variable." msgstr "" "Establecido por las opciones :option:`-s` y :option:`-I`, y la variable de " "entorno :envvar:`PYTHONNOUSERSITE`." -#: ../Doc/c-api/init.rst:276 +#: ../Doc/c-api/init.rst:291 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.optimization_level` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"optimization_level` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.optimization_level` en su " "lugar, consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:280 +#: ../Doc/c-api/init.rst:295 msgid "" "Set by the :option:`-O` option and the :envvar:`PYTHONOPTIMIZE` environment " "variable." msgstr "" -"Establecido por la opción :option:`-O` y la variable de " -"entorno :envvar:`PYTHONOPTIMIZE`." +"Establecido por la opción :option:`-O` y la variable de entorno :envvar:" +"`PYTHONOPTIMIZE`." -#: ../Doc/c-api/init.rst:287 +#: ../Doc/c-api/init.rst:302 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.quiet` should be used instead, see :ref:`Python " -"Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"quiet` should be used instead, see :ref:`Python Initialization Configuration " +"`." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " -"utilizar la configuración :c:member:`PyConfig.quiet` en su lugar, " -"consulte :ref:`Python Initialization Configuration `." +"utilizar la configuración :c:member:`PyConfig.quiet` en su lugar, consulte :" +"ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:291 +#: ../Doc/c-api/init.rst:306 msgid "" "Don't display the copyright and version messages even in interactive mode." msgstr "" "No muestre los mensajes de *copyright* y de versión incluso en modo " "interactivo." -#: ../Doc/c-api/init.rst:293 +#: ../Doc/c-api/init.rst:308 msgid "Set by the :option:`-q` option." msgstr "Establecido por la opción :option:`-q`." -#: ../Doc/c-api/init.rst:301 +#: ../Doc/c-api/init.rst:316 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.buffered_stdio` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"buffered_stdio` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.buffered_stdio` en su lugar, " "consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:305 +#: ../Doc/c-api/init.rst:320 msgid "Force the stdout and stderr streams to be unbuffered." msgstr "Obliga a las secuencias *stdout* y *stderr* a que no tengan búfer." -#: ../Doc/c-api/init.rst:307 +#: ../Doc/c-api/init.rst:322 msgid "" "Set by the :option:`-u` option and the :envvar:`PYTHONUNBUFFERED` " "environment variable." msgstr "" -"Establecido por la opción :option:`-u` y la variable de " -"entorno :envvar:`PYTHONUNBUFFERED`." +"Establecido por la opción :option:`-u` y la variable de entorno :envvar:" +"`PYTHONUNBUFFERED`." -#: ../Doc/c-api/init.rst:314 +#: ../Doc/c-api/init.rst:329 msgid "" -"This API is kept for backward compatibility: " -"setting :c:member:`PyConfig.verbose` should be used instead, " -"see :ref:`Python Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"verbose` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene por compatibilidad con versiones anteriores: se debe " "utilizar la configuración :c:member:`PyConfig.verbose` en su lugar, " "consulte :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:318 +#: ../Doc/c-api/init.rst:333 msgid "" "Print a message each time a module is initialized, showing the place " "(filename or built-in module) from which it is loaded. If greater or equal " @@ -633,58 +680,59 @@ msgstr "" "buscar un módulo. También proporciona información sobre la limpieza del " "módulo a la salida." -#: ../Doc/c-api/init.rst:323 +#: ../Doc/c-api/init.rst:338 msgid "" "Set by the :option:`-v` option and the :envvar:`PYTHONVERBOSE` environment " "variable." msgstr "" -"Establecido por la opción :option:`-v` y la variable de " -"entorno :envvar:`PYTHONVERBOSE`." +"Establecido por la opción :option:`-v` y la variable de entorno :envvar:" +"`PYTHONVERBOSE`." -#: ../Doc/c-api/init.rst:330 +#: ../Doc/c-api/init.rst:345 msgid "Initializing and finalizing the interpreter" msgstr "Inicializando y finalizando el intérprete" -#: ../Doc/c-api/init.rst:345 +#: ../Doc/c-api/init.rst:360 msgid "" "Initialize the Python interpreter. In an application embedding Python, " -"this should be called before using any other Python/C API functions; " -"see :ref:`Before Python Initialization ` for the few " -"exceptions." +"this should be called before using any other Python/C API functions; see :" +"ref:`Before Python Initialization ` for the few exceptions." msgstr "" "Inicializa el intérprete de Python. En una aplicación que incorpora Python, " -"se debe llamar antes de usar cualquier otra función de API Python/C; " -"vea :ref:`Antes de la inicialización de Python ` para ver " -"algunas excepciones." +"se debe llamar antes de usar cualquier otra función de API Python/C; vea :" +"ref:`Antes de la inicialización de Python ` para ver algunas " +"excepciones." -#: ../Doc/c-api/init.rst:349 +#: ../Doc/c-api/init.rst:364 +#, fuzzy msgid "" "This initializes the table of loaded modules (``sys.modules``), and creates " -"the fundamental modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`. It " +"the fundamental modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`. It " "also initializes the module search path (``sys.path``). It does not set " -"``sys.argv``; use the new :c:type:`PyConfig` API of the :ref:`Python " -"Initialization Configuration ` for that. This is a no-op when " -"called for a second time (without calling :c:func:`Py_FinalizeEx` first). " -"There is no return value; it is a fatal error if the initialization fails." +"``sys.argv``; use the :ref:`Python Initialization Configuration ` API for that. This is a no-op when called for a second time " +"(without calling :c:func:`Py_FinalizeEx` first). There is no return value; " +"it is a fatal error if the initialization fails." msgstr "" "Esto inicializa la tabla de módulos cargados (``sys.modules``) y crea los " "módulos fundamentales :mod:`builtins`, :mod:`__main__` y :mod:`sys`. También " -"inicializa la ruta de búsqueda de módulos (``sys.path``). No establece " -"``sys.argv``; utilice la nueva API :c:type:`PyConfig` de :ref:`Python " +"inicializa la ruta de búsqueda de módulos (``sys.path``). No establece ``sys." +"argv``; utilice la nueva API :c:type:`PyConfig` de :ref:`Python " "Initialization Configuration ` para ello. Esta es una operación " -"sin efecto cuando se llama por segunda vez (sin llamar primero " -"a :c:func:`Py_FinalizeEx`). No hay ningún valor de retorno; es un error " -"fatal si falla la inicialización." +"sin efecto cuando se llama por segunda vez (sin llamar primero a :c:func:" +"`Py_FinalizeEx`). No hay ningún valor de retorno; es un error fatal si falla " +"la inicialización." -#: ../Doc/c-api/init.rst:359 ../Doc/c-api/init.rst:373 +#: ../Doc/c-api/init.rst:372 ../Doc/c-api/init.rst:386 +#, fuzzy msgid "" -"Use the :c:func:`Py_InitializeFromConfig` function to customize " -"the :ref:`Python Initialization Configuration `." +"Use :c:func:`Py_InitializeFromConfig` to customize the :ref:`Python " +"Initialization Configuration `." msgstr "" -"Utilice la función :c:func:`Py_InitializeFromConfig` para " -"personalizar :ref:`Python Initialization Configuration `." +"Utilice la función :c:func:`Py_InitializeFromConfig` para personalizar :ref:" +"`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:363 +#: ../Doc/c-api/init.rst:376 msgid "" "On Windows, changes the console mode from ``O_TEXT`` to ``O_BINARY``, which " "will also affect non-Python uses of the console using the C Runtime." @@ -693,28 +741,43 @@ msgstr "" "también afectará los usos de la consola que no sean de Python utilizando C " "*Runtime*." -#: ../Doc/c-api/init.rst:369 +#: ../Doc/c-api/init.rst:382 +#, fuzzy msgid "" "This function works like :c:func:`Py_Initialize` if *initsigs* is ``1``. If " "*initsigs* is ``0``, it skips initialization registration of signal " -"handlers, which might be useful when Python is embedded." +"handlers, which may be useful when CPython is embedded as part of a larger " +"application." msgstr "" "Esta función funciona como :c:func:`Py_Initialize` si *initsigs* es ``1``. " "Si *initsigs* es ``0``, omite el registro de inicialización de los " "manejadores de señal, lo que podría ser útil cuando Python está incrustado." -#: ../Doc/c-api/init.rst:379 +#: ../Doc/c-api/init.rst:392 +msgid "" +"Initialize Python from *config* configuration, as described in :ref:`init-" +"from-config`." +msgstr "" + +#: ../Doc/c-api/init.rst:395 +msgid "" +"See the :ref:`init-config` section for details on pre-initializing the " +"interpreter, populating the runtime configuration structure, and querying " +"the returned status structure." +msgstr "" + +#: ../Doc/c-api/init.rst:402 msgid "" "Return true (nonzero) when the Python interpreter has been initialized, " "false (zero) if not. After :c:func:`Py_FinalizeEx` is called, this returns " "false until :c:func:`Py_Initialize` is called again." msgstr "" "Retorna verdadero (distinto de cero) cuando el intérprete de Python se ha " -"inicializado, falso (cero) si no. Después de que se llama " -"a :c:func:`Py_FinalizeEx`, esto retorna falso hasta " -"que :c:func:`Py_Initialize` se llama de nuevo." +"inicializado, falso (cero) si no. Después de que se llama a :c:func:" +"`Py_FinalizeEx`, esto retorna falso hasta que :c:func:`Py_Initialize` se " +"llama de nuevo." -#: ../Doc/c-api/init.rst:386 +#: ../Doc/c-api/init.rst:409 msgid "" "Return true (non-zero) if the main Python interpreter is :term:`shutting " "down `. Return false (zero) otherwise." @@ -723,38 +786,36 @@ msgstr "" "es :term:`shutting down `. Devuelve falso (cero) en " "caso contrario." -#: ../Doc/c-api/init.rst:394 +#: ../Doc/c-api/init.rst:417 +#, fuzzy msgid "" "Undo all initializations made by :c:func:`Py_Initialize` and subsequent use " -"of Python/C API functions, and destroy all sub-interpreters " -"(see :c:func:`Py_NewInterpreter` below) that were created and not yet " -"destroyed since the last call to :c:func:`Py_Initialize`. Ideally, this " -"frees all memory allocated by the Python interpreter. This is a no-op when " -"called for a second time (without calling :c:func:`Py_Initialize` again " -"first)." +"of Python/C API functions, and destroy all sub-interpreters (see :c:func:" +"`Py_NewInterpreter` below) that were created and not yet destroyed since the " +"last call to :c:func:`Py_Initialize`. This is a no-op when called for a " +"second time (without calling :c:func:`Py_Initialize` again first)." msgstr "" "Deshaga todas las inicializaciones realizadas por :c:func:`Py_Initialize` y " "el uso posterior de las funciones de la API de Python/C, y destruya todos " "los subintérpretes (consulte :c:func:`Py_NewInterpreter` a continuación) que " -"se crearon y aún no se destruyeron desde la última llamada " -"a :c:func:`Py_Initialize`. Idealmente, esto libera toda la memoria asignada " -"por el intérprete de Python. Esta es una operación sin efecto cuando se " -"llama por segunda vez (sin llamar a :c:func:`Py_Initialize` nuevamente " -"primero)." +"se crearon y aún no se destruyeron desde la última llamada a :c:func:" +"`Py_Initialize`. Idealmente, esto libera toda la memoria asignada por el " +"intérprete de Python. Esta es una operación sin efecto cuando se llama por " +"segunda vez (sin llamar a :c:func:`Py_Initialize` nuevamente primero)." -#: ../Doc/c-api/init.rst:401 +#: ../Doc/c-api/init.rst:423 msgid "" "Since this is the reverse of :c:func:`Py_Initialize`, it should be called in " "the same thread with the same interpreter active. That means the main " -"thread and the main interpreter. This should never be called " -"while :c:func:`Py_RunMain` is running." +"thread and the main interpreter. This should never be called while :c:func:" +"`Py_RunMain` is running." msgstr "" "Dado que se trata del proceso inverso de :c:func:`Py_Initialize`, se debe " "llamar en el mismo subproceso con el mismo intérprete activo, es decir, el " "subproceso principal y el intérprete principal. Nunca se debe llamar " "mientras se esté ejecutando :c:func:`Py_RunMain`." -#: ../Doc/c-api/init.rst:406 +#: ../Doc/c-api/init.rst:428 msgid "" "Normally the return value is ``0``. If there were errors during finalization " "(flushing buffered data), ``-1`` is returned." @@ -762,7 +823,16 @@ msgstr "" "Normalmente, el valor de retorno es ``0``. Si se produjeron errores durante " "la finalización (limpieza de datos almacenados en búfer), se devuelve ``-1``." -#: ../Doc/c-api/init.rst:410 +#: ../Doc/c-api/init.rst:432 +msgid "" +"Note that Python will do a best effort at freeing all memory allocated by " +"the Python interpreter. Therefore, any C-Extension should make sure to " +"correctly clean up all of the preveiously allocated PyObjects before using " +"them in subsequent calls to :c:func:`Py_Initialize`. Otherwise it could " +"introduce vulnerabilities and incorrect behavior." +msgstr "" + +#: ../Doc/c-api/init.rst:438 msgid "" "This function is provided for a number of reasons. An embedding application " "might want to restart Python without having to restart the application " @@ -781,7 +851,8 @@ msgstr "" "querer liberar toda la memoria asignada por Python antes de salir de la " "aplicación." -#: ../Doc/c-api/init.rst:418 +#: ../Doc/c-api/init.rst:446 +#, fuzzy msgid "" "**Bugs and caveats:** The destruction of modules and objects in modules is " "done in random order; this may cause destructors (:meth:`~object.__del__` " @@ -789,11 +860,16 @@ msgid "" "modules. Dynamically loaded extension modules loaded by Python are not " "unloaded. Small amounts of memory allocated by the Python interpreter may " "not be freed (if you find a leak, please report it). Memory tied up in " -"circular references between objects is not freed. Some memory allocated by " +"circular references between objects is not freed. Interned strings will all " +"be deallocated regardless of their reference count. Some memory allocated by " "extension modules may not be freed. Some extensions may not work properly " "if their initialization routine is called more than once; this can happen if " "an application calls :c:func:`Py_Initialize` and :c:func:`Py_FinalizeEx` " -"more than once." +"more than once. :c:func:`Py_FinalizeEx` must not be called recursively from " +"within itself. Therefore, it must not be called by any code that may be run " +"as part of the interpreter shutdown process, such as :py:mod:`atexit` " +"handlers, object finalizers, or any code that may be run while flushing the " +"stdout and stderr files." msgstr "" "**Bugs and caveats:** La destrucción de módulos y objetos en módulos se " "realiza en orden aleatorio; esto puede provocar que los destructores " @@ -805,40 +881,165 @@ msgstr "" "objetos no se libera. Es posible que no se libere parte de la memoria " "asignada por los módulos de extensión. Es posible que algunas extensiones no " "funcionen correctamente si su rutina de inicialización se llama más de una " -"vez; esto puede suceder si una aplicación llama a :c:func:`Py_Initialize` " -"y :c:func:`Py_FinalizeEx` más de una vez." +"vez; esto puede suceder si una aplicación llama a :c:func:`Py_Initialize` y :" +"c:func:`Py_FinalizeEx` más de una vez." -#: ../Doc/c-api/init.rst:429 +#: ../Doc/c-api/init.rst:462 msgid "" -"Raises an :ref:`auditing event ` " -"``cpython._PySys_ClearAuditHooks`` with no arguments." +"Raises an :ref:`auditing event ` ``cpython." +"_PySys_ClearAuditHooks`` with no arguments." msgstr "" -"Genera un :ref:`evento de auditoría ` " -"``cpython._PySys_ClearAuditHooks`` sin argumentos." +"Genera un :ref:`evento de auditoría ` ``cpython." +"_PySys_ClearAuditHooks`` sin argumentos." -#: ../Doc/c-api/init.rst:435 +#: ../Doc/c-api/init.rst:469 msgid "" "This is a backwards-compatible version of :c:func:`Py_FinalizeEx` that " "disregards the return value." msgstr "" -"Esta es una versión compatible con versiones anteriores " -"de :c:func:`Py_FinalizeEx` que ignora el valor de retorno." +"Esta es una versión compatible con versiones anteriores de :c:func:" +"`Py_FinalizeEx` que ignora el valor de retorno." + +#: ../Doc/c-api/init.rst:475 +msgid "" +"Similar to :c:func:`Py_Main` but *argv* is an array of bytes strings, " +"allowing the calling application to delegate the text decoding step to the " +"CPython runtime." +msgstr "" + +#: ../Doc/c-api/init.rst:484 +msgid "" +"The main program for the standard interpreter, encapsulating a full " +"initialization/finalization cycle, as well as additional behaviour to " +"implement reading configurations settings from the environment and command " +"line, and then executing ``__main__`` in accordance with :ref:`using-on-" +"cmdline`." +msgstr "" + +#: ../Doc/c-api/init.rst:490 +msgid "" +"This is made available for programs which wish to support the full CPython " +"command line interface, rather than just embedding a Python runtime in a " +"larger application." +msgstr "" + +#: ../Doc/c-api/init.rst:494 +msgid "" +"The *argc* and *argv* parameters are similar to those which are passed to a " +"C program's :c:func:`main` function, except that the *argv* entries are " +"first converted to ``wchar_t`` using :c:func:`Py_DecodeLocale`. It is also " +"important to note that the argument list entries may be modified to point to " +"strings other than those passed in (however, the contents of the strings " +"pointed to by the argument list are not modified)." +msgstr "" + +#: ../Doc/c-api/init.rst:501 +msgid "" +"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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/init.rst:508 +msgid "" +"PyConfig config;\n" +"PyConfig_InitPythonConfig(&config);\n" +"PyConfig_SetArgv(&config, argc, argv);\n" +"Py_InitializeFromConfig(&config);\n" +"PyConfig_Clear(&config);\n" +"\n" +"Py_RunMain();" +msgstr "" + +#: ../Doc/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:" +"`Py_InitializeFromConfig` directly, and all settings will be applied as " +"described elsewhere in this documentation. If this function is instead " +"called *after* a preceding runtime initialization API call, then exactly " +"which environmental and command line configuration settings will be updated " +"is version dependent (as it depends on which settings correctly support " +"being modified after they have already been set once when the runtime was " +"first initialized)." +msgstr "" + +#: ../Doc/c-api/init.rst:529 +msgid "Executes the main module in a fully configured CPython runtime." +msgstr "" + +#: ../Doc/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." +"run_module`) specified on the command line or in the configuration. If none " +"of these values are set, runs the interactive Python prompt (REPL) using the " +"``__main__`` module's global namespace." +msgstr "" + +#: ../Doc/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), the exit status of an unhandled :exc:`SystemExit`, or ``1`` for " +"any other unhandled exception." +msgstr "" + +#: ../Doc/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: ``0``, ``1``, or the " +"status of a :exc:`SystemExit`, as specified above." +msgstr "" + +#: ../Doc/c-api/init.rst:550 +msgid "" +"This function always finalizes the Python interpreter before it returns." +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" -#: ../Doc/c-api/init.rst:440 +#: ../Doc/c-api/init.rst:562 +msgid "There must be an :term:`attached thread state` for *interp*." +msgstr "" + +#: ../Doc/c-api/init.rst:567 msgid "Process-wide parameters" msgstr "Parámetros de todo el proceso" -#: ../Doc/c-api/init.rst:450 +#: ../Doc/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 `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"program_name` should be used instead, see :ref:`Python Initialization " +"Configuration `." msgstr "" "Esta API se mantiene para la compatibilidad con versiones anteriores: en su " "lugar, se debe usar la configuración de :c:member:`PyConfig.program_name`, " "consulta :ref:`Configuración de inicialización de Python `." -#: ../Doc/c-api/init.rst:454 +#: ../Doc/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 " @@ -862,29 +1063,29 @@ msgstr "" "contenido no cambiará mientras dure la ejecución del programa. Ningún código " "en el intérprete de Python cambiará el contenido de este almacenamiento." -#: ../Doc/c-api/init.rst:465 ../Doc/c-api/init.rst:704 -#: ../Doc/c-api/init.rst:740 ../Doc/c-api/init.rst:766 +#: ../Doc/c-api/init.rst:592 ../Doc/c-api/init.rst:840 +#: ../Doc/c-api/init.rst:876 ../Doc/c-api/init.rst:902 +#, fuzzy msgid "" -"Use :c:func:`Py_DecodeLocale` to decode a bytes string to get " -"a :c:expr:`wchar_*` string." +"Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:expr:" +"`wchar_t*` string." msgstr "" "Utilice :c:func:`Py_DecodeLocale` para decodificar una cadena de bytes para " "obtener una cadena de tipo :c:expr:`wchar_*`." -#: ../Doc/c-api/init.rst:473 +#: ../Doc/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 "" -"Devuelve el nombre del programa establecido " -"con :c:member:`PyConfig.program_name` o el valor predeterminado. La cadena " -"devuelta apunta a un almacenamiento estático; el llamador no debe modificar " -"su valor." +"Devuelve el nombre del programa establecido con :c:member:`PyConfig." +"program_name` o el valor predeterminado. La cadena devuelta apunta a un " +"almacenamiento estático; el llamador no debe modificar su valor." -#: ../Doc/c-api/init.rst:477 ../Doc/c-api/init.rst:499 -#: ../Doc/c-api/init.rst:543 ../Doc/c-api/init.rst:564 -#: ../Doc/c-api/init.rst:590 ../Doc/c-api/init.rst:778 +#: ../Doc/c-api/init.rst:604 ../Doc/c-api/init.rst:627 +#: ../Doc/c-api/init.rst:675 ../Doc/c-api/init.rst:699 +#: ../Doc/c-api/init.rst:726 ../Doc/c-api/init.rst:914 msgid "" "This function should not be called before :c:func:`Py_Initialize`, otherwise " "it returns ``NULL``." @@ -892,19 +1093,22 @@ msgstr "" "Esta función ya no se puede llamar antes de :c:func:`Py_Initialize()`, de " "otra forma retornará ``NULL``." -#: ../Doc/c-api/init.rst:480 ../Doc/c-api/init.rst:502 -#: ../Doc/c-api/init.rst:546 ../Doc/c-api/init.rst:567 -#: ../Doc/c-api/init.rst:595 ../Doc/c-api/init.rst:781 +#: ../Doc/c-api/init.rst:607 ../Doc/c-api/init.rst:630 +#: ../Doc/c-api/init.rst:678 ../Doc/c-api/init.rst:702 +#: ../Doc/c-api/init.rst:731 ../Doc/c-api/init.rst:917 msgid "It now returns ``NULL`` if called before :c:func:`Py_Initialize`." msgstr "" -"Todas las siguientes funciones deben llamarse después " -"de :c:func:`Py_Initialize`, de lo contrario retornará ``NULL``." +"Todas las siguientes funciones deben llamarse después de :c:func:" +"`Py_Initialize`, de lo contrario retornará ``NULL``." -#: ../Doc/c-api/init.rst:483 ../Doc/c-api/init.rst:570 -msgid "Get :data:`sys.executable` instead." -msgstr "Obtenga :data:`sys.executable` en su lugar." +#: ../Doc/c-api/init.rst:610 ../Doc/c-api/init.rst:705 +msgid "" +"Use :c:func:`PyConfig_Get(\"executable\") ` (:data:`sys." +"executable`) instead." +msgstr "" -#: ../Doc/c-api/init.rst:489 +#: ../Doc/c-api/init.rst:617 +#, fuzzy msgid "" "Return the *prefix* for installed platform-independent files. This is " "derived through a number of complicated rules from the program name set " @@ -914,8 +1118,8 @@ msgid "" "should not modify its value. This corresponds to the :makevar:`prefix` " "variable in the top-level :file:`Makefile` and the :option:`--prefix` " "argument to the :program:`configure` script at build time. The value is " -"available to Python code as ``sys.prefix``. It is only useful on Unix. See " -"also the next function." +"available to Python code as ``sys.base_prefix``. It is only useful on Unix. " +"See also the next function." msgstr "" "Devuelve el *prefix* para los archivos instalados independientes de la " "plataforma. Esto se deriva a través de una serie de reglas complicadas del " @@ -924,27 +1128,32 @@ msgstr "" "usr/local/bin/python'``, el prefijo es ``'/usr/local'``. La cadena devuelta " "apunta a un almacenamiento estático; el llamador no debe modificar su valor. " "Esto corresponde a la variable :makevar:`prefix` en el :file:`Makefile` de " -"nivel superior y al argumento :option:`--prefix` del " -"script :program:`configure` en el momento de la compilación. El valor está " -"disponible para el código Python como ``sys.prefix``. Solo es útil en Unix. " -"Consulte también la siguiente función." +"nivel superior y al argumento :option:`--prefix` del script :program:" +"`configure` en el momento de la compilación. El valor está disponible para " +"el código Python como ``sys.prefix``. Solo es útil en Unix. Consulte también " +"la siguiente función." -#: ../Doc/c-api/init.rst:505 -msgid "Get :data:`sys.prefix` instead." -msgstr "Obtenga :data:`sys.prefix` en su lugar." +#: ../Doc/c-api/init.rst:633 +msgid "" +"Use :c:func:`PyConfig_Get(\"base_prefix\") ` (:data:`sys." +"base_prefix`) instead. Use :c:func:`PyConfig_Get(\"prefix\") ` " +"(:data:`sys.prefix`) if :ref:`virtual environments ` need to be " +"handled." +msgstr "" -#: ../Doc/c-api/init.rst:511 +#: ../Doc/c-api/init.rst:642 +#, fuzzy msgid "" "Return the *exec-prefix* for installed platform-*dependent* files. This is " "derived through a number of complicated rules from the program name set " "with :c:member:`PyConfig.program_name` and some environment variables; for " "example, if the program name is ``'/usr/local/bin/python'``, the exec-prefix " "is ``'/usr/local'``. The returned string points into static storage; the " -"caller should not modify its value. This corresponds to " -"the :makevar:`exec_prefix` variable in the top-level :file:`Makefile` and " -"the ``--exec-prefix`` argument to the :program:`configure` script at build " -"time. The value is available to Python code as ``sys.exec_prefix``. It is " -"only useful on Unix." +"caller should not modify its value. This corresponds to the :makevar:" +"`exec_prefix` variable in the top-level :file:`Makefile` and the ``--exec-" +"prefix`` argument to the :program:`configure` script at build time. The " +"value is available to Python code as ``sys.base_exec_prefix``. It is only " +"useful on Unix." msgstr "" "Devuelve el *exec-prefix* para los archivos instalados de la plataforma " "*dependent*. Esto se deriva a través de una serie de reglas complicadas del " @@ -958,7 +1167,7 @@ msgstr "" "disponible para el código Python como ``sys.exec_prefix``. Solo es útil en " "Unix." -#: ../Doc/c-api/init.rst:521 +#: ../Doc/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 " @@ -969,11 +1178,11 @@ msgstr "" "Antecedentes: el prefijo *exec* difiere del prefijo cuando los archivos " "dependientes de la plataforma (como ejecutables y bibliotecas compartidas) " "se instalan en un árbol de directorios diferente. En una instalación típica, " -"los archivos dependientes de la plataforma pueden instalarse en el " -"subárbol :file:`/usr/local/plat` mientras que la plataforma independiente " -"puede instalarse en :file:`/usr/local`." +"los archivos dependientes de la plataforma pueden instalarse en el subárbol :" +"file:`/usr/local/plat` mientras que la plataforma independiente puede " +"instalarse en :file:`/usr/local`." -#: ../Doc/c-api/init.rst:527 +#: ../Doc/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 " @@ -999,23 +1208,27 @@ msgstr "" "compilados de Python son independientes de la plataforma (¡pero no " "independientes de la versión de Python con la que fueron compilados!)." -#: ../Doc/c-api/init.rst:538 +#: ../Doc/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 while having :file:`/usr/local/plat` be a different filesystem for " -"each platform." +"System administrators will know how to configure the :program:`mount` or :" +"program:`automount` programs to share :file:`/usr/local` between platforms " +"while having :file:`/usr/local/plat` be a different filesystem for each " +"platform." msgstr "" -"Los administradores de sistemas sabrán cómo configurar los " -"programas :program:`mount` o :program:`automount` para compartir :file:`/usr/" -"local` entre plataformas mientras que :file:`/usr/local/plat` sea un sistema " -"de archivos diferente para cada plataforma." +"Los administradores de sistemas sabrán cómo configurar los programas :" +"program:`mount` o :program:`automount` para compartir :file:`/usr/local` " +"entre plataformas mientras que :file:`/usr/local/plat` sea un sistema de " +"archivos diferente para cada plataforma." -#: ../Doc/c-api/init.rst:549 -msgid "Get :data:`sys.exec_prefix` instead." -msgstr "Obtenga :data:`sys.exec_prefix` en su lugar." +#: ../Doc/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\") " +"` (:data:`sys.exec_prefix`) if :ref:`virtual environments " +"` need to be handled." +msgstr "" -#: ../Doc/c-api/init.rst:558 +#: ../Doc/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 " @@ -1025,12 +1238,12 @@ msgid "" msgstr "" "Devuelve el nombre completo del programa ejecutable de Python; esto se " "calcula como un efecto secundario de derivar la ruta de búsqueda del módulo " -"predeterminado a partir del nombre del programa (establecido " -"por :c:member:`PyConfig.program_name`). La cadena devuelta apunta a un " -"almacenamiento estático; el llamador no debe modificar su valor. El valor " -"está disponible para el código Python como ``sys.executable``." +"predeterminado a partir del nombre del programa (establecido por :c:member:" +"`PyConfig.program_name`). La cadena devuelta apunta a un almacenamiento " +"estático; el llamador no debe modificar su valor. El valor está disponible " +"para el código Python como ``sys.executable``." -#: ../Doc/c-api/init.rst:580 +#: ../Doc/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 " @@ -1043,21 +1256,23 @@ msgid "" "for loading modules." msgstr "" "Devuelve la ruta de búsqueda del módulo predeterminada; esto se calcula a " -"partir del nombre del programa (establecido " -"por :c:member:`PyConfig.program_name`) y algunas variables de entorno. La " -"cadena devuelta consta de una serie de nombres de directorio separados por " -"un carácter delimitador dependiente de la plataforma. El carácter " -"delimitador es ``':'`` en Unix y macOS, ``';'`` en Windows. La cadena " -"devuelta apunta a un almacenamiento estático; el llamador no debe modificar " -"su valor. La lista :data:`sys.path` se inicializa con este valor al iniciar " -"el intérprete; se puede modificar (y generalmente se modifica) más tarde " -"para cambiar la ruta de búsqueda para cargar módulos." - -#: ../Doc/c-api/init.rst:598 -msgid "Get :data:`sys.path` instead." -msgstr "Obtenga :data:`sys.path` en su lugar." - -#: ../Doc/c-api/init.rst:604 +"partir del nombre del programa (establecido por :c:member:`PyConfig." +"program_name`) y algunas variables de entorno. La cadena devuelta consta de " +"una serie de nombres de directorio separados por un carácter delimitador " +"dependiente de la plataforma. El carácter delimitador es ``':'`` en Unix y " +"macOS, ``';'`` en Windows. La cadena devuelta apunta a un almacenamiento " +"estático; el llamador no debe modificar su valor. La lista :data:`sys.path` " +"se inicializa con este valor al iniciar el intérprete; se puede modificar (y " +"generalmente se modifica) más tarde para cambiar la ruta de búsqueda para " +"cargar módulos." + +#: ../Doc/c-api/init.rst:734 +msgid "" +"Use :c:func:`PyConfig_Get(\"module_search_paths\") ` (:data:" +"`sys.path`) instead." +msgstr "" + +#: ../Doc/c-api/init.rst:740 msgid "" "Return the version of this Python interpreter. This is a string that looks " "something like ::" @@ -1065,17 +1280,17 @@ msgstr "" "Retorna la versión de este intérprete de Python. Esta es una cadena de " "caracteres que se parece a ::" -#: ../Doc/c-api/init.rst:607 +#: ../Doc/c-api/init.rst:743 msgid "\"3.0a5+ (py3k:63103M, May 12 2008, 00:53:55) \\n[GCC 4.2.3]\"" msgstr "\"3.0a5+ (py3k:63103M, May 12 2008, 00:53:55) \\n[GCC 4.2.3]\"" -#: ../Doc/c-api/init.rst:611 +#: ../Doc/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 " "period. The returned string points into static storage; the caller should " -"not modify its value. The value is available to Python code " -"as :data:`sys.version`." +"not modify its value. The value is available to Python code as :data:`sys." +"version`." msgstr "" "La primera palabra (hasta el primer carácter de espacio) es la versión " "actual de Python; los primeros tres caracteres son la versión mayor y menor " @@ -1083,11 +1298,11 @@ msgstr "" "almacenamiento estático; la persona que llama no debe modificar su valor. El " "valor está disponible para el código Python como :data:`sys.version`." -#: ../Doc/c-api/init.rst:616 +#: ../Doc/c-api/init.rst:752 msgid "See also the :c:var:`Py_Version` constant." msgstr "Consulta también la constante :c:var:`Py_Version`." -#: ../Doc/c-api/init.rst:623 +#: ../Doc/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 " @@ -1106,7 +1321,7 @@ msgstr "" "llama no debe modificar su valor. El valor está disponible para el código de " "Python como ``sys.platform``." -#: ../Doc/c-api/init.rst:634 +#: ../Doc/c-api/init.rst:770 msgid "" "Return the official copyright string for the current Python version, for " "example" @@ -1114,11 +1329,11 @@ msgstr "" "Retorna la cadena de caracteres de copyright oficial para la versión actual " "de Python, por ejemplo" -#: ../Doc/c-api/init.rst:636 +#: ../Doc/c-api/init.rst:772 msgid "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``" msgstr "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``" -#: ../Doc/c-api/init.rst:640 +#: ../Doc/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``." @@ -1127,7 +1342,7 @@ msgstr "" "persona que llama no debe modificar su valor. El valor está disponible para " "el código de Python como ``sys.copyright``." -#: ../Doc/c-api/init.rst:646 +#: ../Doc/c-api/init.rst:782 msgid "" "Return an indication of the compiler used to build the current Python " "version, in square brackets, for example::" @@ -1135,11 +1350,11 @@ msgstr "" "Retorna una indicación del compilador utilizado para construir la versión " "actual de Python, entre corchetes, por ejemplo:" -#: ../Doc/c-api/init.rst:649 +#: ../Doc/c-api/init.rst:785 msgid "\"[GCC 2.7.2.2]\"" msgstr "\"[GCC 2.7.2.2]\"" -#: ../Doc/c-api/init.rst:653 ../Doc/c-api/init.rst:667 +#: ../Doc/c-api/init.rst:789 ../Doc/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 " @@ -1149,7 +1364,7 @@ msgstr "" "persona que llama no debe modificar su valor. El valor está disponible para " "el código Python como parte de la variable ``sys.version``." -#: ../Doc/c-api/init.rst:660 +#: ../Doc/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 ::" @@ -1157,24 +1372,23 @@ msgstr "" "Retorna información sobre el número de secuencia y la fecha y hora de " "compilación de la instancia actual de intérprete de Python, por ejemplo::" -#: ../Doc/c-api/init.rst:663 +#: ../Doc/c-api/init.rst:799 msgid "\"#67, Aug 1 1997, 22:34:28\"" msgstr "\"#67, Aug 1 1997, 22:34:28\"" -#: ../Doc/c-api/init.rst:679 +#: ../Doc/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` should be used instead, see :ref:`Python " -"Initialization Configuration `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"argv`, :c:member:`PyConfig.parse_argv` and :c:member:`PyConfig.safe_path` " +"should be used instead, see :ref:`Python Initialization Configuration `." msgstr "" "Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración " -"de :c:member:`PyConfig.argv`, :c:member:`PyConfig.parse_argv` " -"y :c:member:`PyConfig.safe_path`, consulta :ref:`Configuración de " -"inicialización de Python `." +"lugar, se debe usar la configuración de :c:member:`PyConfig.argv`, :c:member:" +"`PyConfig.parse_argv` y :c:member:`PyConfig.safe_path`, consulta :ref:" +"`Configuración de inicialización de Python `." -#: ../Doc/c-api/init.rst:684 +#: ../Doc/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 " @@ -1193,7 +1407,7 @@ msgstr "" "caracteres vacía. Si esta función no puede inicializar :data:`sys.argv`, una " "condición fatal se señala usando :c:func:`Py_FatalError`." -#: ../Doc/c-api/init.rst:692 +#: ../Doc/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 " @@ -1203,37 +1417,36 @@ msgstr "" "*updatepath* no es cero, la función también modifica :data:`sys.path` de " "acuerdo con el siguiente algoritmo:" -#: ../Doc/c-api/init.rst:696 +#: ../Doc/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`." +"path of the directory where the script is located is prepended to :data:`sys." +"path`." msgstr "" "Si el nombre de una secuencia de comandos (*script*) existente se pasa en " "``argv[0]``, la ruta absoluta del directorio donde se encuentra el *script* " "se antepone a :data:`sys.path`." -#: ../Doc/c-api/init.rst:699 +#: ../Doc/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 "" "De lo contrario (es decir, si *argc* es ``0`` o ``argv[0]`` no apunta a un " -"nombre de archivo existente), una cadena de caracteres vacía se antepone " -"a :data:`sys.path`, que es lo mismo que anteponer el directorio de trabajo " +"nombre de archivo existente), una cadena de caracteres vacía se antepone a :" +"data:`sys.path`, que es lo mismo que anteponer el directorio de trabajo " "actual (``\".\"``)." -#: ../Doc/c-api/init.rst:707 ../Doc/c-api/init.rst:743 +#: ../Doc/c-api/init.rst:843 ../Doc/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 "" -"Consulta también los miembros de :c:member:`PyConfig.orig_argv` " -"y :c:member:`PyConfig.argv` de :ref:`Python Initialization Configuration " -"`." +"Consulta también los miembros de :c:member:`PyConfig.orig_argv` y :c:member:" +"`PyConfig.argv` de :ref:`Python Initialization Configuration `." -#: ../Doc/c-api/init.rst:711 +#: ../Doc/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*, " @@ -1244,57 +1457,56 @@ msgstr "" "*updatepath* y actualicen :data:`sys.path` por sí mismas si así lo desean. " "Consulte :cve:`2008-5983`." -#: ../Doc/c-api/init.rst:716 +#: ../Doc/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::" +"popping the first :data:`sys.path` element after having called :c:func:" +"`PySys_SetArgv`, for example using::" msgstr "" "En las versiones anteriores a 3.1.3, puede lograr el mismo efecto quitando " "manualmente el primer elemento (*popping*) :data:`sys.path` después de haber " "llamado :c:func:`PySys_SetArgv`, por ejemplo usando ::" -#: ../Doc/c-api/init.rst:720 +#: ../Doc/c-api/init.rst:856 msgid "PyRun_SimpleString(\"import sys; sys.path.pop(0)\\n\");" msgstr "PyRun_SimpleString(\"import sys; sys.path.pop(0)\\n\");" -#: ../Doc/c-api/init.rst:732 +#: ../Doc/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 `." +"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 "" "Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.argv` " -"y :c:member:`PyConfig.parse_argv`, consulta :ref:`Configuración de " -"inicialización de Python `." +"lugar, se debe usar la configuración de :c:member:`PyConfig.argv` y :c:" +"member:`PyConfig.parse_argv`, consulta :ref:`Configuración de inicialización " +"de Python `." -#: ../Doc/c-api/init.rst:736 +#: ../Doc/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`." +"``1`` unless the :program:`python` interpreter was started with the :option:" +"`-I`." msgstr "" "Esta función funciona como :c:func:`PySys_SetArgvEx` con *updatepath* " "establecido en ``1`` a menos que el intérprete :program:`python` se haya " "iniciado con la opción :option:`-I`." -#: ../Doc/c-api/init.rst:746 +#: ../Doc/c-api/init.rst:882 msgid "The *updatepath* value depends on :option:`-I`." msgstr "El valor *updatepath* depende de la opción :option:`-I`." -#: ../Doc/c-api/init.rst:753 +#: ../Doc/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 `." +"This API is kept for backward compatibility: setting :c:member:`PyConfig." +"home` should be used instead, see :ref:`Python Initialization Configuration " +"`." msgstr "" "Esta API se mantiene para la compatibilidad con versiones anteriores: en su " -"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, " -"consulta :ref:`Configuración de inicialización de Python `." +"lugar, se debe usar la configuración de :c:member:`PyConfig.home`, consulta :" +"ref:`Configuración de inicialización de Python `." -#: ../Doc/c-api/init.rst:757 +#: ../Doc/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 " @@ -1304,7 +1516,7 @@ msgstr "" "ubicación de las bibliotecas estándar de Python. Ver :envvar:`PYTHONHOME` " "para el significado de la cadena de caracteres de argumento." -#: ../Doc/c-api/init.rst:761 +#: ../Doc/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 " @@ -1316,31 +1528,34 @@ msgstr "" "ejecución del programa. Ningún código en el intérprete de Python cambiará el " "contenido de este almacenamiento." -#: ../Doc/c-api/init.rst:774 +#: ../Doc/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." +"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 "" -"Devuelve el \"inicio\" predeterminado, es decir, el valor establecido " -"por :c:member:`PyConfig.home`, o el valor de la variable de " -"entorno :envvar:`PYTHONHOME` si está establecida." +"Devuelve el \"inicio\" predeterminado, es decir, el valor establecido por :c:" +"member:`PyConfig.home`, o el valor de la variable de entorno :envvar:" +"`PYTHONHOME` si está establecida." -#: ../Doc/c-api/init.rst:784 +#: ../Doc/c-api/init.rst:920 +#, fuzzy msgid "" -"Get :c:member:`PyConfig.home` or :envvar:`PYTHONHOME` environment variable " -"instead." +"Use :c:func:`PyConfig_Get(\"home\") ` or the :envvar:" +"`PYTHONHOME` environment variable instead." msgstr "" -"Obtenga la variable de entorno :c:member:`PyConfig.home` " -"o :envvar:`PYTHONHOME` en su lugar." +"Obtenga la variable de entorno :c:member:`PyConfig.home` o :envvar:" +"`PYTHONHOME` en su lugar." -#: ../Doc/c-api/init.rst:792 +#: ../Doc/c-api/init.rst:928 msgid "Thread State and the Global Interpreter Lock" msgstr "Estado del hilo y el bloqueo global del intérprete" -#: ../Doc/c-api/init.rst:799 +#: ../Doc/c-api/init.rst:935 +#, fuzzy msgid "" -"The Python interpreter is not fully thread-safe. In order to support multi-" +"Unless on a :term:`free-threaded ` build of :term:`CPython`, " +"the Python interpreter is not fully thread-safe. In order to support multi-" "threaded Python programs, there's a global lock, called the :term:`global " "interpreter lock` or :term:`GIL`, that must be held by the current thread " "before it can safely access Python objects. Without the lock, even the " @@ -1359,55 +1574,76 @@ msgstr "" "conteo de referencias podría terminar incrementándose solo una vez en lugar " "de dos veces." -#: ../Doc/c-api/init.rst:809 +#: ../Doc/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 to emulate concurrency of execution, the interpreter " -"regularly tries to switch threads (see :func:`sys.setswitchinterval`). The " -"lock is also released around potentially blocking I/O operations like " -"reading or writing a file, so that other Python threads can run in the " -"meantime." +"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 " +"to emulate concurrency of execution, the interpreter regularly tries to " +"switch threads (see :func:`sys.setswitchinterval`). The lock is also " +"released around potentially blocking I/O operations like reading or writing " +"a file, so that other Python threads can run in the meantime." msgstr "" -"Por lo tanto, existe la regla de que solo el hilo que ha " -"adquirido :term:`GIL` puede operar en objetos Python o llamar a funciones " -"API Python/C. Para emular la concurrencia de ejecución, el intérprete " -"regularmente intenta cambiar los hilos (ver :func:`sys.setswitchinterval`). " -"El bloqueo también se libera para bloquear potencialmente las operaciones de " -"E/S, como leer o escribir un archivo, para que otros hilos de Python puedan " -"ejecutarse mientras tanto." +"Por lo tanto, existe la regla de que solo el hilo que ha adquirido :term:" +"`GIL` puede operar en objetos Python o llamar a funciones API Python/C. Para " +"emular la concurrencia de ejecución, el intérprete regularmente intenta " +"cambiar los hilos (ver :func:`sys.setswitchinterval`). El bloqueo también se " +"libera para bloquear potencialmente las operaciones de E/S, como leer o " +"escribir un archivo, para que otros hilos de Python puedan ejecutarse " +"mientras tanto." -#: ../Doc/c-api/init.rst:819 +#: ../Doc/c-api/init.rst:956 +#, fuzzy msgid "" "The Python interpreter keeps some thread-specific bookkeeping information " -"inside a data structure called :c:type:`PyThreadState`. There's also one " -"global variable pointing to the current :c:type:`PyThreadState`: it can be " -"retrieved using :c:func:`PyThreadState_Get`." +"inside a data structure called :c:type:`PyThreadState`, known as a :term:" +"`thread state`. Each OS thread has a thread-local pointer to a :c:type:" +"`PyThreadState`; a thread state referenced by this pointer is considered to " +"be :term:`attached `." msgstr "" "El intérprete de Python mantiene cierta información de contabilidad " -"específica de hilos dentro de una estructura de datos " -"llamada :c:type:`PyThreadState`. También hay una variable global que apunta " -"a la actual :c:type:`PyThreadState`: se puede recuperar " -"usando :c:func:`PyThreadState_Get`." +"específica de hilos dentro de una estructura de datos llamada :c:type:" +"`PyThreadState`. También hay una variable global que apunta a la actual :c:" +"type:`PyThreadState`: se puede recuperar usando :c:func:`PyThreadState_Get`." + +#: ../Doc/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`, " +"except on :term:`free-threaded ` builds. On builds with " +"the :term:`GIL` enabled, :term:`attaching ` a thread " +"state will block until the :term:`GIL` can be acquired. However, even on " +"builds with the :term:`GIL` disabled, it is still required to have an " +"attached thread state to call most of the C API." +msgstr "" -#: ../Doc/c-api/init.rst:825 -msgid "Releasing the GIL from extension code" +#: ../Doc/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:" +"`Py_BEGIN_ALLOW_THREADS` block) will the thread not have an attached thread " +"state. If uncertain, check if :c:func:`PyThreadState_GetUnchecked` returns " +"``NULL``." +msgstr "" + +#: ../Doc/c-api/init.rst:974 +#, fuzzy +msgid "Detaching the thread state from extension code" msgstr "Liberando el GIL del código de extensión" -#: ../Doc/c-api/init.rst:827 +#: ../Doc/c-api/init.rst:976 +#, fuzzy msgid "" -"Most extension code manipulating the :term:`GIL` has the following simple " -"structure::" +"Most extension code manipulating the :term:`thread state` has the following " +"simple structure::" msgstr "" "La mayoría del código de extensión que manipula el :term:`GIL` tiene la " "siguiente estructura simple ::" -#: ../Doc/c-api/init.rst:830 +#: ../Doc/c-api/init.rst:979 +#, fuzzy msgid "" "Save the thread state in a local variable.\n" -"Release the global interpreter lock.\n" "... Do some blocking I/O operation ...\n" -"Reacquire the global interpreter lock.\n" "Restore the thread state from the local variable." msgstr "" "Guarde el estado del subproceso en una variable local.\n" @@ -1416,11 +1652,11 @@ msgstr "" "Recupere el bloqueo del intérprete global.\n" "Restaure el estado del subproceso desde la variable local." -#: ../Doc/c-api/init.rst:836 +#: ../Doc/c-api/init.rst:983 msgid "This is so common that a pair of macros exists to simplify it::" msgstr "Esto es tan común que existen un par de macros para simplificarlo:" -#: ../Doc/c-api/init.rst:838 +#: ../Doc/c-api/init.rst:985 msgid "" "Py_BEGIN_ALLOW_THREADS\n" "... Do some blocking I/O operation ...\n" @@ -1430,7 +1666,7 @@ msgstr "" "... Hace alguna operación bloqueante en I/O ...\n" "Py_END_ALLOW_THREADS" -#: ../Doc/c-api/init.rst:846 +#: ../Doc/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 " @@ -1440,11 +1676,11 @@ msgstr "" "una variable local oculta; la macro :c:macro:`Py_END_ALLOW_THREADS` cierra " "el bloque." -#: ../Doc/c-api/init.rst:850 +#: ../Doc/c-api/init.rst:997 msgid "The block above expands to the following code::" msgstr "El bloque anterior se expande al siguiente código::" -#: ../Doc/c-api/init.rst:852 +#: ../Doc/c-api/init.rst:999 msgid "" "PyThreadState *_save;\n" "\n" @@ -1458,32 +1694,44 @@ msgstr "" "... Realizar alguna operación de bloqueo de E/S...\n" "PyEval_RestoreThread(_save);" -#: ../Doc/c-api/init.rst:862 -msgid "" -"Here is how these functions work: the global interpreter lock is used to " -"protect the pointer to the current thread state. When releasing the lock " -"and saving the thread state, the current thread state pointer must be " -"retrieved before the lock is released (since another thread could " -"immediately acquire the lock and store its own thread state in the global " -"variable). Conversely, when acquiring the lock and restoring the thread " -"state, the lock must be acquired before storing the thread state pointer." -msgstr "" -"Así es como funcionan estas funciones: el bloqueo global del intérprete se " -"usa para proteger el puntero al estado actual del hilo. Al liberar el " -"bloqueo y guardar el estado del hilo, el puntero del estado del hilo actual " -"debe recuperarse antes de que se libere el bloqueo (ya que otro hilo podría " -"adquirir inmediatamente el bloqueo y almacenar su propio estado de hilo en " -"la variable global). Por el contrario, al adquirir el bloqueo y restaurar el " -"estado del hilo, el bloqueo debe adquirirse antes de almacenar el puntero " -"del estado del hilo." - -#: ../Doc/c-api/init.rst:871 -msgid "" -"Calling system I/O functions is the most common use case for releasing the " -"GIL, but it can also be useful before calling long-running computations " -"which don't need access to Python objects, such as compression or " -"cryptographic functions operating over memory buffers. For example, the " -"standard :mod:`zlib` and :mod:`hashlib` modules release the GIL when " +#: ../Doc/c-api/init.rst:1009 +msgid "Here is how these functions work:" +msgstr "" + +#: ../Doc/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:" +"`GIL` is released, allowing other threads to attach a thread state to their " +"own thread, thus getting the :term:`GIL` and can start executing. The " +"pointer to the prior :term:`attached thread state` is stored as a local " +"variable. Upon reaching :c:macro:`Py_END_ALLOW_THREADS`, the thread state " +"that was previously :term:`attached ` is passed to :c:" +"func:`PyEval_RestoreThread`. This function will block until another releases " +"its :term:`thread state `, thus allowing the old :" +"term:`thread state ` to get re-attached and the C API " +"can be called again." +msgstr "" + +#: ../Doc/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 " +"` is still required for blocking I/O and long " +"operations. The difference is that threads don't have to wait for the :term:" +"`GIL` to be released to attach their thread state, allowing true multi-core " +"parallelism." +msgstr "" + +#: ../Doc/c-api/init.rst:1027 +#, fuzzy +msgid "" +"Calling system I/O functions is the most common use case for detaching the :" +"term:`thread state `, but it can also be useful " +"before calling long-running computations which don't need access to Python " +"objects, such as compression or cryptographic functions operating over " +"memory buffers. For example, the standard :mod:`zlib` and :mod:`hashlib` " +"modules detach the :term:`thread state ` when " "compressing or hashing data." msgstr "" "Llamar a las funciones de E/S del sistema es el caso de uso más común para " @@ -1493,18 +1741,19 @@ msgstr "" "intermedias. Por ejemplo, los módulos estándar :mod:`zlib` y :mod:`hashlib` " "liberan el GIL al comprimir o mezclar datos." -#: ../Doc/c-api/init.rst:882 +#: ../Doc/c-api/init.rst:1038 msgid "Non-Python created threads" msgstr "Hilos creados sin Python" -#: ../Doc/c-api/init.rst:884 +#: ../Doc/c-api/init.rst:1040 +#, fuzzy 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 the code showed above is therefore correct. However, when threads " -"are created from C (for example by a third-party library with its own thread " -"management), they don't hold the GIL, nor is there a thread state structure " -"for them." +"When threads are created using the dedicated Python APIs (such as the :mod:" +"`threading` module), a thread state is automatically associated to them and " +"the code showed above is therefore correct. However, when threads are " +"created from C (for example by a third-party library with its own thread " +"management), they don't hold the :term:`GIL`, because they don't have an :" +"term:`attached thread state`." msgstr "" "Cuando se crean hilos utilizando las API dedicadas de Python (como el " "módulo :mod:`threading`), se les asocia automáticamente un estado del hilo " @@ -1513,15 +1762,15 @@ msgstr "" "terceros con su propia administración de hilos), no contienen el GIL, ni " "existe una estructura de estado de hilos para ellos." -#: ../Doc/c-api/init.rst:891 +#: ../Doc/c-api/init.rst:1047 +#, fuzzy 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 " -"must first register these threads with the interpreter by creating a thread " -"state data structure, then acquiring the GIL, and finally storing their " -"thread state pointer, before you can start using the Python/C API. When you " -"are done, you should reset the thread state pointer, release the GIL, and " -"finally free the thread state data structure." +"must first register these threads with the interpreter by creating an :term:" +"`attached thread state` before you can start using the Python/C API. When " +"you are done, you should detach the :term:`thread state `, and finally free it." msgstr "" "Si necesita llamar al código Python desde estos subprocesos (a menudo esto " "será parte de una API de devolución de llamada proporcionada por la " @@ -1533,7 +1782,7 @@ msgstr "" "liberar el GIL y finalmente liberar la estructura de datos del estado del " "hilo." -#: ../Doc/c-api/init.rst:899 +#: ../Doc/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 " @@ -1543,7 +1792,7 @@ msgstr "" "hacen todo lo anterior automáticamente. El idioma típico para llamar a " "Python desde un hilo C es::" -#: ../Doc/c-api/init.rst:903 +#: ../Doc/c-api/init.rst:1058 msgid "" "PyGILState_STATE gstate;\n" "gstate = PyGILState_Ensure();\n" @@ -1566,25 +1815,77 @@ msgstr "" "punto. */\n" "PyGILState_Release(gstate);" -#: ../Doc/c-api/init.rst:913 +#: ../Doc/c-api/init.rst:1068 +#, fuzzy 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." +"supports the creation of additional interpreters (using :c:func:" +"`Py_NewInterpreter`), but mixing multiple interpreters and the " +"``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 "" "Tenga en cuenta que las funciones ``PyGILState_*`` asumen que solo hay un " "intérprete global (creado automáticamente por :c:func:`Py_Initialize`). " -"Python admite la creación de intérpretes adicionales " -"(usando :c:func:`Py_NewInterpreter`), pero la mezcla de varios intérpretes y " -"la API ``PyGILState_*`` no está soportada." +"Python admite la creación de intérpretes adicionales (usando :c:func:" +"`Py_NewInterpreter`), pero la mezcla de varios intérpretes y la API " +"``PyGILState_*`` no está soportada." -#: ../Doc/c-api/init.rst:923 +#: ../Doc/c-api/init.rst:1078 +msgid "Supporting subinterpreters in non-Python threads" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/init.rst:1088 +#, fuzzy +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 "" +"PyGILState_STATE gstate;\n" +"gstate = PyGILState_Ensure();\n" +"\n" +"/* Realizar acciones de Python aquí. */\n" +"result = CallSomeFunction();\n" +"/* evaluar el resultado o manejar la excepción */\n" +"\n" +"/* Liberar el hilo. No se permite ninguna API de Python más allá de este " +"punto. */\n" +"PyGILState_Release(gstate);" + +#: ../Doc/c-api/init.rst:1106 msgid "Cautions about fork()" msgstr "Precauciones sobre ``fork()``" -#: ../Doc/c-api/init.rst:925 +#: ../Doc/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 " @@ -1593,13 +1894,13 @@ msgid "" "CPython's runtime." msgstr "" "Otra cosa importante a tener en cuenta sobre los hilos es su comportamiento " -"frente a la llamada C :c:func:`fork`. En la mayoría de los sistemas " -"con :c:func:`fork`, después de que un proceso se bifurca, solo existirá el " -"hilo que emitió el *fork*. Esto tiene un impacto concreto tanto en cómo se " -"deben manejar las cerraduras como en todo el estado almacenado en el tiempo " -"de ejecución de CPython." +"frente a la llamada C :c:func:`fork`. En la mayoría de los sistemas con :c:" +"func:`fork`, después de que un proceso se bifurca, solo existirá el hilo que " +"emitió el *fork*. Esto tiene un impacto concreto tanto en cómo se deben " +"manejar las cerraduras como en todo el estado almacenado en el tiempo de " +"ejecución de CPython." -#: ../Doc/c-api/init.rst:931 +#: ../Doc/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` " @@ -1609,29 +1910,28 @@ msgid "" "of additional (non-Python) locks that need to be acquired before or reset " "after a fork. OS facilities such as :c:func:`!pthread_atfork` would need to " "be used to accomplish the same thing. Additionally, when extending or " -"embedding Python, calling :c:func:`fork` directly rather than " -"through :func:`os.fork` (and returning to or calling into Python) may result " -"in a deadlock by one of Python's internal locks being held by a thread that " -"is defunct after the fork. :c:func:`PyOS_AfterFork_Child` tries to reset the " -"necessary locks, but is not always able to." +"embedding Python, calling :c:func:`fork` directly rather than through :func:" +"`os.fork` (and returning to or calling into Python) may result in a deadlock " +"by one of Python's internal locks being held by a thread that is defunct " +"after the fork. :c:func:`PyOS_AfterFork_Child` tries to reset the necessary " +"locks, but is not always able to." msgstr "" "El hecho de que solo permanezca el hilo \"actual\" significa que los " "bloqueos mantenidos por otros hilos nunca se liberarán. Python resuelve esto " "para :func:`os.fork` adquiriendo los bloqueos que usa internamente antes de " -"la bifurcación y liberándolos después. Además, restablece " -"cualquier :ref:`lock-objects` en el hijo. Al extender o incrustar Python, no " -"hay forma de informar a Python de bloqueos adicionales (que no sean de " -"Python) que deben adquirirse antes o restablecerse después de una " -"bifurcación. Se necesitarían usar recursos del sistema operativo " -"como :c:func:`!pthread_atfork` para lograr lo mismo. Además, al extender o " -"incrustar Python, llamar a :c:func:`fork` directamente en lugar de a través " -"de :func:`os.fork` (y regresar a Python o llamar a Python) puede resultar en " -"un bloqueo por uno de los bloqueos internos de Python que está retenido por " -"un hilo que está inactivo después de la " -"bifurcación. :c:func:`PyOS_AfterFork_Child` intenta restablecer los bloqueos " -"necesarios, pero no siempre puede hacerlo." - -#: ../Doc/c-api/init.rst:946 +"la bifurcación y liberándolos después. Además, restablece cualquier :ref:" +"`lock-objects` en el hijo. Al extender o incrustar Python, no hay forma de " +"informar a Python de bloqueos adicionales (que no sean de Python) que deben " +"adquirirse antes o restablecerse después de una bifurcación. Se necesitarían " +"usar recursos del sistema operativo como :c:func:`!pthread_atfork` para " +"lograr lo mismo. Además, al extender o incrustar Python, llamar a :c:func:" +"`fork` directamente en lugar de a través de :func:`os.fork` (y regresar a " +"Python o llamar a Python) puede resultar en un bloqueo por uno de los " +"bloqueos internos de Python que está retenido por un hilo que está inactivo " +"después de la bifurcación. :c:func:`PyOS_AfterFork_Child` intenta " +"restablecer los bloqueos necesarios, pero no siempre puede hacerlo." + +#: ../Doc/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 " @@ -1644,21 +1944,58 @@ msgid "" "called immediately after." msgstr "" "El hecho de que todos los otros hilos desaparezcan también significa que el " -"estado de ejecución de CPython debe limpiarse correctamente, lo " -"que :func:`os.fork` lo hace. Esto significa finalizar todos los demás " -"objetos :c:type:`PyThreadState` que pertenecen al intérprete actual y todos " -"los demás objetos :c:type:`PyInterpreterState`. Debido a esto y a la " -"naturaleza especial del :ref:`intérprete \"principal\" `, :c:func:`fork` solo debería llamarse en el hilo \"principal\" de " -"ese intérprete, donde el CPython global el tiempo de ejecución se inicializó " +"estado de ejecución de CPython debe limpiarse correctamente, lo que :func:" +"`os.fork` lo hace. Esto significa finalizar todos los demás objetos :c:type:" +"`PyThreadState` que pertenecen al intérprete actual y todos los demás " +"objetos :c:type:`PyInterpreterState`. Debido a esto y a la naturaleza " +"especial del :ref:`intérprete \"principal\" `, :c:" +"func:`fork` solo debería llamarse en el hilo \"principal\" de ese " +"intérprete, donde el CPython global el tiempo de ejecución se inicializó " "originalmente. La única excepción es si :c:func:`exec` se llamará " "inmediatamente después." -#: ../Doc/c-api/init.rst:959 +#: ../Doc/c-api/init.rst:1143 +msgid "Cautions regarding runtime finalization" +msgstr "" + +#: ../Doc/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:" +"`KeyboardInterrupt`) and running the :mod:`atexit` functions, the runtime is " +"marked as *finalizing*: :c:func:`Py_IsFinalizing` and :func:`sys." +"is_finalizing` return true. At this point, only the *finalization thread* " +"that initiated finalization (typically the main thread) is allowed to " +"acquire the :term:`GIL`." +msgstr "" + +#: ../Doc/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, " +"the thread enters **a permanently blocked state** where it remains until the " +"program exits. In most cases this is harmless, but this can result in " +"deadlock if a later stage of finalization attempts to acquire a lock owned " +"by the blocked thread, or otherwise waits on the blocked thread." +msgstr "" + +#: ../Doc/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 " +"exited here in CPython 3.13 and earlier. The CPython runtime :term:`thread " +"state` C APIs have never had any error reporting or handling expectations " +"at :term:`thread state` attachment time that would've allowed for graceful " +"exit from this situation. Changing that would require new stable C APIs and " +"rewriting the majority of C code in the CPython ecosystem to use those with " +"error handling." +msgstr "" + +#: ../Doc/c-api/init.rst:1170 msgid "High-level API" msgstr "API de alto nivel" -#: ../Doc/c-api/init.rst:961 +#: ../Doc/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:" @@ -1666,7 +2003,7 @@ msgstr "" "Estos son los tipos y funciones más utilizados al escribir código de " "extensión C o al incrustar el intérprete de Python:" -#: ../Doc/c-api/init.rst:966 +#: ../Doc/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 " @@ -1678,7 +2015,7 @@ msgstr "" "comparten la administración de su módulo y algunos otros elementos internos. " "No hay miembros públicos en esta estructura." -#: ../Doc/c-api/init.rst:971 +#: ../Doc/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 " @@ -1691,7 +2028,13 @@ msgstr "" "compartido por todos los hilos, independientemente de a qué intérprete " "pertenezcan." -#: ../Doc/c-api/init.rst:979 +#: ../Doc/c-api/init.rst:1189 +msgid "" +":pep:`684` introduced the possibility of a :ref:`per-interpreter GIL `. See :c:func:`Py_NewInterpreterFromConfig`." +msgstr "" + +#: ../Doc/c-api/init.rst:1196 msgid "" "This data structure represents the state of a single thread. The only " "public data member is:" @@ -1699,26 +2042,26 @@ msgstr "" "Esta estructura de datos representa el estado de un único subproceso. El " "único miembro de datos público es:" -#: ../Doc/c-api/init.rst:984 +#: ../Doc/c-api/init.rst:1201 msgid "This thread's interpreter state." msgstr "Estado del intérprete de este hilo." -#: ../Doc/c-api/init.rst:995 +#: ../Doc/c-api/init.rst:1212 msgid "Deprecated function which does nothing." msgstr "Función deprecada que no hace nada." -#: ../Doc/c-api/init.rst:997 +#: ../Doc/c-api/init.rst:1214 msgid "" "In Python 3.6 and older, this function created the GIL if it didn't exist." msgstr "" "En Python 3.6 y versiones anteriores, esta función creaba el GIL si no " "existía." -#: ../Doc/c-api/init.rst:999 +#: ../Doc/c-api/init.rst:1216 msgid "The function now does nothing." msgstr "La función ahora no hace nada." -#: ../Doc/c-api/init.rst:1002 +#: ../Doc/c-api/init.rst:1219 msgid "" "This function is now called by :c:func:`Py_Initialize()`, so you don't have " "to call it yourself anymore." @@ -1726,65 +2069,56 @@ msgstr "" "Esta función ahora es llamada por :c:func:`Py_Initialize()`, por lo que ya " "no tiene que llamarla usted mismo." -#: ../Doc/c-api/init.rst:1006 +#: ../Doc/c-api/init.rst:1223 msgid "" "This function cannot be called before :c:func:`Py_Initialize()` anymore." msgstr "Esta función ya no se puede llamar antes de :c:func:`Py_Initialize()`." -#: ../Doc/c-api/init.rst:1016 +#: ../Doc/c-api/init.rst:1233 msgid "" -"Release the global interpreter lock (if it has been created) and reset the " -"thread state to ``NULL``, returning the previous thread state (which is not " -"``NULL``). If the lock has been created, the current thread must have " -"acquired it." +"Detach the :term:`attached thread state` and return it. The thread will have " +"no :term:`thread state` upon returning." msgstr "" -"Libere el bloqueo global del intérprete (si se ha creado) y restablezca el " -"estado del hilo a ``NULL``, retornando el estado del hilo anterior (que no " -"es ``NULL``). Si se ha creado el bloqueo, el hilo actual debe haberlo " -"adquirido." -#: ../Doc/c-api/init.rst:1024 +#: ../Doc/c-api/init.rst:1239 msgid "" -"Acquire the global interpreter lock (if it has been created) and set the " -"thread state to *tstate*, which must not be ``NULL``. If the lock has been " -"created, the current thread must not have acquired it, otherwise deadlock " -"ensues." +"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 "" -"Adquiera el bloqueo global del intérprete (si se ha creado) y establezca el " -"estado del hilo en *tstate*, que no debe ser ``NULL``. Si se ha creado el " -"bloqueo, el hilo actual no debe haberlo adquirido, de lo contrario se " -"produce un *deadlock*." -#: ../Doc/c-api/init.rst:1030 ../Doc/c-api/init.rst:1089 -#: ../Doc/c-api/init.rst:1371 +#: ../Doc/c-api/init.rst:1244 ../Doc/c-api/init.rst:1618 msgid "" -"Calling this function from a thread when the runtime is finalizing will " -"terminate the thread, even if the thread was not created by Python. You can " -"use :c:func:`Py_IsFinalizing` or :func:`sys.is_finalizing` to check if the " -"interpreter is in process of being finalized before calling this function to " -"avoid unwanted termination." +"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 " +"Python. Refer to :ref:`cautions-regarding-runtime-finalization` for more " +"details." msgstr "" -"Si se llama a esta función desde un subproceso cuando el entorno de " -"ejecución está finalizando, se terminará el subproceso, incluso si Python no " -"lo creó. Puede usar :c:func:`Py_IsFinalizing` o :func:`sys.is_finalizing` " -"para verificar si el intérprete está en proceso de finalización antes de " -"llamar a esta función para evitar una finalización no deseada." -#: ../Doc/c-api/init.rst:1038 +#: ../Doc/c-api/init.rst:1249 ../Doc/c-api/init.rst:1320 +#: ../Doc/c-api/init.rst:1628 +msgid "" +"Hangs the current thread, rather than terminating it, if called while the " +"interpreter is finalizing." +msgstr "" + +#: ../Doc/c-api/init.rst:1255 +#, fuzzy msgid "" -"Return the current thread state. The global interpreter lock must be held. " -"When the current thread state is ``NULL``, this issues a fatal error (so " -"that the caller needn't check for ``NULL``)." +"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` " +"block), then this issues a fatal error (so that the caller needn't check for " +"``NULL``)." msgstr "" "Retorna el estado actual del hilo. Se debe mantener el bloqueo global del " "intérprete. Cuando el estado actual del hilo es ``NULL``, esto genera un " "error fatal (por lo que la persona que llama no necesita verificar ``NULL``)." -#: ../Doc/c-api/init.rst:1042 +#: ../Doc/c-api/init.rst:1260 msgid "See also :c:func:`PyThreadState_GetUnchecked`." msgstr "Véase también :c:func:`PyThreadState_GetUnchecked`." -#: ../Doc/c-api/init.rst:1047 +#: ../Doc/c-api/init.rst:1264 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 " @@ -1794,7 +2128,7 @@ msgstr "" "fatal si es NULL. El llamador es responsable de verificar si el resultado es " "NULL." -#: ../Doc/c-api/init.rst:1051 +#: ../Doc/c-api/init.rst:1268 msgid "" "In Python 3.5 to 3.12, the function was private and known as " "``_PyThreadState_UncheckedGet()``." @@ -1802,17 +2136,25 @@ msgstr "" "En Python 3.5 a 3.12, la función era privada y se conocía como " "``_PyThreadState_UncheckedGet()``." -#: ../Doc/c-api/init.rst:1058 +#: ../Doc/c-api/init.rst:1275 msgid "" -"Swap the current thread state with the thread state given by the argument " -"*tstate*, which may be ``NULL``. The global interpreter lock must be held " -"and is not released." +"Set the :term:`attached thread state` to *tstate*, and return the :term:" +"`thread state` that was attached prior to calling." msgstr "" -"Cambia el estado del hilo actual con el estado del hilo dado por el " -"argumento *tstate*, que puede ser ``NULL``. El bloqueo global del intérprete " -"debe mantenerse y no se libera." -#: ../Doc/c-api/init.rst:1063 +#: ../Doc/c-api/init.rst:1278 +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 "" + +#: ../Doc/c-api/init.rst:1285 +msgid "" +"Similar to :c:func:`PyGILState_Ensure`, this function will hang the thread " +"if the runtime is finalizing." +msgstr "" + +#: ../Doc/c-api/init.rst:1289 msgid "" "The following functions use thread-local storage, and are not compatible " "with sub-interpreters:" @@ -1820,81 +2162,92 @@ msgstr "" "Las siguientes funciones utilizan almacenamiento local de hilos y no son " "compatibles con subinterpretes:" -#: ../Doc/c-api/init.rst:1068 +#: ../Doc/c-api/init.rst:1294 +#, fuzzy msgid "" "Ensure that the current thread is ready to call the Python C API regardless " -"of the current state of Python, or of the global interpreter lock. This may " -"be called as many times as desired by a thread as long as each call is " -"matched with a call to :c:func:`PyGILState_Release`. In general, other " -"thread-related APIs may be used between :c:func:`PyGILState_Ensure` " -"and :c:func:`PyGILState_Release` calls as long as the thread state is " -"restored to its previous state before the Release(). For example, normal " -"usage of the :c:macro:`Py_BEGIN_ALLOW_THREADS` " -"and :c:macro:`Py_END_ALLOW_THREADS` macros is acceptable." +"of the current state of Python, or of the :term:`attached thread state`. " +"This may be called as many times as desired by a thread as long as each call " +"is matched with a call to :c:func:`PyGILState_Release`. In general, other " +"thread-related APIs may be used between :c:func:`PyGILState_Ensure` and :c:" +"func:`PyGILState_Release` calls as long as the thread state is restored to " +"its previous state before the Release(). For example, normal usage of the :" +"c:macro:`Py_BEGIN_ALLOW_THREADS` and :c:macro:`Py_END_ALLOW_THREADS` macros " +"is acceptable." msgstr "" "Asegúrese de que el subproceso actual esté listo para llamar a la API de " "Python C, independientemente del estado actual de Python o del bloqueo " "global del intérprete. Esto se puede invocar tantas veces como lo desee un " -"subproceso siempre que cada llamada coincida con una llamada " -"a :c:func:`PyGILState_Release`. En general, se pueden usar otras API " -"relacionadas con subprocesos entre :c:func:`PyGILState_Ensure` " -"y :c:func:`PyGILState_Release` invoca siempre que el estado del subproceso " -"se restablezca a su estado anterior antes del *Release()*. Por ejemplo, el " -"uso normal de las macros :c:macro:`Py_BEGIN_ALLOW_THREADS` " -"y :c:macro:`Py_END_ALLOW_THREADS` es aceptable." - -#: ../Doc/c-api/init.rst:1078 -msgid "" -"The return value is an opaque \"handle\" to the thread state " -"when :c:func:`PyGILState_Ensure` was called, and must be passed " -"to :c:func:`PyGILState_Release` to ensure Python is left in the same state. " -"Even though recursive calls are allowed, these handles *cannot* be shared - " -"each unique call to :c:func:`PyGILState_Ensure` must save the handle for its " -"call to :c:func:`PyGILState_Release`." +"subproceso siempre que cada llamada coincida con una llamada a :c:func:" +"`PyGILState_Release`. En general, se pueden usar otras API relacionadas con " +"subprocesos entre :c:func:`PyGILState_Ensure` y :c:func:`PyGILState_Release` " +"invoca siempre que el estado del subproceso se restablezca a su estado " +"anterior antes del *Release()*. Por ejemplo, el uso normal de las macros :c:" +"macro:`Py_BEGIN_ALLOW_THREADS` y :c:macro:`Py_END_ALLOW_THREADS` es " +"aceptable." + +#: ../Doc/c-api/init.rst:1304 +#, fuzzy +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:" +"func:`PyGILState_Release` to ensure Python is left in the same state. Even " +"though recursive calls are allowed, these handles *cannot* be shared - each " +"unique call to :c:func:`PyGILState_Ensure` must save the handle for its call " +"to :c:func:`PyGILState_Release`." +msgstr "" +"El valor de retorno es un \"identificador\" opaco al estado del hilo cuando :" +"c:func:`PyGILState_Ensure` fue llamado, y debe pasarse a :c:func:" +"`PyGILState_Release` para asegurar que Python se deje en el mismo estado. " +"Aunque las llamadas recursivas están permitidas, estos identificadores *no* " +"pueden compartirse; cada llamada única a :c:func:`PyGILState_Ensure` debe " +"guardar el identificador para su llamada a :c:func:`PyGILState_Release`." + +#: ../Doc/c-api/init.rst:1311 +#, fuzzy +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 "" -"El valor de retorno es un \"identificador\" opaco al estado del hilo " -"cuando :c:func:`PyGILState_Ensure` fue llamado, y debe pasarse " -"a :c:func:`PyGILState_Release` para asegurar que Python se deje en el mismo " -"estado. Aunque las llamadas recursivas están permitidas, estos " -"identificadores *no* pueden compartirse; cada llamada única " -"a :c:func:`PyGILState_Ensure` debe guardar el identificador para su llamada " -"a :c:func:`PyGILState_Release`." +"Cuando la función regrese, el hilo actual contendrá el GIL y podrá llamar a " +"código arbitrario de Python. El fracaso es un error fatal." -#: ../Doc/c-api/init.rst:1085 +#: ../Doc/c-api/init.rst:1315 msgid "" -"When the function returns, the current thread will hold the GIL and be able " -"to call arbitrary Python code. Failure is a fatal error." +"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 "" -"Cuando la función regrese, el hilo actual contendrá el GIL y podrá llamar a " -"código arbitrario de Python. El fracaso es un error fatal." -#: ../Doc/c-api/init.rst:1097 +#: ../Doc/c-api/init.rst:1326 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:`PyGILState_Ensure` call (but generally this state " -"will be unknown to the caller, hence the use of the GILState API)." +"will be the same as it was prior to the corresponding :c:func:" +"`PyGILState_Ensure` call (but generally this state will be unknown to the " +"caller, hence the use of the GILState API)." msgstr "" "Libera cualquier recurso previamente adquirido. Después de esta llamada, el " -"estado de Python será el mismo que antes de la llamada " -"correspondiente :c:func:`PyGILState_Ensure` (pero en general este estado " -"será desconocido para la persona que llama, de ahí el uso de la API " -"``GILState``)." +"estado de Python será el mismo que antes de la llamada correspondiente :c:" +"func:`PyGILState_Ensure` (pero en general este estado será desconocido para " +"la persona que llama, de ahí el uso de la API ``GILState``)." -#: ../Doc/c-api/init.rst:1102 +#: ../Doc/c-api/init.rst:1331 msgid "" -"Every call to :c:func:`PyGILState_Ensure` must be matched by a call " -"to :c:func:`PyGILState_Release` on the same thread." +"Every call to :c:func:`PyGILState_Ensure` must be matched by a call to :c:" +"func:`PyGILState_Release` on the same thread." msgstr "" -"Cada llamada a :c:func:`PyGILState_Ensure` debe coincidir con una llamada " -"a :c:func:`PyGILState_Release` en el mismo hilo." +"Cada llamada a :c:func:`PyGILState_Ensure` debe coincidir con una llamada a :" +"c:func:`PyGILState_Release` en el mismo hilo." -#: ../Doc/c-api/init.rst:1108 +#: ../Doc/c-api/init.rst:1336 +#, fuzzy msgid "" -"Get the current thread state for this thread. May return ``NULL`` if no " -"GILState API has been used on the current thread. Note that the main thread " -"always has such a thread-state, even if no auto-thread-state call has been " -"made on the main thread. This is mainly a helper/diagnostic function." +"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 " +"thread always has such a thread-state, even if no auto-thread-state call has " +"been made on the main thread. This is mainly a helper/diagnostic function." msgstr "" "Obtenga el estado actual del hilo para este hilo. Puede retornar ``NULL`` si " "no se ha utilizado la API ``GILState`` en el hilo actual. Tenga en cuenta " @@ -1903,15 +2256,25 @@ msgstr "" "en el subproceso principal. Esta es principalmente una función auxiliar y de " "diagnóstico." -#: ../Doc/c-api/init.rst:1116 +#: ../Doc/c-api/init.rst:1342 msgid "" -"Return ``1`` if the current thread is holding the GIL and ``0`` otherwise. " -"This function can be called from any thread at any time. Only if it has had " -"its Python thread state initialized and currently is holding the 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 GIL is locked can allow the caller to perform sensitive actions or " -"otherwise behave differently." +"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 "" + +#: ../Doc/c-api/init.rst:1351 +#, fuzzy +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 :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 "" "Retorna ``1`` si el hilo actual mantiene el GIL y ``0`` de lo contrario. " "Esta función se puede llamar desde cualquier hilo en cualquier momento. Solo " @@ -1922,7 +2285,14 @@ msgstr "" "bloqueado puede permitir que la persona que llama realice acciones " "confidenciales o se comporte de otra manera de manera diferente." -#: ../Doc/c-api/init.rst:1128 +#: ../Doc/c-api/init.rst:1361 +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 "" + +#: ../Doc/c-api/init.rst:1368 msgid "" "The following macros are normally used without a trailing semicolon; look " "for example usage in the Python source distribution." @@ -1930,163 +2300,175 @@ msgstr "" "Las siguientes macros se usan normalmente sin punto y coma final; busque, " "por ejemplo, el uso en la distribución fuente de Python." -#: ../Doc/c-api/init.rst:1134 +#: ../Doc/c-api/init.rst:1374 msgid "" -"This macro expands to ``{ PyThreadState *_save; _save = " -"PyEval_SaveThread();``. Note that it contains an opening brace; it must be " -"matched with a following :c:macro:`Py_END_ALLOW_THREADS` macro. See above " -"for further discussion of this macro." +"This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();" +"``. Note that it contains an opening brace; it must be matched with a " +"following :c:macro:`Py_END_ALLOW_THREADS` macro. See above for further " +"discussion of this macro." msgstr "" -"Esta macro se expande a ``{PyThreadState *_save; _save = " -"PyEval_SaveThread();``. Tenga en cuenta que contiene una llave de apertura; " -"debe coincidir con la siguiente macro :c:macro:`Py_END_ALLOW_THREADS`. Ver " -"arriba para una discusión más detallada de esta macro." +"Esta macro se expande a ``{PyThreadState *_save; _save = PyEval_SaveThread();" +"``. Tenga en cuenta que contiene una llave de apertura; debe coincidir con " +"la siguiente macro :c:macro:`Py_END_ALLOW_THREADS`. Ver arriba para una " +"discusión más detallada de esta macro." -#: ../Doc/c-api/init.rst:1142 +#: ../Doc/c-api/init.rst:1382 msgid "" "This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it " -"contains a closing brace; it must be matched with an " -"earlier :c:macro:`Py_BEGIN_ALLOW_THREADS` macro. See above for further " -"discussion of this macro." +"contains a closing brace; it must be matched with an earlier :c:macro:" +"`Py_BEGIN_ALLOW_THREADS` macro. See above for further discussion of this " +"macro." msgstr "" "Esta macro se expande a ``PyEval_RestoreThread(_save); }``. Tenga en cuenta " -"que contiene una llave de cierre; debe coincidir con una macro " -"anterior :c:macro:`Py_BEGIN_ALLOW_THREADS`. Ver arriba para una discusión " -"más detallada de esta macro." +"que contiene una llave de cierre; debe coincidir con una macro anterior :c:" +"macro:`Py_BEGIN_ALLOW_THREADS`. Ver arriba para una discusión más detallada " +"de esta macro." -#: ../Doc/c-api/init.rst:1150 +#: ../Doc/c-api/init.rst:1390 msgid "" -"This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent " -"to :c:macro:`Py_END_ALLOW_THREADS` without the closing brace." +"This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to :" +"c:macro:`Py_END_ALLOW_THREADS` without the closing brace." msgstr "" -"Esta macro se expande a ``PyEval_RestoreThread(_save);``: es equivalente " -"a :c:macro:`Py_END_ALLOW_THREADS` sin la llave de cierre." +"Esta macro se expande a ``PyEval_RestoreThread(_save);``: es equivalente a :" +"c:macro:`Py_END_ALLOW_THREADS` sin la llave de cierre." -#: ../Doc/c-api/init.rst:1156 +#: ../Doc/c-api/init.rst:1396 msgid "" -"This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent " -"to :c:macro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable " +"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 "" -"Esta macro se expande a ``_save = PyEval_SaveThread();``: es equivalente " -"a :c:macro:`Py_BEGIN_ALLOW_THREADS` sin la llave de apertura y la " -"declaración de variable." +"Esta macro se expande a ``_save = PyEval_SaveThread();``: es equivalente a :" +"c:macro:`Py_BEGIN_ALLOW_THREADS` sin la llave de apertura y la declaración " +"de variable." -#: ../Doc/c-api/init.rst:1162 +#: ../Doc/c-api/init.rst:1402 msgid "Low-level API" msgstr "API de bajo nivel" -#: ../Doc/c-api/init.rst:1164 +#: ../Doc/c-api/init.rst:1404 msgid "" "All of the following functions must be called after :c:func:`Py_Initialize`." msgstr "" -"Todas las siguientes funciones deben llamarse después " -"de :c:func:`Py_Initialize`." +"Todas las siguientes funciones deben llamarse después de :c:func:" +"`Py_Initialize`." -#: ../Doc/c-api/init.rst:1166 -msgid ":c:func:`Py_Initialize()` now initializes the :term:`GIL`." +#: ../Doc/c-api/init.rst:1406 +#, fuzzy +msgid "" +":c:func:`Py_Initialize()` now initializes the :term:`GIL` and sets an :term:" +"`attached thread state`." msgstr ":c:func:`Py_Initialize()` ahora inicializa el :term:`GIL`." -#: ../Doc/c-api/init.rst:1172 +#: ../Doc/c-api/init.rst:1413 +#, fuzzy msgid "" -"Create a new interpreter state object. The global interpreter lock need not " -"be held, but may be held if it is necessary to serialize calls to this " -"function." +"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 "" "Crea un nuevo objeto de estado de intérprete. No es necesario retener el " "bloqueo global del intérprete, pero se puede retener si es necesario para " "serializar llamadas a esta función." -#: ../Doc/c-api/init.rst:1176 +#: ../Doc/c-api/init.rst:1417 msgid "" -"Raises an :ref:`auditing event ` " -"``cpython.PyInterpreterState_New`` with no arguments." +"Raises an :ref:`auditing event ` ``cpython." +"PyInterpreterState_New`` with no arguments." msgstr "" -"Genera un :ref:`evento de auditoría ` " -"``python.PyInterpreterState_New`` sin argumentos." +"Genera un :ref:`evento de auditoría ` ``python." +"PyInterpreterState_New`` sin argumentos." -#: ../Doc/c-api/init.rst:1181 +#: ../Doc/c-api/init.rst:1422 +#, fuzzy msgid "" -"Reset all information in an interpreter state object. The global " -"interpreter lock must be held." +"Reset all information in an interpreter state object. There must be an :" +"term:`attached thread state` for the interpreter." msgstr "" "Restablece toda la información en un objeto de estado de intérprete. Se debe " "mantener el bloqueo global del intérprete." -#: ../Doc/c-api/init.rst:1184 +#: ../Doc/c-api/init.rst:1425 msgid "" -"Raises an :ref:`auditing event ` " -"``cpython.PyInterpreterState_Clear`` with no arguments." +"Raises an :ref:`auditing event ` ``cpython." +"PyInterpreterState_Clear`` with no arguments." msgstr "" "Lanza una :ref:`eventos de auditoría ` ``python.PyInterpreterState " "Clear`` sin argumentos." -#: ../Doc/c-api/init.rst:1189 +#: ../Doc/c-api/init.rst:1430 +#, fuzzy msgid "" -"Destroy an interpreter state object. The global interpreter lock need not " -"be held. The interpreter state must have been reset with a previous call " -"to :c:func:`PyInterpreterState_Clear`." +"Destroy an interpreter state object. There **should not** be an :term:" +"`attached thread state` for the target interpreter. The interpreter state " +"must have been reset with a previous call to :c:func:" +"`PyInterpreterState_Clear`." msgstr "" "Destruye un objeto de estado de intérprete. No es necesario mantener el " "bloqueo global del intérprete. El estado del intérprete debe haberse " "restablecido con una llamada previa a :c:func:`PyInterpreterState_Clear`." -#: ../Doc/c-api/init.rst:1196 +#: ../Doc/c-api/init.rst:1437 msgid "" "Create a new thread state object belonging to the given interpreter object. " -"The global interpreter lock need not be held, but may be held if it is " -"necessary to serialize calls to this function." +"An :term:`attached thread state` is not needed." msgstr "" -"Crea un nuevo objeto de estado de hilo que pertenece al objeto de intérprete " -"dado. No es necesario retener el bloqueo global del intérprete, pero se " -"puede retener si es necesario para serializar llamadas a esta función." -#: ../Doc/c-api/init.rst:1203 +#: ../Doc/c-api/init.rst:1442 +#, fuzzy msgid "" -"Reset all information in a thread state object. The global interpreter lock " -"must be held." +"Reset all information in a :term:`thread state` object. *tstate* must be :" +"term:`attached `" msgstr "" "Restablece toda la información en un objeto de estado de hilo. Se debe " "mantener el bloqueo global del intérprete." -#: ../Doc/c-api/init.rst:1206 +#: ../Doc/c-api/init.rst:1445 msgid "" "This function now calls the :c:member:`PyThreadState.on_delete` callback. " "Previously, that happened in :c:func:`PyThreadState_Delete`." msgstr "" -"Esta función ahora llama a la " -"retrollamada :c:member:`PyThreadState.on_delete`. Anteriormente, eso sucedía " -"en :c:func:`PyThreadState_Delete`." +"Esta función ahora llama a la retrollamada :c:member:`PyThreadState." +"on_delete`. Anteriormente, eso sucedía en :c:func:`PyThreadState_Delete`." + +#: ../Doc/c-api/init.rst:1449 +msgid "The :c:member:`PyThreadState.on_delete` callback was removed." +msgstr "" + +#: ../Doc/c-api/init.rst:1455 +#, fuzzy +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 "" +"Destruye un objeto de estado de intérprete. No es necesario mantener el " +"bloqueo global del intérprete. El estado del intérprete debe haberse " +"restablecido con una llamada previa a :c:func:`PyInterpreterState_Clear`." -#: ../Doc/c-api/init.rst:1213 +#: ../Doc/c-api/init.rst:1463 +#, fuzzy msgid "" -"Destroy a thread state object. The global interpreter lock need not be " -"held. The thread state must have been reset with a previous call " -"to :c:func:`PyThreadState_Clear`." +"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 "" "Destruye un objeto de estado de hilo. No es necesario mantener el bloqueo " "global del intérprete. El estado del hilo debe haberse restablecido con una " "llamada previa a :c:func:`PyThreadState_Clear`." -#: ../Doc/c-api/init.rst:1220 +#: ../Doc/c-api/init.rst:1466 msgid "" -"Destroy the current thread state and release the global interpreter lock. " -"Like :c:func:`PyThreadState_Delete`, the global interpreter lock must be " -"held. The thread state must have been reset with a previous call " -"to :c:func:`PyThreadState_Clear`." +"No :term:`thread state` will be :term:`attached ` " +"upon returning." msgstr "" -"Destruye el estado actual del subproceso y libera el bloqueo global del " -"intérprete. Al igual que en :c:func:`PyThreadState_Delete`, el bloqueo " -"global del intérprete debe mantenerse. El estado del subproceso debe haberse " -"restablecido con una llamada anterior a :c:func:`PyThreadState_Clear`." -#: ../Doc/c-api/init.rst:1228 +#: ../Doc/c-api/init.rst:1471 msgid "Get the current frame of the Python thread state *tstate*." msgstr "Obtiene el marco actual del estado del hilo de Python *tstate*." # Como bien tradujeron con anterioridad, está más claro el decir referencia # sólida a referencia fuerte, el cual no calzaría en este contexto. -#: ../Doc/c-api/init.rst:1230 +#: ../Doc/c-api/init.rst:1473 msgid "" "Return a :term:`strong reference`. Return ``NULL`` if no frame is currently " "executing." @@ -2094,37 +2476,41 @@ msgstr "" "Retorna una :term:`strong reference` (referencia sólida). Retorna ``NULL`` " "si no se está ejecutando ningún cuadro." -#: ../Doc/c-api/init.rst:1233 +#: ../Doc/c-api/init.rst:1476 msgid "See also :c:func:`PyEval_GetFrame`." msgstr "Vea también :c:func:`PyEval_GetFrame`." -#: ../Doc/c-api/init.rst:1235 ../Doc/c-api/init.rst:1244 -#: ../Doc/c-api/init.rst:1253 -msgid "*tstate* must not be ``NULL``." -msgstr "*tstate* no debe ser ``NULL``." +#: ../Doc/c-api/init.rst:1478 ../Doc/c-api/init.rst:1487 +#: ../Doc/c-api/init.rst:1496 +msgid "" +"*tstate* must not be ``NULL``, and must be :term:`attached `." +msgstr "" -#: ../Doc/c-api/init.rst:1242 +#: ../Doc/c-api/init.rst:1485 +#, fuzzy msgid "" -"Get the unique thread state identifier of the Python thread state *tstate*." +"Get the unique :term:`thread state` identifier of the Python thread state " +"*tstate*." msgstr "" "Obtiene el identificador de estado de subproceso único del estado del hilo " "de Python *tstate*." -#: ../Doc/c-api/init.rst:1251 +#: ../Doc/c-api/init.rst:1494 msgid "Get the interpreter of the Python thread state *tstate*." msgstr "Obtiene el intérprete del estado del hilo de Python *tstate*." -#: ../Doc/c-api/init.rst:1260 +#: ../Doc/c-api/init.rst:1503 msgid "Suspend tracing and profiling in the Python thread state *tstate*." msgstr "" "Suspender el seguimiento y el perfilado en el estado del hilo de Python " "*tstate*." -#: ../Doc/c-api/init.rst:1262 +#: ../Doc/c-api/init.rst:1505 msgid "Resume them using the :c:func:`PyThreadState_LeaveTracing` function." msgstr "Reanudelos usando la función :c:func:`PyThreadState_LeaveTracing`." -#: ../Doc/c-api/init.rst:1269 +#: ../Doc/c-api/init.rst:1512 msgid "" "Resume tracing and profiling in the Python thread state *tstate* suspended " "by the :c:func:`PyThreadState_EnterTracing` function." @@ -2132,30 +2518,27 @@ msgstr "" "Reanudar el seguimiento y el perfilado en el estado del hilo de Python " "*tstate* suspendido por la función :c:func:`PyThreadState_EnterTracing`." -#: ../Doc/c-api/init.rst:1272 +#: ../Doc/c-api/init.rst:1515 msgid "" "See also :c:func:`PyEval_SetTrace` and :c:func:`PyEval_SetProfile` functions." msgstr "" -"Consulte también las funciones :c:func:`PyEval_SetTrace` " -"y :c:func:`PyEval_SetProfile`." +"Consulte también las funciones :c:func:`PyEval_SetTrace` y :c:func:" +"`PyEval_SetProfile`." -#: ../Doc/c-api/init.rst:1280 +#: ../Doc/c-api/init.rst:1523 msgid "Get the current interpreter." msgstr "Obtiene el intérprete actual." -#: ../Doc/c-api/init.rst:1282 +#: ../Doc/c-api/init.rst:1525 +#, fuzzy msgid "" -"Issue a fatal error if there no current Python thread state or no current " -"interpreter. It cannot return NULL." +"Issue a fatal error if there no :term:`attached thread state`. It cannot " +"return NULL." msgstr "" "Emite un error fatal si no hay un estado actual del hilo de Python o no hay " "un intérprete actual. No puede retornar NULL." -#: ../Doc/c-api/init.rst:1285 ../Doc/c-api/init.rst:1295 -msgid "The caller must hold the GIL." -msgstr "La persona que llama debe retener el GIL." - -#: ../Doc/c-api/init.rst:1292 +#: ../Doc/c-api/init.rst:1533 msgid "" "Return the interpreter's unique ID. If there was any error in doing so then " "``-1`` is returned and an error is set." @@ -2163,7 +2546,14 @@ msgstr "" "Retorna la identificación única del intérprete. Si hubo algún error al " "hacerlo, entonces se retorna ``-1`` y se establece un error." -#: ../Doc/c-api/init.rst:1302 +#: ../Doc/c-api/init.rst:1536 ../Doc/c-api/init.rst:2132 +#: ../Doc/c-api/init.rst:2139 ../Doc/c-api/init.rst:2158 +#: ../Doc/c-api/init.rst:2165 +#, fuzzy +msgid "The caller must have an :term:`attached thread state`." +msgstr "La persona que llama debe mantener el :term:`GIL`." + +#: ../Doc/c-api/init.rst:1543 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 " @@ -2174,7 +2564,7 @@ msgstr "" "excepción y la persona que llama debe suponer que no hay disponible una " "instrucción específica del intérprete." -#: ../Doc/c-api/init.rst:1306 +#: ../Doc/c-api/init.rst:1547 msgid "" "This is not a replacement for :c:func:`PyModule_GetState()`, which " "extensions should use to store interpreter-specific state information." @@ -2182,11 +2572,17 @@ msgstr "" "Esto no reemplaza a :c:func:`PyModule_GetState()`, que las extensiones deben " "usar para almacenar información de estado específica del intérprete." -#: ../Doc/c-api/init.rst:1313 +#: ../Doc/c-api/init.rst:1550 +msgid "" +"The returned dictionary is borrowed from the interpreter and is valid until " +"interpreter shutdown." +msgstr "" + +#: ../Doc/c-api/init.rst:1558 msgid "Type of a frame evaluation function." msgstr "Tipo de función de evaluación de marcos." -#: ../Doc/c-api/init.rst:1315 +#: ../Doc/c-api/init.rst:1560 msgid "" "The *throwflag* parameter is used by the ``throw()`` method of generators: " "if non-zero, handle the current exception." @@ -2194,37 +2590,39 @@ msgstr "" "El parámetro *throwflag* es usado por el método de generadores ``throw()``: " "si no es cero, maneja la excepción actual." -#: ../Doc/c-api/init.rst:1318 +#: ../Doc/c-api/init.rst:1563 msgid "The function now takes a *tstate* parameter." msgstr "La función ahora recibe un parámetro *tstate*." -#: ../Doc/c-api/init.rst:1321 +#: ../Doc/c-api/init.rst:1566 msgid "" "The *frame* parameter changed from ``PyFrameObject*`` to " "``_PyInterpreterFrame*``." msgstr "" "El parámetro *frame* cambió de ``PyFrameObject*`` a ``_PyInterpreterFrame*``." -#: ../Doc/c-api/init.rst:1326 +#: ../Doc/c-api/init.rst:1571 msgid "Get the frame evaluation function." msgstr "Obtiene la función de evaluación de marcos." -#: ../Doc/c-api/init.rst:1328 ../Doc/c-api/init.rst:1336 +#: ../Doc/c-api/init.rst:1573 ../Doc/c-api/init.rst:1581 msgid "See the :pep:`523` \"Adding a frame evaluation API to CPython\"." msgstr "" "Consulte :pep:`523` \"Adición de una API de evaluación de marcos a CPython\"." -#: ../Doc/c-api/init.rst:1334 +#: ../Doc/c-api/init.rst:1579 msgid "Set the frame evaluation function." msgstr "Configura la función de evaluación del marco." -#: ../Doc/c-api/init.rst:1343 +#: ../Doc/c-api/init.rst:1588 +#, fuzzy 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 " -"in the dictionary. It is okay to call this function when no current thread " -"state is available. If this function returns ``NULL``, no exception has been " -"raised and the caller should assume no current thread state is available." +"in the dictionary. It is okay to call this function when no :term:`thread " +"state` is :term:`attached `. If this function returns " +"``NULL``, no exception has been raised and the caller should assume no " +"thread state is attached." msgstr "" "Retorna un diccionario en el que las extensiones pueden almacenar " "información de estado específica del hilo. Cada extensión debe usar una " @@ -2233,16 +2631,17 @@ msgstr "" "función retorna ``NULL``, no se ha producido ninguna excepción y la persona " "que llama debe asumir que no hay disponible ningún estado del hilo actual." -#: ../Doc/c-api/init.rst:1352 +#: ../Doc/c-api/init.rst:1598 +#, fuzzy 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. " "This function does not steal any references to *exc*. To prevent naive " "misuse, you must write your own C extension to call this. Must be called " -"with the GIL held. Returns the number of thread states modified; this is " -"normally one, but will be zero if the thread id isn't found. If *exc* is " -"``NULL``, the pending exception (if any) for the thread is cleared. This " -"raises no exceptions." +"with an :term:`attached thread state`. Returns the number of thread states " +"modified; this is normally one, but will be zero if the thread id isn't " +"found. If *exc* is ``NULL``, the pending exception (if any) for the thread " +"is cleared. This raises no exceptions." msgstr "" "Generar una excepción de forma asincrónica en un subproceso. El argumento " "*id* es el identificador del subproceso de destino; *exc* es el objeto de " @@ -2254,38 +2653,36 @@ msgstr "" "``NULL``, se borra la excepción pendiente (si la hay) para el subproceso. " "Esto no genera excepciones." -#: ../Doc/c-api/init.rst:1360 +#: ../Doc/c-api/init.rst:1606 msgid "" -"The type of the *id* parameter changed from :c:expr:`long` " -"to :c:expr:`unsigned long`." +"The type of the *id* parameter changed from :c:expr:`long` to :c:expr:" +"`unsigned long`." msgstr "" "El tipo del parámetro *id* cambia de :c:expr:`long` a :c:expr:`unsigned " "long`." -#: ../Doc/c-api/init.rst:1366 +#: ../Doc/c-api/init.rst:1612 msgid "" -"Acquire the global interpreter lock and set the current thread state to " -"*tstate*, which must not be ``NULL``. The lock must have been created " -"earlier. If this thread already has the lock, deadlock ensues." +":term:`Attach ` *tstate* to the current thread, which " +"must not be ``NULL`` or already :term:`attached `." msgstr "" -"Adquiere el bloqueo global del intérprete y establece el estado actual del " -"hilo en *tstate*, que no debe ser ``NULL``. El bloqueo debe haber sido " -"creado anteriormente. Si este hilo ya tiene el bloqueo, se produce un " -"deadlock." -#: ../Doc/c-api/init.rst:1377 +#: ../Doc/c-api/init.rst:1615 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." +"The calling thread must not already have an :term:`attached thread state`." msgstr "" -"Actualiza para ser coherente " -"con :c:func:`PyEval_RestoreThread`, :c:func:`Py_END_ALLOW_THREADS`, " -"y :c:func:`PyGILState_Ensure`, y termina el hilo actual si se llama mientras " -"el intérprete está finalizando." -#: ../Doc/c-api/init.rst:1382 +#: ../Doc/c-api/init.rst:1623 +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 "" +"Actualiza para ser coherente con :c:func:`PyEval_RestoreThread`, :c:func:" +"`Py_END_ALLOW_THREADS`, y :c:func:`PyGILState_Ensure`, y termina el hilo " +"actual si se llama mientras el intérprete está finalizando." + +#: ../Doc/c-api/init.rst:1632 msgid "" ":c:func:`PyEval_RestoreThread` is a higher-level function which is always " "available (even when threads have not been initialized)." @@ -2293,13 +2690,12 @@ msgstr "" ":c:func:`PyEval_RestoreThread` es una función de nivel superior que siempre " "está disponible (incluso cuando los subprocesos no se han inicializado)." -#: ../Doc/c-api/init.rst:1388 +#: ../Doc/c-api/init.rst:1638 +#, fuzzy msgid "" -"Reset the current thread state to ``NULL`` and release the global " -"interpreter lock. The lock must have been created earlier and must be held " -"by the current thread. The *tstate* argument, which must not be ``NULL``, " -"is only used to check that it represents the current thread state --- if it " -"isn't, a fatal error is reported." +"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 "" "Restablece el estado actual del hilo a ``NULL`` y libera el bloqueo global " "del intérprete. El bloqueo debe haberse creado antes y debe estar retenido " @@ -2307,7 +2703,7 @@ msgstr "" "usa para verificar que representa el estado actual del hilo --- si no lo es, " "se informa un error fatal." -#: ../Doc/c-api/init.rst:1394 +#: ../Doc/c-api/init.rst:1643 msgid "" ":c:func:`PyEval_SaveThread` is a higher-level function which is always " "available (even when threads have not been initialized)." @@ -2315,11 +2711,11 @@ msgstr "" ":c:func:`PyEval_SaveThread` es una función de nivel superior que siempre " "está disponible (incluso cuando los hilos no se han inicializado)." -#: ../Doc/c-api/init.rst:1401 +#: ../Doc/c-api/init.rst:1650 msgid "Sub-interpreter support" msgstr "Soporte de subinterprete" -#: ../Doc/c-api/init.rst:1403 +#: ../Doc/c-api/init.rst:1652 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 " @@ -2331,7 +2727,7 @@ msgstr "" "independientes en el mismo proceso y tal vez incluso en el mismo hilo. Los " "subinterpretes le permiten hacer eso." -#: ../Doc/c-api/init.rst:1408 +#: ../Doc/c-api/init.rst:1657 msgid "" "The \"main\" interpreter is the first one created when the runtime " "initializes. It is usually the only Python interpreter in a process. Unlike " @@ -2350,32 +2746,32 @@ msgstr "" "del tiempo de ejecución. La función :c:func:`PyInterpreterState_Main` " "retorna un puntero a su estado." -#: ../Doc/c-api/init.rst:1415 +#: ../Doc/c-api/init.rst:1664 msgid "" -"You can switch between sub-interpreters using " -"the :c:func:`PyThreadState_Swap` function. You can create and destroy them " -"using the following functions:" +"You can switch between sub-interpreters using the :c:func:" +"`PyThreadState_Swap` function. You can create and destroy them using the " +"following functions:" msgstr "" -"Puede cambiar entre subinterpretes utilizando la " -"función :c:func:`PyThreadState_Swap`. Puede crearlos y destruirlos " -"utilizando las siguientes funciones:" +"Puede cambiar entre subinterpretes utilizando la función :c:func:" +"`PyThreadState_Swap`. Puede crearlos y destruirlos utilizando las siguientes " +"funciones:" -#: ../Doc/c-api/init.rst:1421 +#: ../Doc/c-api/init.rst:1670 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 "" "Estructura que contiene la mayoría de los parámetros para configurar un " -"subintérprete. Sus valores se utilizan únicamente " -"en :c:func:`Py_NewInterpreterFromConfig` y nunca son modificados por el " -"entorno de ejecución." +"subintérprete. Sus valores se utilizan únicamente en :c:func:" +"`Py_NewInterpreterFromConfig` y nunca son modificados por el entorno de " +"ejecución." -#: ../Doc/c-api/init.rst:1427 +#: ../Doc/c-api/init.rst:1676 msgid "Structure fields:" msgstr "Campos de estructura:" -#: ../Doc/c-api/init.rst:1431 +#: ../Doc/c-api/init.rst:1680 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." @@ -2384,20 +2780,19 @@ msgstr "" "asignador de \"objetos\". De lo contrario, utilizará (compartirá) el del " "intérprete principal." -#: ../Doc/c-api/init.rst:1435 +#: ../Doc/c-api/init.rst:1684 msgid "" -"If this is ``0`` " -"then :c:member:`~PyInterpreterConfig.check_multi_interp_extensions` must be " -"``1`` (non-zero). If this is ``1`` then :c:member:`~PyInterpreterConfig.gil` " -"must not be :c:macro:`PyInterpreterConfig_OWN_GIL`." +"If this is ``0`` then :c:member:`~PyInterpreterConfig." +"check_multi_interp_extensions` must be ``1`` (non-zero). If this is ``1`` " +"then :c:member:`~PyInterpreterConfig.gil` must not be :c:macro:" +"`PyInterpreterConfig_OWN_GIL`." msgstr "" -"Si es ``0``, " -"entonces :c:member:`~PyInterpreterConfig.check_multi_interp_extensions` debe " -"ser ``1`` (distinto de cero). Si es ``1``, " -"entonces :c:member:`~PyInterpreterConfig.gil` no debe " -"ser :c:macro:`PyInterpreterConfig_OWN_GIL`." +"Si es ``0``, entonces :c:member:`~PyInterpreterConfig." +"check_multi_interp_extensions` debe ser ``1`` (distinto de cero). Si es " +"``1``, entonces :c:member:`~PyInterpreterConfig.gil` no debe ser :c:macro:" +"`PyInterpreterConfig_OWN_GIL`." -#: ../Doc/c-api/init.rst:1443 +#: ../Doc/c-api/init.rst:1692 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 " @@ -2407,14 +2802,14 @@ msgstr "" "en ningún subproceso en el que el subintérprete esté activo en ese momento. " "De lo contrario, la bifurcación no tendrá restricciones." -#: ../Doc/c-api/init.rst:1447 +#: ../Doc/c-api/init.rst:1696 msgid "" "Note that the :mod:`subprocess` module still works when fork is disallowed." msgstr "" "Tenga en cuenta que el módulo :mod:`subprocess` aún funciona cuando no se " "permite la bifurcación." -#: ../Doc/c-api/init.rst:1452 +#: ../Doc/c-api/init.rst:1701 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-" @@ -2425,14 +2820,14 @@ msgstr "" "subproceso en el que el subintérprete esté activo en ese momento. De lo " "contrario, exec no tendrá restricciones." -#: ../Doc/c-api/init.rst:1457 +#: ../Doc/c-api/init.rst:1706 msgid "" "Note that the :mod:`subprocess` module still works when exec is disallowed." msgstr "" "Tenga en cuenta que el módulo :mod:`subprocess` aún funciona cuando la " "ejecución no está permitida." -#: ../Doc/c-api/init.rst:1462 +#: ../Doc/c-api/init.rst:1711 msgid "" "If this is ``0`` then the sub-interpreter's :mod:`threading` module won't " "create threads. Otherwise threads are allowed." @@ -2440,40 +2835,39 @@ msgstr "" "Si se trata de ``0``, el módulo :mod:`threading` del subintérprete no creará " "subprocesos. De lo contrario, se permiten los subprocesos." -#: ../Doc/c-api/init.rst:1468 +#: ../Doc/c-api/init.rst:1717 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)." +"create daemon threads. Otherwise daemon threads are allowed (as long as :c:" +"member:`~PyInterpreterConfig.allow_threads` is non-zero)." msgstr "" "Si se trata de ``0``, el módulo :mod:`threading` del subintérprete no creará " "subprocesos de demonio. De lo contrario, se permiten subprocesos de demonio " "(siempre que :c:member:`~PyInterpreterConfig.allow_threads` no sea cero)." -#: ../Doc/c-api/init.rst:1475 +#: ../Doc/c-api/init.rst:1724 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 " -"is currently active. Otherwise only multi-phase init extension modules " -"(see :pep:`489`) may be imported. (Also " -"see :c:macro:`Py_mod_multiple_interpreters`.)" +"is currently active. Otherwise only multi-phase init extension modules (see :" +"pep:`489`) may be imported. (Also see :c:macro:" +"`Py_mod_multiple_interpreters`.)" msgstr "" "Si se trata de ``0``, se podrán importar todos los módulos de extensión, " "incluidos los módulos heredados (inicio monofásico), en cualquier subproceso " "en el que el subintérprete esté activo en ese momento. De lo contrario, solo " -"se podrán importar los módulos de extensión de inicio multifásico " -"(consulte :pep:`489`). (Consulte " -"también :c:macro:`Py_mod_multiple_interpreters`)." +"se podrán importar los módulos de extensión de inicio multifásico (consulte :" +"pep:`489`). (Consulte también :c:macro:`Py_mod_multiple_interpreters`)." -#: ../Doc/c-api/init.rst:1482 +#: ../Doc/c-api/init.rst:1731 msgid "" -"This must be ``1`` (non-zero) " -"if :c:member:`~PyInterpreterConfig.use_main_obmalloc` is ``0``." +"This must be ``1`` (non-zero) if :c:member:`~PyInterpreterConfig." +"use_main_obmalloc` is ``0``." msgstr "" -"Debe ser ``1`` (distinto de cero) " -"si :c:member:`~PyInterpreterConfig.use_main_obmalloc` es ``0``." +"Debe ser ``1`` (distinto de cero) si :c:member:`~PyInterpreterConfig." +"use_main_obmalloc` es ``0``." -#: ../Doc/c-api/init.rst:1487 +#: ../Doc/c-api/init.rst:1736 msgid "" "This determines the operation of the GIL for the sub-interpreter. It may be " "one of the following:" @@ -2481,51 +2875,51 @@ msgstr "" "Esto determina el funcionamiento del GIL para el subintérprete. Puede ser " "uno de los siguientes:" -#: ../Doc/c-api/init.rst:1494 +#: ../Doc/c-api/init.rst:1743 msgid "Use the default selection (:c:macro:`PyInterpreterConfig_SHARED_GIL`)." msgstr "" -"Utilice la selección predeterminada " -"(:c:macro:`PyInterpreterConfig_SHARED_GIL`)." +"Utilice la selección predeterminada (:c:macro:" +"`PyInterpreterConfig_SHARED_GIL`)." -#: ../Doc/c-api/init.rst:1498 +#: ../Doc/c-api/init.rst:1747 msgid "Use (share) the main interpreter's GIL." msgstr "Utilice (comparta) el GIL del intérprete principal." -#: ../Doc/c-api/init.rst:1502 +#: ../Doc/c-api/init.rst:1751 msgid "Use the sub-interpreter's own GIL." msgstr "Utilice el GIL propio del subintérprete." -#: ../Doc/c-api/init.rst:1504 +#: ../Doc/c-api/init.rst:1753 msgid "" -"If this is :c:macro:`PyInterpreterConfig_OWN_GIL` " -"then :c:member:`PyInterpreterConfig.use_main_obmalloc` must be ``0``." +"If this is :c:macro:`PyInterpreterConfig_OWN_GIL` then :c:member:" +"`PyInterpreterConfig.use_main_obmalloc` must be ``0``." msgstr "" -"Si es :c:macro:`PyInterpreterConfig_OWN_GIL`, " -"entonces :c:member:`PyInterpreterConfig.use_main_obmalloc` debe ser ``0``." +"Si es :c:macro:`PyInterpreterConfig_OWN_GIL`, entonces :c:member:" +"`PyInterpreterConfig.use_main_obmalloc` debe ser ``0``." -#: ../Doc/c-api/init.rst:1518 +#: ../Doc/c-api/init.rst:1767 msgid "" "Create a new sub-interpreter. This is an (almost) totally separate " "environment for the execution of Python code. In particular, the new " "interpreter has separate, independent versions of all imported modules, " -"including the fundamental modules :mod:`builtins`, :mod:`__main__` " -"and :mod:`sys`. The table of loaded modules (``sys.modules``) and the " -"module search path (``sys.path``) are also separate. The new environment " -"has no ``sys.argv`` variable. It has new standard I/O stream file objects " -"``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` (however these refer to the " -"same underlying file descriptors)." +"including the fundamental modules :mod:`builtins`, :mod:`__main__` and :mod:" +"`sys`. The table of loaded modules (``sys.modules``) and the module search " +"path (``sys.path``) are also separate. The new environment has no ``sys." +"argv`` variable. It has new standard I/O stream file objects ``sys.stdin``, " +"``sys.stdout`` and ``sys.stderr`` (however these refer to the same " +"underlying file descriptors)." msgstr "" "Crea un nuevo subinterprete. Este es un entorno (casi) totalmente separado " "para la ejecución de código Python. En particular, el nuevo intérprete tiene " "versiones separadas e independientes de todos los módulos importados, " -"incluidos los módulos fundamentales :mod:`builtins`, :mod:`__main__` " -"y :mod:`sys`. La tabla de módulos cargados (``sys.modules``) y la ruta de " -"búsqueda del módulo (``sys.path``) también están separados. El nuevo entorno " -"no tiene variable ``sys.argv``. Tiene nuevos objetos de archivo de flujo de " -"E/S estándar ``sys.stdin``, ``sys.stdout`` y ``sys.stderr`` (sin embargo, " -"estos se refieren a los mismos descriptores de archivo subyacentes)." +"incluidos los módulos fundamentales :mod:`builtins`, :mod:`__main__` y :mod:" +"`sys`. La tabla de módulos cargados (``sys.modules``) y la ruta de búsqueda " +"del módulo (``sys.path``) también están separados. El nuevo entorno no tiene " +"variable ``sys.argv``. Tiene nuevos objetos de archivo de flujo de E/S " +"estándar ``sys.stdin``, ``sys.stdout`` y ``sys.stderr`` (sin embargo, estos " +"se refieren a los mismos descriptores de archivo subyacentes)." -#: ../Doc/c-api/init.rst:1528 +#: ../Doc/c-api/init.rst:1777 msgid "" "The given *config* controls the options with which the interpreter is " "initialized." @@ -2533,15 +2927,16 @@ msgstr "" "El *config* dado controla las opciones con las que se inicializa el " "intérprete." -#: ../Doc/c-api/init.rst:1531 +#: ../Doc/c-api/init.rst:1780 +#, fuzzy msgid "" -"Upon success, *tstate_p* will be set to the first thread state created in " -"the new sub-interpreter. This thread state is made in the current thread " -"state. Note that no actual thread is created; see the discussion of thread " -"states below. If creation of the new interpreter is unsuccessful, " -"*tstate_p* is set to ``NULL``; no exception is set since the exception state " -"is stored in the current thread state and there may not be a current thread " -"state." +"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 " +"`. Note that no actual thread is created; see the " +"discussion of thread states below. If creation of the new interpreter is " +"unsuccessful, *tstate_p* is set to ``NULL``; no exception is set since the " +"exception state is stored in the :term:`attached thread state`, which might " +"not exist." msgstr "" "Si la creación del nuevo intérprete es exitosa, *tstate_p* se establecerá en " "el primer estado de subproceso creado en el nuevo subintérprete. Este estado " @@ -2552,16 +2947,18 @@ msgstr "" "excepción ya que el estado de excepción se almacena en el estado de " "subproceso actual y es posible que no haya un estado de subproceso actual." -#: ../Doc/c-api/init.rst:1540 -msgid "" -"Like all other Python/C API functions, the global interpreter lock must be " -"held before calling this function and is still held when it returns. " -"Likewise a current thread state must be set on entry. On success, the " -"returned thread state will be set as current. If the sub-interpreter is " -"created with its own GIL then the GIL of the calling interpreter will be " -"released. When the function returns, the new interpreter's GIL will be held " -"by the current thread and the previously interpreter's GIL will remain " -"released here." +#: ../Doc/c-api/init.rst:1789 +#, fuzzy +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 " +"returning. On success, the returned thread state will be :term:`attached " +"`. If the sub-interpreter is created with its own :" +"term:`GIL` then the :term:`attached thread state` of the calling interpreter " +"will be detached. When the function returns, the new interpreter's :term:" +"`thread state` will be :term:`attached ` to the " +"current thread and the previous interpreter's :term:`attached thread state` " +"will remain detached." msgstr "" "Al igual que todas las demás funciones de la API de Python/C, el bloqueo del " "intérprete global debe mantenerse antes de llamar a esta función y aún se " @@ -2572,7 +2969,7 @@ msgstr "" "la función regresa, el GIL del nuevo intérprete será retenido por el " "subproceso actual y el GIL del intérprete anterior permanecerá liberado aquí." -#: ../Doc/c-api/init.rst:1551 +#: ../Doc/c-api/init.rst:1800 msgid "" "Sub-interpreters are most effective when isolated from each other, with " "certain functionality restricted::" @@ -2580,7 +2977,8 @@ msgstr "" "Los subintérpretes son más eficaces cuando están aislados unos de otros y " "con ciertas funciones restringidas:" -#: ../Doc/c-api/init.rst:1554 +#: ../Doc/c-api/init.rst:1803 +#, fuzzy, python-brace-format msgid "" "PyInterpreterConfig config = {\n" " .use_main_obmalloc = 0,\n" @@ -2591,7 +2989,11 @@ msgid "" " .check_multi_interp_extensions = 1,\n" " .gil = PyInterpreterConfig_OWN_GIL,\n" "};\n" -"PyThreadState *tstate = Py_NewInterpreterFromConfig(&config);" +"PyThreadState *tstate = NULL;\n" +"PyStatus status = Py_NewInterpreterFromConfig(&tstate, &config);\n" +"if (PyStatus_Exception(status)) {\n" +" Py_ExitStatusException(status);\n" +"}" msgstr "" "PyInterpreterConfig config = {\n" " .use_main_obmalloc = 0,\n" @@ -2604,67 +3006,66 @@ msgstr "" "};\n" "PyThreadState *tstate = Py_NewInterpreterFromConfig(&config);" -#: ../Doc/c-api/init.rst:1565 +#: ../Doc/c-api/init.rst:1818 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:`PyInterpreterState` values. A read-only copy of the config " -"may be stored internally on the :c:type:`PyInterpreterState`." +"initialization the config's values are converted into various :c:type:" +"`PyInterpreterState` values. A read-only copy of the config may be stored " +"internally on the :c:type:`PyInterpreterState`." msgstr "" "Tenga en cuenta que la configuración se utiliza solo brevemente y no se " "modifica. Durante la inicialización, los valores de la configuración se " "convierten en varios valores :c:type:`PyInterpreterState`. Es posible que se " -"almacene una copia de solo lectura de la configuración internamente en " -"el :c:type:`PyInterpreterState`." +"almacene una copia de solo lectura de la configuración internamente en el :c:" +"type:`PyInterpreterState`." -#: ../Doc/c-api/init.rst:1574 +#: ../Doc/c-api/init.rst:1827 msgid "Extension modules are shared between (sub-)interpreters as follows:" msgstr "" "Los módulos de extensión se comparten entre (sub) intérpretes de la " "siguiente manera:" -#: ../Doc/c-api/init.rst:1576 -msgid "" -"For modules using multi-phase initialization, " -"e.g. :c:func:`PyModule_FromDefAndSpec`, a separate module object is created " -"and initialized for each interpreter. Only C-level static and global " -"variables are shared between these module objects." -msgstr "" -"Para módulos que usan inicialización multifase, por " -"ejemplo :c:func:`PyModule_FromDefAndSpec`, se crea e inicializa un objeto de " -"módulo separado para cada intérprete. Solo las variables estáticas y " -"globales de nivel C se comparten entre estos objetos de módulo." - -#: ../Doc/c-api/init.rst:1582 -msgid "" -"For modules using single-phase initialization, " -"e.g. :c:func:`PyModule_Create`, the first time a particular extension is " -"imported, it is initialized normally, and a (shallow) copy of its module's " -"dictionary is squirreled away. When the same extension is imported by " -"another (sub-)interpreter, a new module is initialized and filled with the " -"contents of this copy; the extension's ``init`` function is not called. " -"Objects in the module's dictionary thus end up shared across " -"(sub-)interpreters, which might cause unwanted behavior (see `Bugs and " -"caveats`_ below)." -msgstr "" -"Para módulos que utilizan inicialización monofásica, por " -"ejemplo :c:func:`PyModule_Create`, la primera vez que se importa una " -"extensión en particular, se inicializa normalmente y una copia (superficial) " -"del diccionario de su módulo se guarda. Cuando otro (sub) intérprete importa " -"la misma extensión, se inicializa un nuevo módulo y se llena con el " -"contenido de esta copia; no se llama a la función ``init`` de la extensión. " -"Los objetos en el diccionario del módulo terminan compartidos entre (sub) " +#: ../Doc/c-api/init.rst:1829 +msgid "" +"For modules using multi-phase initialization, e.g. :c:func:" +"`PyModule_FromDefAndSpec`, a separate module object is created and " +"initialized for each interpreter. Only C-level static and global variables " +"are shared between these module objects." +msgstr "" +"Para módulos que usan inicialización multifase, por ejemplo :c:func:" +"`PyModule_FromDefAndSpec`, se crea e inicializa un objeto de módulo separado " +"para cada intérprete. Solo las variables estáticas y globales de nivel C se " +"comparten entre estos objetos de módulo." + +#: ../Doc/c-api/init.rst:1835 +msgid "" +"For modules using single-phase initialization, e.g. :c:func:" +"`PyModule_Create`, the first time a particular extension is imported, it is " +"initialized normally, and a (shallow) copy of its module's dictionary is " +"squirreled away. When the same extension is imported by another " +"(sub-)interpreter, a new module is initialized and filled with the contents " +"of this copy; the extension's ``init`` function is not called. Objects in " +"the module's dictionary thus end up shared across (sub-)interpreters, which " +"might cause unwanted behavior (see `Bugs and caveats`_ below)." +msgstr "" +"Para módulos que utilizan inicialización monofásica, por ejemplo :c:func:" +"`PyModule_Create`, la primera vez que se importa una extensión en " +"particular, se inicializa normalmente y una copia (superficial) del " +"diccionario de su módulo se guarda. Cuando otro (sub) intérprete importa la " +"misma extensión, se inicializa un nuevo módulo y se llena con el contenido " +"de esta copia; no se llama a la función ``init`` de la extensión. Los " +"objetos en el diccionario del módulo terminan compartidos entre (sub) " "intérpretes, lo que puede causar un comportamiento no deseado (ver Errores y " "advertencias (`Bugs and caveats`_) a continuación)." -#: ../Doc/c-api/init.rst:1593 +#: ../Doc/c-api/init.rst:1846 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:`Py_FinalizeEx` and :c:func:`Py_Initialize`; in that case, " -"the extension's ``initmodule`` function *is* called again. As with multi-" -"phase initialization, this means that only C-level static and global " -"variables are shared between these modules." +"after the interpreter has been completely re-initialized by calling :c:func:" +"`Py_FinalizeEx` and :c:func:`Py_Initialize`; in that case, the extension's " +"``initmodule`` function *is* called again. As with multi-phase " +"initialization, this means that only C-level static and global variables are " +"shared between these modules." msgstr "" "Tenga en cuenta que esto es diferente de lo que sucede cuando se importa una " "extensión después de que el intérprete se haya reiniciado por completo " @@ -2673,28 +3074,27 @@ msgstr "" "que con la inicialización de múltiples fases, esto significa que solo se " "comparten variables estáticas y globales de nivel C entre estos módulos." -#: ../Doc/c-api/init.rst:1613 +#: ../Doc/c-api/init.rst:1866 msgid "" -"Create a new sub-interpreter. This is essentially just a wrapper " -"around :c:func:`Py_NewInterpreterFromConfig` with a config that preserves " -"the existing behavior. The result is an unisolated sub-interpreter that " -"shares the main interpreter's GIL, allows fork/exec, allows daemon threads, " -"and allows single-phase init modules." +"Create a new sub-interpreter. This is essentially just a wrapper around :c:" +"func:`Py_NewInterpreterFromConfig` with a config that preserves the existing " +"behavior. The result is an unisolated sub-interpreter that shares the main " +"interpreter's GIL, allows fork/exec, allows daemon threads, and allows " +"single-phase init modules." msgstr "" -"Cree un nuevo subintérprete. Básicamente, se trata de un envoltorio " -"de :c:func:`Py_NewInterpreterFromConfig` con una configuración que conserva " -"el comportamiento existente. El resultado es un subintérprete no aislado que " +"Cree un nuevo subintérprete. Básicamente, se trata de un envoltorio de :c:" +"func:`Py_NewInterpreterFromConfig` con una configuración que conserva el " +"comportamiento existente. El resultado es un subintérprete no aislado que " "comparte el GIL del intérprete principal, permite fork/exec, permite " "subprocesos de demonio y permite módulos de inicialización monofásicos." -#: ../Doc/c-api/init.rst:1625 +#: ../Doc/c-api/init.rst:1878 +#, fuzzy msgid "" -"Destroy the (sub-)interpreter represented by the given thread state. The " -"given thread state must be the current thread state. See the discussion of " -"thread states below. When the call returns, the current thread state is " -"``NULL``. All thread states associated with this interpreter are " -"destroyed. The global interpreter lock used by the target interpreter must " -"be held before calling this function. No GIL is held when it returns." +"Destroy the (sub-)interpreter represented by the given :term:`thread state`. " +"The given thread state must be :term:`attached `. " +"When the call returns, there will be no :term:`attached thread state`. All " +"thread states associated with this interpreter are destroyed." msgstr "" "Destruye el (sub)intérprete representado por el estado del subproceso " "indicado. El estado del subproceso indicado debe ser el estado actual del " @@ -2705,7 +3105,7 @@ msgstr "" "destino debe mantenerse antes de llamar a esta función. No se mantiene " "ningún GIL cuando retorna." -#: ../Doc/c-api/init.rst:1633 +#: ../Doc/c-api/init.rst:1883 msgid "" ":c:func:`Py_FinalizeEx` will destroy all sub-interpreters that haven't been " "explicitly destroyed at that point." @@ -2713,11 +3113,12 @@ msgstr "" ":c:func:`Py_FinalizeEx` destruirá todos los subintérpretes que no hayan sido " "destruidos explícitamente en ese momento." -#: ../Doc/c-api/init.rst:1638 +#: ../Doc/c-api/init.rst:1890 msgid "A Per-Interpreter GIL" msgstr "Un GIL por intérprete" -#: ../Doc/c-api/init.rst:1640 +#: ../Doc/c-api/init.rst:1892 +#, fuzzy msgid "" "Using :c:func:`Py_NewInterpreterFromConfig` you can create a sub-interpreter " "that is completely isolated from other interpreters, including having its " @@ -2726,7 +3127,7 @@ msgid "" "interpreters or blocking any others. Thus a single Python process can truly " "take advantage of multiple CPU cores when running Python code. The " "isolation also encourages a different approach to concurrency than that of " -"just using threads. (See :pep:`554`.)" +"just using threads. (See :pep:`554` and :pep:`684`.)" msgstr "" "Con :c:func:`Py_NewInterpreterFromConfig` se puede crear un subintérprete " "que esté completamente aislado de otros intérpretes, incluso con su propio " @@ -2737,7 +3138,7 @@ msgstr "" "El aislamiento también fomenta un enfoque diferente de la concurrencia que " "el de simplemente usar subprocesos. (Consulte :pep:`554`)." -#: ../Doc/c-api/init.rst:1650 +#: ../Doc/c-api/init.rst:1902 msgid "" "Using an isolated interpreter requires vigilance in preserving that " "isolation. That especially means not sharing any objects or mutable state " @@ -2763,7 +3164,7 @@ msgstr "" "integrados, los números enteros pequeños y una serie de otros objetos " "integrados." -#: ../Doc/c-api/init.rst:1661 +#: ../Doc/c-api/init.rst:1913 msgid "" "If you preserve isolation then you will have access to proper multi-core " "computing without the complications that come with free-threading. Failure " @@ -2776,7 +3177,7 @@ msgstr "" "de subprocesos libres, incluidas las carreras y los fallos difíciles de " "depurar." -#: ../Doc/c-api/init.rst:1666 +#: ../Doc/c-api/init.rst:1918 msgid "" "Aside from that, one of the main challenges of using multiple isolated " "interpreters is how to communicate between them safely (not break isolation) " @@ -2793,11 +3194,11 @@ msgstr "" "aislamiento y expondría herramientas efectivas para comunicar (y compartir) " "datos entre intérpretes." -#: ../Doc/c-api/init.rst:1677 +#: ../Doc/c-api/init.rst:1929 msgid "Bugs and caveats" msgstr "Errores y advertencias" -#: ../Doc/c-api/init.rst:1679 +#: ../Doc/c-api/init.rst:1931 msgid "" "Because sub-interpreters (and the main interpreter) are part of the same " "process, the insulation between them isn't perfect --- for example, using " @@ -2820,7 +3221,7 @@ msgstr "" "subinterprete en un espacio de nombres de otro (sub) intérprete; Esto debe " "evitarse si es posible." -#: ../Doc/c-api/init.rst:1689 +#: ../Doc/c-api/init.rst:1941 msgid "" "Special care should be taken to avoid sharing user-defined functions, " "methods, instances or classes between sub-interpreters, since import " @@ -2835,16 +3236,16 @@ msgstr "" "Es igualmente importante evitar compartir objetos desde los que se pueda " "acceder a lo anterior." -#: ../Doc/c-api/init.rst:1695 +#: ../Doc/c-api/init.rst:1947 msgid "" "Also note that combining this functionality with ``PyGILState_*`` APIs is " "delicate, because these APIs assume a bijection between Python thread states " "and OS-level threads, an assumption broken by the presence of sub-" "interpreters. It is highly recommended that you don't switch sub-" -"interpreters between a pair of matching :c:func:`PyGILState_Ensure` " -"and :c:func:`PyGILState_Release` calls. Furthermore, extensions (such " -"as :mod:`ctypes`) using these APIs to allow calling of Python code from non-" -"Python created threads will probably be broken when using sub-interpreters." +"interpreters between a pair of matching :c:func:`PyGILState_Ensure` and :c:" +"func:`PyGILState_Release` calls. Furthermore, extensions (such as :mod:" +"`ctypes`) using these APIs to allow calling of Python code from non-Python " +"created threads will probably be broken when using sub-interpreters." msgstr "" "También tenga en cuenta que la combinación de esta funcionalidad con " "``PyGILState_*`` APIs es delicada, porque estas APIs suponen una biyección " @@ -2856,11 +3257,11 @@ msgstr "" "permitir la llamada de código Python desde hilos no creados por Python " "probablemente se rompan cuando se usan subinterpretes." -#: ../Doc/c-api/init.rst:1706 +#: ../Doc/c-api/init.rst:1958 msgid "Asynchronous Notifications" msgstr "Notificaciones asincrónicas" -#: ../Doc/c-api/init.rst:1708 +#: ../Doc/c-api/init.rst:1960 msgid "" "A mechanism is provided to make asynchronous notifications to the main " "interpreter thread. These notifications take the form of a function pointer " @@ -2870,7 +3271,7 @@ msgstr "" "principal del intérprete. Estas notificaciones toman la forma de un puntero " "de función y un argumento de puntero nulo." -#: ../Doc/c-api/init.rst:1715 +#: ../Doc/c-api/init.rst:1967 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 " @@ -2881,7 +3282,7 @@ msgstr "" "ser llamado en el hilo principal. En caso de fallo, se retorna ``-1`` sin " "establecer ninguna excepción." -#: ../Doc/c-api/init.rst:1719 +#: ../Doc/c-api/init.rst:1971 msgid "" "When successfully queued, *func* will be *eventually* called from the main " "interpreter thread with the argument *arg*. It will be called " @@ -2893,56 +3294,52 @@ msgstr "" "asincrónica con respecto al código Python que se ejecuta normalmente, pero " "con ambas condiciones cumplidas:" -#: ../Doc/c-api/init.rst:1724 +#: ../Doc/c-api/init.rst:1976 msgid "on a :term:`bytecode` boundary;" msgstr "en un límite :term:`bytecode`;" -#: ../Doc/c-api/init.rst:1725 +#: ../Doc/c-api/init.rst:1977 +#, fuzzy msgid "" -"with the main thread holding the :term:`global interpreter lock` (*func* can " +"with the main thread holding an :term:`attached thread state` (*func* can " "therefore use the full C API)." msgstr "" "con el hilo principal que contiene el :term:`global interpreter lock` " "(*func*, por lo tanto, puede usar la API C completa)." -#: ../Doc/c-api/init.rst:1728 +#: ../Doc/c-api/init.rst:1980 +#, fuzzy msgid "" "*func* must return ``0`` on success, or ``-1`` on failure with an exception " "set. *func* won't be interrupted to perform another asynchronous " "notification recursively, but it can still be interrupted to switch threads " -"if the global interpreter lock is released." +"if the :term:`thread state ` is detached." msgstr "" "*func* debe retornar ``0`` en caso de éxito o ``-1`` en caso de error con " "una excepción establecida. *func* no se interrumpirá para realizar otra " "notificación asíncrona de forma recursiva, pero aún se puede interrumpir " "para cambiar hilos si se libera el bloqueo global del intérprete." -#: ../Doc/c-api/init.rst:1733 -msgid "" -"This function doesn't need a current thread state to run, and it doesn't " -"need the global interpreter lock." -msgstr "" -"Esta función no necesita un estado de hilo actual para ejecutarse y no " -"necesita el bloqueo global del intérprete." - -#: ../Doc/c-api/init.rst:1736 +#: ../Doc/c-api/init.rst:1985 +#, fuzzy msgid "" -"To call this function in a subinterpreter, the caller must hold the GIL. " -"Otherwise, the function *func* can be scheduled to be called from the wrong " -"interpreter." +"This function doesn't need an :term:`attached thread state`. However, to " +"call this function in a subinterpreter, the caller must have an :term:" +"`attached thread state`. Otherwise, the function *func* can be scheduled to " +"be called from the wrong interpreter." msgstr "" "Para llamar a esta función en un subinterprete, quien llama debe mantener el " "GIL. De lo contrario, la función *func* se puede programar para que se llame " "desde el intérprete incorrecto." -#: ../Doc/c-api/init.rst:1741 +#: ../Doc/c-api/init.rst:1990 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 " "thread is busy executing a system call, *func* won't be called before the " "system call returns. This function is generally **not** suitable for " -"calling Python code from arbitrary C threads. Instead, use " -"the :ref:`PyGILState API`." +"calling Python code from arbitrary C threads. Instead, use the :ref:" +"`PyGILState API`." msgstr "" "Esta es una función de bajo nivel, solo útil para casos muy especiales. No " "hay garantía de que *func* se llame lo más rápido posible. Si el hilo " @@ -2951,7 +3348,7 @@ msgstr "" "**no** es adecuada para llamar a código Python desde hilos C arbitrarios. En " "su lugar, use :ref:`PyGILState API `." -#: ../Doc/c-api/init.rst:1750 +#: ../Doc/c-api/init.rst:1999 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 " @@ -2963,11 +3360,16 @@ msgstr "" "desde el intérprete principal. Cada subinterprete ahora tiene su propia " "lista de llamadas programadas." -#: ../Doc/c-api/init.rst:1759 +#: ../Doc/c-api/init.rst:2005 +msgid "" +"This function now always schedules *func* to be run in the main interpreter." +msgstr "" + +#: ../Doc/c-api/init.rst:2012 msgid "Profiling and Tracing" msgstr "Perfilado y Rastreo" -#: ../Doc/c-api/init.rst:1764 +#: ../Doc/c-api/init.rst:2017 msgid "" "The Python interpreter provides some low-level support for attaching " "profiling and execution tracing facilities. These are used for profiling, " @@ -2977,7 +3379,7 @@ msgstr "" "funciones de creación de perfiles y seguimiento de ejecución. Estos se " "utilizan para herramientas de análisis de perfiles, depuración y cobertura." -#: ../Doc/c-api/init.rst:1768 +#: ../Doc/c-api/init.rst:2021 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 " @@ -2994,83 +3396,87 @@ msgstr "" "función de rastreo son los mismos que se informaron a las funciones de " "rastreo a nivel de Python en versiones anteriores." -#: ../Doc/c-api/init.rst:1778 +#: ../Doc/c-api/init.rst:2031 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 " "the registration function as *obj*, *frame* is the frame object to which the " -"event pertains, *what* is one of the " -"constants :c:data:`PyTrace_CALL`, :c:data:`PyTrace_EXCEPTION`, :c:data:`PyTrace_LINE`, :c:data:`PyTrace_RETURN`, :c:data:`PyTrace_C_CALL`, :c:data:`PyTrace_C_EXCEPTION`, :c:data:`PyTrace_C_RETURN`, " -"or :c:data:`PyTrace_OPCODE`, and *arg* depends on the value of *what*:" -msgstr "" -"El tipo de la función de seguimiento registrada " -"mediante :c:func:`PyEval_SetProfile` y :c:func:`PyEval_SetTrace`. El primer " -"parámetro es el objeto pasado a la función de registro como *obj*, *frame* " -"es el objeto de marco al que pertenece el evento, *what* es una de las " -"constantes :c:data:`PyTrace_CALL`, :c:data:`PyTrace_EXCEPTION`, :c:data:`PyTrace_LINE`, :c:data:`PyTrace_RETURN`, :c:data:`PyTrace_C_CALL`, :c:data:`PyTrace_C_EXCEPTION`, :c:data:`PyTrace_C_RETURN` " -"o :c:data:`PyTrace_OPCODE`, y *arg* depende del valor de *what*:" - -#: ../Doc/c-api/init.rst:1787 +"event pertains, *what* is one of the constants :c:data:`PyTrace_CALL`, :c:" +"data:`PyTrace_EXCEPTION`, :c:data:`PyTrace_LINE`, :c:data:`PyTrace_RETURN`, :" +"c:data:`PyTrace_C_CALL`, :c:data:`PyTrace_C_EXCEPTION`, :c:data:" +"`PyTrace_C_RETURN`, or :c:data:`PyTrace_OPCODE`, and *arg* depends on the " +"value of *what*:" +msgstr "" +"El tipo de la función de seguimiento registrada mediante :c:func:" +"`PyEval_SetProfile` y :c:func:`PyEval_SetTrace`. El primer parámetro es el " +"objeto pasado a la función de registro como *obj*, *frame* es el objeto de " +"marco al que pertenece el evento, *what* es una de las constantes :c:data:" +"`PyTrace_CALL`, :c:data:`PyTrace_EXCEPTION`, :c:data:`PyTrace_LINE`, :c:data:" +"`PyTrace_RETURN`, :c:data:`PyTrace_C_CALL`, :c:data:`PyTrace_C_EXCEPTION`, :" +"c:data:`PyTrace_C_RETURN` o :c:data:`PyTrace_OPCODE`, y *arg* depende del " +"valor de *what*:" + +#: ../Doc/c-api/init.rst:2040 msgid "Value of *what*" msgstr "Valor de *what*" -#: ../Doc/c-api/init.rst:1787 +#: ../Doc/c-api/init.rst:2040 msgid "Meaning of *arg*" msgstr "Significado de *arg*" -#: ../Doc/c-api/init.rst:1789 +#: ../Doc/c-api/init.rst:2042 msgid ":c:data:`PyTrace_CALL`" msgstr ":c:data:`PyTrace_CALL`" -#: ../Doc/c-api/init.rst:1789 ../Doc/c-api/init.rst:1794 -#: ../Doc/c-api/init.rst:1805 +#: ../Doc/c-api/init.rst:2042 ../Doc/c-api/init.rst:2047 +#: ../Doc/c-api/init.rst:2058 msgid "Always :c:data:`Py_None`." msgstr "Siempre :c:data:`Py_None`." -#: ../Doc/c-api/init.rst:1791 +#: ../Doc/c-api/init.rst:2044 msgid ":c:data:`PyTrace_EXCEPTION`" msgstr ":c:data:`PyTrace_EXCEPTION`" -#: ../Doc/c-api/init.rst:1791 +#: ../Doc/c-api/init.rst:2044 msgid "Exception information as returned by :func:`sys.exc_info`." msgstr "Información de excepción retornada por :func:`sys.exc_info`." -#: ../Doc/c-api/init.rst:1794 +#: ../Doc/c-api/init.rst:2047 msgid ":c:data:`PyTrace_LINE`" msgstr ":c:data:`PyTrace_LINE`" -#: ../Doc/c-api/init.rst:1796 +#: ../Doc/c-api/init.rst:2049 msgid ":c:data:`PyTrace_RETURN`" msgstr ":c:data:`PyTrace_RETURN`" -#: ../Doc/c-api/init.rst:1796 +#: ../Doc/c-api/init.rst:2049 msgid "" "Value being returned to the caller, or ``NULL`` if caused by an exception." msgstr "" "Valor retornado al que llama, o ``NULL`` si es causado por una excepción." -#: ../Doc/c-api/init.rst:1799 +#: ../Doc/c-api/init.rst:2052 msgid ":c:data:`PyTrace_C_CALL`" msgstr ":c:data:`PyTrace_C_CALL`" -#: ../Doc/c-api/init.rst:1799 ../Doc/c-api/init.rst:1801 -#: ../Doc/c-api/init.rst:1803 +#: ../Doc/c-api/init.rst:2052 ../Doc/c-api/init.rst:2054 +#: ../Doc/c-api/init.rst:2056 msgid "Function object being called." msgstr "Objeto función que se llaman." -#: ../Doc/c-api/init.rst:1801 +#: ../Doc/c-api/init.rst:2054 msgid ":c:data:`PyTrace_C_EXCEPTION`" msgstr ":c:data:`PyTrace_C_EXCEPTION`" -#: ../Doc/c-api/init.rst:1803 +#: ../Doc/c-api/init.rst:2056 msgid ":c:data:`PyTrace_C_RETURN`" msgstr ":c:data:`PyTrace_C_RETURN`" -#: ../Doc/c-api/init.rst:1805 +#: ../Doc/c-api/init.rst:2058 msgid ":c:data:`PyTrace_OPCODE`" msgstr ":c:data:`PyTrace_OPCODE`" -#: ../Doc/c-api/init.rst:1810 +#: ../Doc/c-api/init.rst:2063 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 " @@ -3084,7 +3490,7 @@ msgstr "" "de generador no se informa ya que no hay transferencia de control al código " "de bytes de Python en la marco correspondiente." -#: ../Doc/c-api/init.rst:1819 +#: ../Doc/c-api/init.rst:2072 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 " @@ -3105,20 +3511,19 @@ msgstr "" "las funciones de rastreo reciben estos eventos; el perfilador (*profiler*) " "no los necesita." -#: ../Doc/c-api/init.rst:1830 +#: ../Doc/c-api/init.rst:2083 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 " -"reported. It may be disabled for a frame by " -"setting :attr:`~frame.f_trace_lines` to *0* on that frame." +"reported. It may be disabled for a frame by setting :attr:`~frame." +"f_trace_lines` to *0* on that frame." msgstr "" -"El valor que se pasa como parámetro *what* a una " -"función :c:type:`Py_tracefunc` (pero no a una función de creación de " -"perfiles) cuando se informa un evento de número de línea. Se puede " -"desactivar para un marco configurando :attr:`~frame.f_trace_lines` en *0* en " -"ese marco." +"El valor que se pasa como parámetro *what* a una función :c:type:" +"`Py_tracefunc` (pero no a una función de creación de perfiles) cuando se " +"informa un evento de número de línea. Se puede desactivar para un marco " +"configurando :attr:`~frame.f_trace_lines` en *0* en ese marco." -#: ../Doc/c-api/init.rst:1838 +#: ../Doc/c-api/init.rst:2091 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a call is about to return." @@ -3126,7 +3531,7 @@ msgstr "" "El valor para el parámetro *what* para :c:type:`Py_tracefunc` funciona " "cuando una llamada está por regresar." -#: ../Doc/c-api/init.rst:1844 +#: ../Doc/c-api/init.rst:2097 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a C function is about to be called." @@ -3134,7 +3539,7 @@ msgstr "" "El valor del parámetro *what* para :c:type:`Py_tracefunc` funciona cuando " "una función C está a punto de ser invocada." -#: ../Doc/c-api/init.rst:1850 +#: ../Doc/c-api/init.rst:2103 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a C function has raised an exception." @@ -3142,7 +3547,7 @@ msgstr "" "El valor del parámetro *what* para funciones :c:type:`Py_tracefunc` cuando " "una función C ha lanzado una excepción." -#: ../Doc/c-api/init.rst:1856 +#: ../Doc/c-api/init.rst:2109 msgid "" "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when " "a C function has returned." @@ -3150,48 +3555,41 @@ msgstr "" "El valor del parámetro *what* para :c:type:`Py_tracefunc` funciona cuando " "una función C ha retornado." -#: ../Doc/c-api/init.rst:1862 +#: ../Doc/c-api/init.rst:2115 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 " -"event is not emitted by default: it must be explicitly requested by " -"setting :attr:`~frame.f_trace_opcodes` to *1* on the frame." +"event is not emitted by default: it must be explicitly requested by setting :" +"attr:`~frame.f_trace_opcodes` to *1* on the frame." msgstr "" "El valor del parámetro *what* para las funciones :c:type:`Py_tracefunc` " "(pero no para las funciones de creación de perfiles) cuando está a punto de " "ejecutarse un nuevo código de operación. Este evento no se emite de forma " -"predeterminada: debe solicitarse explícitamente " -"configurando :attr:`~frame.f_trace_opcodes` en *1* en el marco." +"predeterminada: debe solicitarse explícitamente configurando :attr:`~frame." +"f_trace_opcodes` en *1* en el marco." -#: ../Doc/c-api/init.rst:1870 +#: ../Doc/c-api/init.rst:2123 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``. " "If the profile function needs to maintain state, using a different value for " "*obj* for each thread provides a convenient and thread-safe place to store " -"it. The profile function is called for all monitored events " -"except :c:data:`PyTrace_LINE` :c:data:`PyTrace_OPCODE` " -"and :c:data:`PyTrace_EXCEPTION`." +"it. The profile function is called for all monitored events except :c:data:" +"`PyTrace_LINE` :c:data:`PyTrace_OPCODE` and :c:data:`PyTrace_EXCEPTION`." msgstr "" "Establezca la función de perfilador en *func*. El parámetro *obj* se pasa a " "la función como su primer parámetro y puede ser cualquier objeto Python o " "``NULL``. Si la función de perfilador necesita mantener el estado, el uso de " "un valor diferente para *obj* para cada subproceso proporciona un lugar " "conveniente y seguro para subprocesos donde almacenarlo. La función de " -"perfilador se llama para todos los eventos monitoreados " -"excepto :c:data:`PyTrace_LINE`, :c:data:`PyTrace_OPCODE` " -"y :c:data:`PyTrace_EXCEPTION`." +"perfilador se llama para todos los eventos monitoreados excepto :c:data:" +"`PyTrace_LINE`, :c:data:`PyTrace_OPCODE` y :c:data:`PyTrace_EXCEPTION`." -#: ../Doc/c-api/init.rst:1877 +#: ../Doc/c-api/init.rst:2130 msgid "See also the :func:`sys.setprofile` function." msgstr "Consulte también la función :func:`sys.setprofile`." -#: ../Doc/c-api/init.rst:1879 ../Doc/c-api/init.rst:1886 -#: ../Doc/c-api/init.rst:1905 ../Doc/c-api/init.rst:1912 -msgid "The caller must hold the :term:`GIL`." -msgstr "La persona que llama debe mantener el :term:`GIL`." - -#: ../Doc/c-api/init.rst:1883 +#: ../Doc/c-api/init.rst:2136 msgid "" "Like :c:func:`PyEval_SetProfile` but sets the profile function in all " "running threads belonging to the current interpreter instead of the setting " @@ -3201,7 +3599,7 @@ msgstr "" "todos los subprocesos en ejecución que pertenecen al intérprete actual en " "lugar de configurarla solo en el subproceso actual." -#: ../Doc/c-api/init.rst:1888 +#: ../Doc/c-api/init.rst:2141 msgid "" "As :c:func:`PyEval_SetProfile`, this function ignores any exceptions raised " "while setting the profile functions in all threads." @@ -3210,30 +3608,29 @@ msgstr "" "excepción generada al configurar las funciones de perfil en todos los " "subprocesos." -#: ../Doc/c-api/init.rst:1896 -msgid "" -"Set the tracing function to *func*. This is similar " -"to :c:func:`PyEval_SetProfile`, except the tracing function does receive " -"line-number events and per-opcode events, but does not receive any event " -"related to C function objects being called. Any trace function registered " -"using :c:func:`PyEval_SetTrace` will not " -"receive :c:data:`PyTrace_C_CALL`, :c:data:`PyTrace_C_EXCEPTION` " -"or :c:data:`PyTrace_C_RETURN` as a value for the *what* parameter." -msgstr "" -"Establezca la función de seguimiento en *func*. Es similar " -"a :c:func:`PyEval_SetProfile`, excepto que la función de seguimiento recibe " -"eventos de número de línea y eventos por código de operación, pero no recibe " -"ningún evento relacionado con los objetos de función C que se están " -"llamando. Cualquier función de seguimiento registrada " -"con :c:func:`PyEval_SetTrace` no " -"recibirá :c:data:`PyTrace_C_CALL`, :c:data:`PyTrace_C_EXCEPTION` " -"o :c:data:`PyTrace_C_RETURN` como valor para el parámetro *what*." - -#: ../Doc/c-api/init.rst:1903 +#: ../Doc/c-api/init.rst:2149 +msgid "" +"Set the tracing function to *func*. This is similar to :c:func:" +"`PyEval_SetProfile`, except the tracing function does receive line-number " +"events and per-opcode events, but does not receive any event related to C " +"function objects being called. Any trace function registered using :c:func:" +"`PyEval_SetTrace` will not receive :c:data:`PyTrace_C_CALL`, :c:data:" +"`PyTrace_C_EXCEPTION` or :c:data:`PyTrace_C_RETURN` as a value for the " +"*what* parameter." +msgstr "" +"Establezca la función de seguimiento en *func*. Es similar a :c:func:" +"`PyEval_SetProfile`, excepto que la función de seguimiento recibe eventos de " +"número de línea y eventos por código de operación, pero no recibe ningún " +"evento relacionado con los objetos de función C que se están llamando. " +"Cualquier función de seguimiento registrada con :c:func:`PyEval_SetTrace` no " +"recibirá :c:data:`PyTrace_C_CALL`, :c:data:`PyTrace_C_EXCEPTION` o :c:data:" +"`PyTrace_C_RETURN` como valor para el parámetro *what*." + +#: ../Doc/c-api/init.rst:2156 msgid "See also the :func:`sys.settrace` function." msgstr "Consulte también la función :func:`sys.settrace`." -#: ../Doc/c-api/init.rst:1909 +#: ../Doc/c-api/init.rst:2162 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 " @@ -3243,7 +3640,7 @@ msgstr "" "todos los subprocesos en ejecución que pertenecen al intérprete actual en " "lugar de configurarla solo en el subproceso actual." -#: ../Doc/c-api/init.rst:1914 +#: ../Doc/c-api/init.rst:2167 msgid "" "As :c:func:`PyEval_SetTrace`, this function ignores any exceptions raised " "while setting the trace functions in all threads." @@ -3252,28 +3649,28 @@ msgstr "" "excepción generada al configurar las funciones de seguimiento en todos los " "subprocesos." -#: ../Doc/c-api/init.rst:1920 +#: ../Doc/c-api/init.rst:2173 msgid "Reference tracing" msgstr "Rastreo de referencia" -#: ../Doc/c-api/init.rst:1926 +#: ../Doc/c-api/init.rst:2179 msgid "" -"The type of the trace function registered " -"using :c:func:`PyRefTracer_SetTracer`. The first parameter is a Python " -"object that has been just created (when **event** is set " -"to :c:data:`PyRefTracer_CREATE`) or about to be destroyed (when **event** is " -"set to :c:data:`PyRefTracer_DESTROY`). The **data** argument is the opaque " -"pointer that was provided when :c:func:`PyRefTracer_SetTracer` was called." +"The type of the trace function registered using :c:func:" +"`PyRefTracer_SetTracer`. The first parameter is a Python object that has " +"been just created (when **event** is set to :c:data:`PyRefTracer_CREATE`) or " +"about to be destroyed (when **event** is set to :c:data:" +"`PyRefTracer_DESTROY`). The **data** argument is the opaque pointer that was " +"provided when :c:func:`PyRefTracer_SetTracer` was called." msgstr "" -"El tipo de la función de seguimiento registrada " -"mediante :c:func:`PyRefTracer_SetTracer`. El primer parámetro es un objeto " -"Python que se acaba de crear (cuando **event** se establece " -"en :c:data:`PyRefTracer_CREATE`) o que está a punto de destruirse (cuando " -"**event** se establece en :c:data:`PyRefTracer_DESTROY`). El argumento " -"**data** es el puntero opaco que se proporcionó cuando se llamó " -"a :c:func:`PyRefTracer_SetTracer`." +"El tipo de la función de seguimiento registrada mediante :c:func:" +"`PyRefTracer_SetTracer`. El primer parámetro es un objeto Python que se " +"acaba de crear (cuando **event** se establece en :c:data:" +"`PyRefTracer_CREATE`) o que está a punto de destruirse (cuando **event** se " +"establece en :c:data:`PyRefTracer_DESTROY`). El argumento **data** es el " +"puntero opaco que se proporcionó cuando se llamó a :c:func:" +"`PyRefTracer_SetTracer`." -#: ../Doc/c-api/init.rst:1936 +#: ../Doc/c-api/init.rst:2189 msgid "" "The value for the *event* parameter to :c:type:`PyRefTracer` functions when " "a Python object has been created." @@ -3281,7 +3678,7 @@ msgstr "" "El valor del parámetro *event* a :c:type:`PyRefTracer` funciona cuando se ha " "creado un objeto Python." -#: ../Doc/c-api/init.rst:1941 +#: ../Doc/c-api/init.rst:2194 msgid "" "The value for the *event* parameter to :c:type:`PyRefTracer` functions when " "a Python object has been destroyed." @@ -3289,7 +3686,7 @@ msgstr "" "El valor del parámetro *event* a :c:type:`PyRefTracer` funciona cuando se ha " "destruido un objeto Python." -#: ../Doc/c-api/init.rst:1946 +#: ../Doc/c-api/init.rst:2199 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 " @@ -3303,12 +3700,13 @@ msgstr "" "se llame a la función de rastreo. Devuelve ``0`` en caso de éxito. Establece " "una excepción y devuelve ``-1`` en caso de error." -#: ../Doc/c-api/init.rst:1952 +#: ../Doc/c-api/init.rst:2205 +#, fuzzy 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 " -"any existing exception or set an exception. The GIL will be held every time " -"the tracer function is called." +"any existing exception or set an exception. A :term:`thread state` will be " +"active every time the tracer function is called." msgstr "" "No es que las funciones de seguimiento **must not** creen objetos Python en " "su interior, de lo contrario la llamada será reentrante. El seguimiento " @@ -3316,11 +3714,13 @@ msgstr "" "excepción. El GIL se mantendrá cada vez que se llame a la función de " "seguimiento." -#: ../Doc/c-api/init.rst:1957 ../Doc/c-api/init.rst:1968 -msgid "The GIL must be held when calling this function." +#: ../Doc/c-api/init.rst:2210 ../Doc/c-api/init.rst:2221 +#, fuzzy +msgid "" +"There must be an :term:`attached thread state` when calling this function." msgstr "El GIL debe mantenerse al llamar a esta función." -#: ../Doc/c-api/init.rst:1963 +#: ../Doc/c-api/init.rst:2216 msgid "" "Get the registered reference tracer function and the value of the opaque " "data pointer that was registered when :c:func:`PyRefTracer_SetTracer` was " @@ -3328,22 +3728,22 @@ msgid "" "set the **data** pointer to NULL." msgstr "" "Obtenga la función de trazador de referencia registrada y el valor del " -"puntero de datos opacos que se registró cuando se llamó " -"a :c:func:`PyRefTracer_SetTracer`. Si no se registró ningún trazador, esta " -"función devolverá NULL y establecerá el puntero **data** en NULL." +"puntero de datos opacos que se registró cuando se llamó a :c:func:" +"`PyRefTracer_SetTracer`. Si no se registró ningún trazador, esta función " +"devolverá NULL y establecerá el puntero **data** en NULL." -#: ../Doc/c-api/init.rst:1975 +#: ../Doc/c-api/init.rst:2228 msgid "Advanced Debugger Support" msgstr "Soporte avanzado del depurador" -#: ../Doc/c-api/init.rst:1980 +#: ../Doc/c-api/init.rst:2233 msgid "" "These functions are only intended to be used by advanced debugging tools." msgstr "" "Estas funciones solo están destinadas a ser utilizadas por herramientas de " "depuración avanzadas." -#: ../Doc/c-api/init.rst:1985 +#: ../Doc/c-api/init.rst:2238 msgid "" "Return the interpreter state object at the head of the list of all such " "objects." @@ -3351,11 +3751,11 @@ msgstr "" "Retorna el objeto de estado del intérprete al principio de la lista de todos " "esos objetos." -#: ../Doc/c-api/init.rst:1990 +#: ../Doc/c-api/init.rst:2243 msgid "Return the main interpreter state object." msgstr "Retorna el objeto de estado del intérprete principal." -#: ../Doc/c-api/init.rst:1995 +#: ../Doc/c-api/init.rst:2248 msgid "" "Return the next interpreter state object after *interp* from the list of all " "such objects." @@ -3363,7 +3763,7 @@ msgstr "" "Retorna el siguiente objeto de estado de intérprete después de *interp* de " "la lista de todos esos objetos." -#: ../Doc/c-api/init.rst:2001 +#: ../Doc/c-api/init.rst:2254 msgid "" "Return the pointer to the first :c:type:`PyThreadState` object in the list " "of threads associated with the interpreter *interp*." @@ -3371,20 +3771,20 @@ msgstr "" "Retorna el puntero al primer objeto :c:type:`PyThreadState` en la lista de " "hilos asociados con el intérprete *interp*." -#: ../Doc/c-api/init.rst:2007 +#: ../Doc/c-api/init.rst:2260 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 "" "Retorna el siguiente objeto de estado del hilo después de *tstate* de la " -"lista de todos los objetos que pertenecen al mismo " -"objeto :c:type:`PyInterpreterState`." +"lista de todos los objetos que pertenecen al mismo objeto :c:type:" +"`PyInterpreterState`." -#: ../Doc/c-api/init.rst:2014 +#: ../Doc/c-api/init.rst:2267 msgid "Thread Local Storage Support" msgstr "Soporte de almacenamiento local de hilo" -#: ../Doc/c-api/init.rst:2018 +#: ../Doc/c-api/init.rst:2271 msgid "" "The Python interpreter provides low-level support for thread-local storage " "(TLS) which wraps the underlying native TLS implementation to support the " @@ -3400,15 +3800,16 @@ msgstr "" "similares a las ofrecidas por pthreads y Windows: use una clave de hilo y " "funciones para asociar un valor de :c:expr:`void*` por hilo." -#: ../Doc/c-api/init.rst:2025 +#: ../Doc/c-api/init.rst:2278 +#, fuzzy msgid "" -"The GIL does *not* need to be held when calling these functions; they supply " -"their own locking." +"A :term:`thread state` does *not* need to be :term:`attached ` when calling these functions; they suppl their own locking." msgstr "" "El GIL *no* necesita ser retenido al llamar a estas funciones; proporcionan " "su propio bloqueo." -#: ../Doc/c-api/init.rst:2028 +#: ../Doc/c-api/init.rst:2281 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." @@ -3417,40 +3818,39 @@ msgstr "" "TLS, debe incluir :file:`pythread.h` para usar el almacenamiento local de " "hilos." -#: ../Doc/c-api/init.rst:2032 +#: ../Doc/c-api/init.rst:2285 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 the :c:expr:`void*` values happen to be :c:expr:`PyObject*`, " -"these functions don't do refcount operations on them either." +"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 " +"the :c:expr:`void*` values happen to be :c:expr:`PyObject*`, these functions " +"don't do refcount operations on them either." msgstr "" "Ninguna de estas funciones API maneja la administración de memoria en nombre " "de los valores :c:expr:`void*`. Debe asignarlos y desasignarlos usted mismo. " "Si los valores :c:expr:`void*` son :c:expr:`PyObject*`, estas funciones " "tampoco realizan operaciones de conteo de referencias en ellos." -#: ../Doc/c-api/init.rst:2040 +#: ../Doc/c-api/init.rst:2293 msgid "Thread Specific Storage (TSS) API" msgstr "" "API de almacenamiento específico de hilo (TSS, *Thread Specific Storage*)" -#: ../Doc/c-api/init.rst:2042 +#: ../Doc/c-api/init.rst:2295 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 "" "La API de TSS se introduce para reemplazar el uso de la API TLS existente " -"dentro del intérprete de CPython. Esta API utiliza un nuevo " -"tipo :c:type:`Py_tss_t` en lugar de :c:expr:`int` para representar las " -"claves del hilo." +"dentro del intérprete de CPython. Esta API utiliza un nuevo tipo :c:type:" +"`Py_tss_t` en lugar de :c:expr:`int` para representar las claves del hilo." -#: ../Doc/c-api/init.rst:2048 +#: ../Doc/c-api/init.rst:2301 msgid "\"A New C-API for Thread-Local Storage in CPython\" (:pep:`539`)" msgstr "" "\"Una nueva C-API para *Thread-Local Storage* en CPython\" (:pep:`539`)" -#: ../Doc/c-api/init.rst:2053 +#: ../Doc/c-api/init.rst:2306 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 " @@ -3462,7 +3862,7 @@ msgstr "" "campo interno que representa el estado de inicialización de la clave. No hay " "miembros públicos en esta estructura." -#: ../Doc/c-api/init.rst:2058 +#: ../Doc/c-api/init.rst:2311 msgid "" "When :ref:`Py_LIMITED_API ` is not defined, static allocation of " "this type by :c:macro:`Py_tss_NEEDS_INIT` is allowed." @@ -3470,7 +3870,7 @@ msgstr "" "Cuando :ref:`Py_LIMITED_API ` no está definido, la asignación " "estática de este tipo por :c:macro:`Py_tss_NEEDS_INIT` está permitida." -#: ../Doc/c-api/init.rst:2064 +#: ../Doc/c-api/init.rst:2317 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 `." @@ -3479,11 +3879,11 @@ msgstr "" "Tenga en cuenta que esta macro no se definirá con :ref:`Py_LIMITED_API " "`." -#: ../Doc/c-api/init.rst:2069 +#: ../Doc/c-api/init.rst:2322 msgid "Dynamic Allocation" msgstr "Asignación dinámica" -#: ../Doc/c-api/init.rst:2071 +#: ../Doc/c-api/init.rst:2324 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 " @@ -3494,17 +3894,16 @@ msgstr "" "asignación estática de este tipo no es posible debido a que su " "implementación es opaca en el momento de la compilación." -#: ../Doc/c-api/init.rst:2078 +#: ../Doc/c-api/init.rst:2331 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." +"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 "" -"Retorna un valor que es el mismo estado que un valor inicializado " -"con :c:macro:`Py_tss_NEEDS_INIT`, o ``NULL`` en caso de falla de asignación " +"Retorna un valor que es el mismo estado que un valor inicializado con :c:" +"macro:`Py_tss_NEEDS_INIT`, o ``NULL`` en caso de falla de asignación " "dinámica." -#: ../Doc/c-api/init.rst:2085 +#: ../Doc/c-api/init.rst:2338 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 " @@ -3515,30 +3914,30 @@ msgstr "" "los hilos locales asociados no hayan sido asignados. Esto es un no-op si el " "argumento *clave* es ``NULL``." -#: ../Doc/c-api/init.rst:2091 +#: ../Doc/c-api/init.rst:2344 msgid "" "A freed key becomes a dangling pointer. You should reset the key to ``NULL``." msgstr "" "Una clave liberada se convierte en un puntero colgante. Debería restablecer " "la clave a ``NULL``." -#: ../Doc/c-api/init.rst:2096 +#: ../Doc/c-api/init.rst:2349 msgid "Methods" msgstr "Métodos" -#: ../Doc/c-api/init.rst:2098 +#: ../Doc/c-api/init.rst:2351 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 " -"undefined if the given :c:type:`Py_tss_t` has not been initialized " -"by :c:func:`PyThread_tss_create`." +"undefined if the given :c:type:`Py_tss_t` has not been initialized by :c:" +"func:`PyThread_tss_create`." msgstr "" "El parámetro *key* de estas funciones no debe ser ``NULL``. Además, los " "comportamientos de :c:func:`PyThread_tss_set` y :c:func:`PyThread_tss_get` " "no están definidos si el :c:type:`Py_tss_t` dado no ha sido inicializado " "por :c:func:`PyThread_tss_create`." -#: ../Doc/c-api/init.rst:2106 +#: ../Doc/c-api/init.rst:2359 msgid "" "Return a non-zero value if the given :c:type:`Py_tss_t` has been initialized " "by :c:func:`PyThread_tss_create`." @@ -3546,7 +3945,7 @@ msgstr "" "Retorna un valor distinto de cero si :c:type:`Py_tss_t` ha sido inicializado " "por :c:func:`PyThread_tss_create`." -#: ../Doc/c-api/init.rst:2112 +#: ../Doc/c-api/init.rst:2365 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 " @@ -3560,32 +3959,31 @@ msgstr "" "invocar repetidamente en la misma tecla: llamarla a una tecla ya " "inicializada es un *no-op* e inmediatamente retorna el éxito." -#: ../Doc/c-api/init.rst:2121 +#: ../Doc/c-api/init.rst:2374 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 " -"destroyed key is able to be initialized again " -"by :c:func:`PyThread_tss_create`. This function can be called repeatedly on " -"the same key -- calling it on an already destroyed key is a no-op." +"destroyed key is able to be initialized again by :c:func:" +"`PyThread_tss_create`. This function can be called repeatedly on the same " +"key -- calling it on an already destroyed key is a no-op." msgstr "" "Destruye una clave TSS para olvidar los valores asociados con la clave en " "todos los hilos y cambie el estado de inicialización de la clave a no " -"inicializado. Una clave destruida se puede inicializar nuevamente " -"mediante :c:func:`PyThread_tss_create`. Esta función se puede invocar " -"repetidamente en la misma llave; llamarla en una llave ya destruida es un " -"*no-op*." +"inicializado. Una clave destruida se puede inicializar nuevamente mediante :" +"c:func:`PyThread_tss_create`. Esta función se puede invocar repetidamente en " +"la misma llave; llamarla en una llave ya destruida es un *no-op*." -#: ../Doc/c-api/init.rst:2130 +#: ../Doc/c-api/init.rst:2383 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 "" -"Retorna un valor cero para indicar la asociación exitosa de un valor " -"a :c:expr:`void*` con una clave TSS en el hilo actual. Cada hilo tiene un " -"mapeo distinto de la clave a un valor :c:expr:`void*`." +"Retorna un valor cero para indicar la asociación exitosa de un valor a :c:" +"expr:`void*` con una clave TSS en el hilo actual. Cada hilo tiene un mapeo " +"distinto de la clave a un valor :c:expr:`void*`." -#: ../Doc/c-api/init.rst:2137 +#: ../Doc/c-api/init.rst:2390 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 " @@ -3595,11 +3993,11 @@ msgstr "" "actual. Esto retorna ``NULL`` si no hay ningún valor asociado con la clave " "en el hilo actual." -#: ../Doc/c-api/init.rst:2145 +#: ../Doc/c-api/init.rst:2398 msgid "Thread Local Storage (TLS) API" msgstr "API de almacenamiento local de hilos (TLS, *Thread Local Storage*)" -#: ../Doc/c-api/init.rst:2147 +#: ../Doc/c-api/init.rst:2400 msgid "" "This API is superseded by :ref:`Thread Specific Storage (TSS) API `." @@ -3608,7 +4006,7 @@ msgstr "" "(TSS, por sus significado en inglés *Thread Specific Storage*) `." -#: ../Doc/c-api/init.rst:2152 +#: ../Doc/c-api/init.rst:2405 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 " @@ -3622,7 +4020,7 @@ msgstr "" "inmediatamente con un estado de falla, y las otras funciones TLS serán no " "operativas en tales plataformas." -#: ../Doc/c-api/init.rst:2157 +#: ../Doc/c-api/init.rst:2410 msgid "" "Due to the compatibility problem noted above, this version of the API should " "not be used in new code." @@ -3630,15 +4028,15 @@ msgstr "" "Debido al problema de compatibilidad mencionado anteriormente, esta versión " "de la API no debe usarse en código nuevo." -#: ../Doc/c-api/init.rst:2168 +#: ../Doc/c-api/init.rst:2421 msgid "Synchronization Primitives" msgstr "Primitivas de sincronización" -#: ../Doc/c-api/init.rst:2170 +#: ../Doc/c-api/init.rst:2423 msgid "The C-API provides a basic mutual exclusion lock." msgstr "La C-API proporciona un bloqueo de exclusión mutua básico." -#: ../Doc/c-api/init.rst:2174 +#: ../Doc/c-api/init.rst:2427 msgid "" "A mutual exclusion lock. The :c:type:`!PyMutex` should be initialized to " "zero to represent the unlocked state. For example::" @@ -3646,11 +4044,12 @@ msgstr "" "Un bloqueo de exclusión mutua. El :c:type:`!PyMutex` debe inicializarse a " "cero para representar el estado desbloqueado. Por ejemplo:" -#: ../Doc/c-api/init.rst:2177 +#: ../Doc/c-api/init.rst:2430 +#, python-brace-format msgid "PyMutex mutex = {0};" msgstr "PyMutex mutex = {0};" -#: ../Doc/c-api/init.rst:2179 +#: ../Doc/c-api/init.rst:2432 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 " @@ -3660,7 +4059,7 @@ msgstr "" "contenido como la dirección de un :c:type:`!PyMutex` son significativos y " "deben permanecer en una ubicación fija y escribible en la memoria." -#: ../Doc/c-api/init.rst:2185 +#: ../Doc/c-api/init.rst:2438 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 " @@ -3670,18 +4069,20 @@ msgstr "" "considerarse inestable. El tamaño puede cambiar en futuras versiones de " "Python sin un período de desuso." -#: ../Doc/c-api/init.rst:2193 +#: ../Doc/c-api/init.rst:2446 +#, fuzzy 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 " -"temporarily release the :term:`GIL` if it is held." +"temporarily detach the :term:`thread state ` if one " +"exists." msgstr "" "Bloqueo del mutex *m*. Si otro subproceso ya lo ha bloqueado, el subproceso " "que realiza la llamada se bloqueará hasta que se desbloquee el mutex. " "Mientras esté bloqueado, el subproceso liberará temporalmente el :term:`GIL` " "si está retenido." -#: ../Doc/c-api/init.rst:2201 +#: ../Doc/c-api/init.rst:2454 msgid "" "Unlock mutex *m*. The mutex must be locked --- otherwise, the function will " "issue a fatal error." @@ -3689,11 +4090,22 @@ msgstr "" "Desbloquee el mutex *m*. El mutex debe estar bloqueado; de lo contrario, la " "función emitirá un error fatal." -#: ../Doc/c-api/init.rst:2209 +#: ../Doc/c-api/init.rst:2461 +msgid "Returns non-zero if the mutex *m* is currently locked, zero otherwise." +msgstr "" + +#: ../Doc/c-api/init.rst:2465 +msgid "" +"This function is intended for use in assertions and debugging only and " +"should not be used to make concurrency control decisions, as the lock state " +"may change immediately after the check." +msgstr "" + +#: ../Doc/c-api/init.rst:2474 msgid "Python Critical Section API" msgstr "API de sección crítica de Python" -#: ../Doc/c-api/init.rst:2211 +#: ../Doc/c-api/init.rst:2476 msgid "" "The critical section API provides a deadlock avoidance layer on top of per-" "object locks for :term:`free-threaded ` CPython. They are " @@ -3706,25 +4118,36 @@ msgstr "" "interpreter lock` y no se pueden realizar operaciones en versiones de Python " "con el bloqueo del intérprete global." -#: ../Doc/c-api/init.rst:2216 +#: ../Doc/c-api/init.rst:2481 +msgid "" +"Critical sections are intended to be used for custom types implemented in C-" +"API extensions. They should generally not be used with built-in types like :" +"class:`list` and :class:`dict` because their public C-APIs already use " +"critical sections internally, with the notable exception of :c:func:" +"`PyDict_Next`, which requires critical section to be acquired externally." +msgstr "" + +#: ../Doc/c-api/init.rst:2488 msgid "" "Critical sections avoid deadlocks by implicitly suspending active critical " -"sections and releasing the locks during calls " -"to :c:func:`PyEval_SaveThread`. When :c:func:`PyEval_RestoreThread` is " -"called, the most recent critical section is resumed, and its locks " -"reacquired. This means the critical section API provides weaker guarantees " -"than traditional locks -- they are useful because their behavior is similar " -"to the :term:`GIL`." -msgstr "" -"Las secciones críticas evitan los bloqueos al suspender implícitamente las " -"secciones críticas activas y liberar los bloqueos durante las llamadas " -"a :c:func:`PyEval_SaveThread`. Cuando se llama " -"a :c:func:`PyEval_RestoreThread`, se reanuda la sección crítica más reciente " -"y se vuelven a adquirir sus bloqueos. Esto significa que la API de la " -"sección crítica ofrece garantías más débiles que los bloqueos tradicionales; " -"son útiles porque su comportamiento es similar al de :term:`GIL`." - -#: ../Doc/c-api/init.rst:2223 +"sections, hence, they do not provide exclusive access such as provided by " +"traditional locks like :c:type:`PyMutex`. When a critical section is " +"started, the per-object lock for the object is acquired. If the code " +"executed inside the critical section calls C-API functions then it can " +"suspend the critical section thereby releasing the per-object lock, so other " +"threads can acquire the per-object lock for the same object." +msgstr "" + +#: ../Doc/c-api/init.rst:2496 +msgid "" +"Variants that accept :c:type:`PyMutex` pointers rather than Python objects " +"are also available. Use these variants to start a critical section in a " +"situation where there is no :c:type:`PyObject` -- for example, when working " +"with a C type that does not extend or wrap :c:type:`PyObject` but still " +"needs to call into the C API in a manner that might lead to deadlocks." +msgstr "" + +#: ../Doc/c-api/init.rst:2502 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 " @@ -3737,25 +4160,26 @@ msgstr "" "los tamaños y contenidos de las estructuras pueden cambiar en futuras " "versiones de Python." -#: ../Doc/c-api/init.rst:2230 +#: ../Doc/c-api/init.rst:2509 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 lock more than one object at once, because the inner critical " -"section may suspend the outer critical sections. This API does not provide " -"a way to lock more than two objects at once." +"Operations that need to lock two objects at once must use :c:macro:" +"`Py_BEGIN_CRITICAL_SECTION2`. You *cannot* use nested critical sections to " +"lock more than one object at once, because the inner critical section may " +"suspend the outer critical sections. This API does not provide a way to " +"lock more than two objects at once." msgstr "" -"Las operaciones que necesitan bloquear dos objetos a la vez deben " -"utilizar :c:macro:`Py_BEGIN_CRITICAL_SECTION2`. *cannot* utiliza secciones " -"críticas anidadas para bloquear más de un objeto a la vez, ya que la sección " -"crítica interna puede suspender las secciones críticas externas. Esta API no " +"Las operaciones que necesitan bloquear dos objetos a la vez deben utilizar :" +"c:macro:`Py_BEGIN_CRITICAL_SECTION2`. *cannot* utiliza secciones críticas " +"anidadas para bloquear más de un objeto a la vez, ya que la sección crítica " +"interna puede suspender las secciones críticas externas. Esta API no " "proporciona una manera de bloquear más de dos objetos a la vez." -#: ../Doc/c-api/init.rst:2236 +#: ../Doc/c-api/init.rst:2515 msgid "Example usage::" msgstr "Ejemplo de uso::" -#: ../Doc/c-api/init.rst:2238 +#: ../Doc/c-api/init.rst:2517 +#, python-brace-format msgid "" "static PyObject *\n" "set_field(MyObject *self, PyObject *value)\n" @@ -3775,14 +4199,15 @@ msgstr "" " Py_RETURN_NONE;\n" "}" -#: ../Doc/c-api/init.rst:2247 +#: ../Doc/c-api/init.rst:2526 +#, fuzzy 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 " -"critical section API avoids potentital deadlocks due to reentrancy and lock " +"critical section API avoids potential deadlocks due to reentrancy and lock " "ordering by allowing the runtime to temporarily suspend the critical section " -"if the code triggered by the finalizer blocks and " -"calls :c:func:`PyEval_SaveThread`." +"if the code triggered by the finalizer blocks and calls :c:func:" +"`PyEval_SaveThread`." msgstr "" "En el ejemplo anterior, :c:macro:`Py_SETREF` llama a :c:macro:`Py_DECREF`, " "que puede llamar a código arbitrario a través de la función de desasignación " @@ -3791,7 +4216,7 @@ msgstr "" "suspenda temporalmente la sección crítica si el código activado por el " "finalizador se bloquea y llama a :c:func:`PyEval_SaveThread`." -#: ../Doc/c-api/init.rst:2255 +#: ../Doc/c-api/init.rst:2534 msgid "" "Acquires the per-object lock for the object *op* and begins a critical " "section." @@ -3799,12 +4224,13 @@ msgstr "" "Adquiere el bloqueo por objeto para el objeto *op* y comienza una sección " "crítica." -#: ../Doc/c-api/init.rst:2258 ../Doc/c-api/init.rst:2272 -#: ../Doc/c-api/init.rst:2287 ../Doc/c-api/init.rst:2301 +#: ../Doc/c-api/init.rst:2537 ../Doc/c-api/init.rst:2551 +#: ../Doc/c-api/init.rst:2568 ../Doc/c-api/init.rst:2583 +#: ../Doc/c-api/init.rst:2597 ../Doc/c-api/init.rst:2614 msgid "In the free-threaded build, this macro expands to::" msgstr "En la compilación de subprocesos libres, esta macro se expande a:" -#: ../Doc/c-api/init.rst:2260 +#: ../Doc/c-api/init.rst:2539 msgid "" "{\n" " PyCriticalSection _py_cs;\n" @@ -3814,15 +4240,44 @@ msgstr "" " PyCriticalSection _py_cs;\n" " PyCriticalSection_Begin(&_py_cs, (PyObject*)(op))" -#: ../Doc/c-api/init.rst:2264 ../Doc/c-api/init.rst:2293 +#: ../Doc/c-api/init.rst:2543 ../Doc/c-api/init.rst:2589 msgid "In the default build, this macro expands to ``{``." msgstr "En la compilación predeterminada, esta macro se expande a ``{``." -#: ../Doc/c-api/init.rst:2270 +#: ../Doc/c-api/init.rst:2549 +#, fuzzy +msgid "Locks the mutex *m* and begins a critical section." +msgstr "" +"Adquiere el bloqueo por objeto para el objeto *op* y comienza una sección " +"crítica." + +#: ../Doc/c-api/init.rst:2553 +#, fuzzy +msgid "" +"{\n" +" PyCriticalSection _py_cs;\n" +" PyCriticalSection_BeginMutex(&_py_cs, m)" +msgstr "" +"{\n" +" PyCriticalSection _py_cs;\n" +" PyCriticalSection_Begin(&_py_cs, (PyObject*)(op))" + +#: ../Doc/c-api/init.rst:2557 +msgid "" +"Note that unlike :c:macro:`Py_BEGIN_CRITICAL_SECTION`, there is no cast for " +"the argument of the macro - it must be a :c:type:`PyMutex` pointer." +msgstr "" + +#: ../Doc/c-api/init.rst:2560 ../Doc/c-api/init.rst:2606 +#, fuzzy +msgid "On the default build, this macro expands to ``{``." +msgstr "En la compilación predeterminada, esta macro se expande a ``{``." + +#: ../Doc/c-api/init.rst:2566 msgid "Ends the critical section and releases the per-object lock." msgstr "Finaliza la sección crítica y libera el bloqueo por objeto." -#: ../Doc/c-api/init.rst:2274 +#: ../Doc/c-api/init.rst:2570 msgid "" " PyCriticalSection_End(&_py_cs);\n" "}" @@ -3830,11 +4285,11 @@ msgstr "" " PyCriticalSection_End(&_py_cs);\n" "}" -#: ../Doc/c-api/init.rst:2277 ../Doc/c-api/init.rst:2306 +#: ../Doc/c-api/init.rst:2573 ../Doc/c-api/init.rst:2619 msgid "In the default build, this macro expands to ``}``." msgstr "En la compilación predeterminada, esta macro se expande a ``}``." -#: ../Doc/c-api/init.rst:2283 +#: ../Doc/c-api/init.rst:2579 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 " @@ -3844,183 +4299,349 @@ msgstr "" "sección crítica. Los bloqueos se adquieren en un orden coherente (la " "dirección más baja primero) para evitar bloqueos en el orden de bloqueo." -#: ../Doc/c-api/init.rst:2289 +#: ../Doc/c-api/init.rst:2585 +#, fuzzy msgid "" "{\n" " PyCriticalSection2 _py_cs2;\n" -" PyCriticalSection_Begin2(&_py_cs2, (PyObject*)(a), (PyObject*)(b))" +" PyCriticalSection2_Begin(&_py_cs2, (PyObject*)(a), (PyObject*)(b))" msgstr "" "{\n" " PyCriticalSection2 _py_cs2;\n" " PyCriticalSection_Begin2(&_py_cs2, (PyObject*)(a), (PyObject*)(b))" -#: ../Doc/c-api/init.rst:2299 +#: ../Doc/c-api/init.rst:2595 +#, fuzzy +msgid "Locks the mutexes *m1* and *m2* and begins a critical section." +msgstr "" +"Adquiere el bloqueo por objeto para el objeto *op* y comienza una sección " +"crítica." + +#: ../Doc/c-api/init.rst:2599 +#, fuzzy +msgid "" +"{\n" +" PyCriticalSection2 _py_cs2;\n" +" PyCriticalSection2_BeginMutex(&_py_cs2, m1, m2)" +msgstr "" +"{\n" +" PyCriticalSection _py_cs;\n" +" PyCriticalSection_Begin(&_py_cs, (PyObject*)(op))" + +#: ../Doc/c-api/init.rst:2603 +msgid "" +"Note that unlike :c:macro:`Py_BEGIN_CRITICAL_SECTION2`, there is no cast for " +"the arguments of the macro - they must be :c:type:`PyMutex` pointers." +msgstr "" + +#: ../Doc/c-api/init.rst:2612 msgid "Ends the critical section and releases the per-object locks." msgstr "Finaliza la sección crítica y libera los bloqueos por objeto." -#: ../Doc/c-api/init.rst:2303 +#: ../Doc/c-api/init.rst:2616 +#, fuzzy msgid "" -" PyCriticalSection_End2(&_py_cs2);\n" +" PyCriticalSection2_End(&_py_cs2);\n" "}" msgstr "" " PyCriticalSection_End2(&_py_cs2);\n" "}" -#: ../Doc/c-api/init.rst:335 +#: ../Doc/c-api/init.rst:350 msgid "PyEval_InitThreads()" msgstr "PyEval_InitThreads()" -#: ../Doc/c-api/init.rst:335 +#: ../Doc/c-api/init.rst:350 msgid "modules (in module sys)" msgstr "módulos (en el módulo sys)" -#: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:576 +#: ../Doc/c-api/init.rst:350 ../Doc/c-api/init.rst:712 msgid "path (in module sys)" msgstr "path (en el módulo sys)" -#: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:576 -#: ../Doc/c-api/init.rst:1011 ../Doc/c-api/init.rst:1510 -#: ../Doc/c-api/init.rst:1605 +#: ../Doc/c-api/init.rst:350 ../Doc/c-api/init.rst:712 +#: ../Doc/c-api/init.rst:1228 ../Doc/c-api/init.rst:1759 +#: ../Doc/c-api/init.rst:1858 msgid "module" msgstr "modulo" -#: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:1510 -#: ../Doc/c-api/init.rst:1605 +#: ../Doc/c-api/init.rst:350 ../Doc/c-api/init.rst:1759 +#: ../Doc/c-api/init.rst:1858 msgid "builtins" msgstr "elementos incorporados" -#: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:1510 -#: ../Doc/c-api/init.rst:1605 +#: ../Doc/c-api/init.rst:350 ../Doc/c-api/init.rst:1759 +#: ../Doc/c-api/init.rst:1858 msgid "__main__" msgstr "__main__" -#: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:1510 -#: ../Doc/c-api/init.rst:1605 +#: ../Doc/c-api/init.rst:350 ../Doc/c-api/init.rst:1759 +#: ../Doc/c-api/init.rst:1858 msgid "sys" msgstr "sys" -#: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:576 +#: ../Doc/c-api/init.rst:350 ../Doc/c-api/init.rst:712 msgid "search" msgstr "buscar" -#: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:576 +#: ../Doc/c-api/init.rst:350 ../Doc/c-api/init.rst:712 msgid "path" msgstr "path" -#: ../Doc/c-api/init.rst:335 ../Doc/c-api/init.rst:1570 -#: ../Doc/c-api/init.rst:1623 +#: ../Doc/c-api/init.rst:350 ../Doc/c-api/init.rst:1823 +#: ../Doc/c-api/init.rst:1876 msgid "Py_FinalizeEx (C function)" msgstr "Py_FinalizeEx (C function)" -#: ../Doc/c-api/init.rst:445 +#: ../Doc/c-api/init.rst:572 msgid "Py_Initialize()" msgstr "Py_Initialize()" -#: ../Doc/c-api/init.rst:445 ../Doc/c-api/init.rst:674 +#: ../Doc/c-api/init.rst:572 ../Doc/c-api/init.rst:810 msgid "main()" msgstr "main()" -#: ../Doc/c-api/init.rst:445 +#: ../Doc/c-api/init.rst:572 msgid "Py_GetPath()" msgstr "Py_GetPath()" -#: ../Doc/c-api/init.rst:555 +#: ../Doc/c-api/init.rst:690 msgid "executable (in module sys)" msgstr "ejecutable (en el módulo sys)" -#: ../Doc/c-api/init.rst:609 ../Doc/c-api/init.rst:651 -#: ../Doc/c-api/init.rst:665 +#: ../Doc/c-api/init.rst:745 ../Doc/c-api/init.rst:787 +#: ../Doc/c-api/init.rst:801 msgid "version (in module sys)" msgstr "version (in module sys)" -#: ../Doc/c-api/init.rst:621 +#: ../Doc/c-api/init.rst:757 msgid "platform (in module sys)" msgstr "platform (en el módulo sys)" -#: ../Doc/c-api/init.rst:638 +#: ../Doc/c-api/init.rst:774 msgid "copyright (in module sys)" msgstr "derechos de autor (en el módulo sys)" -#: ../Doc/c-api/init.rst:674 +#: ../Doc/c-api/init.rst:810 msgid "Py_FatalError()" msgstr "Py_FatalError()" -#: ../Doc/c-api/init.rst:674 +#: ../Doc/c-api/init.rst:810 msgid "argv (in module sys)" msgstr "argv (en el módulo sys)" -#: ../Doc/c-api/init.rst:794 +#: ../Doc/c-api/init.rst:930 msgid "global interpreter lock" msgstr "bloqueo global del intérprete" -#: ../Doc/c-api/init.rst:794 +#: ../Doc/c-api/init.rst:930 msgid "interpreter lock" msgstr "bloqueo de intérprete" -#: ../Doc/c-api/init.rst:794 +#: ../Doc/c-api/init.rst:930 msgid "lock, interpreter" msgstr "bloqueo, interprete" -#: ../Doc/c-api/init.rst:807 +#: ../Doc/c-api/init.rst:944 msgid "setswitchinterval (in module sys)" msgstr "setswitchinterval (in module sys)" -#: ../Doc/c-api/init.rst:816 +#: ../Doc/c-api/init.rst:953 msgid "PyThreadState (C type)" msgstr "PyThreadState (C type)" -#: ../Doc/c-api/init.rst:842 +#: ../Doc/c-api/init.rst:989 msgid "Py_BEGIN_ALLOW_THREADS (C macro)" msgstr "Py_BEGIN_ALLOW_THREADS (C macro)" -#: ../Doc/c-api/init.rst:842 +#: ../Doc/c-api/init.rst:989 msgid "Py_END_ALLOW_THREADS (C macro)" msgstr "Py_END_ALLOW_THREADS (C macro)" -#: ../Doc/c-api/init.rst:858 +#: ../Doc/c-api/init.rst:1005 msgid "PyEval_RestoreThread (C function)" msgstr "PyEval_RestoreThread (C function)" -#: ../Doc/c-api/init.rst:858 +#: ../Doc/c-api/init.rst:1005 msgid "PyEval_SaveThread (C function)" msgstr "PyEval_SaveThread (C function)" -#: ../Doc/c-api/init.rst:989 +#: ../Doc/c-api/init.rst:1206 msgid "PyEval_AcquireThread()" msgstr "PyEval_AcquireThread()" -#: ../Doc/c-api/init.rst:989 +#: ../Doc/c-api/init.rst:1206 msgid "PyEval_ReleaseThread()" msgstr "PyEval_ReleaseThread()" -#: ../Doc/c-api/init.rst:989 +#: ../Doc/c-api/init.rst:1206 msgid "PyEval_SaveThread()" msgstr "PyEval_SaveThread()" -#: ../Doc/c-api/init.rst:989 +#: ../Doc/c-api/init.rst:1206 msgid "PyEval_RestoreThread()" msgstr "PyEval_RestoreThread()" -#: ../Doc/c-api/init.rst:1011 +#: ../Doc/c-api/init.rst:1228 msgid "_thread" msgstr "_thread" -#: ../Doc/c-api/init.rst:1510 ../Doc/c-api/init.rst:1605 +#: ../Doc/c-api/init.rst:1759 ../Doc/c-api/init.rst:1858 msgid "stdout (in module sys)" msgstr "stdout (in module sys)" -#: ../Doc/c-api/init.rst:1510 ../Doc/c-api/init.rst:1605 +#: ../Doc/c-api/init.rst:1759 ../Doc/c-api/init.rst:1858 msgid "stderr (in module sys)" msgstr "stderr (in module sys)" -#: ../Doc/c-api/init.rst:1510 ../Doc/c-api/init.rst:1605 +#: ../Doc/c-api/init.rst:1759 ../Doc/c-api/init.rst:1858 msgid "stdin (in module sys)" msgstr "stdin (in module sys)" -#: ../Doc/c-api/init.rst:1570 +#: ../Doc/c-api/init.rst:1823 msgid "Py_Initialize (C function)" msgstr "Py_Initialize (C function)" -#: ../Doc/c-api/init.rst:1600 +#: ../Doc/c-api/init.rst:1853 msgid "close (in module os)" msgstr "cerrar (en el módulo os)" + +#~ msgid ":ref:`Availability `: Windows." +#~ msgstr ":ref:`Disponibilidad `: Windows." + +#~ msgid "Get :data:`sys.executable` instead." +#~ msgstr "Obtenga :data:`sys.executable` en su lugar." + +#~ msgid "Get :data:`sys.prefix` instead." +#~ msgstr "Obtenga :data:`sys.prefix` en su lugar." + +#~ msgid "Get :data:`sys.exec_prefix` instead." +#~ msgstr "Obtenga :data:`sys.exec_prefix` en su lugar." + +#~ msgid "Get :data:`sys.path` instead." +#~ msgstr "Obtenga :data:`sys.path` en su lugar." + +#~ msgid "" +#~ "Here is how these functions work: the global interpreter lock is used to " +#~ "protect the pointer to the current thread state. When releasing the lock " +#~ "and saving the thread state, the current thread state pointer must be " +#~ "retrieved before the lock is released (since another thread could " +#~ "immediately acquire the lock and store its own thread state in the global " +#~ "variable). Conversely, when acquiring the lock and restoring the thread " +#~ "state, the lock must be acquired before storing the thread state pointer." +#~ msgstr "" +#~ "Así es como funcionan estas funciones: el bloqueo global del intérprete " +#~ "se usa para proteger el puntero al estado actual del hilo. Al liberar el " +#~ "bloqueo y guardar el estado del hilo, el puntero del estado del hilo " +#~ "actual debe recuperarse antes de que se libere el bloqueo (ya que otro " +#~ "hilo podría adquirir inmediatamente el bloqueo y almacenar su propio " +#~ "estado de hilo en la variable global). Por el contrario, al adquirir el " +#~ "bloqueo y restaurar el estado del hilo, el bloqueo debe adquirirse antes " +#~ "de almacenar el puntero del estado del hilo." + +#~ msgid "" +#~ "Release the global interpreter lock (if it has been created) and reset " +#~ "the thread state to ``NULL``, returning the previous thread state (which " +#~ "is not ``NULL``). If the lock has been created, the current thread must " +#~ "have acquired it." +#~ msgstr "" +#~ "Libere el bloqueo global del intérprete (si se ha creado) y restablezca " +#~ "el estado del hilo a ``NULL``, retornando el estado del hilo anterior " +#~ "(que no es ``NULL``). Si se ha creado el bloqueo, el hilo actual debe " +#~ "haberlo adquirido." + +#~ msgid "" +#~ "Acquire the global interpreter lock (if it has been created) and set the " +#~ "thread state to *tstate*, which must not be ``NULL``. If the lock has " +#~ "been created, the current thread must not have acquired it, otherwise " +#~ "deadlock ensues." +#~ msgstr "" +#~ "Adquiera el bloqueo global del intérprete (si se ha creado) y establezca " +#~ "el estado del hilo en *tstate*, que no debe ser ``NULL``. Si se ha creado " +#~ "el bloqueo, el hilo actual no debe haberlo adquirido, de lo contrario se " +#~ "produce un *deadlock*." + +#~ msgid "" +#~ "Calling this function from a thread when the runtime is finalizing will " +#~ "terminate the thread, even if the thread was not created by Python. You " +#~ "can use :c:func:`Py_IsFinalizing` or :func:`sys.is_finalizing` to check " +#~ "if the interpreter is in process of being finalized before calling this " +#~ "function to avoid unwanted termination." +#~ msgstr "" +#~ "Si se llama a esta función desde un subproceso cuando el entorno de " +#~ "ejecución está finalizando, se terminará el subproceso, incluso si Python " +#~ "no lo creó. Puede usar :c:func:`Py_IsFinalizing` o :func:`sys." +#~ "is_finalizing` para verificar si el intérprete está en proceso de " +#~ "finalización antes de llamar a esta función para evitar una finalización " +#~ "no deseada." + +#~ msgid "" +#~ "Swap the current thread state with the thread state given by the argument " +#~ "*tstate*, which may be ``NULL``. The global interpreter lock must be " +#~ "held and is not released." +#~ msgstr "" +#~ "Cambia el estado del hilo actual con el estado del hilo dado por el " +#~ "argumento *tstate*, que puede ser ``NULL``. El bloqueo global del " +#~ "intérprete debe mantenerse y no se libera." + +#~ msgid "" +#~ "Create a new thread state object belonging to the given interpreter " +#~ "object. The global interpreter lock need not be held, but may be held if " +#~ "it is necessary to serialize calls to this function." +#~ msgstr "" +#~ "Crea un nuevo objeto de estado de hilo que pertenece al objeto de " +#~ "intérprete dado. No es necesario retener el bloqueo global del " +#~ "intérprete, pero se puede retener si es necesario para serializar " +#~ "llamadas a esta función." + +#~ msgid "" +#~ "Destroy the current thread state and release the global interpreter lock. " +#~ "Like :c:func:`PyThreadState_Delete`, the global interpreter lock must be " +#~ "held. The thread state must have been reset with a previous call to :c:" +#~ "func:`PyThreadState_Clear`." +#~ msgstr "" +#~ "Destruye el estado actual del subproceso y libera el bloqueo global del " +#~ "intérprete. Al igual que en :c:func:`PyThreadState_Delete`, el bloqueo " +#~ "global del intérprete debe mantenerse. El estado del subproceso debe " +#~ "haberse restablecido con una llamada anterior a :c:func:" +#~ "`PyThreadState_Clear`." + +#~ msgid "*tstate* must not be ``NULL``." +#~ msgstr "*tstate* no debe ser ``NULL``." + +#~ msgid "The caller must hold the GIL." +#~ msgstr "La persona que llama debe retener el GIL." + +#~ msgid "" +#~ "Acquire the global interpreter lock and set the current thread state to " +#~ "*tstate*, which must not be ``NULL``. The lock must have been created " +#~ "earlier. If this thread already has the lock, deadlock ensues." +#~ msgstr "" +#~ "Adquiere el bloqueo global del intérprete y establece el estado actual " +#~ "del hilo en *tstate*, que no debe ser ``NULL``. El bloqueo debe haber " +#~ "sido creado anteriormente. Si este hilo ya tiene el bloqueo, se produce " +#~ "un deadlock." + +#~ msgid "" +#~ "This function doesn't need a current thread state to run, and it doesn't " +#~ "need the global interpreter lock." +#~ msgstr "" +#~ "Esta función no necesita un estado de hilo actual para ejecutarse y no " +#~ "necesita el bloqueo global del intérprete." + +#~ msgid "" +#~ "Critical sections avoid deadlocks by implicitly suspending active " +#~ "critical sections and releasing the locks during calls to :c:func:" +#~ "`PyEval_SaveThread`. When :c:func:`PyEval_RestoreThread` is called, the " +#~ "most recent critical section is resumed, and its locks reacquired. This " +#~ "means the critical section API provides weaker guarantees than " +#~ "traditional locks -- they are useful because their behavior is similar to " +#~ "the :term:`GIL`." +#~ msgstr "" +#~ "Las secciones críticas evitan los bloqueos al suspender implícitamente " +#~ "las secciones críticas activas y liberar los bloqueos durante las " +#~ "llamadas a :c:func:`PyEval_SaveThread`. Cuando se llama a :c:func:" +#~ "`PyEval_RestoreThread`, se reanuda la sección crítica más reciente y se " +#~ "vuelven a adquirir sus bloqueos. Esto significa que la API de la sección " +#~ "crítica ofrece garantías más débiles que los bloqueos tradicionales; son " +#~ "útiles porque su comportamiento es similar al de :term:`GIL`." diff --git a/c-api/init_config.po b/c-api/init_config.po index 3ac022b9ed..91a9c2a3f8 100644 --- a/c-api/init_config.po +++ b/c-api/init_config.po @@ -8,77 +8,1247 @@ msgid "" msgstr "" "Project-Id-Version: Python en Español 3.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2026-02-13 23:38-0300\n" "Last-Translator: Carlos A. Crespo \n" -"Language-Team: \n" "Language: es\n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.0.1\n" +"Generated-By: Babel 2.18.0\n" + +#: ../Doc/c-api/init_config.rst:7 +msgid "Python Initialization Configuration" +msgstr "Configuración de inicialización de Python" + +#: ../Doc/c-api/init_config.rst:13 +#, fuzzy +msgid "PyInitConfig C API" +msgstr "PyConfig" + +#: ../Doc/c-api/init_config.rst:17 +msgid "Python can be initialized with :c:func:`Py_InitializeFromInitConfig`." +msgstr "" + +#: ../Doc/c-api/init_config.rst:19 ../Doc/c-api/init_config.rst:650 +msgid "" +"The :c:func:`Py_RunMain` function can be used to write a customized Python " +"program." +msgstr "" +"La función :c:func:`Py_RunMain` se puede utilizar para escribir un programa " +"Python personalizado." + +#: ../Doc/c-api/init_config.rst:22 ../Doc/c-api/init_config.rst:653 +msgid "" +"See also :ref:`Initialization, Finalization, and Threads `." +msgstr "" +"Consulte también :ref:`Inicialización, finalización y subprocesos " +"`." + +#: ../Doc/c-api/init_config.rst:25 +#, fuzzy +msgid ":pep:`741` \"Python Configuration C API\"." +msgstr ":pep:`587` \"Configuración de inicialización de Python\"." + +#: ../Doc/c-api/init_config.rst:29 ../Doc/c-api/init_config.rst:660 +msgid "Example" +msgstr "Ejemplo" + +#: ../Doc/c-api/init_config.rst:31 +msgid "" +"Example of customized Python always running with the :ref:`Python " +"Development Mode ` enabled; return ``-1`` on error:" +msgstr "" + +#: ../Doc/c-api/init_config.rst:34 +#, python-format +msgid "" +"int init_python(void)\n" +"{\n" +" PyInitConfig *config = PyInitConfig_Create();\n" +" if (config == NULL) {\n" +" printf(\"PYTHON INIT ERROR: memory allocation failed\\n\");\n" +" return -1;\n" +" }\n" +"\n" +" // Enable the Python Development Mode\n" +" if (PyInitConfig_SetInt(config, \"dev_mode\", 1) < 0) {\n" +" goto error;\n" +" }\n" +"\n" +" // Initialize Python with the configuration\n" +" if (Py_InitializeFromInitConfig(config) < 0) {\n" +" goto error;\n" +" }\n" +" PyInitConfig_Free(config);\n" +" return 0;\n" +"\n" +"error:\n" +" {\n" +" // Display the error message.\n" +" //\n" +" // This uncommon braces style is used, because you cannot make\n" +" // goto targets point to variable declarations.\n" +" const char *err_msg;\n" +" (void)PyInitConfig_GetError(config, &err_msg);\n" +" printf(\"PYTHON INIT ERROR: %s\\n\", err_msg);\n" +" PyInitConfig_Free(config);\n" +" return -1;\n" +" }\n" +"}" +msgstr "" + +#: ../Doc/c-api/init_config.rst:71 +#, fuzzy +msgid "Create Config" +msgstr "PyPreConfig" + +#: ../Doc/c-api/init_config.rst:75 +msgid "Opaque structure to configure the Python initialization." +msgstr "" + +#: ../Doc/c-api/init_config.rst:80 +#, fuzzy +msgid "" +"Create a new initialization configuration using :ref:`Isolated Configuration " +"` default values." +msgstr "" +"Inicialice la configuración con la :ref:`Configuración Aislada `." + +#: ../Doc/c-api/init_config.rst:83 +msgid "It must be freed by :c:func:`PyInitConfig_Free`." +msgstr "" + +#: ../Doc/c-api/init_config.rst:85 +msgid "Return ``NULL`` on memory allocation failure." +msgstr "" + +#: ../Doc/c-api/init_config.rst:90 +#, fuzzy +msgid "Free memory of the initialization configuration *config*." +msgstr "Configuración de inicialización de Python" + +#: ../Doc/c-api/init_config.rst:92 +msgid "If *config* is ``NULL``, no operation is performed." +msgstr "" + +#: ../Doc/c-api/init_config.rst:96 +#, fuzzy +msgid "Error Handling" +msgstr "Manejador de errores predeterminado:" + +#: ../Doc/c-api/init_config.rst:100 +#, fuzzy +msgid "Get the *config* error message." +msgstr "Mensaje de error." + +#: ../Doc/c-api/init_config.rst:102 +msgid "Set *\\*err_msg* and return ``1`` if an error is set." +msgstr "" + +#: ../Doc/c-api/init_config.rst:103 +msgid "Set *\\*err_msg* to ``NULL`` and return ``0`` otherwise." +msgstr "" + +#: ../Doc/c-api/init_config.rst:105 +msgid "An error message is an UTF-8 encoded string." +msgstr "" + +#: ../Doc/c-api/init_config.rst:107 +msgid "If *config* has an exit code, format the exit code as an error message." +msgstr "" + +#: ../Doc/c-api/init_config.rst:110 +msgid "" +"The error message remains valid until another ``PyInitConfig`` function is " +"called with *config*. The caller doesn't have to free the error message." +msgstr "" + +#: ../Doc/c-api/init_config.rst:117 +#, fuzzy +msgid "Get the *config* exit code." +msgstr "Sale de Python con el código de salida especificado." + +#: ../Doc/c-api/init_config.rst:119 +msgid "Set *\\*exitcode* and return ``1`` if *config* has an exit code set." +msgstr "" + +#: ../Doc/c-api/init_config.rst:120 +msgid "Return ``0`` if *config* has no exit code set." +msgstr "" + +#: ../Doc/c-api/init_config.rst:122 +msgid "" +"Only the ``Py_InitializeFromInitConfig()`` function can set an exit code if " +"the ``parse_argv`` option is non-zero." +msgstr "" + +#: ../Doc/c-api/init_config.rst:125 +msgid "" +"An exit code can be set when parsing the command line failed (exit code " +"``2``) or when a command line option asks to display the command line help " +"(exit code ``0``)." +msgstr "" + +#: ../Doc/c-api/init_config.rst:131 +msgid "Get Options" +msgstr "" + +#: ../Doc/c-api/init_config.rst:133 ../Doc/c-api/init_config.rst:187 +#: ../Doc/c-api/init_config.rst:559 +msgid "" +"The configuration option *name* parameter must be a non-NULL null-terminated " +"UTF-8 encoded string. See :ref:`Configuration Options `." +msgstr "" + +#: ../Doc/c-api/init_config.rst:138 +msgid "Test if the configuration has an option called *name*." +msgstr "" + +#: ../Doc/c-api/init_config.rst:140 +msgid "Return ``1`` if the option exists, or return ``0`` otherwise." +msgstr "" + +#: ../Doc/c-api/init_config.rst:145 +#, fuzzy +msgid "Get an integer configuration option." +msgstr "Entradas de configuración de ruta:" + +#: ../Doc/c-api/init_config.rst:147 ../Doc/c-api/init_config.rst:156 +msgid "Set *\\*value*, and return ``0`` on success." +msgstr "" + +#: ../Doc/c-api/init_config.rst:148 ../Doc/c-api/init_config.rst:157 +#: ../Doc/c-api/init_config.rst:172 ../Doc/c-api/init_config.rst:200 +#: ../Doc/c-api/init_config.rst:209 ../Doc/c-api/init_config.rst:218 +#: ../Doc/c-api/init_config.rst:233 ../Doc/c-api/init_config.rst:249 +msgid "Set an error in *config* and return ``-1`` on error." +msgstr "" + +#: ../Doc/c-api/init_config.rst:153 +msgid "" +"Get a string configuration option as a null-terminated UTF-8 encoded string." +msgstr "" + +#: ../Doc/c-api/init_config.rst:159 +msgid "" +"*\\*value* can be set to ``NULL`` if the option is an optional string and " +"the option is unset." +msgstr "" + +#: ../Doc/c-api/init_config.rst:162 +msgid "" +"On success, the string must be released with ``free(value)`` if it's not " +"``NULL``." +msgstr "" + +#: ../Doc/c-api/init_config.rst:168 +msgid "" +"Get a string list configuration option as an array of null-terminated UTF-8 " +"encoded strings." +msgstr "" + +#: ../Doc/c-api/init_config.rst:171 +msgid "Set *\\*length* and *\\*value*, and return ``0`` on success." +msgstr "" + +#: ../Doc/c-api/init_config.rst:174 +msgid "" +"On success, the string list must be released with " +"``PyInitConfig_FreeStrList(length, items)``." +msgstr "" + +#: ../Doc/c-api/init_config.rst:180 +msgid "Free memory of a string list created by ``PyInitConfig_GetStrList()``." +msgstr "" + +#: ../Doc/c-api/init_config.rst:185 +msgid "Set Options" +msgstr "" + +#: ../Doc/c-api/init_config.rst:190 +msgid "" +"Some configuration options have side effects on other options. This logic is " +"only implemented when ``Py_InitializeFromInitConfig()`` is called, not by " +"the \"Set\" functions below. For example, setting ``dev_mode`` to ``1`` does " +"not set ``faulthandler`` to ``1``." +msgstr "" + +#: ../Doc/c-api/init_config.rst:197 +#, fuzzy +msgid "Set an integer configuration option." +msgstr "Entradas de configuración de ruta:" + +#: ../Doc/c-api/init_config.rst:199 ../Doc/c-api/init_config.rst:208 +#: ../Doc/c-api/init_config.rst:217 ../Doc/c-api/init_config.rst:232 +#: ../Doc/c-api/init_config.rst:248 ../Doc/c-api/init_config.rst:591 +msgid "Return ``0`` on success." +msgstr "" + +#: ../Doc/c-api/init_config.rst:205 +msgid "" +"Set a string configuration option from a null-terminated UTF-8 encoded " +"string. The string is copied." +msgstr "" + +#: ../Doc/c-api/init_config.rst:214 +msgid "" +"Set a string list configuration option from an array of null-terminated " +"UTF-8 encoded strings. The string list is copied." +msgstr "" + +#: ../Doc/c-api/init_config.rst:222 +msgid "Module" +msgstr "" + +#: ../Doc/c-api/init_config.rst:226 +msgid "Add a built-in extension module to the table of built-in modules." +msgstr "" + +#: ../Doc/c-api/init_config.rst:228 +msgid "" +"The new module can be imported by the name *name*, and uses the function " +"*initfunc* as the initialization function called on the first attempted " +"import." +msgstr "" + +#: ../Doc/c-api/init_config.rst:235 +msgid "" +"If Python is initialized multiple times, ``PyInitConfig_AddModule()`` must " +"be called at each Python initialization." +msgstr "" + +#: ../Doc/c-api/init_config.rst:238 +msgid "Similar to the :c:func:`PyImport_AppendInittab` function." +msgstr "" + +#: ../Doc/c-api/init_config.rst:242 +#, fuzzy +msgid "Initialize Python" +msgstr "Función para inicializar Python:" + +#: ../Doc/c-api/init_config.rst:246 +#, fuzzy +msgid "Initialize Python from the initialization configuration." +msgstr "Inicializa Python desde la configuración *config*." + +#: ../Doc/c-api/init_config.rst:250 +msgid "Set an exit code in *config* and return ``-1`` if Python wants to exit." +msgstr "" + +#: ../Doc/c-api/init_config.rst:253 +msgid "See ``PyInitConfig_GetExitcode()`` for the exit code case." +msgstr "" + +#: ../Doc/c-api/init_config.rst:259 +#, fuzzy +msgid "Configuration Options" +msgstr "Entradas de configuración de ruta:" + +#: ../Doc/c-api/init_config.rst:264 +msgid "Option" +msgstr "" + +#: ../Doc/c-api/init_config.rst:265 +msgid "PyConfig/PyPreConfig member" +msgstr "" + +#: ../Doc/c-api/init_config.rst:266 +msgid "Type" +msgstr "" + +#: ../Doc/c-api/init_config.rst:267 +msgid "Visibility" +msgstr "" + +#: ../Doc/c-api/init_config.rst:268 +msgid "``\"allocator\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:269 +#, fuzzy +msgid ":c:member:`allocator `" +msgstr ":c:member:`PyConfig.platlibdir`" + +#: ../Doc/c-api/init_config.rst:270 ../Doc/c-api/init_config.rst:294 +#: ../Doc/c-api/init_config.rst:322 ../Doc/c-api/init_config.rst:358 +#: ../Doc/c-api/init_config.rst:366 ../Doc/c-api/init_config.rst:378 +#: ../Doc/c-api/init_config.rst:406 ../Doc/c-api/init_config.rst:494 +#: ../Doc/c-api/init_config.rst:522 ../Doc/c-api/init_config.rst:576 +msgid "``int``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:271 ../Doc/c-api/init_config.rst:291 +#: ../Doc/c-api/init_config.rst:299 ../Doc/c-api/init_config.rst:303 +#: ../Doc/c-api/init_config.rst:307 ../Doc/c-api/init_config.rst:311 +#: ../Doc/c-api/init_config.rst:315 ../Doc/c-api/init_config.rst:319 +#: ../Doc/c-api/init_config.rst:327 ../Doc/c-api/init_config.rst:331 +#: ../Doc/c-api/init_config.rst:335 ../Doc/c-api/init_config.rst:347 +#: ../Doc/c-api/init_config.rst:351 ../Doc/c-api/init_config.rst:355 +#: ../Doc/c-api/init_config.rst:359 ../Doc/c-api/init_config.rst:363 +#: ../Doc/c-api/init_config.rst:367 ../Doc/c-api/init_config.rst:375 +#: ../Doc/c-api/init_config.rst:387 ../Doc/c-api/init_config.rst:391 +#: ../Doc/c-api/init_config.rst:395 ../Doc/c-api/init_config.rst:399 +#: ../Doc/c-api/init_config.rst:411 ../Doc/c-api/init_config.rst:415 +#: ../Doc/c-api/init_config.rst:423 ../Doc/c-api/init_config.rst:427 +#: ../Doc/c-api/init_config.rst:439 ../Doc/c-api/init_config.rst:451 +#: ../Doc/c-api/init_config.rst:455 ../Doc/c-api/init_config.rst:459 +#: ../Doc/c-api/init_config.rst:463 ../Doc/c-api/init_config.rst:467 +#: ../Doc/c-api/init_config.rst:471 ../Doc/c-api/init_config.rst:475 +#: ../Doc/c-api/init_config.rst:479 ../Doc/c-api/init_config.rst:483 +#: ../Doc/c-api/init_config.rst:487 ../Doc/c-api/init_config.rst:495 +#: ../Doc/c-api/init_config.rst:503 ../Doc/c-api/init_config.rst:507 +#: ../Doc/c-api/init_config.rst:511 ../Doc/c-api/init_config.rst:515 +#: ../Doc/c-api/init_config.rst:519 ../Doc/c-api/init_config.rst:527 +#: ../Doc/c-api/init_config.rst:543 +msgid "Read-only" +msgstr "" + +#: ../Doc/c-api/init_config.rst:272 +#, fuzzy +msgid "``\"argv\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:273 +#, fuzzy +msgid ":c:member:`argv `" +msgstr ":c:member:`PyConfig.parse_argv`" + +#: ../Doc/c-api/init_config.rst:274 ../Doc/c-api/init_config.rst:402 +#: ../Doc/c-api/init_config.rst:410 ../Doc/c-api/init_config.rst:530 +#: ../Doc/c-api/init_config.rst:578 +msgid "``list[str]``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:275 ../Doc/c-api/init_config.rst:279 +#: ../Doc/c-api/init_config.rst:283 ../Doc/c-api/init_config.rst:287 +#: ../Doc/c-api/init_config.rst:295 ../Doc/c-api/init_config.rst:323 +#: ../Doc/c-api/init_config.rst:339 ../Doc/c-api/init_config.rst:343 +#: ../Doc/c-api/init_config.rst:371 ../Doc/c-api/init_config.rst:379 +#: ../Doc/c-api/init_config.rst:383 ../Doc/c-api/init_config.rst:403 +#: ../Doc/c-api/init_config.rst:407 ../Doc/c-api/init_config.rst:419 +#: ../Doc/c-api/init_config.rst:431 ../Doc/c-api/init_config.rst:435 +#: ../Doc/c-api/init_config.rst:443 ../Doc/c-api/init_config.rst:447 +#: ../Doc/c-api/init_config.rst:491 ../Doc/c-api/init_config.rst:499 +#: ../Doc/c-api/init_config.rst:523 ../Doc/c-api/init_config.rst:531 +#: ../Doc/c-api/init_config.rst:535 ../Doc/c-api/init_config.rst:539 +msgid "Public" +msgstr "" + +#: ../Doc/c-api/init_config.rst:276 +#, fuzzy +msgid "``\"base_exec_prefix\"``" +msgstr ":data:`sys.base_exec_prefix`." + +#: ../Doc/c-api/init_config.rst:277 +#, fuzzy +msgid ":c:member:`base_exec_prefix `" +msgstr ":c:member:`PyConfig.base_exec_prefix`" + +#: ../Doc/c-api/init_config.rst:278 ../Doc/c-api/init_config.rst:282 +#: ../Doc/c-api/init_config.rst:286 ../Doc/c-api/init_config.rst:298 +#: ../Doc/c-api/init_config.rst:334 ../Doc/c-api/init_config.rst:338 +#: ../Doc/c-api/init_config.rst:342 ../Doc/c-api/init_config.rst:350 +#: ../Doc/c-api/init_config.rst:354 ../Doc/c-api/init_config.rst:362 +#: ../Doc/c-api/init_config.rst:430 ../Doc/c-api/init_config.rst:434 +#: ../Doc/c-api/init_config.rst:438 ../Doc/c-api/init_config.rst:442 +#: ../Doc/c-api/init_config.rst:450 ../Doc/c-api/init_config.rst:454 +#: ../Doc/c-api/init_config.rst:458 ../Doc/c-api/init_config.rst:462 +#: ../Doc/c-api/init_config.rst:482 ../Doc/c-api/init_config.rst:486 +#: ../Doc/c-api/init_config.rst:490 ../Doc/c-api/init_config.rst:577 +#, fuzzy +msgid "``str``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:280 +msgid "``\"base_executable\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:281 +#, fuzzy +msgid ":c:member:`base_executable `" +msgstr ":c:member:`PyConfig.base_executable`" + +#: ../Doc/c-api/init_config.rst:284 +#, fuzzy +msgid "``\"base_prefix\"``" +msgstr ":data:`sys.base_prefix`." + +#: ../Doc/c-api/init_config.rst:285 +#, fuzzy +msgid ":c:member:`base_prefix `" +msgstr ":c:member:`PyConfig.base_prefix`" + +#: ../Doc/c-api/init_config.rst:288 +msgid "``\"buffered_stdio\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:289 +#, fuzzy +msgid ":c:member:`buffered_stdio `" +msgstr ":c:member:`PyConfig.base_prefix`" + +#: ../Doc/c-api/init_config.rst:290 ../Doc/c-api/init_config.rst:302 +#: ../Doc/c-api/init_config.rst:306 ../Doc/c-api/init_config.rst:310 +#: ../Doc/c-api/init_config.rst:314 ../Doc/c-api/init_config.rst:318 +#: ../Doc/c-api/init_config.rst:326 ../Doc/c-api/init_config.rst:330 +#: ../Doc/c-api/init_config.rst:346 ../Doc/c-api/init_config.rst:370 +#: ../Doc/c-api/init_config.rst:374 ../Doc/c-api/init_config.rst:382 +#: ../Doc/c-api/init_config.rst:386 ../Doc/c-api/init_config.rst:390 +#: ../Doc/c-api/init_config.rst:394 ../Doc/c-api/init_config.rst:398 +#: ../Doc/c-api/init_config.rst:414 ../Doc/c-api/init_config.rst:418 +#: ../Doc/c-api/init_config.rst:422 ../Doc/c-api/init_config.rst:426 +#: ../Doc/c-api/init_config.rst:446 ../Doc/c-api/init_config.rst:466 +#: ../Doc/c-api/init_config.rst:470 ../Doc/c-api/init_config.rst:474 +#: ../Doc/c-api/init_config.rst:478 ../Doc/c-api/init_config.rst:498 +#: ../Doc/c-api/init_config.rst:502 ../Doc/c-api/init_config.rst:506 +#: ../Doc/c-api/init_config.rst:510 ../Doc/c-api/init_config.rst:514 +#: ../Doc/c-api/init_config.rst:518 ../Doc/c-api/init_config.rst:526 +#: ../Doc/c-api/init_config.rst:534 ../Doc/c-api/init_config.rst:542 +#: ../Doc/c-api/init_config.rst:575 +msgid "``bool``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:292 +msgid "``\"bytes_warning\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:293 +#, fuzzy +msgid ":c:member:`bytes_warning `" +msgstr ":c:member:`PyConfig.pathconfig_warnings`" + +#: ../Doc/c-api/init_config.rst:296 +msgid "``\"check_hash_pycs_mode\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:297 +msgid ":c:member:`check_hash_pycs_mode `" +msgstr "" + +#: ../Doc/c-api/init_config.rst:300 +msgid "``\"code_debug_ranges\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:301 +msgid ":c:member:`code_debug_ranges `" +msgstr "" + +#: ../Doc/c-api/init_config.rst:304 +msgid "``\"coerce_c_locale\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:305 +#, fuzzy +msgid ":c:member:`coerce_c_locale `" +msgstr ":c:member:`PyConfig.executable`" + +#: ../Doc/c-api/init_config.rst:308 +msgid "``\"coerce_c_locale_warn\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:309 +#, fuzzy +msgid ":c:member:`coerce_c_locale_warn `" +msgstr "" +"Si es igual a ``0``, establece los miembros :c:member:`~PyPreConfig." +"coerce_c_locale` y :c:member:`~PyPreConfig.coerce_c_locale_warn` a ``0``." + +#: ../Doc/c-api/init_config.rst:312 +msgid "``\"configure_c_stdio\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:313 +msgid ":c:member:`configure_c_stdio `" +msgstr "" + +#: ../Doc/c-api/init_config.rst:316 +msgid "``\"configure_locale\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:317 +msgid ":c:member:`configure_locale `" +msgstr "" + +#: ../Doc/c-api/init_config.rst:320 +msgid "``\"cpu_count\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:321 +#, fuzzy +msgid ":c:member:`cpu_count `" +msgstr ":c:member:`PyConfig.use_environment`" + +#: ../Doc/c-api/init_config.rst:324 +msgid "``\"dev_mode\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:325 +#, fuzzy +msgid ":c:member:`dev_mode `" +msgstr ":c:member:`PyConfig.dev_mode`" + +#: ../Doc/c-api/init_config.rst:328 +msgid "``\"dump_refs\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:329 +#, fuzzy +msgid ":c:member:`dump_refs `" +msgstr ":c:member:`PyConfig.prefix`" + +#: ../Doc/c-api/init_config.rst:332 +msgid "``\"dump_refs_file\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:333 +#, fuzzy +msgid ":c:member:`dump_refs_file `" +msgstr ":c:member:`PyConfig.prefix`" + +#: ../Doc/c-api/init_config.rst:336 +msgid "``\"exec_prefix\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:337 +#, fuzzy +msgid ":c:member:`exec_prefix `" +msgstr ":c:member:`PyConfig.exec_prefix`" + +#: ../Doc/c-api/init_config.rst:340 +msgid "``\"executable\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:341 +#, fuzzy +msgid ":c:member:`executable `" +msgstr ":c:member:`PyConfig.executable`" + +#: ../Doc/c-api/init_config.rst:344 +#, fuzzy +msgid "``\"faulthandler\"``" +msgstr "¿Habilitar administrador de fallas?" + +#: ../Doc/c-api/init_config.rst:345 +#, fuzzy +msgid ":c:member:`faulthandler `" +msgstr ":c:member:`PyConfig.executable`" + +#: ../Doc/c-api/init_config.rst:348 +msgid "``\"filesystem_encoding\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:349 +#, fuzzy +msgid ":c:member:`filesystem_encoding `" +msgstr "Establezca :c:member:`PyConfig.filesystem_encoding` en ``\"mbcs\"``," + +#: ../Doc/c-api/init_config.rst:352 +msgid "``\"filesystem_errors\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:353 +#, fuzzy +msgid ":c:member:`filesystem_errors `" +msgstr "Establezca :c:member:`PyConfig.filesystem_errors` en ``\"replace\"``." + +#: ../Doc/c-api/init_config.rst:356 +msgid "``\"hash_seed\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:357 +#, fuzzy +msgid ":c:member:`hash_seed `" +msgstr ":c:member:`PyConfig.home`" + +#: ../Doc/c-api/init_config.rst:360 +msgid "``\"home\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:361 +#, fuzzy +msgid ":c:member:`home `" +msgstr ":c:member:`PyConfig.home`" + +#: ../Doc/c-api/init_config.rst:364 +msgid "``\"import_time\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:365 +#, fuzzy +msgid ":c:member:`import_time `" +msgstr ":c:member:`PyConfig.home`" + +#: ../Doc/c-api/init_config.rst:368 +#, fuzzy +msgid "``\"inspect\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:369 +#, fuzzy +msgid ":c:member:`inspect `" +msgstr ":c:member:`PyConfig.isolated`" + +#: ../Doc/c-api/init_config.rst:372 +#, fuzzy +msgid "``\"install_signal_handlers\"``" +msgstr "Instala manejadores de señal;" + +#: ../Doc/c-api/init_config.rst:373 +msgid ":c:member:`install_signal_handlers `" +msgstr "" + +#: ../Doc/c-api/init_config.rst:376 +#, fuzzy +msgid "``\"int_max_str_digits\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:377 +msgid ":c:member:`int_max_str_digits `" +msgstr "" + +#: ../Doc/c-api/init_config.rst:380 +#, fuzzy +msgid "``\"interactive\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:381 +#, fuzzy +msgid ":c:member:`interactive `" +msgstr ":c:member:`PyConfig.isolated`" + +#: ../Doc/c-api/init_config.rst:384 +#, fuzzy +msgid "``\"isolated\"``" +msgstr "``\"surrogateescape\"``" + +#: ../Doc/c-api/init_config.rst:385 +#, fuzzy +msgid ":c:member:`isolated `" +msgstr ":c:member:`PyConfig.isolated`" + +#: ../Doc/c-api/init_config.rst:388 +msgid "``\"legacy_windows_fs_encoding\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:389 +#, fuzzy +msgid "" +":c:member:`legacy_windows_fs_encoding `" +msgstr "Consulte también :c:member:`PyConfig.legacy_windows_stdio`." + +#: ../Doc/c-api/init_config.rst:392 +msgid "``\"legacy_windows_stdio\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:393 +#, fuzzy +msgid ":c:member:`legacy_windows_stdio `" +msgstr "Consulte también :c:member:`PyConfig.legacy_windows_stdio`." + +#: ../Doc/c-api/init_config.rst:396 +#, fuzzy +msgid "``\"malloc_stats\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:397 +#, fuzzy +msgid ":c:member:`malloc_stats `" +msgstr ":c:member:`PyConfig.isolated`" + +#: ../Doc/c-api/init_config.rst:400 +#, fuzzy +msgid "``\"module_search_paths\"``" +msgstr "Rutas de búsqueda del módulo: :data:`sys.path`." + +#: ../Doc/c-api/init_config.rst:401 +#, fuzzy +msgid ":c:member:`module_search_paths `" +msgstr "" +"Por defecto: lista vacía (``module_search_paths``) y ``0`` " +"(``module_search_paths_set``)." + +#: ../Doc/c-api/init_config.rst:404 +#, fuzzy +msgid "``\"optimization_level\"``" +msgstr "Nivel de optimización de compilación:" + +#: ../Doc/c-api/init_config.rst:405 +msgid ":c:member:`optimization_level `" +msgstr "" + +#: ../Doc/c-api/init_config.rst:408 +msgid "``\"orig_argv\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:409 +#, fuzzy +msgid ":c:member:`orig_argv `" +msgstr ":c:member:`PyConfig.parse_argv`" + +#: ../Doc/c-api/init_config.rst:412 +msgid "``\"parse_argv\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:413 +#, fuzzy +msgid ":c:member:`parse_argv `" +msgstr ":c:member:`PyConfig.parse_argv`" + +#: ../Doc/c-api/init_config.rst:416 +msgid "``\"parser_debug\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:417 +#, fuzzy +msgid ":c:member:`parser_debug `" +msgstr ":c:member:`PyConfig.parse_argv`" + +#: ../Doc/c-api/init_config.rst:420 +#, fuzzy +msgid "``\"pathconfig_warnings\"``" +msgstr ":c:member:`PyConfig.pathconfig_warnings`" + +#: ../Doc/c-api/init_config.rst:421 +#, fuzzy +msgid ":c:member:`pathconfig_warnings `" +msgstr ":c:member:`PyConfig.pathconfig_warnings`" + +#: ../Doc/c-api/init_config.rst:424 +msgid "``\"perf_profiling\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:425 +#, fuzzy +msgid ":c:member:`perf_profiling `" +msgstr ":c:member:`PyConfig.exec_prefix`" + +#: ../Doc/c-api/init_config.rst:428 +msgid "``\"platlibdir\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:429 +#, fuzzy +msgid ":c:member:`platlibdir `" +msgstr ":c:member:`PyConfig.platlibdir`" + +#: ../Doc/c-api/init_config.rst:432 +#, fuzzy +msgid "``\"prefix\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:433 +#, fuzzy +msgid ":c:member:`prefix `" +msgstr ":c:member:`PyConfig.prefix`" + +#: ../Doc/c-api/init_config.rst:436 +#, fuzzy +msgid "``\"program_name\"``" +msgstr "``\"surrogateescape\"``" + +#: ../Doc/c-api/init_config.rst:437 +#, fuzzy +msgid ":c:member:`program_name `" +msgstr ":c:member:`PyConfig.program_name`" + +#: ../Doc/c-api/init_config.rst:440 +msgid "``\"pycache_prefix\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:441 +#, fuzzy +msgid ":c:member:`pycache_prefix `" +msgstr ":c:member:`PyConfig.prefix`" + +#: ../Doc/c-api/init_config.rst:444 +#, fuzzy +msgid "``\"quiet\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:445 +#, fuzzy +msgid ":c:member:`quiet `" +msgstr ":c:member:`PyConfig.home`" + +#: ../Doc/c-api/init_config.rst:448 +msgid "``\"run_command\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:449 +#, fuzzy +msgid ":c:member:`run_command `" +msgstr ":c:member:`PyConfig.home`" + +#: ../Doc/c-api/init_config.rst:452 +msgid "``\"run_filename\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:453 +#, fuzzy +msgid ":c:member:`run_filename `" +msgstr ":c:member:`PyConfig.program_name`" + +#: ../Doc/c-api/init_config.rst:456 +msgid "``\"run_module\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:457 +#, fuzzy +msgid ":c:member:`run_module `" +msgstr ":c:member:`PyConfig.dev_mode`" + +#: ../Doc/c-api/init_config.rst:460 +msgid "``\"run_presite\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:461 +#, fuzzy +msgid ":c:member:`run_presite `" +msgstr ":c:member:`PyConfig.prefix`" + +#: ../Doc/c-api/init_config.rst:464 +msgid "``\"safe_path\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:465 +#, fuzzy +msgid ":c:member:`safe_path `" +msgstr "Establezca :c:member:`~PyConfig.safe_path` en ``1``." + +#: ../Doc/c-api/init_config.rst:468 +#, fuzzy +msgid "``\"show_ref_count\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:469 +#, fuzzy +msgid ":c:member:`show_ref_count `" +msgstr ":c:member:`PyConfig.home`" + +#: ../Doc/c-api/init_config.rst:472 +#, fuzzy +msgid "``\"site_import\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:473 +#, fuzzy +msgid ":c:member:`site_import `" +msgstr "Establezca :c:member:`~PyConfig.site_import` en ``0``." + +#: ../Doc/c-api/init_config.rst:476 +msgid "``\"skip_source_first_line\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:477 +#, fuzzy +msgid ":c:member:`skip_source_first_line `" +msgstr "" +"Consulte también la opción :c:member:`PyConfig.skip_source_first_line`." + +#: ../Doc/c-api/init_config.rst:480 +#, fuzzy +msgid "``\"stdio_encoding\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:481 +#, fuzzy +msgid ":c:member:`stdio_encoding `" +msgstr ":c:member:`PyConfig.isolated`" + +#: ../Doc/c-api/init_config.rst:484 +#, fuzzy +msgid "``\"stdio_errors\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:485 +#, fuzzy +msgid ":c:member:`stdio_errors `" +msgstr ":c:member:`PyConfig.platlibdir`" + +#: ../Doc/c-api/init_config.rst:488 +#, fuzzy +msgid "``\"stdlib_dir\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:489 +#, fuzzy +msgid ":c:member:`stdlib_dir `" +msgstr ":c:member:`PyConfig.platlibdir`" + +#: ../Doc/c-api/init_config.rst:492 +#, fuzzy +msgid "``\"tracemalloc\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:493 +#, fuzzy +msgid ":c:member:`tracemalloc `" +msgstr ":c:member:`PyConfig.dev_mode`" + +#: ../Doc/c-api/init_config.rst:496 +msgid "``\"use_environment\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:497 +#, fuzzy +msgid ":c:member:`use_environment `" +msgstr ":c:member:`PyConfig.use_environment`" -#: ../Doc/c-api/init_config.rst:7 -msgid "Python Initialization Configuration" -msgstr "Configuración de inicialización de Python" +#: ../Doc/c-api/init_config.rst:500 +msgid "``\"use_frozen_modules\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:501 +#, fuzzy +msgid ":c:member:`use_frozen_modules `" +msgstr ":c:member:`PyConfig.dev_mode`" + +#: ../Doc/c-api/init_config.rst:504 +msgid "``\"use_hash_seed\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:505 +#, fuzzy +msgid ":c:member:`use_hash_seed `" +msgstr ":c:member:`PyConfig.isolated`" + +#: ../Doc/c-api/init_config.rst:508 +msgid "``\"use_system_logger\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:509 +msgid ":c:member:`use_system_logger `" +msgstr "" + +#: ../Doc/c-api/init_config.rst:512 +msgid "``\"user_site_directory\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:513 +msgid ":c:member:`user_site_directory `" +msgstr "" + +#: ../Doc/c-api/init_config.rst:516 +msgid "``\"utf8_mode\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:517 +#, fuzzy +msgid ":c:member:`utf8_mode `" +msgstr "Establezca :c:member:`PyPreConfig.utf8_mode` en ``0``," + +#: ../Doc/c-api/init_config.rst:520 +msgid "``\"verbose\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:521 +#, fuzzy +msgid ":c:member:`verbose `" +msgstr ":c:member:`PyConfig.home`" + +#: ../Doc/c-api/init_config.rst:524 +#, fuzzy +msgid "``\"warn_default_encoding\"``" +msgstr "Codificación predeterminada:" + +#: ../Doc/c-api/init_config.rst:525 +msgid ":c:member:`warn_default_encoding `" +msgstr "" -#: ../Doc/c-api/init_config.rst:11 +#: ../Doc/c-api/init_config.rst:528 +msgid "``\"warnoptions\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:529 +#, fuzzy +msgid ":c:member:`warnoptions `" +msgstr ":c:member:`PyConfig.pathconfig_warnings`" + +#: ../Doc/c-api/init_config.rst:532 +msgid "``\"write_bytecode\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:533 +#, fuzzy +msgid ":c:member:`write_bytecode `" +msgstr ":c:member:`PyConfig.dev_mode`" + +#: ../Doc/c-api/init_config.rst:536 +msgid "``\"xoptions\"``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:537 +#, fuzzy +msgid ":c:member:`xoptions `" +msgstr ":c:member:`PyConfig.prefix`" + +#: ../Doc/c-api/init_config.rst:538 ../Doc/c-api/init_config.rst:579 +msgid "``dict[str, str]``" +msgstr "" + +#: ../Doc/c-api/init_config.rst:540 +#, fuzzy +msgid "``\"_pystats\"``" +msgstr "``\"strict\"``" + +#: ../Doc/c-api/init_config.rst:541 +#, fuzzy +msgid ":c:member:`_pystats `" +msgstr ":c:member:`PyConfig.isolated`" + +#: ../Doc/c-api/init_config.rst:545 +msgid "Visibility:" +msgstr "" + +#: ../Doc/c-api/init_config.rst:547 msgid "" -"Python can be initialized with :c:func:`Py_InitializeFromConfig` and the :c:type:`PyConfig` " -"structure. It can be preinitialized with :c:func:`Py_PreInitialize` and the :c:type:`PyPreConfig` " -"structure." +"Public: Can by get by :c:func:`PyConfig_Get` and set by :c:func:" +"`PyConfig_Set`." msgstr "" -"Python se puede inicializar con :c:func:`Py_InitializeFromConfig` y la estructura :c:type:`PyConfig`. " -"Se puede preinicializar con :c:func:`Py_PreInitialize` y la estructura :c:type:`PyPreConfig`." -#: ../Doc/c-api/init_config.rst:15 -msgid "There are two kinds of configuration:" -msgstr "Hay dos tipos de configuración:" +#: ../Doc/c-api/init_config.rst:549 +msgid "" +"Read-only: Can by get by :c:func:`PyConfig_Get`, but cannot be set by :c:" +"func:`PyConfig_Set`." +msgstr "" -#: ../Doc/c-api/init_config.rst:17 +#: ../Doc/c-api/init_config.rst:554 +#, fuzzy +msgid "Runtime Python configuration API" +msgstr "Configuración de Python" + +#: ../Doc/c-api/init_config.rst:556 msgid "" -"The :ref:`Python Configuration ` can be used to build a customized Python which " -"behaves as the regular Python. For example, environment variables and command line arguments are used " -"to configure Python." +"At runtime, it's possible to get and set configuration options using :c:func:" +"`PyConfig_Get` and :c:func:`PyConfig_Set` functions." msgstr "" -"La :ref:`Configuración de Python ` se puede utilizar para crear un Python " -"personalizado que se comporte como el Python normal. Por ejemplo, las variables de entorno y los " -"argumentos de la línea de comandos se utilizan para configurar Python." -#: ../Doc/c-api/init_config.rst:22 +#: ../Doc/c-api/init_config.rst:562 +msgid "" +"Some options are read from the :mod:`sys` attributes. For example, the " +"option ``\"argv\"`` is read from :data:`sys.argv`." +msgstr "" + +#: ../Doc/c-api/init_config.rst:568 +msgid "" +"Get the current runtime value of a configuration option as a Python object." +msgstr "" + +#: ../Doc/c-api/init_config.rst:570 ../Doc/c-api/init_config.rst:601 +msgid "Return a new reference on success." +msgstr "" + +#: ../Doc/c-api/init_config.rst:571 ../Doc/c-api/init_config.rst:602 +msgid "Set an exception and return ``NULL`` on error." +msgstr "" + +#: ../Doc/c-api/init_config.rst:573 +msgid "The object type depends on the configuration option. It can be:" +msgstr "" + +#: ../Doc/c-api/init_config.rst:581 ../Doc/c-api/init_config.rst:604 +#: ../Doc/c-api/init_config.rst:619 +msgid "" +"The caller must have an :term:`attached thread state`. The function cannot " +"be called before Python initialization nor after Python finalization." +msgstr "" + +#: ../Doc/c-api/init_config.rst:589 +msgid "Similar to :c:func:`PyConfig_Get`, but get the value as a C int." +msgstr "" + +#: ../Doc/c-api/init_config.rst:592 +msgid "Set an exception and return ``-1`` on error." +msgstr "" + +#: ../Doc/c-api/init_config.rst:599 +msgid "Get all configuration option names as a ``frozenset``." +msgstr "" + +#: ../Doc/c-api/init_config.rst:612 +msgid "Set the current runtime value of a configuration option." +msgstr "" + +#: ../Doc/c-api/init_config.rst:614 +msgid "Raise a :exc:`ValueError` if there is no option *name*." +msgstr "" + +#: ../Doc/c-api/init_config.rst:615 +msgid "Raise a :exc:`ValueError` if *value* is an invalid value." +msgstr "" + +#: ../Doc/c-api/init_config.rst:616 +msgid "Raise a :exc:`ValueError` if the option is read-only (cannot be set)." +msgstr "" + +#: ../Doc/c-api/init_config.rst:617 +msgid "Raise a :exc:`TypeError` if *value* has not the proper type." +msgstr "" + +#: ../Doc/c-api/init_config.rst:622 +msgid "" +"Raises an :ref:`auditing event ` ``cpython.PyConfig_Set`` with " +"arguments ``name``, ``value``." +msgstr "" + +#: ../Doc/c-api/init_config.rst:630 +#, fuzzy +msgid "PyConfig C API" +msgstr "PyConfig" + +#: ../Doc/c-api/init_config.rst:634 msgid "" -"The :ref:`Isolated Configuration ` can be used to embed Python into an " -"application. It isolates Python from the system. For example, environment variables are ignored, the " -"LC_CTYPE locale is left unchanged and no signal handler is registered." +"Python can be initialized with :c:func:`Py_InitializeFromConfig` and the :c:" +"type:`PyConfig` structure. It can be preinitialized with :c:func:" +"`Py_PreInitialize` and the :c:type:`PyPreConfig` structure." msgstr "" -"La :ref:`Configuración Aislada ` se puede utilizar para incrustar Python en una " -"aplicación. Aísla a Python del sistema. Por ejemplo, las variables de entorno se ignoran, la " -"configuración regional LC_CTYPE se deja sin cambios y no se registra ningún manejador de señales." +"Python se puede inicializar con :c:func:`Py_InitializeFromConfig` y la " +"estructura :c:type:`PyConfig`. Se puede preinicializar con :c:func:" +"`Py_PreInitialize` y la estructura :c:type:`PyPreConfig`." -#: ../Doc/c-api/init_config.rst:27 -msgid "The :c:func:`Py_RunMain` function can be used to write a customized Python program." +#: ../Doc/c-api/init_config.rst:638 +msgid "There are two kinds of configuration:" +msgstr "Hay dos tipos de configuración:" + +#: ../Doc/c-api/init_config.rst:640 +msgid "" +"The :ref:`Python Configuration ` can be used to build a " +"customized Python which behaves as the regular Python. For example, " +"environment variables and command line arguments are used to configure " +"Python." msgstr "" -"La función :c:func:`Py_RunMain` se puede utilizar para escribir un programa Python personalizado." +"La :ref:`Configuración de Python ` se puede utilizar " +"para crear un Python personalizado que se comporte como el Python normal. " +"Por ejemplo, las variables de entorno y los argumentos de la línea de " +"comandos se utilizan para configurar Python." -#: ../Doc/c-api/init_config.rst:30 -msgid "See also :ref:`Initialization, Finalization, and Threads `." -msgstr "Consulte también :ref:`Inicialización, finalización y subprocesos `." +#: ../Doc/c-api/init_config.rst:645 +msgid "" +"The :ref:`Isolated Configuration ` can be used to embed " +"Python into an application. It isolates Python from the system. For example, " +"environment variables are ignored, the LC_CTYPE locale is left unchanged and " +"no signal handler is registered." +msgstr "" +"La :ref:`Configuración Aislada ` se puede utilizar para " +"incrustar Python en una aplicación. Aísla a Python del sistema. Por ejemplo, " +"las variables de entorno se ignoran, la configuración regional LC_CTYPE se " +"deja sin cambios y no se registra ningún manejador de señales." -#: ../Doc/c-api/init_config.rst:33 +#: ../Doc/c-api/init_config.rst:656 msgid ":pep:`587` \"Python Initialization Configuration\"." msgstr ":pep:`587` \"Configuración de inicialización de Python\"." -#: ../Doc/c-api/init_config.rst:37 -msgid "Example" -msgstr "Ejemplo" - -#: ../Doc/c-api/init_config.rst:39 +#: ../Doc/c-api/init_config.rst:662 msgid "Example of customized Python always running in isolated mode::" -msgstr "Ejemplo de Python personalizado que siempre se ejecuta en modo aislado::" +msgstr "" +"Ejemplo de Python personalizado que siempre se ejecuta en modo aislado::" -#: ../Doc/c-api/init_config.rst:41 +#: ../Doc/c-api/init_config.rst:664 msgid "" "int main(int argc, char **argv)\n" "{\n" @@ -146,147 +1316,157 @@ msgstr "" " Py_ExitStatusException(status);\n" "}" -#: ../Doc/c-api/init_config.rst:76 +#: ../Doc/c-api/init_config.rst:699 msgid "PyWideStringList" msgstr "PyWideStringList" -#: ../Doc/c-api/init_config.rst:80 +#: ../Doc/c-api/init_config.rst:703 msgid "List of ``wchar_t*`` strings." msgstr "Lista de cadenas de caracteres ``wchar_t*``." -#: ../Doc/c-api/init_config.rst:82 -msgid "If *length* is non-zero, *items* must be non-``NULL`` and all strings must be non-``NULL``." +#: ../Doc/c-api/init_config.rst:705 +msgid "" +"If *length* is non-zero, *items* must be non-``NULL`` and all strings must " +"be non-``NULL``." msgstr "" -"Si *length* no es cero, *items* no deben ser ``NULL`` y todas las cadenas de caracteres deben ser no " -"``NULL``." +"Si *length* no es cero, *items* no deben ser ``NULL`` y todas las cadenas de " +"caracteres deben ser no ``NULL``." -#: ../Doc/c-api/init_config.rst:87 +#: ../Doc/c-api/init_config.rst:710 msgid "Methods:" msgstr "Métodos:" -#: ../Doc/c-api/init_config.rst:91 +#: ../Doc/c-api/init_config.rst:714 msgid "Append *item* to *list*." msgstr "Agregar *item* a *list*." -#: ../Doc/c-api/init_config.rst:93 ../Doc/c-api/init_config.rst:104 +#: ../Doc/c-api/init_config.rst:716 ../Doc/c-api/init_config.rst:727 msgid "Python must be preinitialized to call this function." msgstr "Python debe estar preinicializado para llamar a esta función." -#: ../Doc/c-api/init_config.rst:97 +#: ../Doc/c-api/init_config.rst:720 msgid "Insert *item* into *list* at *index*." msgstr "Inserta *item* en *list* en *index*." -#: ../Doc/c-api/init_config.rst:99 -msgid "If *index* is greater than or equal to *list* length, append *item* to *list*." -msgstr "Si *index* es mayor o igual que el largo de *list*, agrega *item* a *list*." +#: ../Doc/c-api/init_config.rst:722 +msgid "" +"If *index* is greater than or equal to *list* length, append *item* to " +"*list*." +msgstr "" +"Si *index* es mayor o igual que el largo de *list*, agrega *item* a *list*." -#: ../Doc/c-api/init_config.rst:102 +#: ../Doc/c-api/init_config.rst:725 msgid "*index* must be greater than or equal to ``0``." msgstr "*index* debe ser mayor o igual que ``0``." -#: ../Doc/c-api/init_config.rst:108 ../Doc/c-api/init_config.rst:128 ../Doc/c-api/init_config.rst:235 -#: ../Doc/c-api/init_config.rst:554 +#: ../Doc/c-api/init_config.rst:731 ../Doc/c-api/init_config.rst:751 +#: ../Doc/c-api/init_config.rst:858 ../Doc/c-api/init_config.rst:1177 msgid "Structure fields:" msgstr "Campos de estructura:" -#: ../Doc/c-api/init_config.rst:112 +#: ../Doc/c-api/init_config.rst:735 msgid "List length." msgstr "Longitud de la lista." -#: ../Doc/c-api/init_config.rst:116 +#: ../Doc/c-api/init_config.rst:739 msgid "List items." msgstr "Elementos de la lista." -#: ../Doc/c-api/init_config.rst:119 +#: ../Doc/c-api/init_config.rst:742 msgid "PyStatus" msgstr "PyStatus" -#: ../Doc/c-api/init_config.rst:123 -msgid "Structure to store an initialization function status: success, error or exit." -msgstr "Estructura para almacenar el estado de una función de inicialización: éxito, error o salida." +#: ../Doc/c-api/init_config.rst:746 +msgid "" +"Structure to store an initialization function status: success, error or exit." +msgstr "" +"Estructura para almacenar el estado de una función de inicialización: éxito, " +"error o salida." -#: ../Doc/c-api/init_config.rst:126 +#: ../Doc/c-api/init_config.rst:749 msgid "For an error, it can store the C function name which created the error." -msgstr "Para un error, puede almacenar el nombre de la función C que creó el error." +msgstr "" +"Para un error, puede almacenar el nombre de la función C que creó el error." -#: ../Doc/c-api/init_config.rst:132 +#: ../Doc/c-api/init_config.rst:755 msgid "Exit code. Argument passed to ``exit()``." msgstr "Código de salida El argumento pasó a ``exit()``." -#: ../Doc/c-api/init_config.rst:136 +#: ../Doc/c-api/init_config.rst:759 msgid "Error message." msgstr "Mensaje de error." -#: ../Doc/c-api/init_config.rst:140 +#: ../Doc/c-api/init_config.rst:763 msgid "Name of the function which created an error, can be ``NULL``." msgstr "El nombre de la función que creó un error puede ser ``NULL``." -#: ../Doc/c-api/init_config.rst:144 +#: ../Doc/c-api/init_config.rst:767 msgid "Functions to create a status:" msgstr "Funciones para crear un estado:" -#: ../Doc/c-api/init_config.rst:148 +#: ../Doc/c-api/init_config.rst:771 msgid "Success." msgstr "Éxito." -#: ../Doc/c-api/init_config.rst:152 +#: ../Doc/c-api/init_config.rst:775 msgid "Initialization error with a message." msgstr "Error de inicialización con un mensaje." -#: ../Doc/c-api/init_config.rst:154 +#: ../Doc/c-api/init_config.rst:777 msgid "*err_msg* must not be ``NULL``." msgstr "*err_msg* no debe ser ``NULL``." -#: ../Doc/c-api/init_config.rst:158 +#: ../Doc/c-api/init_config.rst:781 msgid "Memory allocation failure (out of memory)." msgstr "Error de asignación de memoria (sin memoria)." -#: ../Doc/c-api/init_config.rst:162 +#: ../Doc/c-api/init_config.rst:785 msgid "Exit Python with the specified exit code." msgstr "Sale de Python con el código de salida especificado." -#: ../Doc/c-api/init_config.rst:164 +#: ../Doc/c-api/init_config.rst:787 msgid "Functions to handle a status:" msgstr "Funciones para manejar un estado:" -#: ../Doc/c-api/init_config.rst:168 +#: ../Doc/c-api/init_config.rst:791 msgid "" -"Is the status an error or an exit? If true, the exception must be handled; by calling :c:func:" -"`Py_ExitStatusException` for example." +"Is the status an error or an exit? If true, the exception must be handled; " +"by calling :c:func:`Py_ExitStatusException` for example." msgstr "" -"¿Es el estado un error o una salida? Si es verdadero, la excepción debe ser manejada; por ejemplo " -"llamando a :c:func:`Py_ExitStatusException`." +"¿Es el estado un error o una salida? Si es verdadero, la excepción debe ser " +"manejada; por ejemplo llamando a :c:func:`Py_ExitStatusException`." -#: ../Doc/c-api/init_config.rst:173 +#: ../Doc/c-api/init_config.rst:796 msgid "Is the result an error?" msgstr "¿Es el resultado un error?" -#: ../Doc/c-api/init_config.rst:177 +#: ../Doc/c-api/init_config.rst:800 msgid "Is the result an exit?" msgstr "¿El resultado es una salida?" -#: ../Doc/c-api/init_config.rst:181 +#: ../Doc/c-api/init_config.rst:804 msgid "" -"Call ``exit(exitcode)`` if *status* is an exit. Print the error message and exit with a non-zero exit " -"code if *status* is an error. Must only be called if ``PyStatus_Exception(status)`` is non-zero." +"Call ``exit(exitcode)`` if *status* is an exit. Print the error message and " +"exit with a non-zero exit code if *status* is an error. Must only be called " +"if ``PyStatus_Exception(status)`` is non-zero." msgstr "" -"Llama a ``exit(exitcode)`` si *status* es una salida. Imprime el mensaje de error y sale con un " -"código de salida distinto de cero si *status* es un error. Solo se debe llamar si " -"``PyStatus_Exception(status)`` no es cero." +"Llama a ``exit(exitcode)`` si *status* es una salida. Imprime el mensaje de " +"error y sale con un código de salida distinto de cero si *status* es un " +"error. Solo se debe llamar si ``PyStatus_Exception(status)`` no es cero." -#: ../Doc/c-api/init_config.rst:186 +#: ../Doc/c-api/init_config.rst:809 msgid "" -"Internally, Python uses macros which set ``PyStatus.func``, whereas functions to create a status set " -"``func`` to ``NULL``." +"Internally, Python uses macros which set ``PyStatus.func``, whereas " +"functions to create a status set ``func`` to ``NULL``." msgstr "" -"Internamente, Python usa macros que establecen ``PyStatus.func``, mientras que las funciones para " -"crear un estado establecen ``func`` en ``NULL``." +"Internamente, Python usa macros que establecen ``PyStatus.func``, mientras " +"que las funciones para crear un estado establecen ``func`` en ``NULL``." -#: ../Doc/c-api/init_config.rst:189 +#: ../Doc/c-api/init_config.rst:812 msgid "Example::" msgstr "Ejemplo::" -#: ../Doc/c-api/init_config.rst:191 +#: ../Doc/c-api/init_config.rst:814 msgid "" "PyStatus alloc(void **ptr, size_t size)\n" "{\n" @@ -328,341 +1508,426 @@ msgstr "" " return 0;\n" "}" -#: ../Doc/c-api/init_config.rst:213 +#: ../Doc/c-api/init_config.rst:836 msgid "PyPreConfig" msgstr "PyPreConfig" -#: ../Doc/c-api/init_config.rst:217 +#: ../Doc/c-api/init_config.rst:840 msgid "Structure used to preinitialize Python." msgstr "Estructura utilizada para preinicializar Python." -#: ../Doc/c-api/init_config.rst:221 +#: ../Doc/c-api/init_config.rst:844 msgid "Function to initialize a preconfiguration:" msgstr "Función para inicializar una preconfiguración:" -#: ../Doc/c-api/init_config.rst:225 -msgid "Initialize the preconfiguration with :ref:`Python Configuration `." -msgstr "Inicializa la preconfiguración con :ref:`Configuración de Python `." +#: ../Doc/c-api/init_config.rst:848 +msgid "" +"Initialize the preconfiguration with :ref:`Python Configuration `." +msgstr "" +"Inicializa la preconfiguración con :ref:`Configuración de Python `." -#: ../Doc/c-api/init_config.rst:230 -msgid "Initialize the preconfiguration with :ref:`Isolated Configuration `." -msgstr "Inicializa la preconfiguración con :ref:`Configuración aislada `." +#: ../Doc/c-api/init_config.rst:853 +msgid "" +"Initialize the preconfiguration with :ref:`Isolated Configuration `." +msgstr "" +"Inicializa la preconfiguración con :ref:`Configuración aislada `." -#: ../Doc/c-api/init_config.rst:239 +#: ../Doc/c-api/init_config.rst:862 msgid "Name of the Python memory allocators:" msgstr "Nombre de los asignadores de memoria de Python:" -#: ../Doc/c-api/init_config.rst:241 -msgid "``PYMEM_ALLOCATOR_NOT_SET`` (``0``): don't change memory allocators (use defaults)." +#: ../Doc/c-api/init_config.rst:864 +msgid "" +"``PYMEM_ALLOCATOR_NOT_SET`` (``0``): don't change memory allocators (use " +"defaults)." msgstr "" -"``PYMEM_ALLOCATOR_NOT_SET`` (``0``): no cambia asignadores de memoria (usa los valores " -"predeterminados)" +"``PYMEM_ALLOCATOR_NOT_SET`` (``0``): no cambia asignadores de memoria (usa " +"los valores predeterminados)" -#: ../Doc/c-api/init_config.rst:243 +#: ../Doc/c-api/init_config.rst:866 msgid "" -"``PYMEM_ALLOCATOR_DEFAULT`` (``1``): :ref:`default memory allocators `." +"``PYMEM_ALLOCATOR_DEFAULT`` (``1``): :ref:`default memory allocators " +"`." msgstr "" -"``PYMEM_ALLOCATOR_DEFAULT`` (``1``): :ref:`asignadores de memoria predeterminados `." +"``PYMEM_ALLOCATOR_DEFAULT`` (``1``): :ref:`asignadores de memoria " +"predeterminados `." -#: ../Doc/c-api/init_config.rst:245 +#: ../Doc/c-api/init_config.rst:868 msgid "" -"``PYMEM_ALLOCATOR_DEBUG`` (``2``): :ref:`default memory allocators ` with :" -"ref:`debug hooks `." +"``PYMEM_ALLOCATOR_DEBUG`` (``2``): :ref:`default memory allocators ` with :ref:`debug hooks `." msgstr "" -"``PYMEM_ALLOCATOR_DEBUG`` (``2``): :ref:`asignadores de memoria predeterminados ` con :ref:`ganchos de depuración `." +"``PYMEM_ALLOCATOR_DEBUG`` (``2``): :ref:`asignadores de memoria " +"predeterminados ` con :ref:`ganchos de depuración " +"`." -#: ../Doc/c-api/init_config.rst:248 +#: ../Doc/c-api/init_config.rst:871 msgid "``PYMEM_ALLOCATOR_MALLOC`` (``3``): use ``malloc()`` of the C library." -msgstr "``PYMEM_ALLOCATOR_MALLOC`` (``3``): usa ``malloc()`` de la biblioteca C." +msgstr "" +"``PYMEM_ALLOCATOR_MALLOC`` (``3``): usa ``malloc()`` de la biblioteca C." -#: ../Doc/c-api/init_config.rst:249 +#: ../Doc/c-api/init_config.rst:872 msgid "" -"``PYMEM_ALLOCATOR_MALLOC_DEBUG`` (``4``): force usage of ``malloc()`` with :ref:`debug hooks `." +"``PYMEM_ALLOCATOR_MALLOC_DEBUG`` (``4``): force usage of ``malloc()`` with :" +"ref:`debug hooks `." msgstr "" -"``PYMEM_ALLOCATOR_MALLOC_DEBUG`` (``4``): fuerza el uso de ``malloc()`` con :ref:`ganchos de " -"depuración `." +"``PYMEM_ALLOCATOR_MALLOC_DEBUG`` (``4``): fuerza el uso de ``malloc()`` con :" +"ref:`ganchos de depuración `." -#: ../Doc/c-api/init_config.rst:251 -msgid "``PYMEM_ALLOCATOR_PYMALLOC`` (``5``): :ref:`Python pymalloc memory allocator `." +#: ../Doc/c-api/init_config.rst:874 +msgid "" +"``PYMEM_ALLOCATOR_PYMALLOC`` (``5``): :ref:`Python pymalloc memory allocator " +"`." msgstr "" -"``PYMEM_ALLOCATOR_PYMALLOC`` (``5``): :ref:`asignador de memoria pymalloc de Python `." +"``PYMEM_ALLOCATOR_PYMALLOC`` (``5``): :ref:`asignador de memoria pymalloc de " +"Python `." -#: ../Doc/c-api/init_config.rst:253 +#: ../Doc/c-api/init_config.rst:876 msgid "" -"``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` (``6``): :ref:`Python pymalloc memory allocator ` with :" -"ref:`debug hooks `." +"``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` (``6``): :ref:`Python pymalloc memory " +"allocator ` with :ref:`debug hooks `." msgstr "" -"``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` (``6``): :ref:`asignador de memoria pymalloc de Python ` " -"con :ref:`ganchos de depuración `." +"``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` (``6``): :ref:`asignador de memoria " +"pymalloc de Python ` con :ref:`ganchos de depuración `." -#: ../Doc/c-api/init_config.rst:256 -msgid "``PYMEM_ALLOCATOR_MIMALLOC`` (``6``): use ``mimalloc``, a fast malloc replacement." -msgstr "``PYMEM_ALLOCATOR_MIMALLOC`` (``6``): usa ``mimalloc``, un reemplazo rápido de malloc." +#: ../Doc/c-api/init_config.rst:879 +msgid "" +"``PYMEM_ALLOCATOR_MIMALLOC`` (``6``): use ``mimalloc``, a fast malloc " +"replacement." +msgstr "" +"``PYMEM_ALLOCATOR_MIMALLOC`` (``6``): usa ``mimalloc``, un reemplazo rápido " +"de malloc." -#: ../Doc/c-api/init_config.rst:258 +#: ../Doc/c-api/init_config.rst:881 msgid "" -"``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` (``7``): use ``mimalloc``, a fast malloc replacement with :ref:" -"`debug hooks `." +"``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` (``7``): use ``mimalloc``, a fast malloc " +"replacement with :ref:`debug hooks `." msgstr "" -"``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` (``7``): usa ``mimalloc``, un reemplazo rápido de malloc con :ref:" -"`ganchos de depuración `." +"``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` (``7``): usa ``mimalloc``, un reemplazo " +"rápido de malloc con :ref:`ganchos de depuración `." -#: ../Doc/c-api/init_config.rst:262 +#: ../Doc/c-api/init_config.rst:885 msgid "" -"``PYMEM_ALLOCATOR_PYMALLOC`` and ``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` are not supported if Python is :" -"option:`configured using --without-pymalloc <--without-pymalloc>`." +"``PYMEM_ALLOCATOR_PYMALLOC`` and ``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` are not " +"supported if Python is :option:`configured using --without-pymalloc <--" +"without-pymalloc>`." msgstr "" -"``PYMEM_ALLOCATOR_PYMALLOC`` y ``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` no son compatibles si Python es :" -"option:`configurado usando --without-pymalloc <--without-pymalloc>`." +"``PYMEM_ALLOCATOR_PYMALLOC`` y ``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` no son " +"compatibles si Python es :option:`configurado usando --without-pymalloc <--" +"without-pymalloc>`." -#: ../Doc/c-api/init_config.rst:266 +#: ../Doc/c-api/init_config.rst:889 msgid "" -"``PYMEM_ALLOCATOR_MIMALLOC`` and ``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` are not supported if Python is :" -"option:`configured using --without-mimalloc <--without-mimalloc>` or if the underlying atomic support " -"isn't available." +"``PYMEM_ALLOCATOR_MIMALLOC`` and ``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` are not " +"supported if Python is :option:`configured using --without-mimalloc <--" +"without-mimalloc>` or if the underlying atomic support isn't available." msgstr "" -"``PYMEM_ALLOCATOR_MIMALLOC`` y ``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` no son compatibles si Python es :" -"option:`configurado usando --without-mimalloc <--without-mimalloc>` o si el soporte atómico " -"subyacente no está disponible." +"``PYMEM_ALLOCATOR_MIMALLOC`` y ``PYMEM_ALLOCATOR_MIMALLOC_DEBUG`` no son " +"compatibles si Python es :option:`configurado usando --without-mimalloc <--" +"without-mimalloc>` o si el soporte atómico subyacente no está disponible." -#: ../Doc/c-api/init_config.rst:271 +#: ../Doc/c-api/init_config.rst:894 msgid "See :ref:`Memory Management `." msgstr "Ver :ref:`Administración de memorias `." -#: ../Doc/c-api/init_config.rst:273 +#: ../Doc/c-api/init_config.rst:896 msgid "Default: ``PYMEM_ALLOCATOR_NOT_SET``." msgstr "Predeterminado: ``PYMEM_ALLOCATOR_NOT_SET``." -#: ../Doc/c-api/init_config.rst:277 +#: ../Doc/c-api/init_config.rst:900 msgid "Set the LC_CTYPE locale to the user preferred locale." -msgstr "Establece la configuración regional LC_CTYPE a la configuración regional preferida del usuario." +msgstr "" +"Establece la configuración regional LC_CTYPE a la configuración regional " +"preferida del usuario." -#: ../Doc/c-api/init_config.rst:279 +#: ../Doc/c-api/init_config.rst:902 msgid "" -"If equals to ``0``, set :c:member:`~PyPreConfig.coerce_c_locale` and :c:member:`~PyPreConfig." -"coerce_c_locale_warn` members to ``0``." +"If equals to ``0``, set :c:member:`~PyPreConfig.coerce_c_locale` and :c:" +"member:`~PyPreConfig.coerce_c_locale_warn` members to ``0``." msgstr "" -"Si es igual a ``0``, establece los miembros :c:member:`~PyPreConfig.coerce_c_locale` y :c:member:" -"`~PyPreConfig.coerce_c_locale_warn` a ``0``." +"Si es igual a ``0``, establece los miembros :c:member:`~PyPreConfig." +"coerce_c_locale` y :c:member:`~PyPreConfig.coerce_c_locale_warn` a ``0``." -#: ../Doc/c-api/init_config.rst:282 ../Doc/c-api/init_config.rst:293 +#: ../Doc/c-api/init_config.rst:905 ../Doc/c-api/init_config.rst:916 msgid "See the :term:`locale encoding`." msgstr "Vea el :term:`locale encoding`." -#: ../Doc/c-api/init_config.rst:284 ../Doc/c-api/init_config.rst:339 ../Doc/c-api/init_config.rst:710 +#: ../Doc/c-api/init_config.rst:907 ../Doc/c-api/init_config.rst:962 +#: ../Doc/c-api/init_config.rst:1333 msgid "Default: ``1`` in Python config, ``0`` in isolated config." -msgstr "Predeterminado: ``1`` en la configuración de Python, ``0`` en la configuración aislada." +msgstr "" +"Predeterminado: ``1`` en la configuración de Python, ``0`` en la " +"configuración aislada." -#: ../Doc/c-api/init_config.rst:288 +#: ../Doc/c-api/init_config.rst:911 msgid "If equals to ``2``, coerce the C locale." msgstr "Si es igual a ``2``, imponga la configuración regional C." -#: ../Doc/c-api/init_config.rst:290 -msgid "If equals to ``1``, read the LC_CTYPE locale to decide if it should be coerced." -msgstr "Si es igual a ``1``, lee la configuración regional LC_CTYPE para decidir si debe ser forzada." +#: ../Doc/c-api/init_config.rst:913 +msgid "" +"If equals to ``1``, read the LC_CTYPE locale to decide if it should be " +"coerced." +msgstr "" +"Si es igual a ``1``, lee la configuración regional LC_CTYPE para decidir si " +"debe ser forzada." -#: ../Doc/c-api/init_config.rst:295 ../Doc/c-api/init_config.rst:301 +#: ../Doc/c-api/init_config.rst:918 ../Doc/c-api/init_config.rst:924 msgid "Default: ``-1`` in Python config, ``0`` in isolated config." -msgstr "Predeterminado: ``-1`` en la configuración de Python, ``0`` en la configuración aislada." +msgstr "" +"Predeterminado: ``-1`` en la configuración de Python, ``0`` en la " +"configuración aislada." -#: ../Doc/c-api/init_config.rst:299 +#: ../Doc/c-api/init_config.rst:922 msgid "If non-zero, emit a warning if the C locale is coerced." -msgstr "Si no es cero, emita una advertencia si la configuración regional C está coaccionada." +msgstr "" +"Si no es cero, emita una advertencia si la configuración regional C está " +"coaccionada." -#: ../Doc/c-api/init_config.rst:305 -msgid ":ref:`Python Development Mode `: see :c:member:`PyConfig.dev_mode`." -msgstr ":ref:`Modo de desarrollo de Python `: consulte :c:member:`PyConfig.dev_mode`." +#: ../Doc/c-api/init_config.rst:928 +msgid "" +":ref:`Python Development Mode `: see :c:member:`PyConfig.dev_mode`." +msgstr "" +":ref:`Modo de desarrollo de Python `: consulte :c:member:`PyConfig." +"dev_mode`." -#: ../Doc/c-api/init_config.rst:308 ../Doc/c-api/init_config.rst:719 ../Doc/c-api/init_config.rst:765 -#: ../Doc/c-api/init_config.rst:1244 +#: ../Doc/c-api/init_config.rst:931 ../Doc/c-api/init_config.rst:1342 +#: ../Doc/c-api/init_config.rst:1398 ../Doc/c-api/init_config.rst:1892 msgid "Default: ``-1`` in Python mode, ``0`` in isolated mode." msgstr "Por defecto: ``-1`` en modo Python, ``0`` en modo aislado." -#: ../Doc/c-api/init_config.rst:312 +#: ../Doc/c-api/init_config.rst:935 msgid "Isolated mode: see :c:member:`PyConfig.isolated`." msgstr "Modo aislado: consulte :c:member:`PyConfig.isolated`." -#: ../Doc/c-api/init_config.rst:314 ../Doc/c-api/init_config.rst:921 +#: ../Doc/c-api/init_config.rst:937 ../Doc/c-api/init_config.rst:1569 msgid "Default: ``0`` in Python mode, ``1`` in isolated mode." msgstr "Por defecto: ``0`` en modo Python, ``1`` en modo aislado." -#: ../Doc/c-api/init_config.rst:318 +#: ../Doc/c-api/init_config.rst:941 msgid "If non-zero:" msgstr "Si no es cero:" -#: ../Doc/c-api/init_config.rst:320 +#: ../Doc/c-api/init_config.rst:943 msgid "Set :c:member:`PyPreConfig.utf8_mode` to ``0``," msgstr "Establezca :c:member:`PyPreConfig.utf8_mode` en ``0``," -#: ../Doc/c-api/init_config.rst:321 +#: ../Doc/c-api/init_config.rst:944 msgid "Set :c:member:`PyConfig.filesystem_encoding` to ``\"mbcs\"``," msgstr "Establezca :c:member:`PyConfig.filesystem_encoding` en ``\"mbcs\"``," -#: ../Doc/c-api/init_config.rst:322 +#: ../Doc/c-api/init_config.rst:945 msgid "Set :c:member:`PyConfig.filesystem_errors` to ``\"replace\"``." msgstr "Establezca :c:member:`PyConfig.filesystem_errors` en ``\"replace\"``." -#: ../Doc/c-api/init_config.rst:324 -msgid "Initialized from the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment variable value." -msgstr "Inicializado desde el valor de la variable de entorno :envvar:`PYTHONLEGACYWINDOWSFSENCODING`." +#: ../Doc/c-api/init_config.rst:947 +msgid "" +"Initialized from the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment " +"variable value." +msgstr "" +"Inicializado desde el valor de la variable de entorno :envvar:" +"`PYTHONLEGACYWINDOWSFSENCODING`." -#: ../Doc/c-api/init_config.rst:327 ../Doc/c-api/init_config.rst:935 -msgid "Only available on Windows. ``#ifdef MS_WINDOWS`` macro can be used for Windows specific code." +#: ../Doc/c-api/init_config.rst:950 ../Doc/c-api/init_config.rst:1583 +msgid "" +"Only available on Windows. ``#ifdef MS_WINDOWS`` macro can be used for " +"Windows specific code." msgstr "" -"Solo disponible en Windows. La macro ``#ifdef MS_WINDOWS`` se puede usar para el código específico de " -"Windows." +"Solo disponible en Windows. La macro ``#ifdef MS_WINDOWS`` se puede usar " +"para el código específico de Windows." -#: ../Doc/c-api/init_config.rst:330 ../Doc/c-api/init_config.rst:658 ../Doc/c-api/init_config.rst:665 -#: ../Doc/c-api/init_config.rst:732 ../Doc/c-api/init_config.rst:843 ../Doc/c-api/init_config.rst:857 -#: ../Doc/c-api/init_config.rst:871 ../Doc/c-api/init_config.rst:938 ../Doc/c-api/init_config.rst:952 -#: ../Doc/c-api/init_config.rst:1012 ../Doc/c-api/init_config.rst:1064 ../Doc/c-api/init_config.rst:1126 -#: ../Doc/c-api/init_config.rst:1180 ../Doc/c-api/init_config.rst:1209 ../Doc/c-api/init_config.rst:1298 +#: ../Doc/c-api/init_config.rst:953 ../Doc/c-api/init_config.rst:1281 +#: ../Doc/c-api/init_config.rst:1288 ../Doc/c-api/init_config.rst:1355 +#: ../Doc/c-api/init_config.rst:1487 ../Doc/c-api/init_config.rst:1505 +#: ../Doc/c-api/init_config.rst:1519 ../Doc/c-api/init_config.rst:1586 +#: ../Doc/c-api/init_config.rst:1600 ../Doc/c-api/init_config.rst:1660 +#: ../Doc/c-api/init_config.rst:1712 ../Doc/c-api/init_config.rst:1774 +#: ../Doc/c-api/init_config.rst:1828 ../Doc/c-api/init_config.rst:1857 +#: ../Doc/c-api/init_config.rst:1971 ../Doc/c-api/init_config.rst:2018 msgid "Default: ``0``." msgstr "Predeterminado: ``0``." -#: ../Doc/c-api/init_config.rst:334 +#: ../Doc/c-api/init_config.rst:957 msgid "" -"If non-zero, :c:func:`Py_PreInitializeFromArgs` and :c:func:`Py_PreInitializeFromBytesArgs` parse " -"their ``argv`` argument the same way the regular Python parses command line arguments: see :ref:" -"`Command Line Arguments `." +"If non-zero, :c:func:`Py_PreInitializeFromArgs` and :c:func:" +"`Py_PreInitializeFromBytesArgs` parse their ``argv`` argument the same way " +"the regular Python parses command line arguments: see :ref:`Command Line " +"Arguments `." msgstr "" -"Si no es cero, :c:func:`Py_PreInitializeFromArgs` y :c:func:`Py_PreInitializeFromBytesArgs` analizan " -"su argumento ``argv`` de la misma manera que Python analiza los argumentos de la línea de comandos: " -"ver :ref:`Argumentos de línea de comandos `." +"Si no es cero, :c:func:`Py_PreInitializeFromArgs` y :c:func:" +"`Py_PreInitializeFromBytesArgs` analizan su argumento ``argv`` de la misma " +"manera que Python analiza los argumentos de la línea de comandos: ver :ref:" +"`Argumentos de línea de comandos `." -#: ../Doc/c-api/init_config.rst:343 -msgid "Use :ref:`environment variables `? See :c:member:`PyConfig.use_environment`." -msgstr "" -"¿Utiliza :ref:`variables de entorno `? Consulte :c:member:`PyConfig." +#: ../Doc/c-api/init_config.rst:966 +msgid "" +"Use :ref:`environment variables `? See :c:member:`PyConfig." "use_environment`." +msgstr "" +"¿Utiliza :ref:`variables de entorno `? Consulte :c:member:" +"`PyConfig.use_environment`." -#: ../Doc/c-api/init_config.rst:346 ../Doc/c-api/init_config.rst:1272 +#: ../Doc/c-api/init_config.rst:969 ../Doc/c-api/init_config.rst:1933 msgid "Default: ``1`` in Python config and ``0`` in isolated config." -msgstr "Predeterminado: ``1`` en la configuración de Python y ``0`` en la configuración aislada." +msgstr "" +"Predeterminado: ``1`` en la configuración de Python y ``0`` en la " +"configuración aislada." -#: ../Doc/c-api/init_config.rst:350 +#: ../Doc/c-api/init_config.rst:973 msgid "If non-zero, enable the :ref:`Python UTF-8 Mode `." msgstr "Si es distinto de cero, habilite :ref:`Python UTF-8 Mode `." -#: ../Doc/c-api/init_config.rst:352 +#: ../Doc/c-api/init_config.rst:975 msgid "" -"Set to ``0`` or ``1`` by the :option:`-X utf8 <-X>` command line option and the :envvar:`PYTHONUTF8` " -"environment variable." +"Set to ``0`` or ``1`` by the :option:`-X utf8 <-X>` command line option and " +"the :envvar:`PYTHONUTF8` environment variable." msgstr "" -"Establecido a ``0`` o ``1`` por la opción de línea de comandos :option:`-X utf8 <-X>` y la variable " -"de entorno :envvar:`PYTHONUTF8`." +"Establecido a ``0`` o ``1`` por la opción de línea de comandos :option:`-X " +"utf8 <-X>` y la variable de entorno :envvar:`PYTHONUTF8`." -#: ../Doc/c-api/init_config.rst:355 +#: ../Doc/c-api/init_config.rst:978 msgid "Also set to ``1`` if the ``LC_CTYPE`` locale is ``C`` or ``POSIX``." -msgstr "También se pone a ``1`` si la configuración regional ``LC_CTYPE`` es ``C`` o ``POSIX``." +msgstr "" +"También se pone a ``1`` si la configuración regional ``LC_CTYPE`` es ``C`` o " +"``POSIX``." -#: ../Doc/c-api/init_config.rst:357 +#: ../Doc/c-api/init_config.rst:980 msgid "Default: ``-1`` in Python config and ``0`` in isolated config." -msgstr "Predeterminado: ``-1`` en la configuración de Python y ``0`` en la configuración aislada." +msgstr "" +"Predeterminado: ``-1`` en la configuración de Python y ``0`` en la " +"configuración aislada." -#: ../Doc/c-api/init_config.rst:363 +#: ../Doc/c-api/init_config.rst:986 msgid "Preinitialize Python with PyPreConfig" msgstr "Preinicialización de Python con PyPreConfig" -#: ../Doc/c-api/init_config.rst:365 +#: ../Doc/c-api/init_config.rst:988 msgid "The preinitialization of Python:" msgstr "La preinicialización de Python:" -#: ../Doc/c-api/init_config.rst:367 +#: ../Doc/c-api/init_config.rst:990 msgid "Set the Python memory allocators (:c:member:`PyPreConfig.allocator`)" -msgstr "Establecer los asignadores de memoria de Python (:c:member:`PyPreConfig.allocator`)" +msgstr "" +"Establecer los asignadores de memoria de Python (:c:member:`PyPreConfig." +"allocator`)" -#: ../Doc/c-api/init_config.rst:368 +#: ../Doc/c-api/init_config.rst:991 msgid "Configure the LC_CTYPE locale (:term:`locale encoding`)" -msgstr "Configurar la configuración regional LC_CTYPE (:term:`locale encoding`)" +msgstr "" +"Configurar la configuración regional LC_CTYPE (:term:`locale encoding`)" -#: ../Doc/c-api/init_config.rst:369 -msgid "Set the :ref:`Python UTF-8 Mode ` (:c:member:`PyPreConfig.utf8_mode`)" -msgstr "Establecer el :ref:`Python UTF-8 Mode ` (:c:member:`PyPreConfig.utf8_mode`)" +#: ../Doc/c-api/init_config.rst:992 +msgid "" +"Set the :ref:`Python UTF-8 Mode ` (:c:member:`PyPreConfig." +"utf8_mode`)" +msgstr "" +"Establecer el :ref:`Python UTF-8 Mode ` (:c:member:`PyPreConfig." +"utf8_mode`)" -#: ../Doc/c-api/init_config.rst:372 -msgid "The current preconfiguration (``PyPreConfig`` type) is stored in ``_PyRuntime.preconfig``." -msgstr "La preconfiguración actual (tipo ``PyPreConfig``) se almacena en ``_PyRuntime.preconfig``." +#: ../Doc/c-api/init_config.rst:995 +msgid "" +"The current preconfiguration (``PyPreConfig`` type) is stored in " +"``_PyRuntime.preconfig``." +msgstr "" +"La preconfiguración actual (tipo ``PyPreConfig``) se almacena en " +"``_PyRuntime.preconfig``." -#: ../Doc/c-api/init_config.rst:375 +#: ../Doc/c-api/init_config.rst:998 msgid "Functions to preinitialize Python:" msgstr "Funciones para preinicializar Python:" -#: ../Doc/c-api/init_config.rst:379 ../Doc/c-api/init_config.rst:385 ../Doc/c-api/init_config.rst:394 +#: ../Doc/c-api/init_config.rst:1002 ../Doc/c-api/init_config.rst:1008 +#: ../Doc/c-api/init_config.rst:1017 msgid "Preinitialize Python from *preconfig* preconfiguration." msgstr "Preinicializa Python desde la preconfiguración *preconfig*." -#: ../Doc/c-api/init_config.rst:381 ../Doc/c-api/init_config.rst:390 ../Doc/c-api/init_config.rst:399 +#: ../Doc/c-api/init_config.rst:1004 ../Doc/c-api/init_config.rst:1013 +#: ../Doc/c-api/init_config.rst:1022 msgid "*preconfig* must not be ``NULL``." msgstr "*preconfig* no debe ser ``NULL``." -#: ../Doc/c-api/init_config.rst:387 +#: ../Doc/c-api/init_config.rst:1010 msgid "" -"Parse *argv* command line arguments (bytes strings) if :c:member:`~PyPreConfig.parse_argv` of " -"*preconfig* is non-zero." +"Parse *argv* command line arguments (bytes strings) if :c:member:" +"`~PyPreConfig.parse_argv` of *preconfig* is non-zero." msgstr "" -"Analice los argumentos de la línea de comando *argv* (cadenas de bytes) si :c:member:`~PyPreConfig." -"parse_argv` de *preconfig* no es cero." +"Analice los argumentos de la línea de comando *argv* (cadenas de bytes) si :" +"c:member:`~PyPreConfig.parse_argv` de *preconfig* no es cero." -#: ../Doc/c-api/init_config.rst:396 +#: ../Doc/c-api/init_config.rst:1019 msgid "" -"Parse *argv* command line arguments (wide strings) if :c:member:`~PyPreConfig.parse_argv` of " -"*preconfig* is non-zero." +"Parse *argv* command line arguments (wide strings) if :c:member:" +"`~PyPreConfig.parse_argv` of *preconfig* is non-zero." msgstr "" -"Analice los argumentos de la línea de comando *argv* (cadenas anchas) si :c:member:`~PyPreConfig." -"parse_argv` de *preconfig* no es cero." +"Analice los argumentos de la línea de comando *argv* (cadenas anchas) si :c:" +"member:`~PyPreConfig.parse_argv` de *preconfig* no es cero." -#: ../Doc/c-api/init_config.rst:401 ../Doc/c-api/init_config.rst:1360 +#: ../Doc/c-api/init_config.rst:1024 ../Doc/c-api/init_config.rst:2041 msgid "" -"The caller is responsible to handle exceptions (error or exit) using :c:func:`PyStatus_Exception` " -"and :c:func:`Py_ExitStatusException`." +"The caller is responsible to handle exceptions (error or exit) using :c:func:" +"`PyStatus_Exception` and :c:func:`Py_ExitStatusException`." msgstr "" -"La persona que llama es responsable de manejar las excepciones (error o salida) usando :c:func:" -"`PyStatus_Exception` y :c:func:`Py_ExitStatusException`." +"La persona que llama es responsable de manejar las excepciones (error o " +"salida) usando :c:func:`PyStatus_Exception` y :c:func:" +"`Py_ExitStatusException`." -#: ../Doc/c-api/init_config.rst:404 +#: ../Doc/c-api/init_config.rst:1027 msgid "" -"For :ref:`Python Configuration ` (:c:func:`PyPreConfig_InitPythonConfig`), if " -"Python is initialized with command line arguments, the command line arguments must also be passed to " -"preinitialize Python, since they have an effect on the pre-configuration like encodings. For example, " -"the :option:`-X utf8 <-X>` command line option enables the :ref:`Python UTF-8 Mode `." -msgstr "" -"Para :ref:`Configuración de Python ` (:c:func:`PyPreConfig_InitPythonConfig`), si " -"Python se inicializa con argumentos de línea de comando, los argumentos de la línea de comando " -"también deben pasarse para preinicializar Python, ya que tienen un efecto en la preconfiguración como " -"codificaciones. Por ejemplo, la opción de línea de comando :option:`-X utf8 <-X>` habilita el :ref:" +"For :ref:`Python Configuration ` (:c:func:" +"`PyPreConfig_InitPythonConfig`), if Python is initialized with command line " +"arguments, the command line arguments must also be passed to preinitialize " +"Python, since they have an effect on the pre-configuration like encodings. " +"For example, the :option:`-X utf8 <-X>` command line option enables the :ref:" "`Python UTF-8 Mode `." - -#: ../Doc/c-api/init_config.rst:411 -msgid "" -"``PyMem_SetAllocator()`` can be called after :c:func:`Py_PreInitialize` and before :c:func:" -"`Py_InitializeFromConfig` to install a custom memory allocator. It can be called before :c:func:" -"`Py_PreInitialize` if :c:member:`PyPreConfig.allocator` is set to ``PYMEM_ALLOCATOR_NOT_SET``." msgstr "" -"``PyMem_SetAllocator()`` se puede llamar después de :c:func:`Py_PreInitialize` y antes :c:func:" -"`Py_InitializeFromConfig` para instalar un asignador de memoria personalizado. Se puede llamar antes :" -"c:func:`Py_PreInitialize` si :c:member:`PyPreConfig.allocator` está configurado en " +"Para :ref:`Configuración de Python ` (:c:func:" +"`PyPreConfig_InitPythonConfig`), si Python se inicializa con argumentos de " +"línea de comando, los argumentos de la línea de comando también deben " +"pasarse para preinicializar Python, ya que tienen un efecto en la " +"preconfiguración como codificaciones. Por ejemplo, la opción de línea de " +"comando :option:`-X utf8 <-X>` habilita el :ref:`Python UTF-8 Mode `." + +#: ../Doc/c-api/init_config.rst:1034 +msgid "" +"``PyMem_SetAllocator()`` can be called after :c:func:`Py_PreInitialize` and " +"before :c:func:`Py_InitializeFromConfig` to install a custom memory " +"allocator. It can be called before :c:func:`Py_PreInitialize` if :c:member:" +"`PyPreConfig.allocator` is set to ``PYMEM_ALLOCATOR_NOT_SET``." +msgstr "" +"``PyMem_SetAllocator()`` se puede llamar después de :c:func:" +"`Py_PreInitialize` y antes :c:func:`Py_InitializeFromConfig` para instalar " +"un asignador de memoria personalizado. Se puede llamar antes :c:func:" +"`Py_PreInitialize` si :c:member:`PyPreConfig.allocator` está configurado en " "``PYMEM_ALLOCATOR_NOT_SET``." -#: ../Doc/c-api/init_config.rst:416 +#: ../Doc/c-api/init_config.rst:1039 msgid "" -"Python memory allocation functions like :c:func:`PyMem_RawMalloc` must not be used before the Python " -"preinitialization, whereas calling directly ``malloc()`` and ``free()`` is always safe. :c:func:" -"`Py_DecodeLocale` must not be called before the Python preinitialization." +"Python memory allocation functions like :c:func:`PyMem_RawMalloc` must not " +"be used before the Python preinitialization, whereas calling directly " +"``malloc()`` and ``free()`` is always safe. :c:func:`Py_DecodeLocale` must " +"not be called before the Python preinitialization." msgstr "" -"Las funciones de asignación de memoria de Python como :c:func:`PyMem_RawMalloc` no deben usarse antes " -"de la preinicialización de Python, mientras que llamar directamente a ``malloc()`` y ``free()`` " -"siempre es seguro. No se debe llamar a :c:func:`Py_DecodeLocale` antes de la preinicialización de " -"Python." +"Las funciones de asignación de memoria de Python como :c:func:" +"`PyMem_RawMalloc` no deben usarse antes de la preinicialización de Python, " +"mientras que llamar directamente a ``malloc()`` y ``free()`` siempre es " +"seguro. No se debe llamar a :c:func:`Py_DecodeLocale` antes de la " +"preinicialización de Python." -#: ../Doc/c-api/init_config.rst:421 -msgid "Example using the preinitialization to enable the :ref:`Python UTF-8 Mode `::" -msgstr "Ejemplo usando la preinicialización para habilitar el :ref:`Python UTF-8 Mode ` ::" +#: ../Doc/c-api/init_config.rst:1044 +msgid "" +"Example using the preinitialization to enable the :ref:`Python UTF-8 Mode " +"`::" +msgstr "" +"Ejemplo usando la preinicialización para habilitar el :ref:`Python UTF-8 " +"Mode ` ::" -#: ../Doc/c-api/init_config.rst:424 +#: ../Doc/c-api/init_config.rst:1047 +#, python-brace-format msgid "" "PyStatus status;\n" "PyPreConfig preconfig;\n" @@ -698,1382 +1963,1675 @@ msgstr "" "/* ... use Python API here ... */\n" "Py_Finalize();" -#: ../Doc/c-api/init_config.rst:443 +#: ../Doc/c-api/init_config.rst:1066 msgid "PyConfig" msgstr "PyConfig" -#: ../Doc/c-api/init_config.rst:447 +#: ../Doc/c-api/init_config.rst:1070 msgid "Structure containing most parameters to configure Python." -msgstr "Estructura que contiene la mayoría de los parámetros para configurar Python." +msgstr "" +"Estructura que contiene la mayoría de los parámetros para configurar Python." -#: ../Doc/c-api/init_config.rst:449 +#: ../Doc/c-api/init_config.rst:1072 msgid "" -"When done, the :c:func:`PyConfig_Clear` function must be used to release the configuration memory." +"When done, the :c:func:`PyConfig_Clear` function must be used to release the " +"configuration memory." msgstr "" -"Cuando termine, se debe utilizar la función :c:func:`PyConfig_Clear` para liberar la memoria de " -"configuración." +"Cuando termine, se debe utilizar la función :c:func:`PyConfig_Clear` para " +"liberar la memoria de configuración." -#: ../Doc/c-api/init_config.rst:454 +#: ../Doc/c-api/init_config.rst:1077 msgid "Structure methods:" msgstr "Métodos de estructura:" -#: ../Doc/c-api/init_config.rst:458 -msgid "Initialize configuration with the :ref:`Python Configuration `." -msgstr "Inicialice la configuración con la :ref:`Configuración de Python `." +#: ../Doc/c-api/init_config.rst:1081 +msgid "" +"Initialize configuration with the :ref:`Python Configuration `." +msgstr "" +"Inicialice la configuración con la :ref:`Configuración de Python `." -#: ../Doc/c-api/init_config.rst:463 -msgid "Initialize configuration with the :ref:`Isolated Configuration `." -msgstr "Inicialice la configuración con la :ref:`Configuración Aislada `." +#: ../Doc/c-api/init_config.rst:1086 +msgid "" +"Initialize configuration with the :ref:`Isolated Configuration `." +msgstr "" +"Inicialice la configuración con la :ref:`Configuración Aislada `." -#: ../Doc/c-api/init_config.rst:468 +#: ../Doc/c-api/init_config.rst:1091 msgid "Copy the wide character string *str* into ``*config_str``." msgstr "Copia la cadena de caracteres anchos *str* en ``*config_str``." -#: ../Doc/c-api/init_config.rst:470 ../Doc/c-api/init_config.rst:477 ../Doc/c-api/init_config.rst:484 -#: ../Doc/c-api/init_config.rst:492 ../Doc/c-api/init_config.rst:498 ../Doc/c-api/init_config.rst:515 +#: ../Doc/c-api/init_config.rst:1093 ../Doc/c-api/init_config.rst:1100 +#: ../Doc/c-api/init_config.rst:1107 ../Doc/c-api/init_config.rst:1115 +#: ../Doc/c-api/init_config.rst:1121 ../Doc/c-api/init_config.rst:1138 msgid ":ref:`Preinitialize Python ` if needed." msgstr ":ref:`Preinicializa Python ` si es necesario." -#: ../Doc/c-api/init_config.rst:474 -msgid "Decode *str* using :c:func:`Py_DecodeLocale` and set the result into ``*config_str``." +#: ../Doc/c-api/init_config.rst:1097 +msgid "" +"Decode *str* using :c:func:`Py_DecodeLocale` and set the result into " +"``*config_str``." msgstr "" -"Decodifique *str* usando :c:func:`Py_DecodeLocale` y establezca el resultado en ``*config_str``." +"Decodifique *str* usando :c:func:`Py_DecodeLocale` y establezca el resultado " +"en ``*config_str``." -#: ../Doc/c-api/init_config.rst:481 +#: ../Doc/c-api/init_config.rst:1104 msgid "" -"Set command line arguments (:c:member:`~PyConfig.argv` member of *config*) from the *argv* list of " -"wide character strings." +"Set command line arguments (:c:member:`~PyConfig.argv` member of *config*) " +"from the *argv* list of wide character strings." msgstr "" -"Configure los argumentos de la línea de comando (miembro :c:member:`~PyConfig.argv` de *config*) de " -"la lista *argv* de cadenas de caracteres anchas." +"Configure los argumentos de la línea de comando (miembro :c:member:" +"`~PyConfig.argv` de *config*) de la lista *argv* de cadenas de caracteres " +"anchas." -#: ../Doc/c-api/init_config.rst:488 +#: ../Doc/c-api/init_config.rst:1111 msgid "" -"Set command line arguments (:c:member:`~PyConfig.argv` member of *config*) from the *argv* list of " -"bytes strings. Decode bytes using :c:func:`Py_DecodeLocale`." +"Set command line arguments (:c:member:`~PyConfig.argv` member of *config*) " +"from the *argv* list of bytes strings. Decode bytes using :c:func:" +"`Py_DecodeLocale`." msgstr "" -"Establezca argumentos de línea de comando (miembro :c:member:`~PyConfig.argv` de *config*) de la " -"lista *argv* de cadenas de bytes. Decodifica bytes usando :c:func:`Py_DecodeLocale`." +"Establezca argumentos de línea de comando (miembro :c:member:`~PyConfig." +"argv` de *config*) de la lista *argv* de cadenas de bytes. Decodifica bytes " +"usando :c:func:`Py_DecodeLocale`." -#: ../Doc/c-api/init_config.rst:496 +#: ../Doc/c-api/init_config.rst:1119 msgid "Set the list of wide strings *list* to *length* and *items*." -msgstr "Establece la lista de cadenas de caracteres anchas *list* a *length* y *items*." +msgstr "" +"Establece la lista de cadenas de caracteres anchas *list* a *length* y " +"*items*." -#: ../Doc/c-api/init_config.rst:502 +#: ../Doc/c-api/init_config.rst:1125 msgid "Read all Python configuration." msgstr "Lee toda la configuración de Python." -#: ../Doc/c-api/init_config.rst:504 +#: ../Doc/c-api/init_config.rst:1127 msgid "Fields which are already initialized are left unchanged." msgstr "Los campos que ya están inicializados no se modifican." -#: ../Doc/c-api/init_config.rst:506 +#: ../Doc/c-api/init_config.rst:1129 msgid "" -"Fields for :ref:`path configuration ` are no longer calculated or modified when " -"calling this function, as of Python 3.11." +"Fields for :ref:`path configuration ` are no longer " +"calculated or modified when calling this function, as of Python 3.11." msgstr "" -"Los campos para la :ref:`configuración de ruta ` ya no se calculan ni modifican al " -"llamar a esta función, a partir de Python 3.11." +"Los campos para la :ref:`configuración de ruta ` ya no se " +"calculan ni modifican al llamar a esta función, a partir de Python 3.11." -#: ../Doc/c-api/init_config.rst:509 ../Doc/c-api/init_config.rst:1041 +#: ../Doc/c-api/init_config.rst:1132 ../Doc/c-api/init_config.rst:1689 msgid "" -"The :c:func:`PyConfig_Read` function only parses :c:member:`PyConfig.argv` arguments once: :c:member:" -"`PyConfig.parse_argv` is set to ``2`` after arguments are parsed. Since Python arguments are stripped " -"from :c:member:`PyConfig.argv`, parsing arguments twice would parse the application options as Python " -"options." +"The :c:func:`PyConfig_Read` function only parses :c:member:`PyConfig.argv` " +"arguments once: :c:member:`PyConfig.parse_argv` is set to ``2`` after " +"arguments are parsed. Since Python arguments are stripped from :c:member:" +"`PyConfig.argv`, parsing arguments twice would parse the application options " +"as Python options." msgstr "" -"La función :c:func:`PyConfig_Read` solo analiza los argumentos :c:member:`PyConfig.argv` una vez: :c:" -"member:`PyConfig.parse_argv` se establece en ``2`` después de que se analizan los argumentos. Como " -"los argumentos de Python se eliminan de :c:member:`PyConfig.argv`, analizar los argumentos dos veces " -"analizaría las opciones de la aplicación como opciones de Python." +"La función :c:func:`PyConfig_Read` solo analiza los argumentos :c:member:" +"`PyConfig.argv` una vez: :c:member:`PyConfig.parse_argv` se establece en " +"``2`` después de que se analizan los argumentos. Como los argumentos de " +"Python se eliminan de :c:member:`PyConfig.argv`, analizar los argumentos dos " +"veces analizaría las opciones de la aplicación como opciones de Python." -#: ../Doc/c-api/init_config.rst:517 +#: ../Doc/c-api/init_config.rst:1140 msgid "" -"The :c:member:`PyConfig.argv` arguments are now only parsed once, :c:member:`PyConfig.parse_argv` is " -"set to ``2`` after arguments are parsed, and arguments are only parsed if :c:member:`PyConfig." -"parse_argv` equals ``1``." +"The :c:member:`PyConfig.argv` arguments are now only parsed once, :c:member:" +"`PyConfig.parse_argv` is set to ``2`` after arguments are parsed, and " +"arguments are only parsed if :c:member:`PyConfig.parse_argv` equals ``1``." msgstr "" -"Los argumentos :c:member:`PyConfig.argv` ahora solo se analizan una vez, :c:member:`PyConfig." -"parse_argv` se establece en ``2`` después de analizar los argumentos y los argumentos solo se " -"analizan si :c:member:`PyConfig.parse_argv` es igual a ``1``." +"Los argumentos :c:member:`PyConfig.argv` ahora solo se analizan una vez, :c:" +"member:`PyConfig.parse_argv` se establece en ``2`` después de analizar los " +"argumentos y los argumentos solo se analizan si :c:member:`PyConfig." +"parse_argv` es igual a ``1``." -#: ../Doc/c-api/init_config.rst:523 +#: ../Doc/c-api/init_config.rst:1146 msgid "" -":c:func:`PyConfig_Read` no longer calculates all paths, and so fields listed under :ref:`Python Path " -"Configuration ` may no longer be updated until :c:func:`Py_InitializeFromConfig` is " -"called." +":c:func:`PyConfig_Read` no longer calculates all paths, and so fields listed " +"under :ref:`Python Path Configuration ` may no longer be " +"updated until :c:func:`Py_InitializeFromConfig` is called." msgstr "" -":c:func:`PyConfig_Read` ya no calcula todas las rutas, por lo que los campos listados en :ref:`Python " -"Path Configuration ` ya no pueden ser actualizados hasta que se llame a :c:func:" -"`Py_InitializeFromConfig`." +":c:func:`PyConfig_Read` ya no calcula todas las rutas, por lo que los campos " +"listados en :ref:`Python Path Configuration ` ya no pueden " +"ser actualizados hasta que se llame a :c:func:`Py_InitializeFromConfig`." -#: ../Doc/c-api/init_config.rst:531 +#: ../Doc/c-api/init_config.rst:1154 msgid "Release configuration memory." msgstr "Libera memoria de configuración." -#: ../Doc/c-api/init_config.rst:533 +#: ../Doc/c-api/init_config.rst:1156 msgid "" -"Most ``PyConfig`` methods :ref:`preinitialize Python ` if needed. In that case, the Python " -"preinitialization configuration (:c:type:`PyPreConfig`) in based on the :c:type:`PyConfig`. If " -"configuration fields which are in common with :c:type:`PyPreConfig` are tuned, they must be set " +"Most ``PyConfig`` methods :ref:`preinitialize Python ` if needed. " +"In that case, the Python preinitialization configuration (:c:type:" +"`PyPreConfig`) in based on the :c:type:`PyConfig`. If configuration fields " +"which are in common with :c:type:`PyPreConfig` are tuned, they must be set " "before calling a :c:type:`PyConfig` method:" msgstr "" -"La mayoría de los método ``PyConfig`` :ref:`preinitializan Python ` si es necesario. En " -"ese caso, la configuración de preinicialización de Python (:c:type:`PyPreConfig`) se basa en :c:type:" -"`PyConfig`. Si se ajustan los campos de configuración que son comunes con :c:type:`PyPreConfig`, " -"deben establecerse antes de llamar a un método :c:type:`PyConfig`:" +"La mayoría de los método ``PyConfig`` :ref:`preinitializan Python ` si es necesario. En ese caso, la configuración de " +"preinicialización de Python (:c:type:`PyPreConfig`) se basa en :c:type:" +"`PyConfig`. Si se ajustan los campos de configuración que son comunes con :c:" +"type:`PyPreConfig`, deben establecerse antes de llamar a un método :c:type:" +"`PyConfig`:" -#: ../Doc/c-api/init_config.rst:539 +#: ../Doc/c-api/init_config.rst:1162 msgid ":c:member:`PyConfig.dev_mode`" msgstr ":c:member:`PyConfig.dev_mode`" -#: ../Doc/c-api/init_config.rst:540 +#: ../Doc/c-api/init_config.rst:1163 msgid ":c:member:`PyConfig.isolated`" msgstr ":c:member:`PyConfig.isolated`" -#: ../Doc/c-api/init_config.rst:541 +#: ../Doc/c-api/init_config.rst:1164 msgid ":c:member:`PyConfig.parse_argv`" msgstr ":c:member:`PyConfig.parse_argv`" -#: ../Doc/c-api/init_config.rst:542 +#: ../Doc/c-api/init_config.rst:1165 msgid ":c:member:`PyConfig.use_environment`" msgstr ":c:member:`PyConfig.use_environment`" -#: ../Doc/c-api/init_config.rst:544 +#: ../Doc/c-api/init_config.rst:1167 msgid "" -"Moreover, if :c:func:`PyConfig_SetArgv` or :c:func:`PyConfig_SetBytesArgv` is used, this method must " -"be called before other methods, since the preinitialization configuration depends on command line " -"arguments (if :c:member:`~PyConfig.parse_argv` is non-zero)." +"Moreover, if :c:func:`PyConfig_SetArgv` or :c:func:`PyConfig_SetBytesArgv` " +"is used, this method must be called before other methods, since the " +"preinitialization configuration depends on command line arguments (if :c:" +"member:`~PyConfig.parse_argv` is non-zero)." msgstr "" -"Además, si se usa :c:func:`PyConfig_SetArgv` o :c:func:`PyConfig_SetBytesArgv`, este método debe " -"llamarse antes que otros métodos, ya que la configuración de preinicialización depende de los " -"argumentos de la línea de comando (si :c:member:`~PyConfig.parse_argv` no es cero)." +"Además, si se usa :c:func:`PyConfig_SetArgv` o :c:func:" +"`PyConfig_SetBytesArgv`, este método debe llamarse antes que otros métodos, " +"ya que la configuración de preinicialización depende de los argumentos de la " +"línea de comando (si :c:member:`~PyConfig.parse_argv` no es cero)." -#: ../Doc/c-api/init_config.rst:549 +#: ../Doc/c-api/init_config.rst:1172 msgid "" -"The caller of these methods is responsible to handle exceptions (error or exit) using " -"``PyStatus_Exception()`` and ``Py_ExitStatusException()``." +"The caller of these methods is responsible to handle exceptions (error or " +"exit) using ``PyStatus_Exception()`` and ``Py_ExitStatusException()``." msgstr "" -"Quien llama de estos métodos es responsable de manejar las excepciones (error o salida) usando " -"``PyStatus_Exception()`` y ``Py_ExitStatusException()``." +"Quien llama de estos métodos es responsable de manejar las excepciones " +"(error o salida) usando ``PyStatus_Exception()`` y " +"``Py_ExitStatusException()``." -#: ../Doc/c-api/init_config.rst:562 +#: ../Doc/c-api/init_config.rst:1185 msgid "" -"Set :data:`sys.argv` command line arguments based on :c:member:`~PyConfig.argv`. These parameters " -"are similar to those passed to the program's :c:func:`main` function with the difference that the " -"first entry should refer to the script file to be executed rather than the executable hosting the " -"Python interpreter. If there isn't a script that will be run, the first entry in :c:member:" -"`~PyConfig.argv` can be an empty string." +"Set :data:`sys.argv` command line arguments based on :c:member:`~PyConfig." +"argv`. These parameters are similar to those passed to the program's :c:" +"func:`main` function with the difference that the first entry should refer " +"to the script file to be executed rather than the executable hosting the " +"Python interpreter. If there isn't a script that will be run, the first " +"entry in :c:member:`~PyConfig.argv` can be an empty string." msgstr "" -"Establece los argumentos de la línea de comandos :data:`sys.argv` basados en :c:member:`~PyConfig." -"argv`. Estos parámetros son similares a los pasados a la función :c:func:`main` del programa con la " -"diferencia de que la primera entrada debe referirse al archivo de script a ejecutar en lugar del " -"ejecutable que aloja al intérprete de Python. Si no hay un script que se vaya a ejecutar, la primera " -"entrada en :c:member:`~PyConfig.argv` puede ser una cadena vacía." +"Establece los argumentos de la línea de comandos :data:`sys.argv` basados " +"en :c:member:`~PyConfig.argv`. Estos parámetros son similares a los pasados " +"a la función :c:func:`main` del programa con la diferencia de que la primera " +"entrada debe referirse al archivo de script a ejecutar en lugar del " +"ejecutable que aloja al intérprete de Python. Si no hay un script que se " +"vaya a ejecutar, la primera entrada en :c:member:`~PyConfig.argv` puede ser " +"una cadena vacía." -#: ../Doc/c-api/init_config.rst:570 +#: ../Doc/c-api/init_config.rst:1193 msgid "" -"Set :c:member:`~PyConfig.parse_argv` to ``1`` to parse :c:member:`~PyConfig.argv` the same way the " -"regular Python parses Python command line arguments and then to strip Python arguments from :c:member:" -"`~PyConfig.argv`." +"Set :c:member:`~PyConfig.parse_argv` to ``1`` to parse :c:member:`~PyConfig." +"argv` the same way the regular Python parses Python command line arguments " +"and then to strip Python arguments from :c:member:`~PyConfig.argv`." msgstr "" -"Configure :c:member:`~PyConfig.parse_argv` en ``1`` para analizar :c:member:`~PyConfig.argv` de la " -"misma manera que Python normal analiza los argumentos de la línea de comandos de Python y luego quita " -"los argumentos de Python de :c:member:`~PyConfig.argv`." +"Configure :c:member:`~PyConfig.parse_argv` en ``1`` para analizar :c:member:" +"`~PyConfig.argv` de la misma manera que Python normal analiza los argumentos " +"de la línea de comandos de Python y luego quita los argumentos de Python de :" +"c:member:`~PyConfig.argv`." -#: ../Doc/c-api/init_config.rst:575 +#: ../Doc/c-api/init_config.rst:1198 msgid "" -"If :c:member:`~PyConfig.argv` is empty, an empty string is added to ensure that :data:`sys.argv` " -"always exists and is never empty." +"If :c:member:`~PyConfig.argv` is empty, an empty string is added to ensure " +"that :data:`sys.argv` always exists and is never empty." msgstr "" -"Si :c:member:`~PyConfig.argv` está vacío, se agrega una cadena vacía para garantizar que :data:`sys." -"argv` siempre exista y nunca esté vacío." +"Si :c:member:`~PyConfig.argv` está vacío, se agrega una cadena vacía para " +"garantizar que :data:`sys.argv` siempre exista y nunca esté vacío." -#: ../Doc/c-api/init_config.rst:578 ../Doc/c-api/init_config.rst:605 ../Doc/c-api/init_config.rst:619 -#: ../Doc/c-api/init_config.rst:629 ../Doc/c-api/init_config.rst:739 ../Doc/c-api/init_config.rst:750 -#: ../Doc/c-api/init_config.rst:832 ../Doc/c-api/init_config.rst:982 ../Doc/c-api/init_config.rst:1083 -#: ../Doc/c-api/init_config.rst:1102 ../Doc/c-api/init_config.rst:1117 ../Doc/c-api/init_config.rst:1134 -#: ../Doc/c-api/init_config.rst:1147 ../Doc/c-api/init_config.rst:1155 ../Doc/c-api/init_config.rst:1169 +#: ../Doc/c-api/init_config.rst:1201 ../Doc/c-api/init_config.rst:1228 +#: ../Doc/c-api/init_config.rst:1242 ../Doc/c-api/init_config.rst:1252 +#: ../Doc/c-api/init_config.rst:1363 ../Doc/c-api/init_config.rst:1372 +#: ../Doc/c-api/init_config.rst:1383 ../Doc/c-api/init_config.rst:1474 +#: ../Doc/c-api/init_config.rst:1630 ../Doc/c-api/init_config.rst:1731 +#: ../Doc/c-api/init_config.rst:1750 ../Doc/c-api/init_config.rst:1765 +#: ../Doc/c-api/init_config.rst:1782 ../Doc/c-api/init_config.rst:1795 +#: ../Doc/c-api/init_config.rst:1803 ../Doc/c-api/init_config.rst:1817 +#: ../Doc/c-api/init_config.rst:1920 msgid "Default: ``NULL``." msgstr "Valor predeterminado: ``NULL``." -#: ../Doc/c-api/init_config.rst:580 +#: ../Doc/c-api/init_config.rst:1203 msgid "See also the :c:member:`~PyConfig.orig_argv` member." msgstr "Consulte también el miembro :c:member:`~PyConfig.orig_argv`." -#: ../Doc/c-api/init_config.rst:584 +#: ../Doc/c-api/init_config.rst:1207 msgid "" -"If equals to zero, ``Py_RunMain()`` prepends a potentially unsafe path to :data:`sys.path` at startup:" +"If equals to zero, ``Py_RunMain()`` prepends a potentially unsafe path to :" +"data:`sys.path` at startup:" msgstr "" -"Si es igual a cero, ``Py_RunMain()`` agrega una ruta potencialmente insegura a :data:`sys.path` al " -"inicio:" +"Si es igual a cero, ``Py_RunMain()`` agrega una ruta potencialmente insegura " +"a :data:`sys.path` al inicio:" -#: ../Doc/c-api/init_config.rst:587 +#: ../Doc/c-api/init_config.rst:1210 msgid "" -"If :c:member:`argv[0] ` is equal to ``L\"-m\"`` (``python -m module``), prepend the " -"current working directory." +"If :c:member:`argv[0] ` is equal to ``L\"-m\"`` (``python -m " +"module``), prepend the current working directory." msgstr "" -"Si :c:member:`argv[0] ` es igual a ``L\"-m\"`` (``python -m module``), añade el " -"directorio de trabajo actual." +"Si :c:member:`argv[0] ` es igual a ``L\"-m\"`` (``python -m " +"module``), añade el directorio de trabajo actual." -#: ../Doc/c-api/init_config.rst:589 +#: ../Doc/c-api/init_config.rst:1212 msgid "" -"If running a script (``python script.py``), prepend the script's directory. If it's a symbolic link, " -"resolve symbolic links." +"If running a script (``python script.py``), prepend the script's directory. " +"If it's a symbolic link, resolve symbolic links." msgstr "" -"Si se ejecuta un script (``python script.py``), anteponer el directorio del script. Si es un enlace " -"simbólico, resuelve los enlaces simbólicos." +"Si se ejecuta un script (``python script.py``), anteponer el directorio del " +"script. Si es un enlace simbólico, resuelve los enlaces simbólicos." -#: ../Doc/c-api/init_config.rst:591 +#: ../Doc/c-api/init_config.rst:1214 msgid "" -"Otherwise (``python -c code`` and ``python``), prepend an empty string, which means the current " -"working directory." +"Otherwise (``python -c code`` and ``python``), prepend an empty string, " +"which means the current working directory." msgstr "" -"En caso contrario (``python -c code`` and ``python``), añade una cadena vacía, que significa el " -"directorio de trabajo actual." +"En caso contrario (``python -c code`` and ``python``), añade una cadena " +"vacía, que significa el directorio de trabajo actual." -#: ../Doc/c-api/init_config.rst:594 +#: ../Doc/c-api/init_config.rst:1217 msgid "" -"Set to ``1`` by the :option:`-P` command line option and the :envvar:`PYTHONSAFEPATH` environment " -"variable." +"Set to ``1`` by the :option:`-P` command line option and the :envvar:" +"`PYTHONSAFEPATH` environment variable." msgstr "" -"Establecido en ``1`` por la opción de la línea de comandos :option:`-P` y la variable de entorno :" -"envvar:`PYTHONSAFEPATH`." +"Establecido en ``1`` por la opción de la línea de comandos :option:`-P` y la " +"variable de entorno :envvar:`PYTHONSAFEPATH`." -#: ../Doc/c-api/init_config.rst:597 +#: ../Doc/c-api/init_config.rst:1220 msgid "Default: ``0`` in Python config, ``1`` in isolated config." -msgstr "Predeterminado: ``0`` en la configuración de Python, ``1`` en la configuración aislada." +msgstr "" +"Predeterminado: ``0`` en la configuración de Python, ``1`` en la " +"configuración aislada." -#: ../Doc/c-api/init_config.rst:603 +#: ../Doc/c-api/init_config.rst:1226 msgid ":data:`sys.base_exec_prefix`." msgstr ":data:`sys.base_exec_prefix`." -#: ../Doc/c-api/init_config.rst:607 ../Doc/c-api/init_config.rst:621 ../Doc/c-api/init_config.rst:631 -#: ../Doc/c-api/init_config.rst:741 ../Doc/c-api/init_config.rst:752 ../Doc/c-api/init_config.rst:999 -#: ../Doc/c-api/init_config.rst:1085 +#: ../Doc/c-api/init_config.rst:1230 ../Doc/c-api/init_config.rst:1244 +#: ../Doc/c-api/init_config.rst:1254 ../Doc/c-api/init_config.rst:1374 +#: ../Doc/c-api/init_config.rst:1385 ../Doc/c-api/init_config.rst:1647 +#: ../Doc/c-api/init_config.rst:1733 msgid "Part of the :ref:`Python Path Configuration ` output." -msgstr "Parte de la salida :ref:`Python Path Configuration `." +msgstr "" +"Parte de la salida :ref:`Python Path Configuration `." -#: ../Doc/c-api/init_config.rst:609 +#: ../Doc/c-api/init_config.rst:1232 msgid "See also :c:member:`PyConfig.exec_prefix`." msgstr "Consulte también :c:member:`PyConfig.exec_prefix`." -#: ../Doc/c-api/init_config.rst:613 +#: ../Doc/c-api/init_config.rst:1236 msgid "Python base executable: :data:`sys._base_executable`." msgstr "Ejecutable base de Python: :data:`sys._base_executable`." -#: ../Doc/c-api/init_config.rst:615 +#: ../Doc/c-api/init_config.rst:1238 msgid "Set by the :envvar:`__PYVENV_LAUNCHER__` environment variable." msgstr "Establecido por la variable de entorno :envvar:`__PYVENV_LAUNCHER__`." -#: ../Doc/c-api/init_config.rst:617 +#: ../Doc/c-api/init_config.rst:1240 msgid "Set from :c:member:`PyConfig.executable` if ``NULL``." msgstr "Establecido desde :c:member:`PyConfig.executable` si ``NULL``." -#: ../Doc/c-api/init_config.rst:623 +#: ../Doc/c-api/init_config.rst:1246 msgid "See also :c:member:`PyConfig.executable`." msgstr "Consulte también :c:member:`PyConfig.executable`." -#: ../Doc/c-api/init_config.rst:627 +#: ../Doc/c-api/init_config.rst:1250 msgid ":data:`sys.base_prefix`." msgstr ":data:`sys.base_prefix`." -#: ../Doc/c-api/init_config.rst:633 +#: ../Doc/c-api/init_config.rst:1256 msgid "See also :c:member:`PyConfig.prefix`." msgstr "Consulte también :c:member:`PyConfig.prefix`." -#: ../Doc/c-api/init_config.rst:637 +#: ../Doc/c-api/init_config.rst:1260 msgid "" -"If equals to ``0`` and :c:member:`~PyConfig.configure_c_stdio` is non-zero, disable buffering on the " -"C streams stdout and stderr." +"If equals to ``0`` and :c:member:`~PyConfig.configure_c_stdio` is non-zero, " +"disable buffering on the C streams stdout and stderr." msgstr "" -"Si es igual a ``0`` y :c:member:`~PyConfig.configure_c_stdio` no es cero, deshabilite el " -"almacenamiento en búfer en las secuencias C stdout y stderr." +"Si es igual a ``0`` y :c:member:`~PyConfig.configure_c_stdio` no es cero, " +"deshabilite el almacenamiento en búfer en las secuencias C stdout y stderr." -#: ../Doc/c-api/init_config.rst:640 +#: ../Doc/c-api/init_config.rst:1263 msgid "" -"Set to ``0`` by the :option:`-u` command line option and the :envvar:`PYTHONUNBUFFERED` environment " -"variable." +"Set to ``0`` by the :option:`-u` command line option and the :envvar:" +"`PYTHONUNBUFFERED` environment variable." msgstr "" -"Establecido en ``0`` por la opción de línea de comando :option:`-u` y la variable de entorno :envvar:" -"`PYTHONUNBUFFERED`." +"Establecido en ``0`` por la opción de línea de comando :option:`-u` y la " +"variable de entorno :envvar:`PYTHONUNBUFFERED`." -#: ../Doc/c-api/init_config.rst:643 +#: ../Doc/c-api/init_config.rst:1266 msgid "stdin is always opened in buffered mode." msgstr "stdin siempre se abre en modo de búfer." -#: ../Doc/c-api/init_config.rst:645 ../Doc/c-api/init_config.rst:678 ../Doc/c-api/init_config.rst:1197 -#: ../Doc/c-api/init_config.rst:1330 +#: ../Doc/c-api/init_config.rst:1268 ../Doc/c-api/init_config.rst:1301 +#: ../Doc/c-api/init_config.rst:1845 ../Doc/c-api/init_config.rst:2003 msgid "Default: ``1``." msgstr "Predeterminado: ``1``." -#: ../Doc/c-api/init_config.rst:649 +#: ../Doc/c-api/init_config.rst:1272 msgid "" -"If equals to ``1``, issue a warning when comparing :class:`bytes` or :class:`bytearray` with :class:" -"`str`, or comparing :class:`bytes` with :class:`int`." +"If equals to ``1``, issue a warning when comparing :class:`bytes` or :class:" +"`bytearray` with :class:`str`, or comparing :class:`bytes` with :class:`int`." msgstr "" -"Si es igual a ``1``, emite una advertencia al comparar :class:`bytes` o :class:`bytearray` con :class:" -"`str`, o al comparar :class:`bytes` con :class:`int`." +"Si es igual a ``1``, emite una advertencia al comparar :class:`bytes` o :" +"class:`bytearray` con :class:`str`, o al comparar :class:`bytes` con :class:" +"`int`." -#: ../Doc/c-api/init_config.rst:653 -msgid "If equal or greater to ``2``, raise a :exc:`BytesWarning` exception in these cases." -msgstr "Si es igual o mayor a ``2``, lanza una excepción :exc:`BytesWarning` en estos casos." +#: ../Doc/c-api/init_config.rst:1276 +msgid "" +"If equal or greater to ``2``, raise a :exc:`BytesWarning` exception in these " +"cases." +msgstr "" +"Si es igual o mayor a ``2``, lanza una excepción :exc:`BytesWarning` en " +"estos casos." -#: ../Doc/c-api/init_config.rst:656 +#: ../Doc/c-api/init_config.rst:1279 msgid "Incremented by the :option:`-b` command line option." msgstr "Incrementado por la opción de línea de comando :option:`-b`." -#: ../Doc/c-api/init_config.rst:662 +#: ../Doc/c-api/init_config.rst:1285 msgid "" -"If non-zero, emit a :exc:`EncodingWarning` warning when :class:`io.TextIOWrapper` uses its default " -"encoding. See :ref:`io-encoding-warning` for details." +"If non-zero, emit a :exc:`EncodingWarning` warning when :class:`io." +"TextIOWrapper` uses its default encoding. See :ref:`io-encoding-warning` for " +"details." msgstr "" -"Si no es cero, emite una advertencia :exc:`EncodingWarning` cuando :class:`io.TextIOWrapper` usa su " -"codificación predeterminada. Consulte :ref:`io-encoding-warning` para obtener más detalles." +"Si no es cero, emite una advertencia :exc:`EncodingWarning` cuando :class:" +"`io.TextIOWrapper` usa su codificación predeterminada. Consulte :ref:`io-" +"encoding-warning` para obtener más detalles." -#: ../Doc/c-api/init_config.rst:671 +#: ../Doc/c-api/init_config.rst:1294 msgid "" -"If equals to ``0``, disables the inclusion of the end line and column mappings in code objects. Also " -"disables traceback printing carets to specific error locations." +"If equals to ``0``, disables the inclusion of the end line and column " +"mappings in code objects. Also disables traceback printing carets to " +"specific error locations." msgstr "" -"Si es igual a ``0``, desactiva la inclusión de la línea final y las asignaciones de columna en los " -"objetos de código. También desactiva la impresión de indicadores de rastreo a ubicaciones de error " -"específicas." +"Si es igual a ``0``, desactiva la inclusión de la línea final y las " +"asignaciones de columna en los objetos de código. También desactiva la " +"impresión de indicadores de rastreo a ubicaciones de error específicas." -#: ../Doc/c-api/init_config.rst:675 +#: ../Doc/c-api/init_config.rst:1298 msgid "" -"Set to ``0`` by the :envvar:`PYTHONNODEBUGRANGES` environment variable and by the :option:`-X " -"no_debug_ranges <-X>` command line option." +"Set to ``0`` by the :envvar:`PYTHONNODEBUGRANGES` environment variable and " +"by the :option:`-X no_debug_ranges <-X>` command line option." msgstr "" -"Establecido en ``0`` por la variable de entorno :envvar:`PYTHONNODEBUGRANGES` y por la opción de " -"línea de comando :option:`-X no_debug_ranges <-X>`." +"Establecido en ``0`` por la variable de entorno :envvar:" +"`PYTHONNODEBUGRANGES` y por la opción de línea de comando :option:`-X " +"no_debug_ranges <-X>`." -#: ../Doc/c-api/init_config.rst:684 +#: ../Doc/c-api/init_config.rst:1307 msgid "" -"Control the validation behavior of hash-based ``.pyc`` files: value of the :option:`--check-hash-" -"based-pycs` command line option." +"Control the validation behavior of hash-based ``.pyc`` files: value of the :" +"option:`--check-hash-based-pycs` command line option." msgstr "" -"Controla el comportamiento de validación de archivos ``.pyc`` basados en hash: valor de la opción de " -"línea de comando :option:`--check-hash-based-pycs`." +"Controla el comportamiento de validación de archivos ``.pyc`` basados en " +"hash: valor de la opción de línea de comando :option:`--check-hash-based-" +"pycs`." -#: ../Doc/c-api/init_config.rst:687 +#: ../Doc/c-api/init_config.rst:1310 msgid "Valid values:" msgstr "Valores válidos:" -#: ../Doc/c-api/init_config.rst:689 +#: ../Doc/c-api/init_config.rst:1312 msgid "" -"``L\"always\"``: Hash the source file for invalidation regardless of value of the 'check_source' flag." +"``L\"always\"``: Hash the source file for invalidation regardless of value " +"of the 'check_source' flag." msgstr "" -"``L\"always\"``: Calcula el hash el archivo fuente para invalidación independientemente del valor de " -"la marca 'check_source'." +"``L\"always\"``: Calcula el hash el archivo fuente para invalidación " +"independientemente del valor de la marca 'check_source'." -#: ../Doc/c-api/init_config.rst:691 +#: ../Doc/c-api/init_config.rst:1314 msgid "``L\"never\"``: Assume that hash-based pycs always are valid." -msgstr "``L\"never\"``: suponga que los pycs basados en hash siempre son válidos." +msgstr "" +"``L\"never\"``: suponga que los pycs basados en hash siempre son válidos." -#: ../Doc/c-api/init_config.rst:692 -msgid "``L\"default\"``: The 'check_source' flag in hash-based pycs determines invalidation." +#: ../Doc/c-api/init_config.rst:1315 +msgid "" +"``L\"default\"``: The 'check_source' flag in hash-based pycs determines " +"invalidation." msgstr "" -"``L\"default\"``: El indicador 'check_source' en pycs basados en hash determina la invalidación." +"``L\"default\"``: El indicador 'check_source' en pycs basados en hash " +"determina la invalidación." -#: ../Doc/c-api/init_config.rst:695 +#: ../Doc/c-api/init_config.rst:1318 msgid "Default: ``L\"default\"``." msgstr "Predeterminado: ``L\"default\"``." -#: ../Doc/c-api/init_config.rst:697 +#: ../Doc/c-api/init_config.rst:1320 msgid "See also :pep:`552` \"Deterministic pycs\"." msgstr "Consulte también :pep:`552` \"Pycs deterministas\"." -#: ../Doc/c-api/init_config.rst:701 +#: ../Doc/c-api/init_config.rst:1324 msgid "If non-zero, configure C standard streams:" msgstr "Si es distinto de cero, configure los flujos estándar de C:" -#: ../Doc/c-api/init_config.rst:703 -msgid "On Windows, set the binary mode (``O_BINARY``) on stdin, stdout and stderr." -msgstr "En Windows, configure el modo binario (``O_BINARY``) en stdin, stdout y stderr." +#: ../Doc/c-api/init_config.rst:1326 +msgid "" +"On Windows, set the binary mode (``O_BINARY``) on stdin, stdout and stderr." +msgstr "" +"En Windows, configure el modo binario (``O_BINARY``) en stdin, stdout y " +"stderr." -#: ../Doc/c-api/init_config.rst:705 +#: ../Doc/c-api/init_config.rst:1328 msgid "" -"If :c:member:`~PyConfig.buffered_stdio` equals zero, disable buffering of stdin, stdout and stderr " -"streams." +"If :c:member:`~PyConfig.buffered_stdio` equals zero, disable buffering of " +"stdin, stdout and stderr streams." msgstr "" -"Si :c:member:`~PyConfig.buffered_stdio` es igual a cero, deshabilite el almacenamiento en búfer de " -"los flujos stdin, stdout y stderr." +"Si :c:member:`~PyConfig.buffered_stdio` es igual a cero, deshabilite el " +"almacenamiento en búfer de los flujos stdin, stdout y stderr." -#: ../Doc/c-api/init_config.rst:707 +#: ../Doc/c-api/init_config.rst:1330 msgid "" -"If :c:member:`~PyConfig.interactive` is non-zero, enable stream buffering on stdin and stdout (only " -"stdout on Windows)." +"If :c:member:`~PyConfig.interactive` is non-zero, enable stream buffering on " +"stdin and stdout (only stdout on Windows)." msgstr "" -"Si :c:member:`~PyConfig.interactive` no es cero, habilite el almacenamiento en búfer de flujo en " -"stdin y stdout (solo stdout en Windows)." +"Si :c:member:`~PyConfig.interactive` no es cero, habilite el almacenamiento " +"en búfer de flujo en stdin y stdout (solo stdout en Windows)." -#: ../Doc/c-api/init_config.rst:714 +#: ../Doc/c-api/init_config.rst:1337 msgid "If non-zero, enable the :ref:`Python Development Mode `." -msgstr "Si es distinto de cero, habilita :ref:`Modo de desarrollo de Python `." +msgstr "" +"Si es distinto de cero, habilita :ref:`Modo de desarrollo de Python " +"`." -#: ../Doc/c-api/init_config.rst:716 +#: ../Doc/c-api/init_config.rst:1339 msgid "" -"Set to ``1`` by the :option:`-X dev <-X>` option and the :envvar:`PYTHONDEVMODE` environment variable." +"Set to ``1`` by the :option:`-X dev <-X>` option and the :envvar:" +"`PYTHONDEVMODE` environment variable." msgstr "" -"Establecido en ``1`` por la opción :option:`-X dev <-X>` y la variable de entorno :envvar:" -"`PYTHONDEVMODE`." +"Establecido en ``1`` por la opción :option:`-X dev <-X>` y la variable de " +"entorno :envvar:`PYTHONDEVMODE`." -#: ../Doc/c-api/init_config.rst:723 +#: ../Doc/c-api/init_config.rst:1346 msgid "Dump Python references?" msgstr "¿Volcar referencias de Python?" -#: ../Doc/c-api/init_config.rst:725 +#: ../Doc/c-api/init_config.rst:1348 msgid "If non-zero, dump all objects which are still alive at exit." -msgstr "Si no es cero, volcar todos los objetos que aún están vivos en la salida." +msgstr "" +"Si no es cero, volcar todos los objetos que aún están vivos en la salida." -#: ../Doc/c-api/init_config.rst:727 +#: ../Doc/c-api/init_config.rst:1350 msgid "Set to ``1`` by the :envvar:`PYTHONDUMPREFS` environment variable." -msgstr "Establecido en ``1`` por la variable de entorno :envvar:`PYTHONDUMPREFS`." +msgstr "" +"Establecido en ``1`` por la variable de entorno :envvar:`PYTHONDUMPREFS`." -#: ../Doc/c-api/init_config.rst:729 +#: ../Doc/c-api/init_config.rst:1352 msgid "" -"Needs a special build of Python with the ``Py_TRACE_REFS`` macro defined: see the :option:`configure " -"--with-trace-refs option <--with-trace-refs>`." +"Needs a special build of Python with the ``Py_TRACE_REFS`` macro defined: " +"see the :option:`configure --with-trace-refs option <--with-trace-refs>`." +msgstr "" +"Necesita una compilación especial de Python con la macro ``Py_TRACE_REFS`` " +"definida: consulte la opción :option:`configure --with-trace-refs <--with-" +"trace-refs>`." + +#: ../Doc/c-api/init_config.rst:1359 +#, fuzzy +msgid "Filename where to dump Python references." +msgstr "¿Volcar referencias de Python?" + +#: ../Doc/c-api/init_config.rst:1361 +#, fuzzy +msgid "Set by the :envvar:`PYTHONDUMPREFSFILE` environment variable." msgstr "" -"Necesita una compilación especial de Python con la macro ``Py_TRACE_REFS`` definida: consulte la " -"opción :option:`configure --with-trace-refs <--with-trace-refs>`." +"Establecido en ``1`` por la variable de entorno :envvar:`PYTHONDUMPREFS`." -#: ../Doc/c-api/init_config.rst:736 +#: ../Doc/c-api/init_config.rst:1369 msgid "" -"The site-specific directory prefix where the platform-dependent Python files are installed: :data:" -"`sys.exec_prefix`." +"The site-specific directory prefix where the platform-dependent Python files " +"are installed: :data:`sys.exec_prefix`." msgstr "" -"El prefijo de directorio específico del sitio donde se instalan los archivos Python dependientes de " -"la plataforma: :data:`sys.exec_prefix`." +"El prefijo de directorio específico del sitio donde se instalan los archivos " +"Python dependientes de la plataforma: :data:`sys.exec_prefix`." -#: ../Doc/c-api/init_config.rst:743 +#: ../Doc/c-api/init_config.rst:1376 msgid "See also :c:member:`PyConfig.base_exec_prefix`." msgstr "Consulte también :c:member:`PyConfig.base_exec_prefix`." -#: ../Doc/c-api/init_config.rst:747 -msgid "The absolute path of the executable binary for the Python interpreter: :data:`sys.executable`." -msgstr "La ruta absoluta del binario ejecutable para el intérprete de Python: :data:`sys.executable`." +#: ../Doc/c-api/init_config.rst:1380 +msgid "" +"The absolute path of the executable binary for the Python interpreter: :data:" +"`sys.executable`." +msgstr "" +"La ruta absoluta del binario ejecutable para el intérprete de Python: :data:" +"`sys.executable`." -#: ../Doc/c-api/init_config.rst:754 +#: ../Doc/c-api/init_config.rst:1387 msgid "See also :c:member:`PyConfig.base_executable`." msgstr "Consulte también :c:member:`PyConfig.base_executable`." -#: ../Doc/c-api/init_config.rst:758 +#: ../Doc/c-api/init_config.rst:1391 msgid "Enable faulthandler?" msgstr "¿Habilitar administrador de fallas?" -#: ../Doc/c-api/init_config.rst:760 +#: ../Doc/c-api/init_config.rst:1393 msgid "If non-zero, call :func:`faulthandler.enable` at startup." msgstr "Si no es cero, llama a :func:`faulthandler.enable` al inicio." -#: ../Doc/c-api/init_config.rst:762 +#: ../Doc/c-api/init_config.rst:1395 msgid "" -"Set to ``1`` by :option:`-X faulthandler <-X>` and the :envvar:`PYTHONFAULTHANDLER` environment " -"variable." +"Set to ``1`` by :option:`-X faulthandler <-X>` and the :envvar:" +"`PYTHONFAULTHANDLER` environment variable." msgstr "" -"Establecido en ``1`` por :option:`-X faulthandler <-X>` y la variable de entorno :envvar:" -"`PYTHONFAULTHANDLER`." +"Establecido en ``1`` por :option:`-X faulthandler <-X>` y la variable de " +"entorno :envvar:`PYTHONFAULTHANDLER`." -#: ../Doc/c-api/init_config.rst:769 +#: ../Doc/c-api/init_config.rst:1402 msgid "" -":term:`Filesystem encoding `: :func:`sys." -"getfilesystemencoding`." +":term:`Filesystem encoding `: :func:" +"`sys.getfilesystemencoding`." msgstr "" -":term:`Codificación del sistema de archvios `: :func:`sys." -"getfilesystemencoding`." +":term:`Codificación del sistema de archvios `: :func:`sys.getfilesystemencoding`." -#: ../Doc/c-api/init_config.rst:772 +#: ../Doc/c-api/init_config.rst:1405 msgid "On macOS, Android and VxWorks: use ``\"utf-8\"`` by default." -msgstr "En macOS, Android y VxWorks: use ``\"utf-8\"`` de forma predeterminada." +msgstr "" +"En macOS, Android y VxWorks: use ``\"utf-8\"`` de forma predeterminada." -#: ../Doc/c-api/init_config.rst:774 +#: ../Doc/c-api/init_config.rst:1407 msgid "" -"On Windows: use ``\"utf-8\"`` by default, or ``\"mbcs\"`` if :c:member:`~PyPreConfig." -"legacy_windows_fs_encoding` of :c:type:`PyPreConfig` is non-zero." +"On Windows: use ``\"utf-8\"`` by default, or ``\"mbcs\"`` if :c:member:" +"`~PyPreConfig.legacy_windows_fs_encoding` of :c:type:`PyPreConfig` is non-" +"zero." msgstr "" -"En Windows: utilice ``\"utf-8\"`` de forma predeterminada o ``\"mbcs\"`` si :c:member:`~PyPreConfig." -"legacy_windows_fs_encoding` de :c:type:`PyPreConfig` no es cero." +"En Windows: utilice ``\"utf-8\"`` de forma predeterminada o ``\"mbcs\"`` si :" +"c:member:`~PyPreConfig.legacy_windows_fs_encoding` de :c:type:`PyPreConfig` " +"no es cero." -#: ../Doc/c-api/init_config.rst:778 +#: ../Doc/c-api/init_config.rst:1411 msgid "Default encoding on other platforms:" msgstr "Codificación predeterminada en otras plataformas:" -#: ../Doc/c-api/init_config.rst:780 +#: ../Doc/c-api/init_config.rst:1413 msgid "``\"utf-8\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero." -msgstr "``\"utf-8\"`` si :c:member:`PyPreConfig.utf8_mode` es distinto de cero." +msgstr "" +"``\"utf-8\"`` si :c:member:`PyPreConfig.utf8_mode` es distinto de cero." -#: ../Doc/c-api/init_config.rst:781 +#: ../Doc/c-api/init_config.rst:1414 msgid "" -"``\"ascii\"`` if Python detects that ``nl_langinfo(CODESET)`` announces the ASCII encoding, whereas " -"the ``mbstowcs()`` function decodes from a different encoding (usually Latin1)." +"``\"ascii\"`` if Python detects that ``nl_langinfo(CODESET)`` announces the " +"ASCII encoding, whereas the ``mbstowcs()`` function decodes from a different " +"encoding (usually Latin1)." msgstr "" -"``\"ascii\"`` si Python detecta que ``nl_langinfo(CODESET)`` anuncia la codificación ASCII, mientras " -"que la función ``mbstowcs()`` decodifica desde una codificación diferente (usualmente Latin1)." +"``\"ascii\"`` si Python detecta que ``nl_langinfo(CODESET)`` anuncia la " +"codificación ASCII, mientras que la función ``mbstowcs()`` decodifica desde " +"una codificación diferente (usualmente Latin1)." -#: ../Doc/c-api/init_config.rst:784 +#: ../Doc/c-api/init_config.rst:1417 msgid "``\"utf-8\"`` if ``nl_langinfo(CODESET)`` returns an empty string." msgstr "``\"utf-8\"`` si ``nl_langinfo(CODESET)`` retorna una cadena vacía." -#: ../Doc/c-api/init_config.rst:785 -msgid "Otherwise, use the :term:`locale encoding`: ``nl_langinfo(CODESET)`` result." -msgstr "De lo contrario, utilice el resultado :term:`locale encoding`: ``nl_langinfo(CODESET)``." +#: ../Doc/c-api/init_config.rst:1418 +msgid "" +"Otherwise, use the :term:`locale encoding`: ``nl_langinfo(CODESET)`` result." +msgstr "" +"De lo contrario, utilice el resultado :term:`locale encoding`: " +"``nl_langinfo(CODESET)``." -#: ../Doc/c-api/init_config.rst:788 +#: ../Doc/c-api/init_config.rst:1421 msgid "" -"At Python startup, the encoding name is normalized to the Python codec name. For example, " -"``\"ANSI_X3.4-1968\"`` is replaced with ``\"ascii\"``." +"At Python startup, the encoding name is normalized to the Python codec name. " +"For example, ``\"ANSI_X3.4-1968\"`` is replaced with ``\"ascii\"``." msgstr "" -"Al inicio de Python, el nombre de codificación se normaliza al nombre del códec de Python. Por " -"ejemplo, ``\"ANSI_X3.4-1968\"`` se reemplaza por ``\"ascii\"``." +"Al inicio de Python, el nombre de codificación se normaliza al nombre del " +"códec de Python. Por ejemplo, ``\"ANSI_X3.4-1968\"`` se reemplaza por " +"``\"ascii\"``." -#: ../Doc/c-api/init_config.rst:791 +#: ../Doc/c-api/init_config.rst:1424 msgid "See also the :c:member:`~PyConfig.filesystem_errors` member." msgstr "Consulte también el miembro :c:member:`~PyConfig.filesystem_errors`." -#: ../Doc/c-api/init_config.rst:795 +#: ../Doc/c-api/init_config.rst:1428 msgid "" -":term:`Filesystem error handler `: :func:`sys." -"getfilesystemencodeerrors`." +":term:`Filesystem error handler `: :" +"func:`sys.getfilesystemencodeerrors`." msgstr "" -":term:`Manejador de errores del sistema de archivos `: :func:" -"`sys.getfilesystemencodeerrors`." +":term:`Manejador de errores del sistema de archivos `: :func:`sys.getfilesystemencodeerrors`." -#: ../Doc/c-api/init_config.rst:798 +#: ../Doc/c-api/init_config.rst:1431 msgid "" -"On Windows: use ``\"surrogatepass\"`` by default, or ``\"replace\"`` if :c:member:`~PyPreConfig." -"legacy_windows_fs_encoding` of :c:type:`PyPreConfig` is non-zero." +"On Windows: use ``\"surrogatepass\"`` by default, or ``\"replace\"`` if :c:" +"member:`~PyPreConfig.legacy_windows_fs_encoding` of :c:type:`PyPreConfig` is " +"non-zero." msgstr "" -"En Windows: utilice ``\"surrogatepass\"`` de forma predeterminada o ``\"replace\"`` si :c:member:" -"`~PyPreConfig.legacy_windows_fs_encoding` de :c:type:`PyPreConfig` no es cero." +"En Windows: utilice ``\"surrogatepass\"`` de forma predeterminada o " +"``\"replace\"`` si :c:member:`~PyPreConfig.legacy_windows_fs_encoding` de :c:" +"type:`PyPreConfig` no es cero." -#: ../Doc/c-api/init_config.rst:802 +#: ../Doc/c-api/init_config.rst:1435 msgid "On other platforms: use ``\"surrogateescape\"`` by default." -msgstr "En otras plataformas: utilice ``\"surrogateescape\"`` de forma predeterminada." +msgstr "" +"En otras plataformas: utilice ``\"surrogateescape\"`` de forma " +"predeterminada." -#: ../Doc/c-api/init_config.rst:804 +#: ../Doc/c-api/init_config.rst:1437 msgid "Supported error handlers:" msgstr "Controladores de errores admitidos:" -#: ../Doc/c-api/init_config.rst:806 +#: ../Doc/c-api/init_config.rst:1439 msgid "``\"strict\"``" msgstr "``\"strict\"``" -#: ../Doc/c-api/init_config.rst:807 +#: ../Doc/c-api/init_config.rst:1440 msgid "``\"surrogateescape\"``" msgstr "``\"surrogateescape\"``" -#: ../Doc/c-api/init_config.rst:808 +#: ../Doc/c-api/init_config.rst:1441 msgid "``\"surrogatepass\"`` (only supported with the UTF-8 encoding)" msgstr "``\"surrogatepass\"`` (solo compatible con la codificación UTF-8)" -#: ../Doc/c-api/init_config.rst:810 +#: ../Doc/c-api/init_config.rst:1443 msgid "See also the :c:member:`~PyConfig.filesystem_encoding` member." msgstr "Consulte también el miembro :c:member:`~PyConfig.filesystem_encoding`." -#: ../Doc/c-api/init_config.rst:815 +#: ../Doc/c-api/init_config.rst:1447 +msgid "If non-zero, use frozen modules." +msgstr "" + +#: ../Doc/c-api/init_config.rst:1449 +#, fuzzy +msgid "Set by the :envvar:`PYTHON_FROZEN_MODULES` environment variable." +msgstr "Establecido por la variable de entorno :envvar:`PYTHONHOME`." + +#: ../Doc/c-api/init_config.rst:1451 +msgid "" +"Default: ``1`` in a release build, or ``0`` in a :ref:`debug build `." +msgstr "" + +#: ../Doc/c-api/init_config.rst:1457 msgid "Randomized hash function seed." msgstr "Funciones de semillas aleatorias hash." -#: ../Doc/c-api/init_config.rst:817 +#: ../Doc/c-api/init_config.rst:1459 msgid "" -"If :c:member:`~PyConfig.use_hash_seed` is zero, a seed is chosen randomly at Python startup, and :c:" -"member:`~PyConfig.hash_seed` is ignored." +"If :c:member:`~PyConfig.use_hash_seed` is zero, a seed is chosen randomly at " +"Python startup, and :c:member:`~PyConfig.hash_seed` is ignored." msgstr "" -"Si :c:member:`~PyConfig.use_hash_seed` es cero, se elige una semilla al azar en el inicio de Python y " -"se ignora :c:member:`~PyConfig.hash_seed`." +"Si :c:member:`~PyConfig.use_hash_seed` es cero, se elige una semilla al azar " +"en el inicio de Python y se ignora :c:member:`~PyConfig.hash_seed`." -#: ../Doc/c-api/init_config.rst:820 +#: ../Doc/c-api/init_config.rst:1462 msgid "Set by the :envvar:`PYTHONHASHSEED` environment variable." msgstr "Establecido por la variable de entorno :envvar:`PYTHONHASHSEED`." -#: ../Doc/c-api/init_config.rst:822 -msgid "Default *use_hash_seed* value: ``-1`` in Python mode, ``0`` in isolated mode." -msgstr "Valor predeterminado de *use_hash_seed*: ``-1`` en modo Python, ``0`` en modo aislado." +#: ../Doc/c-api/init_config.rst:1464 +msgid "" +"Default *use_hash_seed* value: ``-1`` in Python mode, ``0`` in isolated mode." +msgstr "" +"Valor predeterminado de *use_hash_seed*: ``-1`` en modo Python, ``0`` en " +"modo aislado." -#: ../Doc/c-api/init_config.rst:827 +#: ../Doc/c-api/init_config.rst:1469 msgid "" -"Set the default Python \"home\" directory, that is, the location of the standard Python libraries " -"(see :envvar:`PYTHONHOME`)." +"Set the default Python \"home\" directory, that is, the location of the " +"standard Python libraries (see :envvar:`PYTHONHOME`)." msgstr "" -"Establece el directorio \"home\" de Python por defecto, es decir, la ubicación de las bibliotecas " -"estándar de Python (ver :envvar:`PYTHONHOME`)." +"Establece el directorio \"home\" de Python por defecto, es decir, la " +"ubicación de las bibliotecas estándar de Python (ver :envvar:`PYTHONHOME`)." -#: ../Doc/c-api/init_config.rst:830 +#: ../Doc/c-api/init_config.rst:1472 msgid "Set by the :envvar:`PYTHONHOME` environment variable." msgstr "Establecido por la variable de entorno :envvar:`PYTHONHOME`." -#: ../Doc/c-api/init_config.rst:834 ../Doc/c-api/init_config.rst:964 ../Doc/c-api/init_config.rst:984 -#: ../Doc/c-api/init_config.rst:1073 ../Doc/c-api/init_config.rst:1104 +#: ../Doc/c-api/init_config.rst:1476 ../Doc/c-api/init_config.rst:1612 +#: ../Doc/c-api/init_config.rst:1632 ../Doc/c-api/init_config.rst:1721 +#: ../Doc/c-api/init_config.rst:1752 msgid "Part of the :ref:`Python Path Configuration ` input." -msgstr "Parte de la entrada :ref:`Python Path Configuration `." +msgstr "" +"Parte de la entrada :ref:`Python Path Configuration `." -#: ../Doc/c-api/init_config.rst:838 -msgid "If non-zero, profile import time." -msgstr "Si no es cero, el tiempo de importación del perfil." +#: ../Doc/c-api/init_config.rst:1480 +msgid "" +"If ``1``, profile import time. If ``2``, include additional output that " +"indicates when an imported module has already been loaded." +msgstr "" -#: ../Doc/c-api/init_config.rst:840 +#: ../Doc/c-api/init_config.rst:1484 +#, fuzzy msgid "" -"Set the ``1`` by the :option:`-X importtime <-X>` option and the :envvar:`PYTHONPROFILEIMPORTTIME` " -"environment variable." +"Set by the :option:`-X importtime <-X>` option and the :envvar:" +"`PYTHONPROFILEIMPORTTIME` environment variable." +msgstr "" +"Configure el ``1`` mediante la opción :option:`-X importtime <-X>` y la " +"variable de entorno :envvar:`PYTHONPROFILEIMPORTTIME`." + +#: ../Doc/c-api/init_config.rst:1491 +msgid "Added support for ``import_time = 2``" msgstr "" -"Configure el ``1`` mediante la opción :option:`-X importtime <-X>` y la variable de entorno :envvar:" -"`PYTHONPROFILEIMPORTTIME`." -#: ../Doc/c-api/init_config.rst:847 +#: ../Doc/c-api/init_config.rst:1495 msgid "Enter interactive mode after executing a script or a command." -msgstr "Ingresa al modo interactivo después de ejecutar un script o un comando." +msgstr "" +"Ingresa al modo interactivo después de ejecutar un script o un comando." -#: ../Doc/c-api/init_config.rst:849 +#: ../Doc/c-api/init_config.rst:1497 msgid "" -"If greater than ``0``, enable inspect: when a script is passed as first argument or the -c option is " -"used, enter interactive mode after executing the script or the command, even when :data:`sys.stdin` " -"does not appear to be a terminal." +"If greater than ``0``, enable inspect: when a script is passed as first " +"argument or the -c option is used, enter interactive mode after executing " +"the script or the command, even when :data:`sys.stdin` does not appear to be " +"a terminal." msgstr "" -"Si es mayor que ``0``, habilite la inspección: cuando se pasa un script como primer argumento o se " -"usa la opción -c, ingrese al modo interactivo después de ejecutar el script o el comando, incluso " -"cuando :data:`sys.stdin` no parezca ser una terminal." +"Si es mayor que ``0``, habilite la inspección: cuando se pasa un script como " +"primer argumento o se usa la opción -c, ingrese al modo interactivo después " +"de ejecutar el script o el comando, incluso cuando :data:`sys.stdin` no " +"parezca ser una terminal." -#: ../Doc/c-api/init_config.rst:854 +#: ../Doc/c-api/init_config.rst:1502 msgid "" -"Incremented by the :option:`-i` command line option. Set to ``1`` if the :envvar:`PYTHONINSPECT` " -"environment variable is non-empty." +"Incremented by the :option:`-i` command line option. Set to ``1`` if the :" +"envvar:`PYTHONINSPECT` environment variable is non-empty." msgstr "" -"Incrementado por la opción de línea de comando :option:`-i`. Establecido en ``1`` si la variable de " -"entorno :envvar:`PYTHONINSPECT` no está vacía." +"Incrementado por la opción de línea de comando :option:`-i`. Establecido en " +"``1`` si la variable de entorno :envvar:`PYTHONINSPECT` no está vacía." -#: ../Doc/c-api/init_config.rst:861 +#: ../Doc/c-api/init_config.rst:1509 msgid "Install Python signal handlers?" msgstr "¿Instalar controladores de señales de Python?" -#: ../Doc/c-api/init_config.rst:863 ../Doc/c-api/init_config.rst:1047 ../Doc/c-api/init_config.rst:1071 -#: ../Doc/c-api/init_config.rst:1282 +#: ../Doc/c-api/init_config.rst:1511 ../Doc/c-api/init_config.rst:1695 +#: ../Doc/c-api/init_config.rst:1719 ../Doc/c-api/init_config.rst:1955 msgid "Default: ``1`` in Python mode, ``0`` in isolated mode." msgstr "Por defecto: ``1`` en modo Python, ``0`` en modo aislado." -#: ../Doc/c-api/init_config.rst:867 +#: ../Doc/c-api/init_config.rst:1515 msgid "If greater than ``0``, enable the interactive mode (REPL)." msgstr "Si es mayor que ``0``, habilita el modo interactivo (REPL)." -#: ../Doc/c-api/init_config.rst:869 +#: ../Doc/c-api/init_config.rst:1517 msgid "Incremented by the :option:`-i` command line option." msgstr "Incrementado por la opción de línea de comando :option:`-i`." -#: ../Doc/c-api/init_config.rst:875 +#: ../Doc/c-api/init_config.rst:1523 msgid "" -"Configures the :ref:`integer string conversion length limitation `. An initial " -"value of ``-1`` means the value will be taken from the command line or environment or otherwise " -"default to 4300 (:data:`sys.int_info.default_max_str_digits`). A value of ``0`` disables the " +"Configures the :ref:`integer string conversion length limitation " +"`. An initial value of ``-1`` means the value will be " +"taken from the command line or environment or otherwise default to 4300 (:" +"data:`sys.int_info.default_max_str_digits`). A value of ``0`` disables the " "limitation. Values greater than zero but less than 640 (:data:`sys.int_info." "str_digits_check_threshold`) are unsupported and will produce an error." msgstr "" -"Configura la :ref:`limitación de la longitud de conversión de entero a cadena `. " -"Un valor inicial de ``-1`` significa que el valor se tomará de la línea de comandos o del entorno o, " -"de lo contrario, será por defecto 4300 (:data:`sys.int_info.default_max_str_digits`). Un valor de " -"``0`` deshabilita la limitación. Los valores mayores que cero pero menores que 640 (:data:`sys." -"int_info.str_digits_check_threshold`) no son compatibles y producirán un error." +"Configura la :ref:`limitación de la longitud de conversión de entero a " +"cadena `. Un valor inicial de ``-1`` significa que el " +"valor se tomará de la línea de comandos o del entorno o, de lo contrario, " +"será por defecto 4300 (:data:`sys.int_info.default_max_str_digits`). Un " +"valor de ``0`` deshabilita la limitación. Los valores mayores que cero pero " +"menores que 640 (:data:`sys.int_info.str_digits_check_threshold`) no son " +"compatibles y producirán un error." -#: ../Doc/c-api/init_config.rst:883 +#: ../Doc/c-api/init_config.rst:1531 msgid "" -"Configured by the :option:`-X int_max_str_digits <-X>` command line flag or the :envvar:" -"`PYTHONINTMAXSTRDIGITS` environment variable." +"Configured by the :option:`-X int_max_str_digits <-X>` command line flag or " +"the :envvar:`PYTHONINTMAXSTRDIGITS` environment variable." msgstr "" -"Configurado por la bandera de línea de comandos :option:`-X int_max_str_digits <-X>` o la variable de " -"entorno :envvar:`PYTHONINTMAXSTRDIGITS`." +"Configurado por la bandera de línea de comandos :option:`-X " +"int_max_str_digits <-X>` o la variable de entorno :envvar:" +"`PYTHONINTMAXSTRDIGITS`." -#: ../Doc/c-api/init_config.rst:886 +#: ../Doc/c-api/init_config.rst:1534 msgid "" -"Default: ``-1`` in Python mode. 4300 (:data:`sys.int_info.default_max_str_digits`) in isolated mode." +"Default: ``-1`` in Python mode. 4300 (:data:`sys.int_info." +"default_max_str_digits`) in isolated mode." msgstr "" -"Predeterminado: ``-1`` en modo Python. 4300 (:data:`sys.int_info.default_max_str_digits`) en modo " -"aislado." +"Predeterminado: ``-1`` en modo Python. 4300 (:data:`sys.int_info." +"default_max_str_digits`) en modo aislado." -#: ../Doc/c-api/init_config.rst:893 +#: ../Doc/c-api/init_config.rst:1541 msgid "" -"If the value of :c:member:`~PyConfig.cpu_count` is not ``-1`` then it will override the return values " -"of :func:`os.cpu_count`, :func:`os.process_cpu_count`, and :func:`multiprocessing.cpu_count`." +"If the value of :c:member:`~PyConfig.cpu_count` is not ``-1`` then it will " +"override the return values of :func:`os.cpu_count`, :func:`os." +"process_cpu_count`, and :func:`multiprocessing.cpu_count`." msgstr "" -"Si el valor de :c:member:`~PyConfig.cpu_count` no es ``-1``, entonces anulará los valores de retorno " -"de :func:`os.cpu_count`, :func:`os.process_cpu_count` y :func:`multiprocessing.cpu_count`." +"Si el valor de :c:member:`~PyConfig.cpu_count` no es ``-1``, entonces " +"anulará los valores de retorno de :func:`os.cpu_count`, :func:`os." +"process_cpu_count` y :func:`multiprocessing.cpu_count`." -#: ../Doc/c-api/init_config.rst:897 +#: ../Doc/c-api/init_config.rst:1545 +#, python-brace-format msgid "" -"Configured by the :samp:`-X cpu_count={n|default}` command line flag or the :envvar:" -"`PYTHON_CPU_COUNT` environment variable." +"Configured by the :samp:`-X cpu_count={n|default}` command line flag or the :" +"envvar:`PYTHON_CPU_COUNT` environment variable." msgstr "" -"Configurado por la bandera de línea de comandos :samp:`-X cpu_count={n|default}` o la variable de " -"entorno :envvar:`PYTHON_CPU_COUNT`." +"Configurado por la bandera de línea de comandos :samp:`-X cpu_count={n|" +"default}` o la variable de entorno :envvar:`PYTHON_CPU_COUNT`." -#: ../Doc/c-api/init_config.rst:900 ../Doc/c-api/init_config.rst:1259 +#: ../Doc/c-api/init_config.rst:1548 ../Doc/c-api/init_config.rst:1909 msgid "Default: ``-1``." msgstr "Predeterminado: ``-1``." -#: ../Doc/c-api/init_config.rst:906 +#: ../Doc/c-api/init_config.rst:1554 msgid "If greater than ``0``, enable isolated mode:" msgstr "Si es mayor que ``0``, habilite el modo aislado:" -#: ../Doc/c-api/init_config.rst:908 +#: ../Doc/c-api/init_config.rst:1556 msgid "" -"Set :c:member:`~PyConfig.safe_path` to ``1``: don't prepend a potentially unsafe path to :data:`sys." -"path` at Python startup, such as the current directory, the script's directory or an empty string." +"Set :c:member:`~PyConfig.safe_path` to ``1``: don't prepend a potentially " +"unsafe path to :data:`sys.path` at Python startup, such as the current " +"directory, the script's directory or an empty string." msgstr "" -"Establezca :c:member:`~PyConfig.safe_path` en ``1``: no anteponga una ruta potencialmente insegura a :" -"data:`sys.path` al inicio de Python, como el directorio actual, el directorio del script o una cadena " -"vacía." +"Establezca :c:member:`~PyConfig.safe_path` en ``1``: no anteponga una ruta " +"potencialmente insegura a :data:`sys.path` al inicio de Python, como el " +"directorio actual, el directorio del script o una cadena vacía." -#: ../Doc/c-api/init_config.rst:912 -msgid "Set :c:member:`~PyConfig.use_environment` to ``0``: ignore ``PYTHON`` environment variables." +#: ../Doc/c-api/init_config.rst:1560 +msgid "" +"Set :c:member:`~PyConfig.use_environment` to ``0``: ignore ``PYTHON`` " +"environment variables." msgstr "" -"Establezca :c:member:`~PyConfig.use_environment` en ``0``: ignore las variables de entorno ``PYTHON``." +"Establezca :c:member:`~PyConfig.use_environment` en ``0``: ignore las " +"variables de entorno ``PYTHON``." -#: ../Doc/c-api/init_config.rst:914 +#: ../Doc/c-api/init_config.rst:1562 msgid "" -"Set :c:member:`~PyConfig.user_site_directory` to ``0``: don't add the user site directory to :data:" -"`sys.path`." +"Set :c:member:`~PyConfig.user_site_directory` to ``0``: don't add the user " +"site directory to :data:`sys.path`." msgstr "" -"Establezca :c:member:`~PyConfig.user_site_directory` en ``0``: no agregue el directorio del sitio del " -"usuario a :data:`sys.path`." +"Establezca :c:member:`~PyConfig.user_site_directory` en ``0``: no agregue el " +"directorio del sitio del usuario a :data:`sys.path`." -#: ../Doc/c-api/init_config.rst:916 +#: ../Doc/c-api/init_config.rst:1564 msgid "" -"Python REPL doesn't import :mod:`readline` nor enable default readline configuration on interactive " -"prompts." +"Python REPL doesn't import :mod:`readline` nor enable default readline " +"configuration on interactive prompts." msgstr "" -"Python REPL no importa :mod:`readline` ni habilita la configuración predeterminada de readline en " -"mensajes interactivos." +"Python REPL no importa :mod:`readline` ni habilita la configuración " +"predeterminada de readline en mensajes interactivos." -#: ../Doc/c-api/init_config.rst:919 +#: ../Doc/c-api/init_config.rst:1567 msgid "Set to ``1`` by the :option:`-I` command line option." msgstr "Establecido en ``1`` por la opción de línea de comando :option:`-I`." -#: ../Doc/c-api/init_config.rst:923 +#: ../Doc/c-api/init_config.rst:1571 msgid "" -"See also the :ref:`Isolated Configuration ` and :c:member:`PyPreConfig.isolated`." +"See also the :ref:`Isolated Configuration ` and :c:" +"member:`PyPreConfig.isolated`." msgstr "" -"Consulte también la :ref:`Configuración Aislada ` y :c:member:`PyPreConfig." -"isolated`." +"Consulte también la :ref:`Configuración Aislada ` y :c:" +"member:`PyPreConfig.isolated`." -#: ../Doc/c-api/init_config.rst:928 +#: ../Doc/c-api/init_config.rst:1576 msgid "" -"If non-zero, use :class:`io.FileIO` instead of :class:`!io._WindowsConsoleIO` for :data:`sys.stdin`, :" -"data:`sys.stdout` and :data:`sys.stderr`." +"If non-zero, use :class:`io.FileIO` instead of :class:`!io." +"_WindowsConsoleIO` for :data:`sys.stdin`, :data:`sys.stdout` and :data:`sys." +"stderr`." msgstr "" -"Si no es cero, use :class:`io.FileIO` en lugar de :class:`!io._WindowsConsoleIO` para :data:`sys." -"stdin`, :data:`sys.stdout` y :data:`sys.stderr`." +"Si no es cero, use :class:`io.FileIO` en lugar de :class:`!io." +"_WindowsConsoleIO` para :data:`sys.stdin`, :data:`sys.stdout` y :data:`sys." +"stderr`." -#: ../Doc/c-api/init_config.rst:932 +#: ../Doc/c-api/init_config.rst:1580 msgid "" -"Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSSTDIO` environment variable is set to a non-empty " -"string." +"Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSSTDIO` environment variable " +"is set to a non-empty string." msgstr "" -"Establecido en ``1`` si la variable de entorno :envvar:`PYTHONLEGACYWINDOWSSTDIO` está establecida en " -"una cadena no vacía." +"Establecido en ``1`` si la variable de entorno :envvar:" +"`PYTHONLEGACYWINDOWSSTDIO` está establecida en una cadena no vacía." -#: ../Doc/c-api/init_config.rst:940 +#: ../Doc/c-api/init_config.rst:1588 msgid "See also the :pep:`528` (Change Windows console encoding to UTF-8)." -msgstr "Consulte también :pep:`528` (Cambiar la codificación de la consola de Windows a UTF-8)." +msgstr "" +"Consulte también :pep:`528` (Cambiar la codificación de la consola de " +"Windows a UTF-8)." -#: ../Doc/c-api/init_config.rst:944 -msgid "If non-zero, dump statistics on :ref:`Python pymalloc memory allocator ` at exit." +#: ../Doc/c-api/init_config.rst:1592 +msgid "" +"If non-zero, dump statistics on :ref:`Python pymalloc memory allocator " +"` at exit." msgstr "" -"Si no es cero, volcar las estadísticas en :ref:`Asignador de memoria Python pymalloc ` en " -"la salida." +"Si no es cero, volcar las estadísticas en :ref:`Asignador de memoria Python " +"pymalloc ` en la salida." -#: ../Doc/c-api/init_config.rst:947 +#: ../Doc/c-api/init_config.rst:1595 msgid "Set to ``1`` by the :envvar:`PYTHONMALLOCSTATS` environment variable." -msgstr "Establecido en ``1`` por la variable de entorno :envvar:`PYTHONMALLOCSTATS`." +msgstr "" +"Establecido en ``1`` por la variable de entorno :envvar:`PYTHONMALLOCSTATS`." -#: ../Doc/c-api/init_config.rst:949 +#: ../Doc/c-api/init_config.rst:1597 msgid "" -"The option is ignored if Python is :option:`configured using the --without-pymalloc option <--without-" -"pymalloc>`." +"The option is ignored if Python is :option:`configured using the --without-" +"pymalloc option <--without-pymalloc>`." msgstr "" -"La opción se ignora si Python es :option:`configurado usando la opción --without-pymalloc <--without-" -"pymalloc>`." +"La opción se ignora si Python es :option:`configurado usando la opción --" +"without-pymalloc <--without-pymalloc>`." -#: ../Doc/c-api/init_config.rst:956 +#: ../Doc/c-api/init_config.rst:1604 msgid "Platform library directory name: :data:`sys.platlibdir`." -msgstr "Nombre del directorio de la biblioteca de la plataforma: :data:`sys.platlibdir`." +msgstr "" +"Nombre del directorio de la biblioteca de la plataforma: :data:`sys." +"platlibdir`." -#: ../Doc/c-api/init_config.rst:958 +#: ../Doc/c-api/init_config.rst:1606 msgid "Set by the :envvar:`PYTHONPLATLIBDIR` environment variable." msgstr "Establecido por la variable de entorno :envvar:`PYTHONPLATLIBDIR`." -#: ../Doc/c-api/init_config.rst:960 +#: ../Doc/c-api/init_config.rst:1608 msgid "" -"Default: value of the ``PLATLIBDIR`` macro which is set by the :option:`configure --with-platlibdir " -"option <--with-platlibdir>` (default: ``\"lib\"``, or ``\"DLLs\"`` on Windows)." +"Default: value of the ``PLATLIBDIR`` macro which is set by the :option:" +"`configure --with-platlibdir option <--with-platlibdir>` (default: " +"``\"lib\"``, or ``\"DLLs\"`` on Windows)." msgstr "" -"Predeterminado: valor de la macro ``PLATLIBDIR`` que se establece mediante la opción :option:" -"`configure --with-platlibdir <--with-platlibdir>` (predeterminado: ``\"lib\"``, o ``\"DLLs\"`` en " -"Windows)." +"Predeterminado: valor de la macro ``PLATLIBDIR`` que se establece mediante " +"la opción :option:`configure --with-platlibdir <--with-platlibdir>` " +"(predeterminado: ``\"lib\"``, o ``\"DLLs\"`` en Windows)." -#: ../Doc/c-api/init_config.rst:968 +#: ../Doc/c-api/init_config.rst:1616 msgid "" -"This macro is now used on Windows to locate the standard library extension modules, typically under " -"``DLLs``. However, for compatibility, note that this value is ignored for any non-standard layouts, " -"including in-tree builds and virtual environments." +"This macro is now used on Windows to locate the standard library extension " +"modules, typically under ``DLLs``. However, for compatibility, note that " +"this value is ignored for any non-standard layouts, including in-tree builds " +"and virtual environments." msgstr "" -"Esta macro se utiliza ahora en Windows para localizar los módulos de extensión de la biblioteca " -"estándar, normalmente en ``DLLs``. Sin embargo, por compatibilidad, tenga en cuenta que este valor se " -"ignora para cualquier disposición no estándar, incluyendo las construcciones dentro del árbol y los " -"entornos virtuales." +"Esta macro se utiliza ahora en Windows para localizar los módulos de " +"extensión de la biblioteca estándar, normalmente en ``DLLs``. Sin embargo, " +"por compatibilidad, tenga en cuenta que este valor se ignora para cualquier " +"disposición no estándar, incluyendo las construcciones dentro del árbol y " +"los entornos virtuales." -#: ../Doc/c-api/init_config.rst:977 -msgid "Module search paths (:data:`sys.path`) as a string separated by ``DELIM`` (:data:`os.pathsep`)." +#: ../Doc/c-api/init_config.rst:1625 +msgid "" +"Module search paths (:data:`sys.path`) as a string separated by ``DELIM`` (:" +"data:`os.pathsep`)." msgstr "" -"Rutas de búsqueda de módulos (:data:`sys.path`) como una cadena separada por ``DELIM`` (:data:`os." -"pathsep`)." +"Rutas de búsqueda de módulos (:data:`sys.path`) como una cadena separada por " +"``DELIM`` (:data:`os.pathsep`)." -#: ../Doc/c-api/init_config.rst:980 +#: ../Doc/c-api/init_config.rst:1628 msgid "Set by the :envvar:`PYTHONPATH` environment variable." msgstr "Establecido por la variable de entorno :envvar:`PYTHONPATH`." -#: ../Doc/c-api/init_config.rst:989 +#: ../Doc/c-api/init_config.rst:1637 msgid "Module search paths: :data:`sys.path`." msgstr "Rutas de búsqueda del módulo: :data:`sys.path`." -#: ../Doc/c-api/init_config.rst:991 +#: ../Doc/c-api/init_config.rst:1639 msgid "" -"If :c:member:`~PyConfig.module_search_paths_set` is equal to ``0``, :c:func:`Py_InitializeFromConfig` " -"will replace :c:member:`~PyConfig.module_search_paths` and sets :c:member:`~PyConfig." -"module_search_paths_set` to ``1``." +"If :c:member:`~PyConfig.module_search_paths_set` is equal to ``0``, :c:func:" +"`Py_InitializeFromConfig` will replace :c:member:`~PyConfig." +"module_search_paths` and sets :c:member:`~PyConfig.module_search_paths_set` " +"to ``1``." msgstr "" -"Si :c:member:`~PyConfig.module_search_paths_set` es igual a ``0``, :c:func:`Py_InitializeFromConfig` " -"reemplazará :c:member:`~PyConfig.module_search_paths` y establecerá :c:member:`~PyConfig." +"Si :c:member:`~PyConfig.module_search_paths_set` es igual a ``0``, :c:func:" +"`Py_InitializeFromConfig` reemplazará :c:member:`~PyConfig." +"module_search_paths` y establecerá :c:member:`~PyConfig." "module_search_paths_set` en ``1``." -#: ../Doc/c-api/init_config.rst:996 -msgid "Default: empty list (``module_search_paths``) and ``0`` (``module_search_paths_set``)." -msgstr "Por defecto: lista vacía (``module_search_paths``) y ``0`` (``module_search_paths_set``)." +#: ../Doc/c-api/init_config.rst:1644 +msgid "" +"Default: empty list (``module_search_paths``) and ``0`` " +"(``module_search_paths_set``)." +msgstr "" +"Por defecto: lista vacía (``module_search_paths``) y ``0`` " +"(``module_search_paths_set``)." -#: ../Doc/c-api/init_config.rst:1003 +#: ../Doc/c-api/init_config.rst:1651 msgid "Compilation optimization level:" msgstr "Nivel de optimización de compilación:" -#: ../Doc/c-api/init_config.rst:1005 +#: ../Doc/c-api/init_config.rst:1653 msgid "``0``: Peephole optimizer, set ``__debug__`` to ``True``." msgstr "``0``: Optimizador de mirilla, configure ``__debug__`` en ``True``." -#: ../Doc/c-api/init_config.rst:1006 +#: ../Doc/c-api/init_config.rst:1654 msgid "``1``: Level 0, remove assertions, set ``__debug__`` to ``False``." -msgstr "``1``: Nivel 0, elimina las aserciones, establece ``__debug__`` en ``False``." +msgstr "" +"``1``: Nivel 0, elimina las aserciones, establece ``__debug__`` en ``False``." -#: ../Doc/c-api/init_config.rst:1007 +#: ../Doc/c-api/init_config.rst:1655 msgid "``2``: Level 1, strip docstrings." msgstr "``2``: Nivel 1, elimina docstrings." -#: ../Doc/c-api/init_config.rst:1009 +#: ../Doc/c-api/init_config.rst:1657 msgid "" -"Incremented by the :option:`-O` command line option. Set to the :envvar:`PYTHONOPTIMIZE` environment " -"variable value." +"Incremented by the :option:`-O` command line option. Set to the :envvar:" +"`PYTHONOPTIMIZE` environment variable value." msgstr "" -"Incrementado por la opción de línea de comando :option:`-O`. Establecido en el valor de la variable " -"de entorno :envvar:`PYTHONOPTIMIZE`." +"Incrementado por la opción de línea de comando :option:`-O`. Establecido en " +"el valor de la variable de entorno :envvar:`PYTHONOPTIMIZE`." -#: ../Doc/c-api/init_config.rst:1016 +#: ../Doc/c-api/init_config.rst:1664 msgid "" -"The list of the original command line arguments passed to the Python executable: :data:`sys." -"orig_argv`." +"The list of the original command line arguments passed to the Python " +"executable: :data:`sys.orig_argv`." msgstr "" -"La lista de los argumentos originales de la línea de comandos pasados al ejecutable de Python: :data:" -"`sys.orig_argv`." +"La lista de los argumentos originales de la línea de comandos pasados al " +"ejecutable de Python: :data:`sys.orig_argv`." -#: ../Doc/c-api/init_config.rst:1019 +#: ../Doc/c-api/init_config.rst:1667 msgid "" -"If :c:member:`~PyConfig.orig_argv` list is empty and :c:member:`~PyConfig.argv` is not a list only " -"containing an empty string, :c:func:`PyConfig_Read` copies :c:member:`~PyConfig.argv` into :c:member:" -"`~PyConfig.orig_argv` before modifying :c:member:`~PyConfig.argv` (if :c:member:`~PyConfig." +"If :c:member:`~PyConfig.orig_argv` list is empty and :c:member:`~PyConfig." +"argv` is not a list only containing an empty string, :c:func:`PyConfig_Read` " +"copies :c:member:`~PyConfig.argv` into :c:member:`~PyConfig.orig_argv` " +"before modifying :c:member:`~PyConfig.argv` (if :c:member:`~PyConfig." "parse_argv` is non-zero)." msgstr "" -"Si la lista :c:member:`~PyConfig.orig_argv` está vacía y :c:member:`~PyConfig.argv` no es una lista " -"que solo contiene una cadena vacía, :c:func:`PyConfig_Read` copia :c:member:`~PyConfig.argv` en :c:" -"member:`~PyConfig.orig_argv` antes de modificar :c:member:`~PyConfig.argv` (si :c:member:`~PyConfig." -"parse_argv` no es cero)." +"Si la lista :c:member:`~PyConfig.orig_argv` está vacía y :c:member:" +"`~PyConfig.argv` no es una lista que solo contiene una cadena vacía, :c:func:" +"`PyConfig_Read` copia :c:member:`~PyConfig.argv` en :c:member:`~PyConfig." +"orig_argv` antes de modificar :c:member:`~PyConfig.argv` (si :c:member:" +"`~PyConfig.parse_argv` no es cero)." -#: ../Doc/c-api/init_config.rst:1026 -msgid "See also the :c:member:`~PyConfig.argv` member and the :c:func:`Py_GetArgcArgv` function." -msgstr "Consulte también el miembro :c:member:`~PyConfig.argv` y la función :c:func:`Py_GetArgcArgv`." +#: ../Doc/c-api/init_config.rst:1674 +msgid "" +"See also the :c:member:`~PyConfig.argv` member and the :c:func:" +"`Py_GetArgcArgv` function." +msgstr "" +"Consulte también el miembro :c:member:`~PyConfig.argv` y la función :c:func:" +"`Py_GetArgcArgv`." -#: ../Doc/c-api/init_config.rst:1029 ../Doc/c-api/init_config.rst:1317 ../Doc/c-api/init_config.rst:1336 +#: ../Doc/c-api/init_config.rst:1677 ../Doc/c-api/init_config.rst:1990 +#: ../Doc/c-api/init_config.rst:2009 msgid "Default: empty list." msgstr "Predeterminado: lista vacía." -#: ../Doc/c-api/init_config.rst:1035 +#: ../Doc/c-api/init_config.rst:1683 msgid "Parse command line arguments?" msgstr "¿Analizar los argumentos de la línea de comando?" -#: ../Doc/c-api/init_config.rst:1037 +#: ../Doc/c-api/init_config.rst:1685 msgid "" -"If equals to ``1``, parse :c:member:`~PyConfig.argv` the same way the regular Python parses :ref:" -"`command line arguments `, and strip Python arguments from :c:member:`~PyConfig." -"argv`." +"If equals to ``1``, parse :c:member:`~PyConfig.argv` the same way the " +"regular Python parses :ref:`command line arguments `, and " +"strip Python arguments from :c:member:`~PyConfig.argv`." msgstr "" -"Si es igual a ``1``, analiza :c:member:`~PyConfig.argv` de la misma forma que Python normal analiza :" -"ref:`argumentos de línea de comando ` y elimina los argumentos de Python de :c:" -"member:`~PyConfig.argv`." +"Si es igual a ``1``, analiza :c:member:`~PyConfig.argv` de la misma forma " +"que Python normal analiza :ref:`argumentos de línea de comando ` y elimina los argumentos de Python de :c:member:`~PyConfig.argv`." -#: ../Doc/c-api/init_config.rst:1049 +#: ../Doc/c-api/init_config.rst:1697 msgid "" -"The :c:member:`PyConfig.argv` arguments are now only parsed if :c:member:`PyConfig.parse_argv` equals " -"to ``1``." +"The :c:member:`PyConfig.argv` arguments are now only parsed if :c:member:" +"`PyConfig.parse_argv` equals to ``1``." msgstr "" -"Los argumentos :c:member:`PyConfig.argv` ahora solo se analizan si :c:member:`PyConfig.parse_argv` es " -"igual a ``1``." +"Los argumentos :c:member:`PyConfig.argv` ahora solo se analizan si :c:member:" +"`PyConfig.parse_argv` es igual a ``1``." -#: ../Doc/c-api/init_config.rst:1055 +#: ../Doc/c-api/init_config.rst:1703 msgid "" -"Parser debug mode. If greater than ``0``, turn on parser debugging output (for expert only, depending " -"on compilation options)." +"Parser debug mode. If greater than ``0``, turn on parser debugging output " +"(for expert only, depending on compilation options)." msgstr "" -"Modo de depuración del analizador. Si es mayor que ``0``, active la salida de depuración del " -"analizador (solo para expertos, dependiendo de las opciones de compilación)." +"Modo de depuración del analizador. Si es mayor que ``0``, active la salida " +"de depuración del analizador (solo para expertos, dependiendo de las " +"opciones de compilación)." -#: ../Doc/c-api/init_config.rst:1058 +#: ../Doc/c-api/init_config.rst:1706 msgid "" -"Incremented by the :option:`-d` command line option. Set to the :envvar:`PYTHONDEBUG` environment " -"variable value." +"Incremented by the :option:`-d` command line option. Set to the :envvar:" +"`PYTHONDEBUG` environment variable value." msgstr "" -"Incrementado por la opción de línea de comando :option:`-d`. Establecido en el valor de la variable " -"de entorno :envvar:`PYTHONDEBUG`." +"Incrementado por la opción de línea de comando :option:`-d`. Establecido en " +"el valor de la variable de entorno :envvar:`PYTHONDEBUG`." -#: ../Doc/c-api/init_config.rst:1061 ../Doc/c-api/init_config.rst:1166 -msgid "Needs a :ref:`debug build of Python ` (the ``Py_DEBUG`` macro must be defined)." +#: ../Doc/c-api/init_config.rst:1709 ../Doc/c-api/init_config.rst:1814 +msgid "" +"Needs a :ref:`debug build of Python ` (the ``Py_DEBUG`` macro " +"must be defined)." msgstr "" -"Necesita una :ref:`compilación de depuración de Python ` (se debe definir la macro " -"``Py_DEBUG``)." +"Necesita una :ref:`compilación de depuración de Python ` (se " +"debe definir la macro ``Py_DEBUG``)." -#: ../Doc/c-api/init_config.rst:1068 +#: ../Doc/c-api/init_config.rst:1716 msgid "" -"If non-zero, calculation of path configuration is allowed to log warnings into ``stderr``. If equals " -"to ``0``, suppress these warnings." +"If non-zero, calculation of path configuration is allowed to log warnings " +"into ``stderr``. If equals to ``0``, suppress these warnings." msgstr "" -"Si no es cero, se permite que el cálculo de la configuración de ruta registre advertencias en " -"``stderr``. Si es igual a ``0``, suprima estas advertencias." +"Si no es cero, se permite que el cálculo de la configuración de ruta " +"registre advertencias en ``stderr``. Si es igual a ``0``, suprima estas " +"advertencias." -#: ../Doc/c-api/init_config.rst:1075 +#: ../Doc/c-api/init_config.rst:1723 msgid "Now also applies on Windows." msgstr "Ahora también se aplica en Windows." -#: ../Doc/c-api/init_config.rst:1080 +#: ../Doc/c-api/init_config.rst:1728 msgid "" -"The site-specific directory prefix where the platform independent Python files are installed: :data:" -"`sys.prefix`." +"The site-specific directory prefix where the platform independent Python " +"files are installed: :data:`sys.prefix`." msgstr "" -"El prefijo de directorio específico del sitio donde se instalan los archivos Python independientes de " -"la plataforma: :data:`sys.prefix`." +"El prefijo de directorio específico del sitio donde se instalan los archivos " +"Python independientes de la plataforma: :data:`sys.prefix`." -#: ../Doc/c-api/init_config.rst:1087 +#: ../Doc/c-api/init_config.rst:1735 msgid "See also :c:member:`PyConfig.base_prefix`." msgstr "Consulte también :c:member:`PyConfig.base_prefix`." -#: ../Doc/c-api/init_config.rst:1091 +#: ../Doc/c-api/init_config.rst:1739 msgid "" -"Program name used to initialize :c:member:`~PyConfig.executable` and in early error messages during " -"Python initialization." +"Program name used to initialize :c:member:`~PyConfig.executable` and in " +"early error messages during Python initialization." msgstr "" -"Nombre del programa utilizado para inicializar :c:member:`~PyConfig.executable` y en los primeros " -"mensajes de error durante la inicialización de Python." +"Nombre del programa utilizado para inicializar :c:member:`~PyConfig." +"executable` y en los primeros mensajes de error durante la inicialización de " +"Python." -#: ../Doc/c-api/init_config.rst:1094 +#: ../Doc/c-api/init_config.rst:1742 msgid "On macOS, use :envvar:`PYTHONEXECUTABLE` environment variable if set." -msgstr "En macOS, usa la variable de entorno :envvar:`PYTHONEXECUTABLE` si está configurada." +msgstr "" +"En macOS, usa la variable de entorno :envvar:`PYTHONEXECUTABLE` si está " +"configurada." -#: ../Doc/c-api/init_config.rst:1095 +#: ../Doc/c-api/init_config.rst:1743 msgid "" -"If the ``WITH_NEXT_FRAMEWORK`` macro is defined, use :envvar:`__PYVENV_LAUNCHER__` environment " -"variable if set." +"If the ``WITH_NEXT_FRAMEWORK`` macro is defined, use :envvar:" +"`__PYVENV_LAUNCHER__` environment variable if set." msgstr "" -"Si se define la macro ``WITH_NEXT_FRAMEWORK``, utiliza la variable de entorno :envvar:" -"`__PYVENV_LAUNCHER__` si está configurada." +"Si se define la macro ``WITH_NEXT_FRAMEWORK``, utiliza la variable de " +"entorno :envvar:`__PYVENV_LAUNCHER__` si está configurada." -#: ../Doc/c-api/init_config.rst:1097 -msgid "Use ``argv[0]`` of :c:member:`~PyConfig.argv` if available and non-empty." -msgstr "Utiliza ``argv[0]`` de :c:member:`~PyConfig.argv` si está disponible y no está vacío." +#: ../Doc/c-api/init_config.rst:1745 +msgid "" +"Use ``argv[0]`` of :c:member:`~PyConfig.argv` if available and non-empty." +msgstr "" +"Utiliza ``argv[0]`` de :c:member:`~PyConfig.argv` si está disponible y no " +"está vacío." -#: ../Doc/c-api/init_config.rst:1099 -msgid "Otherwise, use ``L\"python\"`` on Windows, or ``L\"python3\"`` on other platforms." -msgstr "De lo contrario, utiliza ``L\"python\"`` en Windows o ``L\"python3\"`` en otras plataformas." +#: ../Doc/c-api/init_config.rst:1747 +msgid "" +"Otherwise, use ``L\"python\"`` on Windows, or ``L\"python3\"`` on other " +"platforms." +msgstr "" +"De lo contrario, utiliza ``L\"python\"`` en Windows o ``L\"python3\"`` en " +"otras plataformas." -#: ../Doc/c-api/init_config.rst:1108 -msgid "Directory where cached ``.pyc`` files are written: :data:`sys.pycache_prefix`." +#: ../Doc/c-api/init_config.rst:1756 +msgid "" +"Directory where cached ``.pyc`` files are written: :data:`sys." +"pycache_prefix`." msgstr "" -"Directorio donde se escriben los archivos ``.pyc`` almacenados en caché: :data:`sys.pycache_prefix`." +"Directorio donde se escriben los archivos ``.pyc`` almacenados en caché: :" +"data:`sys.pycache_prefix`." -#: ../Doc/c-api/init_config.rst:1111 +#: ../Doc/c-api/init_config.rst:1759 msgid "" -"Set by the :option:`-X pycache_prefix=PATH <-X>` command line option and the :envvar:" -"`PYTHONPYCACHEPREFIX` environment variable. The command-line option takes precedence." +"Set by the :option:`-X pycache_prefix=PATH <-X>` command line option and " +"the :envvar:`PYTHONPYCACHEPREFIX` environment variable. The command-line " +"option takes precedence." msgstr "" -"Establecido por la opción de línea de comando :option:`-X pycache_prefix=PATH <-X>` y la variable de " -"entorno :envvar:`PYTHONPYCACHEPREFIX`. La opción de línea de comandos tiene prioridad." +"Establecido por la opción de línea de comando :option:`-X " +"pycache_prefix=PATH <-X>` y la variable de entorno :envvar:" +"`PYTHONPYCACHEPREFIX`. La opción de línea de comandos tiene prioridad." -#: ../Doc/c-api/init_config.rst:1115 +#: ../Doc/c-api/init_config.rst:1763 msgid "If ``NULL``, :data:`sys.pycache_prefix` is set to ``None``." msgstr "Si ``NULL``, :data:`sys.pycache_prefix` es establecido a ``None``." -#: ../Doc/c-api/init_config.rst:1121 +#: ../Doc/c-api/init_config.rst:1769 msgid "" -"Quiet mode. If greater than ``0``, don't display the copyright and version at Python startup in " -"interactive mode." +"Quiet mode. If greater than ``0``, don't display the copyright and version " +"at Python startup in interactive mode." msgstr "" -"Modo silencioso. Si es mayor que ``0``, no muestre los derechos de autor y la versión al inicio de " -"Python en modo interactivo." +"Modo silencioso. Si es mayor que ``0``, no muestre los derechos de autor y " +"la versión al inicio de Python en modo interactivo." -#: ../Doc/c-api/init_config.rst:1124 +#: ../Doc/c-api/init_config.rst:1772 msgid "Incremented by the :option:`-q` command line option." msgstr "Incrementado por la opción de línea de comando :option:`-q`." -#: ../Doc/c-api/init_config.rst:1130 +#: ../Doc/c-api/init_config.rst:1778 msgid "Value of the :option:`-c` command line option." msgstr "Valor de la opción de línea de comando :option:`-c`." -#: ../Doc/c-api/init_config.rst:1132 ../Doc/c-api/init_config.rst:1153 +#: ../Doc/c-api/init_config.rst:1780 ../Doc/c-api/init_config.rst:1801 msgid "Used by :c:func:`Py_RunMain`." msgstr "Usado por :c:func:`Py_RunMain`." -#: ../Doc/c-api/init_config.rst:1138 +#: ../Doc/c-api/init_config.rst:1786 msgid "" -"Filename passed on the command line: trailing command line argument without :option:`-c` or :option:`-" -"m`. It is used by the :c:func:`Py_RunMain` function." +"Filename passed on the command line: trailing command line argument without :" +"option:`-c` or :option:`-m`. It is used by the :c:func:`Py_RunMain` function." msgstr "" -"Nombre de archivo pasado en la línea de comandos: argumento final de la línea de comandos sin :option:" -"`-c` o :option:`-m`. Es utilizado por la función :c:func:`Py_RunMain`." +"Nombre de archivo pasado en la línea de comandos: argumento final de la " +"línea de comandos sin :option:`-c` o :option:`-m`. Es utilizado por la " +"función :c:func:`Py_RunMain`." -#: ../Doc/c-api/init_config.rst:1142 -msgid "For example, it is set to ``script.py`` by the ``python3 script.py arg`` command line." +#: ../Doc/c-api/init_config.rst:1790 +msgid "" +"For example, it is set to ``script.py`` by the ``python3 script.py arg`` " +"command line." msgstr "" -"Por ejemplo, se establece en ``script.py`` mediante la línea de comandos ``python3 script.py arg``." +"Por ejemplo, se establece en ``script.py`` mediante la línea de comandos " +"``python3 script.py arg``." -#: ../Doc/c-api/init_config.rst:1145 +#: ../Doc/c-api/init_config.rst:1793 msgid "See also the :c:member:`PyConfig.skip_source_first_line` option." -msgstr "Consulte también la opción :c:member:`PyConfig.skip_source_first_line`." +msgstr "" +"Consulte también la opción :c:member:`PyConfig.skip_source_first_line`." -#: ../Doc/c-api/init_config.rst:1151 +#: ../Doc/c-api/init_config.rst:1799 msgid "Value of the :option:`-m` command line option." msgstr "Valor de la opción de línea de comando :option:`-m`." -#: ../Doc/c-api/init_config.rst:1159 -msgid "``package.module`` path to module that should be imported before ``site.py`` is run." -msgstr "Ruta ``package.module`` al módulo que debe ser importado antes de que se ejecute ``site.py``." +#: ../Doc/c-api/init_config.rst:1807 +msgid "" +"``package.module`` path to module that should be imported before ``site.py`` " +"is run." +msgstr "" +"Ruta ``package.module`` al módulo que debe ser importado antes de que se " +"ejecute ``site.py``." -#: ../Doc/c-api/init_config.rst:1162 +#: ../Doc/c-api/init_config.rst:1810 msgid "" -"Set by the :option:`-X presite=package.module <-X>` command-line option and the :envvar:" -"`PYTHON_PRESITE` environment variable. The command-line option takes precedence." +"Set by the :option:`-X presite=package.module <-X>` command-line option and " +"the :envvar:`PYTHON_PRESITE` environment variable. The command-line option " +"takes precedence." msgstr "" -"Establecido por la opción de línea de comandos :option:`-X presite=package.module <-X>` y la variable " -"de entorno :envvar:`PYTHON_PRESITE`. La opción de línea de comandos tiene precedencia." +"Establecido por la opción de línea de comandos :option:`-X presite=package." +"module <-X>` y la variable de entorno :envvar:`PYTHON_PRESITE`. La opción de " +"línea de comandos tiene precedencia." -#: ../Doc/c-api/init_config.rst:1173 -msgid "Show total reference count at exit (excluding :term:`immortal` objects)?" -msgstr "¿Mostrar el recuento total de referencias al salir (excluyendo objetos :term:`immortal`)?" +#: ../Doc/c-api/init_config.rst:1821 +msgid "" +"Show total reference count at exit (excluding :term:`immortal` objects)?" +msgstr "" +"¿Mostrar el recuento total de referencias al salir (excluyendo objetos :term:" +"`immortal`)?" -#: ../Doc/c-api/init_config.rst:1175 +#: ../Doc/c-api/init_config.rst:1823 msgid "Set to ``1`` by :option:`-X showrefcount <-X>` command line option." -msgstr "Establecido en ``1`` por la opción de línea de comando :option:`-X showrefcount <-X>`." +msgstr "" +"Establecido en ``1`` por la opción de línea de comando :option:`-X " +"showrefcount <-X>`." -#: ../Doc/c-api/init_config.rst:1177 -msgid "Needs a :ref:`debug build of Python ` (the ``Py_REF_DEBUG`` macro must be defined)." +#: ../Doc/c-api/init_config.rst:1825 +msgid "" +"Needs a :ref:`debug build of Python ` (the ``Py_REF_DEBUG`` " +"macro must be defined)." msgstr "" -"Necesita una :ref:`compilación de depuración de Python ` (la macro ``Py_REF_DEBUG`` debe " -"estar definida)." +"Necesita una :ref:`compilación de depuración de Python ` (la " +"macro ``Py_REF_DEBUG`` debe estar definida)." -#: ../Doc/c-api/init_config.rst:1184 +#: ../Doc/c-api/init_config.rst:1832 msgid "Import the :mod:`site` module at startup?" msgstr "¿Importar el módulo :mod:`site` al inicio?" -#: ../Doc/c-api/init_config.rst:1186 +#: ../Doc/c-api/init_config.rst:1834 msgid "" -"If equal to zero, disable the import of the module site and the site-dependent manipulations of :data:" -"`sys.path` that it entails." +"If equal to zero, disable the import of the module site and the site-" +"dependent manipulations of :data:`sys.path` that it entails." msgstr "" -"Si es igual a cero, desactive la importación del sitio del módulo y las manipulaciones dependientes " -"del sitio de :data:`sys.path` que conlleva." +"Si es igual a cero, desactive la importación del sitio del módulo y las " +"manipulaciones dependientes del sitio de :data:`sys.path` que conlleva." -#: ../Doc/c-api/init_config.rst:1189 +#: ../Doc/c-api/init_config.rst:1837 msgid "" -"Also disable these manipulations if the :mod:`site` module is explicitly imported later (call :func:" -"`site.main` if you want them to be triggered)." +"Also disable these manipulations if the :mod:`site` module is explicitly " +"imported later (call :func:`site.main` if you want them to be triggered)." msgstr "" -"También deshabilite estas manipulaciones si el módulo :mod:`site` se importa explícitamente más tarde " -"(llame a :func:`site.main` si desea que se activen)." +"También deshabilite estas manipulaciones si el módulo :mod:`site` se importa " +"explícitamente más tarde (llame a :func:`site.main` si desea que se activen)." -#: ../Doc/c-api/init_config.rst:1192 +#: ../Doc/c-api/init_config.rst:1840 msgid "Set to ``0`` by the :option:`-S` command line option." -msgstr "Establecido en ``0`` mediante la opción de línea de comando :option:`-S`." +msgstr "" +"Establecido en ``0`` mediante la opción de línea de comando :option:`-S`." -#: ../Doc/c-api/init_config.rst:1194 +#: ../Doc/c-api/init_config.rst:1842 msgid "" -":data:`sys.flags.no_site ` is set to the inverted value of :c:member:`~PyConfig." -"site_import`." +":data:`sys.flags.no_site ` is set to the inverted value of :c:" +"member:`~PyConfig.site_import`." msgstr "" -":data:`sys.flags.no_site ` se establece en el valor invertido de :c:member:`~PyConfig." -"site_import`." +":data:`sys.flags.no_site ` se establece en el valor invertido de :" +"c:member:`~PyConfig.site_import`." -#: ../Doc/c-api/init_config.rst:1201 -msgid "If non-zero, skip the first line of the :c:member:`PyConfig.run_filename` source." -msgstr "Si no es cero, omita la primera línea de la fuente :c:member:`PyConfig.run_filename`." +#: ../Doc/c-api/init_config.rst:1849 +msgid "" +"If non-zero, skip the first line of the :c:member:`PyConfig.run_filename` " +"source." +msgstr "" +"Si no es cero, omita la primera línea de la fuente :c:member:`PyConfig." +"run_filename`." -#: ../Doc/c-api/init_config.rst:1204 +#: ../Doc/c-api/init_config.rst:1852 msgid "" -"It allows the usage of non-Unix forms of ``#!cmd``. This is intended for a DOS specific hack only." +"It allows the usage of non-Unix forms of ``#!cmd``. This is intended for a " +"DOS specific hack only." msgstr "" -"Permite el uso de formas de ``#!cmd`` que no son Unix. Esto está destinado únicamente a un truco " -"específico de DOS." +"Permite el uso de formas de ``#!cmd`` que no son Unix. Esto está destinado " +"únicamente a un truco específico de DOS." -#: ../Doc/c-api/init_config.rst:1207 +#: ../Doc/c-api/init_config.rst:1855 msgid "Set to ``1`` by the :option:`-x` command line option." -msgstr "Establecido en ``1`` mediante la opción de línea de comando :option:`-x`." +msgstr "" +"Establecido en ``1`` mediante la opción de línea de comando :option:`-x`." -#: ../Doc/c-api/init_config.rst:1214 +#: ../Doc/c-api/init_config.rst:1862 msgid "" -"Encoding and encoding errors of :data:`sys.stdin`, :data:`sys.stdout` and :data:`sys.stderr` (but :" -"data:`sys.stderr` always uses ``\"backslashreplace\"`` error handler)." +"Encoding and encoding errors of :data:`sys.stdin`, :data:`sys.stdout` and :" +"data:`sys.stderr` (but :data:`sys.stderr` always uses " +"``\"backslashreplace\"`` error handler)." msgstr "" -"Codificación y errores de codificación de :data:`sys.stdin`, :data:`sys.stdout` y :data:`sys.stderr` " -"(pero :data:`sys.stderr` siempre usa el controlador de errores ``\"backslashreplace\"``)." +"Codificación y errores de codificación de :data:`sys.stdin`, :data:`sys." +"stdout` y :data:`sys.stderr` (pero :data:`sys.stderr` siempre usa el " +"controlador de errores ``\"backslashreplace\"``)." -#: ../Doc/c-api/init_config.rst:1218 -msgid "Use the :envvar:`PYTHONIOENCODING` environment variable if it is non-empty." -msgstr "Utilice la variable de entorno :envvar:`PYTHONIOENCODING` si no está vacía." +#: ../Doc/c-api/init_config.rst:1866 +msgid "" +"Use the :envvar:`PYTHONIOENCODING` environment variable if it is non-empty." +msgstr "" +"Utilice la variable de entorno :envvar:`PYTHONIOENCODING` si no está vacía." -#: ../Doc/c-api/init_config.rst:1221 +#: ../Doc/c-api/init_config.rst:1869 msgid "Default encoding:" msgstr "Codificación predeterminada:" -#: ../Doc/c-api/init_config.rst:1223 +#: ../Doc/c-api/init_config.rst:1871 msgid "``\"UTF-8\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero." -msgstr "``\"UTF-8\"`` si :c:member:`PyPreConfig.utf8_mode` es distinto de cero." +msgstr "" +"``\"UTF-8\"`` si :c:member:`PyPreConfig.utf8_mode` es distinto de cero." -#: ../Doc/c-api/init_config.rst:1224 +#: ../Doc/c-api/init_config.rst:1872 msgid "Otherwise, use the :term:`locale encoding`." msgstr "De lo contrario, usa el :term:`locale encoding`." -#: ../Doc/c-api/init_config.rst:1226 +#: ../Doc/c-api/init_config.rst:1874 msgid "Default error handler:" msgstr "Manejador de errores predeterminado:" -#: ../Doc/c-api/init_config.rst:1228 +#: ../Doc/c-api/init_config.rst:1876 msgid "On Windows: use ``\"surrogateescape\"``." msgstr "En Windows: use ``\"surrogateescape\"``." -#: ../Doc/c-api/init_config.rst:1229 +#: ../Doc/c-api/init_config.rst:1877 msgid "" -"``\"surrogateescape\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero, or if the LC_CTYPE locale " -"is \"C\" or \"POSIX\"." +"``\"surrogateescape\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero, or " +"if the LC_CTYPE locale is \"C\" or \"POSIX\"." msgstr "" -"``\"surrogateescape\"`` si :c:member:`PyPreConfig.utf8_mode` no es cero o si la configuración " -"regional LC_CTYPE es \"C\" o \"POSIX\"." +"``\"surrogateescape\"`` si :c:member:`PyPreConfig.utf8_mode` no es cero o si " +"la configuración regional LC_CTYPE es \"C\" o \"POSIX\"." -#: ../Doc/c-api/init_config.rst:1231 +#: ../Doc/c-api/init_config.rst:1879 msgid "``\"strict\"`` otherwise." msgstr "``\"strict\"`` de lo contrario." -#: ../Doc/c-api/init_config.rst:1233 +#: ../Doc/c-api/init_config.rst:1881 msgid "See also :c:member:`PyConfig.legacy_windows_stdio`." msgstr "Consulte también :c:member:`PyConfig.legacy_windows_stdio`." -#: ../Doc/c-api/init_config.rst:1237 +#: ../Doc/c-api/init_config.rst:1885 msgid "Enable tracemalloc?" msgstr "¿Habilitar tracemalloc?" -#: ../Doc/c-api/init_config.rst:1239 +#: ../Doc/c-api/init_config.rst:1887 msgid "If non-zero, call :func:`tracemalloc.start` at startup." msgstr "Si no es cero, llama a :func:`tracemalloc.start` al inicio." -#: ../Doc/c-api/init_config.rst:1241 +#: ../Doc/c-api/init_config.rst:1889 msgid "" -"Set by :option:`-X tracemalloc=N <-X>` command line option and by the :envvar:`PYTHONTRACEMALLOC` " -"environment variable." +"Set by :option:`-X tracemalloc=N <-X>` command line option and by the :" +"envvar:`PYTHONTRACEMALLOC` environment variable." msgstr "" -"Establecido por la opción de línea de comando :option:`-X tracemalloc=N <-X>` y por la variable de " -"entorno :envvar:`PYTHONTRACEMALLOC`." +"Establecido por la opción de línea de comando :option:`-X tracemalloc=N <-" +"X>` y por la variable de entorno :envvar:`PYTHONTRACEMALLOC`." -#: ../Doc/c-api/init_config.rst:1248 -msgid "Enable compatibility mode with the perf profiler?" -msgstr "¿Activar el modo de compatibilidad con el generador de perfiles perf?" +#: ../Doc/c-api/init_config.rst:1896 +msgid "Enable the Linux ``perf`` profiler support?" +msgstr "" -#: ../Doc/c-api/init_config.rst:1250 -msgid "If non-zero, initialize the perf trampoline. See :ref:`perf_profiling` for more information." +#: ../Doc/c-api/init_config.rst:1898 +msgid "If equals to ``1``, enable support for the Linux ``perf`` profiler." +msgstr "" + +#: ../Doc/c-api/init_config.rst:1900 +msgid "" +"If equals to ``2``, enable support for the Linux ``perf`` profiler with " +"DWARF JIT support." +msgstr "" + +#: ../Doc/c-api/init_config.rst:1903 +#, fuzzy +msgid "" +"Set to ``1`` by :option:`-X perf <-X>` command-line option and the :envvar:" +"`PYTHONPERFSUPPORT` environment variable." msgstr "" -"Si no es cero, inicializa el trampolín de perf. Consulte :ref:`perf_profiling` para obtener más " -"información." +"Establecido en ``1`` por la opción de la línea de comandos :option:`-P` y la " +"variable de entorno :envvar:`PYTHONSAFEPATH`." -#: ../Doc/c-api/init_config.rst:1253 +#: ../Doc/c-api/init_config.rst:1906 +#, fuzzy msgid "" -"Set by :option:`-X perf <-X>` command-line option and by the :envvar:`PYTHON_PERF_JIT_SUPPORT` " -"environment variable for perf support with stack pointers and :option:`-X perf_jit <-X>` command-line " -"option and by the :envvar:`PYTHON_PERF_JIT_SUPPORT` environment variable for perf support with DWARF " -"JIT information." +"Set to ``2`` by the :option:`-X perf_jit <-X>` command-line option and the :" +"envvar:`PYTHON_PERF_JIT_SUPPORT` environment variable." +msgstr "" +"Establecido en ``1`` por la opción de la línea de comandos :option:`-P` y la " +"variable de entorno :envvar:`PYTHONSAFEPATH`." + +#: ../Doc/c-api/init_config.rst:1912 +#, fuzzy +msgid "See :ref:`perf_profiling` for more information." +msgstr "" +"Si no es cero, inicializa el trampolín de perf. Consulte :ref:" +"`perf_profiling` para obtener más información." + +#: ../Doc/c-api/init_config.rst:1918 +msgid "Directory of the Python standard library." msgstr "" -"Establecido por la opción de línea de comandos :option:`-X perf <-X>` y por la variable de entorno :" -"envvar:`PYTHON_PERF_JIT_SUPPORT` para el soporte de perf con punteros de pila y la opción de línea de " -"comandos :option:`-X perf_jit <-X>` y por la variable de entorno :envvar:`PYTHON_PERF_JIT_SUPPORT` " -"para el soporte de perf con información DWARF JIT." -#: ../Doc/c-api/init_config.rst:1265 +#: ../Doc/c-api/init_config.rst:1926 msgid "Use :ref:`environment variables `?" msgstr "¿Utiliza :ref:`variables de entorno `?" -#: ../Doc/c-api/init_config.rst:1267 -msgid "If equals to zero, ignore the :ref:`environment variables `." -msgstr "Si es igual a cero, ignora las :ref:`variables de entorno `." +#: ../Doc/c-api/init_config.rst:1928 +msgid "" +"If equals to zero, ignore the :ref:`environment variables `." +msgstr "" +"Si es igual a cero, ignora las :ref:`variables de entorno `." -#: ../Doc/c-api/init_config.rst:1270 +#: ../Doc/c-api/init_config.rst:1931 msgid "Set to ``0`` by the :option:`-E` environment variable." msgstr "Establecido en ``0`` por la variable de entorno :option:`-E`." -#: ../Doc/c-api/init_config.rst:1276 +#: ../Doc/c-api/init_config.rst:1937 +msgid "" +"If non-zero, ``stdout`` and ``stderr`` will be redirected to the system log." +msgstr "" + +#: ../Doc/c-api/init_config.rst:1940 +msgid "Only available on macOS 10.12 and later, and on iOS." +msgstr "" + +#: ../Doc/c-api/init_config.rst:1942 +msgid "" +"Default: ``0`` (don't use the system log) on macOS; ``1`` on iOS (use the " +"system log)." +msgstr "" + +#: ../Doc/c-api/init_config.rst:1949 msgid "If non-zero, add the user site directory to :data:`sys.path`." -msgstr "Si es distinto de cero, agregue el directorio del sitio del usuario a :data:`sys.path`." +msgstr "" +"Si es distinto de cero, agregue el directorio del sitio del usuario a :data:" +"`sys.path`." -#: ../Doc/c-api/init_config.rst:1278 +#: ../Doc/c-api/init_config.rst:1951 msgid "Set to ``0`` by the :option:`-s` and :option:`-I` command line options." -msgstr "Establecido en ``0`` por las opciones de línea de comando :option:`-s` y :option:`-I`." +msgstr "" +"Establecido en ``0`` por las opciones de línea de comando :option:`-s` y :" +"option:`-I`." -#: ../Doc/c-api/init_config.rst:1280 +#: ../Doc/c-api/init_config.rst:1953 msgid "Set to ``0`` by the :envvar:`PYTHONNOUSERSITE` environment variable." -msgstr "Establecido en ``0`` por la variable de entorno :envvar:`PYTHONNOUSERSITE`." +msgstr "" +"Establecido en ``0`` por la variable de entorno :envvar:`PYTHONNOUSERSITE`." -#: ../Doc/c-api/init_config.rst:1286 +#: ../Doc/c-api/init_config.rst:1959 msgid "" -"Verbose mode. If greater than ``0``, print a message each time a module is imported, showing the " -"place (filename or built-in module) from which it is loaded." +"Verbose mode. If greater than ``0``, print a message each time a module is " +"imported, showing the place (filename or built-in module) from which it is " +"loaded." msgstr "" -"Modo detallado. Si es mayor que ``0``, imprime un mensaje cada vez que se importa un módulo, " -"mostrando el lugar (nombre de archivo o módulo incorporado) desde el que se carga." +"Modo detallado. Si es mayor que ``0``, imprime un mensaje cada vez que se " +"importa un módulo, mostrando el lugar (nombre de archivo o módulo " +"incorporado) desde el que se carga." -#: ../Doc/c-api/init_config.rst:1290 +#: ../Doc/c-api/init_config.rst:1963 msgid "" -"If greater than or equal to ``2``, print a message for each file that is checked for when searching " -"for a module. Also provides information on module cleanup at exit." +"If greater than or equal to ``2``, print a message for each file that is " +"checked for when searching for a module. Also provides information on module " +"cleanup at exit." msgstr "" -"Si es mayor o igual a ``2``, imprime un mensaje para cada archivo que se verifica al buscar un " -"módulo. También proporciona información sobre la limpieza del módulo al salir." +"Si es mayor o igual a ``2``, imprime un mensaje para cada archivo que se " +"verifica al buscar un módulo. También proporciona información sobre la " +"limpieza del módulo al salir." -#: ../Doc/c-api/init_config.rst:1294 +#: ../Doc/c-api/init_config.rst:1967 msgid "Incremented by the :option:`-v` command line option." msgstr "Incrementado por la opción de línea de comando :option:`-v`." -#: ../Doc/c-api/init_config.rst:1296 +#: ../Doc/c-api/init_config.rst:1969 msgid "Set by the :envvar:`PYTHONVERBOSE` environment variable value." -msgstr "Establecido por el valor de la variable de entorno :envvar:`PYTHONVERBOSE`." +msgstr "" +"Establecido por el valor de la variable de entorno :envvar:`PYTHONVERBOSE`." -#: ../Doc/c-api/init_config.rst:1302 +#: ../Doc/c-api/init_config.rst:1975 msgid "" -"Options of the :mod:`warnings` module to build warnings filters, lowest to highest priority: :data:" -"`sys.warnoptions`." +"Options of the :mod:`warnings` module to build warnings filters, lowest to " +"highest priority: :data:`sys.warnoptions`." msgstr "" -"Opciones del módulo :mod:`warnings` para crear filtros de advertencias, de menor a mayor prioridad: :" -"data:`sys.warnoptions`." +"Opciones del módulo :mod:`warnings` para crear filtros de advertencias, de " +"menor a mayor prioridad: :data:`sys.warnoptions`." -#: ../Doc/c-api/init_config.rst:1305 +#: ../Doc/c-api/init_config.rst:1978 msgid "" -"The :mod:`warnings` module adds :data:`sys.warnoptions` in the reverse order: the last :c:member:" -"`PyConfig.warnoptions` item becomes the first item of :data:`warnings.filters` which is checked first " -"(highest priority)." +"The :mod:`warnings` module adds :data:`sys.warnoptions` in the reverse " +"order: the last :c:member:`PyConfig.warnoptions` item becomes the first item " +"of :data:`warnings.filters` which is checked first (highest priority)." msgstr "" -"El módulo :mod:`warnings` agrega :data:`sys.warnoptions` en el orden inverso: el último elemento :c:" -"member:`PyConfig.warnoptions` se convierte en el primer elemento de :data:`warnings.filters` que es " -"verificado primero (máxima prioridad)." +"El módulo :mod:`warnings` agrega :data:`sys.warnoptions` en el orden " +"inverso: el último elemento :c:member:`PyConfig.warnoptions` se convierte en " +"el primer elemento de :data:`warnings.filters` que es verificado primero " +"(máxima prioridad)." -#: ../Doc/c-api/init_config.rst:1310 +#: ../Doc/c-api/init_config.rst:1983 msgid "" -"The :option:`-W` command line options adds its value to :c:member:`~PyConfig.warnoptions`, it can be " -"used multiple times." +"The :option:`-W` command line options adds its value to :c:member:`~PyConfig." +"warnoptions`, it can be used multiple times." msgstr "" -"Las opciones de la línea de comando :option:`-W` agregan su valor a :c:member:`~PyConfig." -"warnoptions`, se puede usar varias veces." +"Las opciones de la línea de comando :option:`-W` agregan su valor a :c:" +"member:`~PyConfig.warnoptions`, se puede usar varias veces." -#: ../Doc/c-api/init_config.rst:1313 +#: ../Doc/c-api/init_config.rst:1986 msgid "" -"The :envvar:`PYTHONWARNINGS` environment variable can also be used to add warning options. Multiple " -"options can be specified, separated by commas (``,``)." +"The :envvar:`PYTHONWARNINGS` environment variable can also be used to add " +"warning options. Multiple options can be specified, separated by commas (``," +"``)." msgstr "" -"La variable de entorno :envvar:`PYTHONWARNINGS` también se puede utilizar para agregar opciones de " -"advertencia. Se pueden especificar varias opciones, separadas por comas (``,``)." +"La variable de entorno :envvar:`PYTHONWARNINGS` también se puede utilizar " +"para agregar opciones de advertencia. Se pueden especificar varias opciones, " +"separadas por comas (``,``)." -#: ../Doc/c-api/init_config.rst:1321 -msgid "If equal to ``0``, Python won't try to write ``.pyc`` files on the import of source modules." -msgstr "Si es igual a ``0``, Python no intentará escribir archivos ``.pyc`` al importar módulos fuente." +#: ../Doc/c-api/init_config.rst:1994 +msgid "" +"If equal to ``0``, Python won't try to write ``.pyc`` files on the import of " +"source modules." +msgstr "" +"Si es igual a ``0``, Python no intentará escribir archivos ``.pyc`` al " +"importar módulos fuente." -#: ../Doc/c-api/init_config.rst:1324 +#: ../Doc/c-api/init_config.rst:1997 msgid "" -"Set to ``0`` by the :option:`-B` command line option and the :envvar:`PYTHONDONTWRITEBYTECODE` " -"environment variable." +"Set to ``0`` by the :option:`-B` command line option and the :envvar:" +"`PYTHONDONTWRITEBYTECODE` environment variable." msgstr "" -"Establecido en ``0`` por la opción de línea de comando :option:`-B` y la variable de entorno :envvar:" -"`PYTHONDONTWRITEBYTECODE`." +"Establecido en ``0`` por la opción de línea de comando :option:`-B` y la " +"variable de entorno :envvar:`PYTHONDONTWRITEBYTECODE`." -#: ../Doc/c-api/init_config.rst:1327 +#: ../Doc/c-api/init_config.rst:2000 msgid "" -":data:`sys.dont_write_bytecode` is initialized to the inverted value of :c:member:`~PyConfig." -"write_bytecode`." +":data:`sys.dont_write_bytecode` is initialized to the inverted value of :c:" +"member:`~PyConfig.write_bytecode`." msgstr "" -":data:`sys.dont_write_bytecode` se inicializa al valor invertido de :c:member:`~PyConfig." -"write_bytecode`." +":data:`sys.dont_write_bytecode` se inicializa al valor invertido de :c:" +"member:`~PyConfig.write_bytecode`." -#: ../Doc/c-api/init_config.rst:1334 +#: ../Doc/c-api/init_config.rst:2007 msgid "Values of the :option:`-X` command line options: :data:`sys._xoptions`." -msgstr "Valores de las opciones de la línea de comando :option:`-X`: :data:`sys._xoptions`." +msgstr "" +"Valores de las opciones de la línea de comando :option:`-X`: :data:`sys." +"_xoptions`." + +#: ../Doc/c-api/init_config.rst:2013 +msgid "If non-zero, write performance statistics at Python exit." +msgstr "" -#: ../Doc/c-api/init_config.rst:1338 +#: ../Doc/c-api/init_config.rst:2015 +#, fuzzy msgid "" -"If :c:member:`~PyConfig.parse_argv` is non-zero, :c:member:`~PyConfig.argv` arguments are parsed the " -"same way the regular Python parses :ref:`command line arguments `, and Python " -"arguments are stripped from :c:member:`~PyConfig.argv`." +"Need a special build with the ``Py_STATS`` macro: see :option:`--enable-" +"pystats`." msgstr "" -"Si :c:member:`~PyConfig.parse_argv` no es cero, los argumentos de :c:member:`~PyConfig.argv` se " -"analizan de la misma forma que Python normal analiza :ref:`argumentos de línea de comando `, y los argumentos de Python se eliminan de :c:member:`~PyConfig.argv`." +"Necesita una compilación especial de Python con la macro ``Py_TRACE_REFS`` " +"definida: consulte la opción :option:`configure --with-trace-refs <--with-" +"trace-refs>`." -#: ../Doc/c-api/init_config.rst:1343 +#: ../Doc/c-api/init_config.rst:2020 msgid "" -"The :c:member:`~PyConfig.xoptions` options are parsed to set other options: see the :option:`-X` " -"command line option." +"If :c:member:`~PyConfig.parse_argv` is non-zero, :c:member:`~PyConfig.argv` " +"arguments are parsed the same way the regular Python parses :ref:`command " +"line arguments `, and Python arguments are stripped from :" +"c:member:`~PyConfig.argv`." msgstr "" -"Las opciones de :c:member:`~PyConfig.xoptions` se analizan para establecer otras opciones: consulte " -"la opción de línea de comando :option:`-X`." +"Si :c:member:`~PyConfig.parse_argv` no es cero, los argumentos de :c:member:" +"`~PyConfig.argv` se analizan de la misma forma que Python normal analiza :" +"ref:`argumentos de línea de comando `, y los argumentos de " +"Python se eliminan de :c:member:`~PyConfig.argv`." -#: ../Doc/c-api/init_config.rst:1348 +#: ../Doc/c-api/init_config.rst:2025 +msgid "" +"The :c:member:`~PyConfig.xoptions` options are parsed to set other options: " +"see the :option:`-X` command line option." +msgstr "" +"Las opciones de :c:member:`~PyConfig.xoptions` se analizan para establecer " +"otras opciones: consulte la opción de línea de comando :option:`-X`." + +#: ../Doc/c-api/init_config.rst:2030 msgid "The ``show_alloc_count`` field has been removed." msgstr "El campo ``show_alloc_count`` fue removido." -#: ../Doc/c-api/init_config.rst:1352 +#: ../Doc/c-api/init_config.rst:2036 msgid "Initialization with PyConfig" msgstr "Inicialización con PyConfig" -#: ../Doc/c-api/init_config.rst:1354 -msgid "Function to initialize Python:" -msgstr "Función para inicializar Python:" - -#: ../Doc/c-api/init_config.rst:1358 -msgid "Initialize Python from *config* configuration." -msgstr "Inicializa Python desde la configuración *config*." +#: ../Doc/c-api/init_config.rst:2038 +msgid "" +"Initializing the interpreter from a populated configuration struct is " +"handled by calling :c:func:`Py_InitializeFromConfig`." +msgstr "" -#: ../Doc/c-api/init_config.rst:1363 +#: ../Doc/c-api/init_config.rst:2044 msgid "" -"If :c:func:`PyImport_FrozenModules`, :c:func:`PyImport_AppendInittab` or :c:func:" -"`PyImport_ExtendInittab` are used, they must be set or called after Python preinitialization and " -"before the Python initialization. If Python is initialized multiple times, :c:func:" -"`PyImport_AppendInittab` or :c:func:`PyImport_ExtendInittab` must be called before each Python " -"initialization." +"If :c:func:`PyImport_FrozenModules`, :c:func:`PyImport_AppendInittab` or :c:" +"func:`PyImport_ExtendInittab` are used, they must be set or called after " +"Python preinitialization and before the Python initialization. If Python is " +"initialized multiple times, :c:func:`PyImport_AppendInittab` or :c:func:" +"`PyImport_ExtendInittab` must be called before each Python initialization." msgstr "" -"Si se utilizan :c:func:`PyImport_FrozenModules`, :c:func:`PyImport_AppendInittab` o :c:func:" -"`PyImport_ExtendInittab`, deben establecerse o llamarse después de la preinicialización de Python y " -"antes de la inicialización de Python. Si Python se inicializa varias veces, se debe llamar a :c:func:" -"`PyImport_AppendInittab` o :c:func:`PyImport_ExtendInittab` antes de cada inicialización de Python." +"Si se utilizan :c:func:`PyImport_FrozenModules`, :c:func:" +"`PyImport_AppendInittab` o :c:func:`PyImport_ExtendInittab`, deben " +"establecerse o llamarse después de la preinicialización de Python y antes de " +"la inicialización de Python. Si Python se inicializa varias veces, se debe " +"llamar a :c:func:`PyImport_AppendInittab` o :c:func:`PyImport_ExtendInittab` " +"antes de cada inicialización de Python." -#: ../Doc/c-api/init_config.rst:1370 -msgid "The current configuration (``PyConfig`` type) is stored in ``PyInterpreterState.config``." -msgstr "La configuración actual (tipo ``PyConfig``) se almacena en ``PyInterpreterState.config``." +#: ../Doc/c-api/init_config.rst:2051 +msgid "" +"The current configuration (``PyConfig`` type) is stored in " +"``PyInterpreterState.config``." +msgstr "" +"La configuración actual (tipo ``PyConfig``) se almacena en " +"``PyInterpreterState.config``." -#: ../Doc/c-api/init_config.rst:1373 +#: ../Doc/c-api/init_config.rst:2054 msgid "Example setting the program name::" msgstr "Ejemplo de configuración del nombre del programa::" -#: ../Doc/c-api/init_config.rst:1375 +#: ../Doc/c-api/init_config.rst:2056 msgid "" "void init_python(void)\n" "{\n" @@ -2127,20 +3685,22 @@ msgstr "" " Py_ExitStatusException(status);\n" "}" -#: ../Doc/c-api/init_config.rst:1401 +#: ../Doc/c-api/init_config.rst:2082 msgid "" -"More complete example modifying the default configuration, read the configuration, and then override " -"some parameters. Note that since 3.11, many parameters are not calculated until initialization, and " -"so values cannot be read from the configuration structure. Any values set before initialize is called " -"will be left unchanged by initialization::" +"More complete example modifying the default configuration, read the " +"configuration, and then override some parameters. Note that since 3.11, many " +"parameters are not calculated until initialization, and so values cannot be " +"read from the configuration structure. Any values set before initialize is " +"called will be left unchanged by initialization::" msgstr "" -"Ejemplo más completo modificando la configuración predeterminada, lee la configuración y luego anula " -"algunos parámetros. Ten en cuenta que, desde la versión 3.11, muchos parámetros no se calculan hasta " -"la inicialización, por lo que los valores no se pueden leer desde la estructura de configuración. " -"Cualquier valor establecido antes de llamar a la inicialización se dejará sin cambios por la " -"inicialización::" +"Ejemplo más completo modificando la configuración predeterminada, lee la " +"configuración y luego anula algunos parámetros. Ten en cuenta que, desde la " +"versión 3.11, muchos parámetros no se calculan hasta la inicialización, por " +"lo que los valores no se pueden leer desde la estructura de configuración. " +"Cualquier valor establecido antes de llamar a la inicialización se dejará " +"sin cambios por la inicialización::" -#: ../Doc/c-api/init_config.rst:1408 +#: ../Doc/c-api/init_config.rst:2089 msgid "" "PyStatus init_python(const char *program_name)\n" "{\n" @@ -2246,526 +3806,618 @@ msgstr "" " return status;\n" "}" -#: ../Doc/c-api/init_config.rst:1464 +#: ../Doc/c-api/init_config.rst:2145 msgid "Isolated Configuration" msgstr "Configuración aislada" -#: ../Doc/c-api/init_config.rst:1466 +#: ../Doc/c-api/init_config.rst:2147 msgid "" -":c:func:`PyPreConfig_InitIsolatedConfig` and :c:func:`PyConfig_InitIsolatedConfig` functions create a " -"configuration to isolate Python from the system. For example, to embed Python into an application." +":c:func:`PyPreConfig_InitIsolatedConfig` and :c:func:" +"`PyConfig_InitIsolatedConfig` functions create a configuration to isolate " +"Python from the system. For example, to embed Python into an application." msgstr "" -":c:func:`PyPreConfig_InitIsolatedConfig` y las funciones :c:func:`PyConfig_InitIsolatedConfig` crean " -"una configuración para aislar Python del sistema. Por ejemplo, para incrustar Python en una " -"aplicación." +":c:func:`PyPreConfig_InitIsolatedConfig` y las funciones :c:func:" +"`PyConfig_InitIsolatedConfig` crean una configuración para aislar Python del " +"sistema. Por ejemplo, para incrustar Python en una aplicación." -#: ../Doc/c-api/init_config.rst:1471 +#: ../Doc/c-api/init_config.rst:2152 msgid "" -"This configuration ignores global configuration variables, environment variables, command line " -"arguments (:c:member:`PyConfig.argv` is not parsed) and user site directory. The C standard streams " -"(ex: ``stdout``) and the LC_CTYPE locale are left unchanged. Signal handlers are not installed." +"This configuration ignores global configuration variables, environment " +"variables, command line arguments (:c:member:`PyConfig.argv` is not parsed) " +"and user site directory. The C standard streams (ex: ``stdout``) and the " +"LC_CTYPE locale are left unchanged. Signal handlers are not installed." msgstr "" -"Esta configuración ignora las variables de configuración global, las variables de entorno, los " -"argumentos de la línea de comandos (:c:member:`PyConfig.argv` no se analizan) y el directorio del " -"sitio del usuario. Los flujos estándar de C (por ejemplo, ``stdout``) y la configuración regional " +"Esta configuración ignora las variables de configuración global, las " +"variables de entorno, los argumentos de la línea de comandos (:c:member:" +"`PyConfig.argv` no se analizan) y el directorio del sitio del usuario. Los " +"flujos estándar de C (por ejemplo, ``stdout``) y la configuración regional " "LC_CTYPE no se modifican. Los manejadores de señales no están instalados." -#: ../Doc/c-api/init_config.rst:1476 +#: ../Doc/c-api/init_config.rst:2157 msgid "" -"Configuration files are still used with this configuration to determine paths that are unspecified. " -"Ensure :c:member:`PyConfig.home` is specified to avoid computing the default path configuration." +"Configuration files are still used with this configuration to determine " +"paths that are unspecified. Ensure :c:member:`PyConfig.home` is specified to " +"avoid computing the default path configuration." msgstr "" -"Los archivos de configuración se siguen utilizando con esta configuración para determinar las rutas " -"que no se especifican. Asegúrese de que se especifica :c:member:`PyConfig.home` para evitar que se " -"calcule la configuración de la ruta por defecto." +"Los archivos de configuración se siguen utilizando con esta configuración " +"para determinar las rutas que no se especifican. Asegúrese de que se " +"especifica :c:member:`PyConfig.home` para evitar que se calcule la " +"configuración de la ruta por defecto." -#: ../Doc/c-api/init_config.rst:1484 +#: ../Doc/c-api/init_config.rst:2165 msgid "Python Configuration" msgstr "Configuración de Python" -#: ../Doc/c-api/init_config.rst:1486 +#: ../Doc/c-api/init_config.rst:2167 msgid "" -":c:func:`PyPreConfig_InitPythonConfig` and :c:func:`PyConfig_InitPythonConfig` functions create a " -"configuration to build a customized Python which behaves as the regular Python." +":c:func:`PyPreConfig_InitPythonConfig` and :c:func:" +"`PyConfig_InitPythonConfig` functions create a configuration to build a " +"customized Python which behaves as the regular Python." msgstr "" -":c:func:`PyPreConfig_InitPythonConfig` y las funciones :c:func:`PyConfig_InitPythonConfig` crean una " -"configuración para construir un Python personalizado que se comporta como el Python normal." +":c:func:`PyPreConfig_InitPythonConfig` y las funciones :c:func:" +"`PyConfig_InitPythonConfig` crean una configuración para construir un Python " +"personalizado que se comporta como el Python normal." -#: ../Doc/c-api/init_config.rst:1490 +#: ../Doc/c-api/init_config.rst:2171 msgid "" -"Environments variables and command line arguments are used to configure Python, whereas global " -"configuration variables are ignored." +"Environments variables and command line arguments are used to configure " +"Python, whereas global configuration variables are ignored." msgstr "" -"Las variables de entorno y los argumentos de la línea de comandos se utilizan para configurar Python, " -"mientras que las variables de configuración global se ignoran." +"Las variables de entorno y los argumentos de la línea de comandos se " +"utilizan para configurar Python, mientras que las variables de configuración " +"global se ignoran." -#: ../Doc/c-api/init_config.rst:1493 +#: ../Doc/c-api/init_config.rst:2174 msgid "" -"This function enables C locale coercion (:pep:`538`) and :ref:`Python UTF-8 Mode ` (:pep:" -"`540`) depending on the LC_CTYPE locale, :envvar:`PYTHONUTF8` and :envvar:`PYTHONCOERCECLOCALE` " -"environment variables." +"This function enables C locale coercion (:pep:`538`) and :ref:`Python UTF-8 " +"Mode ` (:pep:`540`) depending on the LC_CTYPE locale, :envvar:" +"`PYTHONUTF8` and :envvar:`PYTHONCOERCECLOCALE` environment variables." msgstr "" -"Esta función habilita la coerción de configuración regional C (:pep:`538`) y :ref:`Python UTF-8 Mode " -"` (:pep:`540`) según la configuración regional LC_CTYPE, las variables de entorno :envvar:" -"`PYTHONUTF8` y :envvar:`PYTHONCOERCECLOCALE`." +"Esta función habilita la coerción de configuración regional C (:pep:`538`) " +"y :ref:`Python UTF-8 Mode ` (:pep:`540`) según la configuración " +"regional LC_CTYPE, las variables de entorno :envvar:`PYTHONUTF8` y :envvar:" +"`PYTHONCOERCECLOCALE`." -#: ../Doc/c-api/init_config.rst:1502 +#: ../Doc/c-api/init_config.rst:2183 msgid "Python Path Configuration" msgstr "Configuración de la ruta de Python" -#: ../Doc/c-api/init_config.rst:1504 +#: ../Doc/c-api/init_config.rst:2185 msgid ":c:type:`PyConfig` contains multiple fields for the path configuration:" -msgstr ":c:type:`PyConfig` contiene múltiples campos para la configuración de ruta:" +msgstr "" +":c:type:`PyConfig` contiene múltiples campos para la configuración de ruta:" -#: ../Doc/c-api/init_config.rst:1506 +#: ../Doc/c-api/init_config.rst:2187 msgid "Path configuration inputs:" msgstr "Entradas de configuración de ruta:" -#: ../Doc/c-api/init_config.rst:1508 +#: ../Doc/c-api/init_config.rst:2189 msgid ":c:member:`PyConfig.home`" msgstr ":c:member:`PyConfig.home`" -#: ../Doc/c-api/init_config.rst:1509 +#: ../Doc/c-api/init_config.rst:2190 msgid ":c:member:`PyConfig.platlibdir`" msgstr ":c:member:`PyConfig.platlibdir`" -#: ../Doc/c-api/init_config.rst:1510 +#: ../Doc/c-api/init_config.rst:2191 msgid ":c:member:`PyConfig.pathconfig_warnings`" msgstr ":c:member:`PyConfig.pathconfig_warnings`" -#: ../Doc/c-api/init_config.rst:1511 +#: ../Doc/c-api/init_config.rst:2192 msgid ":c:member:`PyConfig.program_name`" msgstr ":c:member:`PyConfig.program_name`" -#: ../Doc/c-api/init_config.rst:1512 +#: ../Doc/c-api/init_config.rst:2193 msgid ":c:member:`PyConfig.pythonpath_env`" msgstr ":c:member:`PyConfig.pythonpath_env`" -#: ../Doc/c-api/init_config.rst:1513 +#: ../Doc/c-api/init_config.rst:2194 msgid "current working directory: to get absolute paths" msgstr "directorio de trabajo actual: para obtener rutas absolutas" -#: ../Doc/c-api/init_config.rst:1514 +#: ../Doc/c-api/init_config.rst:2195 msgid "" -"``PATH`` environment variable to get the program full path (from :c:member:`PyConfig.program_name`)" +"``PATH`` environment variable to get the program full path (from :c:member:" +"`PyConfig.program_name`)" msgstr "" -"Variable de entorno ``PATH`` para obtener la ruta completa del programa (de :c:member:`PyConfig." -"program_name`)" +"Variable de entorno ``PATH`` para obtener la ruta completa del programa (de :" +"c:member:`PyConfig.program_name`)" -#: ../Doc/c-api/init_config.rst:1516 +#: ../Doc/c-api/init_config.rst:2197 msgid "``__PYVENV_LAUNCHER__`` environment variable" msgstr "Variable de entorno ``__PYVENV_LAUNCHER__``" -#: ../Doc/c-api/init_config.rst:1517 +#: ../Doc/c-api/init_config.rst:2198 msgid "" -"(Windows only) Application paths in the registry under \"Software\\Python\\PythonCore\\X." -"Y\\PythonPath\" of HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE (where X.Y is the Python version)." +"(Windows only) Application paths in the registry under " +"\"Software\\Python\\PythonCore\\X.Y\\PythonPath\" of HKEY_CURRENT_USER and " +"HKEY_LOCAL_MACHINE (where X.Y is the Python version)." msgstr "" -"(Solo Windows) Rutas de aplicación en el registro en \"Software\\Python\\PythonCore\\X." -"Y\\PythonPath\" de HKEY_CURRENT_USER y HKEY_LOCAL_MACHINE (donde X.Y es la versión de Python)." +"(Solo Windows) Rutas de aplicación en el registro en " +"\"Software\\Python\\PythonCore\\X.Y\\PythonPath\" de HKEY_CURRENT_USER y " +"HKEY_LOCAL_MACHINE (donde X.Y es la versión de Python)." -#: ../Doc/c-api/init_config.rst:1521 +#: ../Doc/c-api/init_config.rst:2202 msgid "Path configuration output fields:" msgstr "Campos de salida de configuración de ruta:" -#: ../Doc/c-api/init_config.rst:1523 +#: ../Doc/c-api/init_config.rst:2204 msgid ":c:member:`PyConfig.base_exec_prefix`" msgstr ":c:member:`PyConfig.base_exec_prefix`" -#: ../Doc/c-api/init_config.rst:1524 +#: ../Doc/c-api/init_config.rst:2205 msgid ":c:member:`PyConfig.base_executable`" msgstr ":c:member:`PyConfig.base_executable`" -#: ../Doc/c-api/init_config.rst:1525 +#: ../Doc/c-api/init_config.rst:2206 msgid ":c:member:`PyConfig.base_prefix`" msgstr ":c:member:`PyConfig.base_prefix`" -#: ../Doc/c-api/init_config.rst:1526 +#: ../Doc/c-api/init_config.rst:2207 msgid ":c:member:`PyConfig.exec_prefix`" msgstr ":c:member:`PyConfig.exec_prefix`" -#: ../Doc/c-api/init_config.rst:1527 +#: ../Doc/c-api/init_config.rst:2208 msgid ":c:member:`PyConfig.executable`" msgstr ":c:member:`PyConfig.executable`" -#: ../Doc/c-api/init_config.rst:1528 -msgid ":c:member:`PyConfig.module_search_paths_set`, :c:member:`PyConfig.module_search_paths`" -msgstr ":c:member:`PyConfig.module_search_paths_set`, :c:member:`PyConfig.module_search_paths`" +#: ../Doc/c-api/init_config.rst:2209 +msgid "" +":c:member:`PyConfig.module_search_paths_set`, :c:member:`PyConfig." +"module_search_paths`" +msgstr "" +":c:member:`PyConfig.module_search_paths_set`, :c:member:`PyConfig." +"module_search_paths`" -#: ../Doc/c-api/init_config.rst:1530 +#: ../Doc/c-api/init_config.rst:2211 msgid ":c:member:`PyConfig.prefix`" msgstr ":c:member:`PyConfig.prefix`" -#: ../Doc/c-api/init_config.rst:1532 +#: ../Doc/c-api/init_config.rst:2213 msgid "" -"If at least one \"output field\" is not set, Python calculates the path configuration to fill unset " -"fields. If :c:member:`~PyConfig.module_search_paths_set` is equal to ``0``, :c:member:`~PyConfig." -"module_search_paths` is overridden and :c:member:`~PyConfig.module_search_paths_set` is set to ``1``." +"If at least one \"output field\" is not set, Python calculates the path " +"configuration to fill unset fields. If :c:member:`~PyConfig." +"module_search_paths_set` is equal to ``0``, :c:member:`~PyConfig." +"module_search_paths` is overridden and :c:member:`~PyConfig." +"module_search_paths_set` is set to ``1``." msgstr "" -"Si al menos un \"campo de salida\" no está establecido, Python calcula la configuración de la ruta " -"para rellenar los campos no establecidos. Si :c:member:`~PyConfig.module_search_paths_set` es igual a " -"``0``, :c:member:`~PyConfig.module_search_paths` se anula y :c:member:`~PyConfig." +"Si al menos un \"campo de salida\" no está establecido, Python calcula la " +"configuración de la ruta para rellenar los campos no establecidos. Si :c:" +"member:`~PyConfig.module_search_paths_set` es igual a ``0``, :c:member:" +"`~PyConfig.module_search_paths` se anula y :c:member:`~PyConfig." "module_search_paths_set` se establece en ``1``." -#: ../Doc/c-api/init_config.rst:1538 +#: ../Doc/c-api/init_config.rst:2219 msgid "" -"It is possible to completely ignore the function calculating the default path configuration by " -"setting explicitly all path configuration output fields listed above. A string is considered as set " -"even if it is non-empty. ``module_search_paths`` is considered as set if ``module_search_paths_set`` " -"is set to ``1``. In this case, ``module_search_paths`` will be used without modification." +"It is possible to completely ignore the function calculating the default " +"path configuration by setting explicitly all path configuration output " +"fields listed above. A string is considered as set even if it is non-empty. " +"``module_search_paths`` is considered as set if ``module_search_paths_set`` " +"is set to ``1``. In this case, ``module_search_paths`` will be used without " +"modification." msgstr "" -"Es posible ignorar completamente la función que calcula la configuración de ruta predeterminada " -"estableciendo explícitamente todos los campos de salida de configuración de ruta mencionados " -"anteriormente. Una cadena se considera establecida incluso si no está vacía. ``module_search_paths`` " -"se considera establecido si ``module_search_paths_set`` se establece en ``1``. En este caso, " -"``module_search_paths`` se utilizará sin modificaciones." +"Es posible ignorar completamente la función que calcula la configuración de " +"ruta predeterminada estableciendo explícitamente todos los campos de salida " +"de configuración de ruta mencionados anteriormente. Una cadena se considera " +"establecida incluso si no está vacía. ``module_search_paths`` se considera " +"establecido si ``module_search_paths_set`` se establece en ``1``. En este " +"caso, ``module_search_paths`` se utilizará sin modificaciones." -#: ../Doc/c-api/init_config.rst:1545 +#: ../Doc/c-api/init_config.rst:2226 msgid "" -"Set :c:member:`~PyConfig.pathconfig_warnings` to ``0`` to suppress warnings when calculating the path " -"configuration (Unix only, Windows does not log any warning)." +"Set :c:member:`~PyConfig.pathconfig_warnings` to ``0`` to suppress warnings " +"when calculating the path configuration (Unix only, Windows does not log any " +"warning)." msgstr "" -"Establezca :c:member:`~PyConfig.pathconfig_warnings` en ``0`` para suprimir las advertencias al " -"calcular la configuración de la ruta (solo Unix, Windows no registra ninguna advertencia)." +"Establezca :c:member:`~PyConfig.pathconfig_warnings` en ``0`` para suprimir " +"las advertencias al calcular la configuración de la ruta (solo Unix, Windows " +"no registra ninguna advertencia)." -#: ../Doc/c-api/init_config.rst:1548 +#: ../Doc/c-api/init_config.rst:2229 msgid "" -"If :c:member:`~PyConfig.base_prefix` or :c:member:`~PyConfig.base_exec_prefix` fields are not set, " -"they inherit their value from :c:member:`~PyConfig.prefix` and :c:member:`~PyConfig.exec_prefix` " -"respectively." +"If :c:member:`~PyConfig.base_prefix` or :c:member:`~PyConfig." +"base_exec_prefix` fields are not set, they inherit their value from :c:" +"member:`~PyConfig.prefix` and :c:member:`~PyConfig.exec_prefix` respectively." msgstr "" -"Si :c:member:`~PyConfig.base_prefix` o los campos :c:member:`~PyConfig.base_exec_prefix` no están " -"establecidos, heredan su valor de :c:member:`~PyConfig.prefix` y :c:member:`~PyConfig.exec_prefix` " -"respectivamente." +"Si :c:member:`~PyConfig.base_prefix` o los campos :c:member:`~PyConfig." +"base_exec_prefix` no están establecidos, heredan su valor de :c:member:" +"`~PyConfig.prefix` y :c:member:`~PyConfig.exec_prefix` respectivamente." -#: ../Doc/c-api/init_config.rst:1552 +#: ../Doc/c-api/init_config.rst:2233 msgid ":c:func:`Py_RunMain` and :c:func:`Py_Main` modify :data:`sys.path`:" msgstr ":c:func:`Py_RunMain` y :c:func:`Py_Main` modifican :data:`sys.path`:" -#: ../Doc/c-api/init_config.rst:1554 +#: ../Doc/c-api/init_config.rst:2235 msgid "" -"If :c:member:`~PyConfig.run_filename` is set and is a directory which contains a ``__main__.py`` " -"script, prepend :c:member:`~PyConfig.run_filename` to :data:`sys.path`." +"If :c:member:`~PyConfig.run_filename` is set and is a directory which " +"contains a ``__main__.py`` script, prepend :c:member:`~PyConfig." +"run_filename` to :data:`sys.path`." msgstr "" -"Si :c:member:`~PyConfig.run_filename` está configurado y es un directorio que contiene un script " -"``__main__.py``, anteponga :c:member:`~PyConfig.run_filename` a :data:`sys.path`." +"Si :c:member:`~PyConfig.run_filename` está configurado y es un directorio " +"que contiene un script ``__main__.py``, anteponga :c:member:`~PyConfig." +"run_filename` a :data:`sys.path`." -#: ../Doc/c-api/init_config.rst:1557 +#: ../Doc/c-api/init_config.rst:2238 msgid "If :c:member:`~PyConfig.isolated` is zero:" msgstr "Si :c:member:`~PyConfig.isolated` es cero:" -#: ../Doc/c-api/init_config.rst:1559 +#: ../Doc/c-api/init_config.rst:2240 msgid "" -"If :c:member:`~PyConfig.run_module` is set, prepend the current directory to :data:`sys.path`. Do " -"nothing if the current directory cannot be read." +"If :c:member:`~PyConfig.run_module` is set, prepend the current directory " +"to :data:`sys.path`. Do nothing if the current directory cannot be read." msgstr "" -"Si :c:member:`~PyConfig.run_module` está configurado, anteponga el directorio actual a :data:`sys." -"path`. No haga nada si el directorio actual no se puede leer." +"Si :c:member:`~PyConfig.run_module` está configurado, anteponga el " +"directorio actual a :data:`sys.path`. No haga nada si el directorio actual " +"no se puede leer." -#: ../Doc/c-api/init_config.rst:1561 +#: ../Doc/c-api/init_config.rst:2242 msgid "" -"If :c:member:`~PyConfig.run_filename` is set, prepend the directory of the filename to :data:`sys." -"path`." +"If :c:member:`~PyConfig.run_filename` is set, prepend the directory of the " +"filename to :data:`sys.path`." msgstr "" -"Si :c:member:`~PyConfig.run_filename` está configurado, anteponga el directorio del nombre del " -"archivo a :data:`sys.path`." +"Si :c:member:`~PyConfig.run_filename` está configurado, anteponga el " +"directorio del nombre del archivo a :data:`sys.path`." -#: ../Doc/c-api/init_config.rst:1563 +#: ../Doc/c-api/init_config.rst:2244 msgid "Otherwise, prepend an empty string to :data:`sys.path`." -msgstr "De lo contrario, anteponga una cadena de caracteres vacía a :data:`sys.path`." +msgstr "" +"De lo contrario, anteponga una cadena de caracteres vacía a :data:`sys.path`." -#: ../Doc/c-api/init_config.rst:1565 +#: ../Doc/c-api/init_config.rst:2246 msgid "" -"If :c:member:`~PyConfig.site_import` is non-zero, :data:`sys.path` can be modified by the :mod:`site` " -"module. If :c:member:`~PyConfig.user_site_directory` is non-zero and the user's site-package " -"directory exists, the :mod:`site` module appends the user's site-package directory to :data:`sys." -"path`." +"If :c:member:`~PyConfig.site_import` is non-zero, :data:`sys.path` can be " +"modified by the :mod:`site` module. If :c:member:`~PyConfig." +"user_site_directory` is non-zero and the user's site-package directory " +"exists, the :mod:`site` module appends the user's site-package directory to :" +"data:`sys.path`." msgstr "" -"Si :c:member:`~PyConfig.site_import` no es cero, :data:`sys.path` puede ser modificado por el módulo :" -"mod:`site`. Si :c:member:`~PyConfig.user_site_directory` no es cero y el directorio del paquete del " -"sitio del usuario existe, el módulo :mod:`site` agrega el directorio del paquete del sitio del " -"usuario a :data:`sys.path`." +"Si :c:member:`~PyConfig.site_import` no es cero, :data:`sys.path` puede ser " +"modificado por el módulo :mod:`site`. Si :c:member:`~PyConfig." +"user_site_directory` no es cero y el directorio del paquete del sitio del " +"usuario existe, el módulo :mod:`site` agrega el directorio del paquete del " +"sitio del usuario a :data:`sys.path`." -#: ../Doc/c-api/init_config.rst:1571 +#: ../Doc/c-api/init_config.rst:2252 msgid "The following configuration files are used by the path configuration:" -msgstr "La configuración de ruta utiliza los siguientes archivos de configuración:" +msgstr "" +"La configuración de ruta utiliza los siguientes archivos de configuración:" -#: ../Doc/c-api/init_config.rst:1573 +#: ../Doc/c-api/init_config.rst:2254 msgid "``pyvenv.cfg``" msgstr "``pyvenv.cfg``" -#: ../Doc/c-api/init_config.rst:1574 +#: ../Doc/c-api/init_config.rst:2255 msgid "``._pth`` file (ex: ``python._pth``)" msgstr "archivo ``._pth`` (ej: ``python._pth``)" -#: ../Doc/c-api/init_config.rst:1575 +#: ../Doc/c-api/init_config.rst:2256 msgid "``pybuilddir.txt`` (Unix only)" msgstr "``pybuilddir.txt`` (sólo Unix)" -#: ../Doc/c-api/init_config.rst:1577 +#: ../Doc/c-api/init_config.rst:2258 msgid "If a ``._pth`` file is present:" msgstr "Si un archivo ``._pth`` está presente:" -#: ../Doc/c-api/init_config.rst:1579 +#: ../Doc/c-api/init_config.rst:2260 msgid "Set :c:member:`~PyConfig.isolated` to ``1``." msgstr "Establezca :c:member:`~PyConfig.isolated` en ``1``." -#: ../Doc/c-api/init_config.rst:1580 +#: ../Doc/c-api/init_config.rst:2261 msgid "Set :c:member:`~PyConfig.use_environment` to ``0``." msgstr "Establezca :c:member:`~PyConfig.use_environment` en ``0``." -#: ../Doc/c-api/init_config.rst:1581 +#: ../Doc/c-api/init_config.rst:2262 msgid "Set :c:member:`~PyConfig.site_import` to ``0``." msgstr "Establezca :c:member:`~PyConfig.site_import` en ``0``." -#: ../Doc/c-api/init_config.rst:1582 +#: ../Doc/c-api/init_config.rst:2263 msgid "Set :c:member:`~PyConfig.safe_path` to ``1``." msgstr "Establezca :c:member:`~PyConfig.safe_path` en ``1``." -#: ../Doc/c-api/init_config.rst:1584 -msgid "" -"The ``__PYVENV_LAUNCHER__`` environment variable is used to set :c:member:`PyConfig.base_executable`." -msgstr "" -"La variable de entorno ``__PYVENV_LAUNCHER__`` se usa para establecer :c:member:`PyConfig." -"base_executable`." - -#: ../Doc/c-api/init_config.rst:1589 -msgid "Py_RunMain()" -msgstr "Py_RunMain()" - -#: ../Doc/c-api/init_config.rst:1593 +#: ../Doc/c-api/init_config.rst:2265 msgid "" -"Execute the command (:c:member:`PyConfig.run_command`), the script (:c:member:`PyConfig." -"run_filename`) or the module (:c:member:`PyConfig.run_module`) specified on the command line or in " -"the configuration." +"If :c:member:`~PyConfig.home` is not set and a ``pyvenv.cfg`` file is " +"present in the same directory as :c:member:`~PyConfig.executable`, or its " +"parent, :c:member:`~PyConfig.prefix` and :c:member:`~PyConfig.exec_prefix` " +"are set that location. When this happens, :c:member:`~PyConfig.base_prefix` " +"and :c:member:`~PyConfig.base_exec_prefix` still keep their value, pointing " +"to the base installation. See :ref:`sys-path-init-virtual-environments` for " +"more information." msgstr "" -"Ejecuta el comando (:c:member:`PyConfig.run_command`), el script (:c:member:`PyConfig.run_filename`) " -"o el módulo (:c:member:`PyConfig.run_module`) especificado en la línea de comando o en la " -"configuración." - -#: ../Doc/c-api/init_config.rst:1598 -msgid "By default and when if :option:`-i` option is used, run the REPL." -msgstr "Por defecto y cuando se usa la opción :option:`-i`, ejecuta el REPL." -#: ../Doc/c-api/init_config.rst:1600 +#: ../Doc/c-api/init_config.rst:2273 msgid "" -"Finally, finalizes Python and returns an exit status that can be passed to the ``exit()`` function." +"The ``__PYVENV_LAUNCHER__`` environment variable is used to set :c:member:" +"`PyConfig.base_executable`." msgstr "" -"Finalmente, finaliza Python y retorna un estado de salida que se puede pasar a la función ``exit()``." +"La variable de entorno ``__PYVENV_LAUNCHER__`` se usa para establecer :c:" +"member:`PyConfig.base_executable`." -#: ../Doc/c-api/init_config.rst:1603 +#: ../Doc/c-api/init_config.rst:2278 msgid "" -"See :ref:`Python Configuration ` for an example of customized Python always " -"running in isolated mode using :c:func:`Py_RunMain`." +":c:member:`~PyConfig.prefix`, and :c:member:`~PyConfig.exec_prefix`, are now " +"set to the ``pyvenv.cfg`` directory. This was previously done by :mod:" +"`site`, therefore affected by :option:`-S`." msgstr "" -"Consulte :ref:`Configuración de Python ` para ver un ejemplo de Python " -"personalizado que siempre se ejecuta en modo aislado usando :c:func:`Py_RunMain`." -#: ../Doc/c-api/init_config.rst:1609 +#: ../Doc/c-api/init_config.rst:2284 msgid "Py_GetArgcArgv()" msgstr "Py_GetArgcArgv()" -#: ../Doc/c-api/init_config.rst:1613 +#: ../Doc/c-api/init_config.rst:2288 msgid "Get the original command line arguments, before Python modified them." -msgstr "Obtiene los argumentos originales de la línea de comandos, antes de que Python los modificara." +msgstr "" +"Obtiene los argumentos originales de la línea de comandos, antes de que " +"Python los modificara." -#: ../Doc/c-api/init_config.rst:1615 +#: ../Doc/c-api/init_config.rst:2290 msgid "See also :c:member:`PyConfig.orig_argv` member." msgstr "Ver también el miembro :c:member:`PyConfig.orig_argv`." -#: ../Doc/c-api/init_config.rst:1619 -msgid "Multi-Phase Initialization Private Provisional API" -msgstr "API Provisional Privada de Inicialización Multifásica" - -#: ../Doc/c-api/init_config.rst:1621 -msgid "" -"This section is a private provisional API introducing multi-phase initialization, the core feature " -"of :pep:`432`:" -msgstr "" -"Esta sección es una API provisional privada que introduce la inicialización multifase, la " -"característica principal de :pep:`432`:" - -#: ../Doc/c-api/init_config.rst:1624 -msgid "\"Core\" initialization phase, \"bare minimum Python\":" -msgstr "Fase de inicialización \"Core\", \"Python mínimo\":" - -#: ../Doc/c-api/init_config.rst:1626 -msgid "Builtin types;" -msgstr "Tipos incorporados;" - -#: ../Doc/c-api/init_config.rst:1627 -msgid "Builtin exceptions;" -msgstr "Excepciones incorporadas;" - -#: ../Doc/c-api/init_config.rst:1628 -msgid "Builtin and frozen modules;" -msgstr "Módulos incorporados y congelados;" - -#: ../Doc/c-api/init_config.rst:1629 -msgid "The :mod:`sys` module is only partially initialized (ex: :data:`sys.path` doesn't exist yet)." -msgstr "" -"El módulo :mod:`sys` solo se inicializa parcialmente (por ejemplo :data:`sys.path` aún no existe)." - -#: ../Doc/c-api/init_config.rst:1632 -msgid "\"Main\" initialization phase, Python is fully initialized:" -msgstr "Fase de inicialización \"principal\", Python está completamente inicializado:" - -#: ../Doc/c-api/init_config.rst:1634 -msgid "Install and configure :mod:`importlib`;" -msgstr "Instala y configura :mod:`importlib`;" - -#: ../Doc/c-api/init_config.rst:1635 -msgid "Apply the :ref:`Path Configuration `;" -msgstr "Aplique la :ref:`Configuración de ruta `;" - -#: ../Doc/c-api/init_config.rst:1636 -msgid "Install signal handlers;" -msgstr "Instala manejadores de señal;" - -#: ../Doc/c-api/init_config.rst:1637 -msgid "Finish :mod:`sys` module initialization (ex: create :data:`sys.stdout` and :data:`sys.path`);" -msgstr "" -"Finaliza la inicialización del módulo :mod:`sys` (por ejemplo: crea :data:`sys.stdout` y :data:`sys." -"path`);" - -#: ../Doc/c-api/init_config.rst:1639 -msgid "Enable optional features like :mod:`faulthandler` and :mod:`tracemalloc`;" -msgstr "Habilita características opcionales como :mod:`faulthandler` y :mod:`tracemalloc`;" - -#: ../Doc/c-api/init_config.rst:1640 -msgid "Import the :mod:`site` module;" -msgstr "Importe el módulo :mod:`site`;" - -#: ../Doc/c-api/init_config.rst:1641 -msgid "etc." -msgstr "etc." - -#: ../Doc/c-api/init_config.rst:1643 -msgid "Private provisional API:" -msgstr "API provisional privada:" - -#: ../Doc/c-api/init_config.rst:1645 -msgid "" -":c:member:`PyConfig._init_main`: if set to ``0``, :c:func:`Py_InitializeFromConfig` stops at the " -"\"Core\" initialization phase." -msgstr "" -":c:member:`PyConfig._init_main`: si se establece en ``0``, :c:func:`Py_InitializeFromConfig` se " -"detiene en la fase de inicialización \"Core\"." - -#: ../Doc/c-api/init_config.rst:1650 -msgid "Move to the \"Main\" initialization phase, finish the Python initialization." -msgstr "Vaya a la fase de inicialización \"Principal\", finalice la inicialización de Python." - -#: ../Doc/c-api/init_config.rst:1652 -msgid "" -"No module is imported during the \"Core\" phase and the ``importlib`` module is not configured: the :" -"ref:`Path Configuration ` is only applied during the \"Main\" phase. It may allow " -"to customize Python in Python to override or tune the :ref:`Path Configuration `, " -"maybe install a custom :data:`sys.meta_path` importer or an import hook, etc." +#: ../Doc/c-api/init_config.rst:2293 +msgid "Delaying main module execution" msgstr "" -"No se importa ningún módulo durante la fase \"Core\" y el módulo ``importlib`` no está configurado: " -"la :ref:`Configuración de ruta ` solo se aplica durante la fase \"Principal\". " -"Puede permitir personalizar Python en Python para anular o ajustar :ref:`Configuración de ruta `, tal vez instale un importador personalizado :data:`sys.meta_path` o un enlace de " -"importación, etc." -#: ../Doc/c-api/init_config.rst:1658 +#: ../Doc/c-api/init_config.rst:2295 msgid "" -"It may become possible to calculate the :ref:`Path Configuration ` in Python, after " -"the Core phase and before the Main phase, which is one of the :pep:`432` motivation." +"In some embedding use cases, it may be desirable to separate interpreter " +"initialization from the execution of the main module." msgstr "" -"Puede ser posible calcular la :ref:`Configuración de ruta ` en Python, después de " -"la fase Core y antes de la fase Main, lo cual es una de las motivaciones de :pep:`432`." -#: ../Doc/c-api/init_config.rst:1662 +#: ../Doc/c-api/init_config.rst:2298 msgid "" -"The \"Core\" phase is not properly defined: what should be and what should not be available at this " -"phase is not specified yet. The API is marked as private and provisional: the API can be modified or " -"even be removed anytime until a proper public API is designed." -msgstr "" -"La fase \"Núcleo\" no está definida correctamente: lo que debería estar y lo que no debería estar " -"disponible en esta fase aún no se ha especificado. La API está marcada como privada y provisional: la " -"API se puede modificar o incluso eliminar en cualquier momento hasta que se diseñe una API pública " -"adecuada." - -#: ../Doc/c-api/init_config.rst:1667 -msgid "Example running Python code between \"Core\" and \"Main\" initialization phases::" -msgstr "Ejemplo de ejecución de código Python entre las fases de inicialización \"Core\" y \"Main\"::" - -#: ../Doc/c-api/init_config.rst:1670 -msgid "" -"void init_python(void)\n" -"{\n" -" PyStatus status;\n" -"\n" -" PyConfig config;\n" -" PyConfig_InitPythonConfig(&config);\n" -" config._init_main = 0;\n" -"\n" -" /* ... customize 'config' configuration ... */\n" -"\n" -" status = Py_InitializeFromConfig(&config);\n" -" PyConfig_Clear(&config);\n" -" if (PyStatus_Exception(status)) {\n" -" Py_ExitStatusException(status);\n" -" }\n" -"\n" -" /* Use sys.stderr because sys.stdout is only created\n" -" by _Py_InitializeMain() */\n" -" int res = PyRun_SimpleString(\n" -" \"import sys; \"\n" -" \"print('Run Python code before _Py_InitializeMain', \"\n" -" \"file=sys.stderr)\");\n" -" if (res < 0) {\n" -" exit(1);\n" -" }\n" -"\n" -" /* ... put more configuration code here ... */\n" -"\n" -" status = _Py_InitializeMain();\n" -" if (PyStatus_Exception(status)) {\n" -" Py_ExitStatusException(status);\n" -" }\n" -"}" +"This separation can be achieved by setting ``PyConfig.run_command`` to the " +"empty string during initialization (to prevent the interpreter from dropping " +"into the interactive prompt), and then subsequently executing the desired " +"main module code using ``__main__.__dict__`` as the global namespace." msgstr "" -"void init_python(void)\n" -"{\n" -" PyStatus status;\n" -"\n" -" PyConfig config;\n" -" PyConfig_InitPythonConfig(&config);\n" -" config._init_main = 0;\n" -"\n" -" /* ... customize 'config' configuration ... */\n" -"\n" -" status = Py_InitializeFromConfig(&config);\n" -" PyConfig_Clear(&config);\n" -" if (PyStatus_Exception(status)) {\n" -" Py_ExitStatusException(status);\n" -" }\n" -"\n" -" /* Use sys.stderr because sys.stdout is only created\n" -" by _Py_InitializeMain() */\n" -" int res = PyRun_SimpleString(\n" -" \"import sys; \"\n" -" \"print('Run Python code before _Py_InitializeMain', \"\n" -" \"file=sys.stderr)\");\n" -" if (res < 0) {\n" -" exit(1);\n" -" }\n" -"\n" -" /* ... put more configuration code here ... */\n" -"\n" -" status = _Py_InitializeMain();\n" -" if (PyStatus_Exception(status)) {\n" -" Py_ExitStatusException(status);\n" -" }\n" -"}" -#: ../Doc/c-api/init_config.rst:558 +#: ../Doc/c-api/init_config.rst:1181 msgid "main()" msgstr "main()" -#: ../Doc/c-api/init_config.rst:558 +#: ../Doc/c-api/init_config.rst:1181 msgid "argv (in module sys)" msgstr "argv (en el módulo sys)" + +#~ msgid "If non-zero, profile import time." +#~ msgstr "Si no es cero, el tiempo de importación del perfil." + +#~ msgid "Enable compatibility mode with the perf profiler?" +#~ msgstr "" +#~ "¿Activar el modo de compatibilidad con el generador de perfiles perf?" + +#~ msgid "" +#~ "Set by :option:`-X perf <-X>` command-line option and by the :envvar:" +#~ "`PYTHON_PERF_JIT_SUPPORT` environment variable for perf support with " +#~ "stack pointers and :option:`-X perf_jit <-X>` command-line option and by " +#~ "the :envvar:`PYTHON_PERF_JIT_SUPPORT` environment variable for perf " +#~ "support with DWARF JIT information." +#~ msgstr "" +#~ "Establecido por la opción de línea de comandos :option:`-X perf <-X>` y " +#~ "por la variable de entorno :envvar:`PYTHON_PERF_JIT_SUPPORT` para el " +#~ "soporte de perf con punteros de pila y la opción de línea de comandos :" +#~ "option:`-X perf_jit <-X>` y por la variable de entorno :envvar:" +#~ "`PYTHON_PERF_JIT_SUPPORT` para el soporte de perf con información DWARF " +#~ "JIT." + +#~ msgid "Py_RunMain()" +#~ msgstr "Py_RunMain()" + +#~ msgid "" +#~ "Execute the command (:c:member:`PyConfig.run_command`), the script (:c:" +#~ "member:`PyConfig.run_filename`) or the module (:c:member:`PyConfig." +#~ "run_module`) specified on the command line or in the configuration." +#~ msgstr "" +#~ "Ejecuta el comando (:c:member:`PyConfig.run_command`), el script (:c:" +#~ "member:`PyConfig.run_filename`) o el módulo (:c:member:`PyConfig." +#~ "run_module`) especificado en la línea de comando o en la configuración." + +#~ msgid "By default and when if :option:`-i` option is used, run the REPL." +#~ msgstr "" +#~ "Por defecto y cuando se usa la opción :option:`-i`, ejecuta el REPL." + +#~ msgid "" +#~ "Finally, finalizes Python and returns an exit status that can be passed " +#~ "to the ``exit()`` function." +#~ msgstr "" +#~ "Finalmente, finaliza Python y retorna un estado de salida que se puede " +#~ "pasar a la función ``exit()``." + +#~ msgid "" +#~ "See :ref:`Python Configuration ` for an example of " +#~ "customized Python always running in isolated mode using :c:func:" +#~ "`Py_RunMain`." +#~ msgstr "" +#~ "Consulte :ref:`Configuración de Python ` para ver un " +#~ "ejemplo de Python personalizado que siempre se ejecuta en modo aislado " +#~ "usando :c:func:`Py_RunMain`." + +#~ msgid "Multi-Phase Initialization Private Provisional API" +#~ msgstr "API Provisional Privada de Inicialización Multifásica" + +#~ msgid "" +#~ "This section is a private provisional API introducing multi-phase " +#~ "initialization, the core feature of :pep:`432`:" +#~ msgstr "" +#~ "Esta sección es una API provisional privada que introduce la " +#~ "inicialización multifase, la característica principal de :pep:`432`:" + +#~ msgid "\"Core\" initialization phase, \"bare minimum Python\":" +#~ msgstr "Fase de inicialización \"Core\", \"Python mínimo\":" + +#~ msgid "Builtin types;" +#~ msgstr "Tipos incorporados;" + +#~ msgid "Builtin exceptions;" +#~ msgstr "Excepciones incorporadas;" + +#~ msgid "Builtin and frozen modules;" +#~ msgstr "Módulos incorporados y congelados;" + +#~ msgid "" +#~ "The :mod:`sys` module is only partially initialized (ex: :data:`sys.path` " +#~ "doesn't exist yet)." +#~ msgstr "" +#~ "El módulo :mod:`sys` solo se inicializa parcialmente (por ejemplo :data:" +#~ "`sys.path` aún no existe)." + +#~ msgid "\"Main\" initialization phase, Python is fully initialized:" +#~ msgstr "" +#~ "Fase de inicialización \"principal\", Python está completamente " +#~ "inicializado:" + +#~ msgid "Install and configure :mod:`importlib`;" +#~ msgstr "Instala y configura :mod:`importlib`;" + +#~ msgid "Apply the :ref:`Path Configuration `;" +#~ msgstr "Aplique la :ref:`Configuración de ruta `;" + +#~ msgid "" +#~ "Finish :mod:`sys` module initialization (ex: create :data:`sys.stdout` " +#~ "and :data:`sys.path`);" +#~ msgstr "" +#~ "Finaliza la inicialización del módulo :mod:`sys` (por ejemplo: crea :data:" +#~ "`sys.stdout` y :data:`sys.path`);" + +#~ msgid "" +#~ "Enable optional features like :mod:`faulthandler` and :mod:`tracemalloc`;" +#~ msgstr "" +#~ "Habilita características opcionales como :mod:`faulthandler` y :mod:" +#~ "`tracemalloc`;" + +#~ msgid "Import the :mod:`site` module;" +#~ msgstr "Importe el módulo :mod:`site`;" + +#~ msgid "etc." +#~ msgstr "etc." + +#~ msgid "Private provisional API:" +#~ msgstr "API provisional privada:" + +#~ msgid "" +#~ ":c:member:`PyConfig._init_main`: if set to ``0``, :c:func:" +#~ "`Py_InitializeFromConfig` stops at the \"Core\" initialization phase." +#~ msgstr "" +#~ ":c:member:`PyConfig._init_main`: si se establece en ``0``, :c:func:" +#~ "`Py_InitializeFromConfig` se detiene en la fase de inicialización " +#~ "\"Core\"." + +#~ msgid "" +#~ "Move to the \"Main\" initialization phase, finish the Python " +#~ "initialization." +#~ msgstr "" +#~ "Vaya a la fase de inicialización \"Principal\", finalice la " +#~ "inicialización de Python." + +#~ msgid "" +#~ "No module is imported during the \"Core\" phase and the ``importlib`` " +#~ "module is not configured: the :ref:`Path Configuration ` is only applied during the \"Main\" phase. It may allow to " +#~ "customize Python in Python to override or tune the :ref:`Path " +#~ "Configuration `, maybe install a custom :data:`sys." +#~ "meta_path` importer or an import hook, etc." +#~ msgstr "" +#~ "No se importa ningún módulo durante la fase \"Core\" y el módulo " +#~ "``importlib`` no está configurado: la :ref:`Configuración de ruta ` solo se aplica durante la fase \"Principal\". Puede " +#~ "permitir personalizar Python en Python para anular o ajustar :ref:" +#~ "`Configuración de ruta `, tal vez instale un importador " +#~ "personalizado :data:`sys.meta_path` o un enlace de importación, etc." + +#~ msgid "" +#~ "It may become possible to calculate the :ref:`Path Configuration ` in Python, after the Core phase and before the Main phase, " +#~ "which is one of the :pep:`432` motivation." +#~ msgstr "" +#~ "Puede ser posible calcular la :ref:`Configuración de ruta ` en Python, después de la fase Core y antes de la fase Main, lo " +#~ "cual es una de las motivaciones de :pep:`432`." + +#~ msgid "" +#~ "The \"Core\" phase is not properly defined: what should be and what " +#~ "should not be available at this phase is not specified yet. The API is " +#~ "marked as private and provisional: the API can be modified or even be " +#~ "removed anytime until a proper public API is designed." +#~ msgstr "" +#~ "La fase \"Núcleo\" no está definida correctamente: lo que debería estar y " +#~ "lo que no debería estar disponible en esta fase aún no se ha " +#~ "especificado. La API está marcada como privada y provisional: la API se " +#~ "puede modificar o incluso eliminar en cualquier momento hasta que se " +#~ "diseñe una API pública adecuada." + +#~ msgid "" +#~ "Example running Python code between \"Core\" and \"Main\" initialization " +#~ "phases::" +#~ msgstr "" +#~ "Ejemplo de ejecución de código Python entre las fases de inicialización " +#~ "\"Core\" y \"Main\"::" + +#~ msgid "" +#~ "void init_python(void)\n" +#~ "{\n" +#~ " PyStatus status;\n" +#~ "\n" +#~ " PyConfig config;\n" +#~ " PyConfig_InitPythonConfig(&config);\n" +#~ " config._init_main = 0;\n" +#~ "\n" +#~ " /* ... customize 'config' configuration ... */\n" +#~ "\n" +#~ " status = Py_InitializeFromConfig(&config);\n" +#~ " PyConfig_Clear(&config);\n" +#~ " if (PyStatus_Exception(status)) {\n" +#~ " Py_ExitStatusException(status);\n" +#~ " }\n" +#~ "\n" +#~ " /* Use sys.stderr because sys.stdout is only created\n" +#~ " by _Py_InitializeMain() */\n" +#~ " int res = PyRun_SimpleString(\n" +#~ " \"import sys; \"\n" +#~ " \"print('Run Python code before _Py_InitializeMain', \"\n" +#~ " \"file=sys.stderr)\");\n" +#~ " if (res < 0) {\n" +#~ " exit(1);\n" +#~ " }\n" +#~ "\n" +#~ " /* ... put more configuration code here ... */\n" +#~ "\n" +#~ " status = _Py_InitializeMain();\n" +#~ " if (PyStatus_Exception(status)) {\n" +#~ " Py_ExitStatusException(status);\n" +#~ " }\n" +#~ "}" +#~ msgstr "" +#~ "void init_python(void)\n" +#~ "{\n" +#~ " PyStatus status;\n" +#~ "\n" +#~ " PyConfig config;\n" +#~ " PyConfig_InitPythonConfig(&config);\n" +#~ " config._init_main = 0;\n" +#~ "\n" +#~ " /* ... customize 'config' configuration ... */\n" +#~ "\n" +#~ " status = Py_InitializeFromConfig(&config);\n" +#~ " PyConfig_Clear(&config);\n" +#~ " if (PyStatus_Exception(status)) {\n" +#~ " Py_ExitStatusException(status);\n" +#~ " }\n" +#~ "\n" +#~ " /* Use sys.stderr because sys.stdout is only created\n" +#~ " by _Py_InitializeMain() */\n" +#~ " int res = PyRun_SimpleString(\n" +#~ " \"import sys; \"\n" +#~ " \"print('Run Python code before _Py_InitializeMain', \"\n" +#~ " \"file=sys.stderr)\");\n" +#~ " if (res < 0) {\n" +#~ " exit(1);\n" +#~ " }\n" +#~ "\n" +#~ " /* ... put more configuration code here ... */\n" +#~ "\n" +#~ " status = _Py_InitializeMain();\n" +#~ " if (PyStatus_Exception(status)) {\n" +#~ " Py_ExitStatusException(status);\n" +#~ " }\n" +#~ "}" diff --git a/c-api/intro.po b/c-api/intro.po index b413ae3071..2b231f1a9e 100644 --- a/c-api/intro.po +++ b/c-api/intro.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2022-11-14 17:55-0500\n" "Last-Translator: David Orejuela \n" "Language: es\n" @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/intro.rst:8 msgid "Introduction" @@ -78,10 +78,24 @@ msgstr "" "extensión antes de intentar integrar Python en una aplicación real." #: ../Doc/c-api/intro.rst:34 +msgid "Language version compatibility" +msgstr "" + +#: ../Doc/c-api/intro.rst:36 +msgid "Python's C API is compatible with C11 and C++11 versions of C and C++." +msgstr "" + +#: ../Doc/c-api/intro.rst:38 +msgid "" +"This is a lower limit: the C API does not require features from later C/C++ " +"versions. You do *not* need to enable your compiler's \"c11 mode\"." +msgstr "" + +#: ../Doc/c-api/intro.rst:44 msgid "Coding standards" msgstr "Estándares de codificación" -#: ../Doc/c-api/intro.rst:36 +#: ../Doc/c-api/intro.rst:46 msgid "" "If you're writing C code for inclusion in CPython, you **must** follow the " "guidelines and standards defined in :PEP:`7`. These guidelines apply " @@ -96,11 +110,11 @@ msgstr "" "extensión de terceros, a menos que eventualmente espere contribuir con ellos " "a Python." -#: ../Doc/c-api/intro.rst:46 +#: ../Doc/c-api/intro.rst:56 msgid "Include Files" msgstr "Archivos de cabecera (*Include*)" -#: ../Doc/c-api/intro.rst:48 +#: ../Doc/c-api/intro.rst:58 msgid "" "All function, type and macro definitions needed to use the Python/C API are " "included in your code by the following line::" @@ -108,13 +122,13 @@ msgstr "" "Todas las definiciones de función, tipo y macro necesarias para usar la API " "Python/C se incluyen en su código mediante la siguiente línea::" -#: ../Doc/c-api/intro.rst:51 +#: ../Doc/c-api/intro.rst:61 msgid "" "#define PY_SSIZE_T_CLEAN\n" "#include " msgstr "" -#: ../Doc/c-api/intro.rst:54 +#: ../Doc/c-api/intro.rst:64 msgid "" "This implies inclusion of the following standard headers: ````, " "````, ````, ````, ```` and ````, ````, ````, ````, ```` " "y ```` (si está disponible)." -#: ../Doc/c-api/intro.rst:60 +#: ../Doc/c-api/intro.rst:70 msgid "" "Since Python may define some pre-processor definitions which affect the " "standard headers on some systems, you *must* include :file:`Python.h` before " @@ -134,7 +148,7 @@ msgstr "" "afectan los encabezados estándar en algunos sistemas, *debe* incluir :file:" "`Python.h` antes de incluir encabezados estándar." -#: ../Doc/c-api/intro.rst:64 +#: ../Doc/c-api/intro.rst:74 msgid "" "It is recommended to always define ``PY_SSIZE_T_CLEAN`` before including " "``Python.h``. See :ref:`arg-parsing` for a description of this macro." @@ -142,7 +156,7 @@ msgstr "" "Se recomienda definir siempre ``PY_SSIZE_T_CLEAN`` antes de incluir ``Python." "h``. Consulte :ref:`arg-parsing` para obtener una descripción de este macro." -#: ../Doc/c-api/intro.rst:67 +#: ../Doc/c-api/intro.rst:77 msgid "" "All user visible names defined by Python.h (except those defined by the " "included standard headers) have one of the prefixes ``Py`` or ``_Py``. " @@ -157,7 +171,7 @@ msgstr "" "escritores de extensiones. Los nombres de miembros de estructura no tienen " "un prefijo reservado." -#: ../Doc/c-api/intro.rst:74 +#: ../Doc/c-api/intro.rst:84 msgid "" "User code should never define names that begin with ``Py`` or ``_Py``. This " "confuses the reader, and jeopardizes the portability of the user code to " @@ -169,8 +183,8 @@ msgstr "" "código de usuario para futuras versiones de Python, que pueden definir " "nombres adicionales que comienzan con uno de estos prefijos." -#: ../Doc/c-api/intro.rst:79 -#, fuzzy, python-format +#: ../Doc/c-api/intro.rst:89 +#, fuzzy, python-format, python-brace-format msgid "" "The header files are typically installed with Python. On Unix, these are " "located in the directories :file:`{prefix}/include/pythonversion/` and :file:" @@ -190,7 +204,7 @@ msgstr "" "`{prefix}/include`, donde :envvar:`prefix` es el directorio de instalación " "especificado para el instalador." -#: ../Doc/c-api/intro.rst:88 +#: ../Doc/c-api/intro.rst:98 #, fuzzy msgid "" "To include the headers, place both directories (if different) on your " @@ -208,7 +222,7 @@ msgstr "" "incluyen los encabezados específicos de la plataforma de :envvar:" "`exec_prefix`." -#: ../Doc/c-api/intro.rst:95 +#: ../Doc/c-api/intro.rst:105 msgid "" "C++ users should note that although the API is defined entirely using C, the " "header files properly declare the entry points to be ``extern \"C\"``. As a " @@ -219,65 +233,37 @@ msgstr "" "que los puntos de entrada son ``extern \"C\"``. Como resultado, no es " "necesario hacer nada especial para usar la API desde C++." -#: ../Doc/c-api/intro.rst:101 +#: ../Doc/c-api/intro.rst:111 msgid "Useful macros" msgstr "Macros útiles" -#: ../Doc/c-api/intro.rst:103 +#: ../Doc/c-api/intro.rst:113 +#, fuzzy 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 "" "Varias macros útiles se definen en los archivos de encabezado de Python. " "Muchos se definen más cerca de donde son útiles (por ejemplo :c:macro:" "`Py_RETURN_NONE`). Otros de una utilidad más general se definen aquí. Esto " "no es necesariamente una lista completa." -#: ../Doc/c-api/intro.rst:110 -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 "" - -#: ../Doc/c-api/intro.rst:115 -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 "" - -#: ../Doc/c-api/intro.rst:119 -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 "" - -#: ../Doc/c-api/intro.rst:134 +#: ../Doc/c-api/intro.rst:122 msgid "Return the absolute value of ``x``." msgstr "Retorna el valor absoluto de ``x``." -#: ../Doc/c-api/intro.rst:140 +#: ../Doc/c-api/intro.rst:128 +#, fuzzy msgid "" "Ask the compiler to always inline a static inline function. The compiler can " -"ignore it and decides to not inline the function." +"ignore it and decide to not inline the function." msgstr "" "Ordena al compilador a siempre usar inline en una función estática inline. " "El compilador puede ignorarlo y decidir no usar inline en la función." -#: ../Doc/c-api/intro.rst:143 +#: ../Doc/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, " @@ -288,7 +274,7 @@ msgstr "" "de funciones deshabilitado. Por ejemplo, MSC deshabilita el inline de " "funciones cuando se configura en modo de depuración." -#: ../Doc/c-api/intro.rst:147 +#: ../Doc/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 " @@ -299,7 +285,7 @@ msgstr "" "por ejemplo). El compilador es generalmente más inteligente que el " "desarrollador para el análisis costo/beneficio." -#: ../Doc/c-api/intro.rst:151 +#: ../Doc/c-api/intro.rst:139 #, fuzzy msgid "" "If Python is :ref:`built in debug mode ` (if the :c:macro:" @@ -310,15 +296,16 @@ msgstr "" "macro ``Py_DEBUG`` está definido), el macro :c:macro:`Py_ALWAYS_INLINE` no " "hace nada." -#: ../Doc/c-api/intro.rst:154 +#: ../Doc/c-api/intro.rst:142 msgid "It must be specified before the function return type. Usage::" msgstr "Debe ser especificado antes del tipo de retorno de la función. Uso::" -#: ../Doc/c-api/intro.rst:156 +#: ../Doc/c-api/intro.rst:144 +#, python-brace-format msgid "static inline Py_ALWAYS_INLINE int random(void) { return 4; }" msgstr "" -#: ../Doc/c-api/intro.rst:162 +#: ../Doc/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``." @@ -326,7 +313,7 @@ msgstr "" "El argumento debe ser un carácter o un número entero en el rango [-128, 127] " "o [0, 255]. Este macro retorna la conversión ``c`` a un ``unsigned char``." -#: ../Doc/c-api/intro.rst:167 +#: ../Doc/c-api/intro.rst:155 msgid "" "Use this for deprecated declarations. The macro must be placed before the " "symbol name." @@ -334,20 +321,20 @@ msgstr "" "Use esto para declaraciones obsoletas. El macro debe colocarse antes del " "nombre del símbolo." -#: ../Doc/c-api/intro.rst:170 ../Doc/c-api/intro.rst:256 -#: ../Doc/c-api/intro.rst:274 +#: ../Doc/c-api/intro.rst:158 ../Doc/c-api/intro.rst:244 +#: ../Doc/c-api/intro.rst:262 msgid "Example::" msgstr "Ejemplo::" -#: ../Doc/c-api/intro.rst:172 +#: ../Doc/c-api/intro.rst:160 msgid "Py_DEPRECATED(3.8) PyAPI_FUNC(int) Py_OldFunction(void);" msgstr "" -#: ../Doc/c-api/intro.rst:174 +#: ../Doc/c-api/intro.rst:162 msgid "MSVC support was added." msgstr "Soporte para MSVC fue agregado." -#: ../Doc/c-api/intro.rst:179 +#: ../Doc/c-api/intro.rst:167 #, fuzzy msgid "" "Like ``getenv(s)``, but returns ``NULL`` if :option:`-E` was passed on the " @@ -357,19 +344,19 @@ msgstr "" "se pasó en la línea de comando (es decir, si se establece " "``Py_IgnoreEnvironmentFlag``)." -#: ../Doc/c-api/intro.rst:184 +#: ../Doc/c-api/intro.rst:172 msgid "Return the maximum value between ``x`` and ``y``." msgstr "Retorna el valor máximo entre ``x`` e ``y``." -#: ../Doc/c-api/intro.rst:190 +#: ../Doc/c-api/intro.rst:178 msgid "Return the size of a structure (``type``) ``member`` in bytes." msgstr "Retorna el tamaño de una estructura (``type``) ``member`` en bytes." -#: ../Doc/c-api/intro.rst:196 +#: ../Doc/c-api/intro.rst:184 msgid "Return the minimum value between ``x`` and ``y``." msgstr "Retorna el valor mínimo entre ``x`` e ``y``." -#: ../Doc/c-api/intro.rst:202 +#: ../Doc/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:" @@ -379,22 +366,23 @@ msgstr "" "de la pila C: útil en compilaciones LTO+PGO que usan mucho inline (ver :" "issue:`33720`)." -#: ../Doc/c-api/intro.rst:206 +#: ../Doc/c-api/intro.rst:194 msgid "Usage::" msgstr "Uso::" -#: ../Doc/c-api/intro.rst:208 +#: ../Doc/c-api/intro.rst:196 +#, python-brace-format msgid "Py_NO_INLINE static int random(void) { return 4; }" msgstr "" -#: ../Doc/c-api/intro.rst:214 +#: ../Doc/c-api/intro.rst:202 msgid "" "Convert ``x`` to a C string. E.g. ``Py_STRINGIFY(123)`` returns ``\"123\"``." msgstr "" "Convierte ``x`` en una cadena de caracteres C. Por ejemplo, " "``Py_STRINGIFY(123)`` retorna ``\"123\"``." -#: ../Doc/c-api/intro.rst:221 +#: ../Doc/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 " @@ -407,7 +395,7 @@ msgstr "" "declaraciones ``case``. Use esto en lugares donde podría tener la tentación " "de poner una llamada ``assert(0)`` o ``abort()``." -#: ../Doc/c-api/intro.rst:226 +#: ../Doc/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 " @@ -418,7 +406,7 @@ msgstr "" "macro se implementa con ``__builtin_unreachable()`` en GCC en modo de " "lanzamiento." -#: ../Doc/c-api/intro.rst:230 +#: ../Doc/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`." @@ -426,7 +414,7 @@ msgstr "" "Un uso de ``Py_UNREACHABLE()`` es seguir una llamada a una función que nunca " "retorna pero que no está declarada :c:macro:`_Py_NO_RETURN`." -#: ../Doc/c-api/intro.rst:233 +#: ../Doc/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 " @@ -441,7 +429,8 @@ msgstr "" "persona que llama. Si no se puede informar del error a la persona que llama, " "se puede utilizar :c:func:`Py_FatalError`." -#: ../Doc/c-api/intro.rst:243 +#: ../Doc/c-api/intro.rst:231 +#, python-brace-format 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; }``." @@ -450,7 +439,7 @@ msgstr "" "silenciar las advertencias del compilador. Ejemplo: ``int func(int a, int " "Py_UNUSED(b)) {return a; }``." -#: ../Doc/c-api/intro.rst:250 +#: ../Doc/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." @@ -458,7 +447,7 @@ msgstr "" "Crea una variable con el nombre ``name`` que se puede usar en *docstrings*. " "Si Python se construye sin *docstrings*, el valor estará vacío." -#: ../Doc/c-api/intro.rst:253 +#: ../Doc/c-api/intro.rst:241 msgid "" "Use :c:macro:`PyDoc_STRVAR` for docstrings to support building Python " "without docstrings, as specified in :pep:`7`." @@ -466,7 +455,7 @@ msgstr "" "Utilice :c:macro:`PyDoc_STRVAR` para que los *docstrings* admitan la " "construcción de Python sin *docstrings*, como se especifica en :pep:`7`." -#: ../Doc/c-api/intro.rst:258 +#: ../Doc/c-api/intro.rst:246 msgid "" "PyDoc_STRVAR(pop_doc, \"Remove and return the rightmost element.\");\n" "\n" @@ -477,7 +466,7 @@ msgid "" "}" msgstr "" -#: ../Doc/c-api/intro.rst:268 +#: ../Doc/c-api/intro.rst:256 msgid "" "Creates a docstring for the given input string or an empty string if " "docstrings are disabled." @@ -485,7 +474,7 @@ msgstr "" "Crea un *docstring* para la cadena de caracteres de entrada dada o una " "cadena vacía si los *docstrings* están deshabilitados." -#: ../Doc/c-api/intro.rst:271 +#: ../Doc/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`." @@ -493,7 +482,7 @@ msgstr "" "Utilice :c:macro:`PyDoc_STR` al especificar *docstrings* para admitir la " "construcción de Python sin *docstrings*, como se especifica en :pep:`7`." -#: ../Doc/c-api/intro.rst:276 +#: ../Doc/c-api/intro.rst:264 msgid "" "static PyMethodDef pysqlite_row_methods[] = {\n" " {\"keys\", (PyCFunction)pysqlite_row_keys, METH_NOARGS,\n" @@ -502,11 +491,11 @@ msgid "" "};" msgstr "" -#: ../Doc/c-api/intro.rst:286 +#: ../Doc/c-api/intro.rst:274 msgid "Objects, Types and Reference Counts" msgstr "Objetos, tipos y conteos de referencias" -#: ../Doc/c-api/intro.rst:290 +#: ../Doc/c-api/intro.rst:278 #, fuzzy msgid "" "Most Python/C API functions have one or more arguments as well as a return " @@ -534,7 +523,7 @@ msgstr "" "tipo; como nunca deben desasignarse, son típicamente objetos estáticos :c:" "type:`PyTypeObject`." -#: ../Doc/c-api/intro.rst:301 +#: ../Doc/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." @@ -553,11 +542,11 @@ msgstr "" "es verdadero si (y solo si) el objeto al que apunta *a* es una lista de " "Python." -#: ../Doc/c-api/intro.rst:312 +#: ../Doc/c-api/intro.rst:300 msgid "Reference Counts" msgstr "Conteo de Referencias" -#: ../Doc/c-api/intro.rst:314 +#: ../Doc/c-api/intro.rst:302 #, fuzzy msgid "" "The reference count is important because today's computers have a finite " @@ -584,7 +573,7 @@ msgstr "" "objetos que se refieren entre sí aquí; por ahora, la solución es \"no hagas " "eso\")." -#: ../Doc/c-api/intro.rst:331 +#: ../Doc/c-api/intro.rst:319 #, fuzzy msgid "" "Reference counts are always manipulated explicitly. The normal way is to " @@ -619,7 +608,7 @@ msgstr "" "la memoria virtual (suponiendo ``sizeof(Py_ssize_t) >= sizeof(void*)``). Por " "lo tanto, el incremento del recuento de referencia es una operación simple." -#: ../Doc/c-api/intro.rst:347 +#: ../Doc/c-api/intro.rst:335 #, fuzzy msgid "" "It is not necessary to hold a :term:`strong reference` (i.e. increment the " @@ -652,7 +641,7 @@ msgstr "" "mecanismo de llamada garantiza mantener una referencia a cada argumento " "durante la duración de la llamada." -#: ../Doc/c-api/intro.rst:363 +#: ../Doc/c-api/intro.rst:351 #, fuzzy msgid "" "However, a common pitfall is to extract an object from a list and hold on to " @@ -672,7 +661,7 @@ msgstr "" "vuelva al usuario desde a :c:func:`Py_DECREF`, por lo que casi cualquier " "operación es potencialmente peligrosa." -#: ../Doc/c-api/intro.rst:371 +#: ../Doc/c-api/intro.rst:359 #, fuzzy msgid "" "A safe approach is to always use the generic operations (functions whose " @@ -689,11 +678,11 @@ msgstr "" "responsabilidad de llamar :c:func:`Py_DECREF` cuando hayan terminado con el " "resultado; Esto pronto se convierte en una segunda naturaleza." -#: ../Doc/c-api/intro.rst:382 +#: ../Doc/c-api/intro.rst:370 msgid "Reference Count Details" msgstr "Detalles del conteo de referencia" -#: ../Doc/c-api/intro.rst:384 +#: ../Doc/c-api/intro.rst:372 #, fuzzy msgid "" "The reference count behavior of functions in the Python/C API is best " @@ -726,7 +715,7 @@ msgstr "" "No es necesario hacer nada para obtener una :term:`referencia prestada " "`." -#: ../Doc/c-api/intro.rst:397 +#: ../Doc/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 " @@ -740,7 +729,7 @@ msgstr "" "a una función, esa función asume que ahora posee esa referencia, y usted ya " "no es responsable de ella." -#: ../Doc/c-api/intro.rst:407 +#: ../Doc/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 " @@ -760,7 +749,7 @@ msgstr "" "(olvidando el manejo de errores por el momento; una mejor manera de " "codificar esto se muestra a continuación)::" -#: ../Doc/c-api/intro.rst:415 +#: ../Doc/c-api/intro.rst:403 msgid "" "PyObject *t;\n" "\n" @@ -770,7 +759,7 @@ msgid "" "PyTuple_SetItem(t, 2, PyUnicode_FromString(\"three\"));" msgstr "" -#: ../Doc/c-api/intro.rst:422 +#: ../Doc/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 " @@ -783,7 +772,7 @@ msgstr "" "para tomar otra referencia antes de llamar a la función de robo de " "referencias." -#: ../Doc/c-api/intro.rst:427 +#: ../Doc/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 " @@ -796,7 +785,7 @@ msgstr "" "datos inmutable. Solo debe usar :c:func:`PyTuple_SetItem` para las tuplas " "que está creando usted mismo." -#: ../Doc/c-api/intro.rst:432 +#: ../Doc/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`." @@ -804,7 +793,7 @@ msgstr "" "El código equivalente para llenar una lista se puede escribir usando :c:func:" "`PyList_New` y :c:func:`PyList_SetItem`." -#: ../Doc/c-api/intro.rst:435 +#: ../Doc/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:" @@ -820,7 +809,7 @@ msgstr "" "reemplazarse por lo siguiente (que también se ocupa de la comprobación de " "errores)::" -#: ../Doc/c-api/intro.rst:441 +#: ../Doc/c-api/intro.rst:429 msgid "" "PyObject *tuple, *list;\n" "\n" @@ -828,7 +817,7 @@ msgid "" "list = Py_BuildValue(\"[iis]\", 1, 2, \"three\");" msgstr "" -#: ../Doc/c-api/intro.rst:446 +#: ../Doc/c-api/intro.rst:434 #, fuzzy msgid "" "It is much more common to use :c:func:`PyObject_SetItem` and friends with " @@ -847,7 +836,7 @@ msgstr "" "(\"robarla\"). Por ejemplo, esta función establece todos los elementos de " "una lista (en realidad, cualquier secuencia mutable) en un elemento dado::" -#: ../Doc/c-api/intro.rst:453 +#: ../Doc/c-api/intro.rst:441 msgid "" "int\n" "set_all(PyObject *target, PyObject *item)\n" @@ -871,7 +860,7 @@ msgid "" "}" msgstr "" -#: ../Doc/c-api/intro.rst:476 +#: ../Doc/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 " @@ -894,7 +883,7 @@ msgstr "" "siempre retornan una nueva referencia (la entidad que llama se convierte en " "el propietario de la referencia)." -#: ../Doc/c-api/intro.rst:485 +#: ../Doc/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 " @@ -912,7 +901,7 @@ msgstr "" "lista usando :c:func:`PySequence_GetItem` (que toma exactamente los mismos " "argumentos), usted posee una referencia al objeto retornado." -#: ../Doc/c-api/intro.rst:497 +#: ../Doc/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`, " @@ -922,7 +911,7 @@ msgstr "" "de los elementos en una lista de enteros; una vez usando :c:func:" "`PyList_GetItem`, y una vez usando :c:func:`PySequence_GetItem`. ::" -#: ../Doc/c-api/intro.rst:501 +#: ../Doc/c-api/intro.rst:489 msgid "" "long\n" "sum_list(PyObject *list)\n" @@ -947,7 +936,7 @@ msgid "" "}" msgstr "" -#: ../Doc/c-api/intro.rst:527 +#: ../Doc/c-api/intro.rst:515 msgid "" "long\n" "sum_sequence(PyObject *sequence)\n" @@ -978,11 +967,11 @@ msgid "" "}" msgstr "" -#: ../Doc/c-api/intro.rst:561 +#: ../Doc/c-api/intro.rst:549 msgid "Types" msgstr "Tipos" -#: ../Doc/c-api/intro.rst:563 +#: ../Doc/c-api/intro.rst:551 #, fuzzy msgid "" "There are few other data types that play a significant role in the Python/C " @@ -1001,7 +990,7 @@ msgstr "" "objeto, y otro se usa para describir el valor de un número complejo. Estos " "serán discutidos junto con las funciones que los usan." -#: ../Doc/c-api/intro.rst:573 +#: ../Doc/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 " @@ -1013,11 +1002,11 @@ msgstr "" "Vea :pep:`353` para más detalles. ``PY_SSIZE_T_MAX`` es el valor positivo " "más grande del tipo :c:type:`Py_ssize_t`." -#: ../Doc/c-api/intro.rst:582 +#: ../Doc/c-api/intro.rst:570 msgid "Exceptions" msgstr "Excepciones" -#: ../Doc/c-api/intro.rst:584 +#: ../Doc/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 " @@ -1031,7 +1020,7 @@ msgstr "" "sucesivamente, hasta que llegan al intérprete de nivel superior, donde se " "informan al usuario acompañado de un seguimiento de pila (*stack traceback*)." -#: ../Doc/c-api/intro.rst:592 +#: ../Doc/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 " @@ -1058,7 +1047,7 @@ msgstr "" "requieren pruebas explícitas de errores con :c:func:`PyErr_Occurred`. Estas " "excepciones siempre se documentan explícitamente." -#: ../Doc/c-api/intro.rst:607 +#: ../Doc/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 " @@ -1081,7 +1070,7 @@ msgstr "" "más general) para establecer el estado de excepción, y :c:func:`PyErr_Clear` " "borra la excepción estado." -#: ../Doc/c-api/intro.rst:617 +#: ../Doc/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 " @@ -1104,7 +1093,7 @@ msgstr "" "de código de bytes (*bytecode*) de Python, que se encarga de transferirlo a " "``sys.exc_info()`` y amigos." -#: ../Doc/c-api/intro.rst:629 +#: ../Doc/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." @@ -1129,7 +1118,7 @@ msgstr "" "También reduce la extensión de vida útil a menudo no deseada para los " "objetos a los que hacen referencia los marcos de pila en el rastreo." -#: ../Doc/c-api/intro.rst:640 +#: ../Doc/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 " @@ -1147,7 +1136,7 @@ msgstr "" "excepción que se acaba de generar y perderá información importante sobre la " "causa exacta del error." -#: ../Doc/c-api/intro.rst:649 +#: ../Doc/c-api/intro.rst:637 #, fuzzy msgid "" "A simple example of detecting exceptions and passing them on is shown in " @@ -1163,7 +1152,7 @@ msgstr "" "para recordar por qué le gusta Python, le mostramos el código Python " "equivalente::" -#: ../Doc/c-api/intro.rst:655 +#: ../Doc/c-api/intro.rst:643 msgid "" "def incr_item(dict, key):\n" " try:\n" @@ -1173,11 +1162,11 @@ msgid "" " dict[key] = item + 1" msgstr "" -#: ../Doc/c-api/intro.rst:664 +#: ../Doc/c-api/intro.rst:652 msgid "Here is the corresponding C code, in all its glory::" msgstr "Aquí está el código C correspondiente, en todo su esplendor::" -#: ../Doc/c-api/intro.rst:666 +#: ../Doc/c-api/intro.rst:654 msgid "" "int\n" "incr_item(PyObject *dict, PyObject *key)\n" @@ -1223,7 +1212,7 @@ msgid "" "}" msgstr "" -#: ../Doc/c-api/intro.rst:716 +#: ../Doc/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:" @@ -1246,11 +1235,11 @@ msgstr "" "``-1`` (falla) y solo se establece en éxito después de que la última llamada " "realizada sea exitosa." -#: ../Doc/c-api/intro.rst:730 +#: ../Doc/c-api/intro.rst:718 msgid "Embedding Python" msgstr "Integración de Python" -#: ../Doc/c-api/intro.rst:732 +#: ../Doc/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 " @@ -1263,7 +1252,7 @@ msgstr "" "de Python. La mayor parte de la funcionalidad del intérprete solo se puede " "usar después de que el intérprete se haya inicializado." -#: ../Doc/c-api/intro.rst:745 +#: ../Doc/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 " @@ -1275,20 +1264,21 @@ msgstr "" "mod:`builtins`, :mod:`__main__`, y :mod:`sys`. También inicializa la ruta de " "búsqueda del módulo (``sys.path``)." -#: ../Doc/c-api/intro.rst:750 +#: ../Doc/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 " "later, setting :c:member:`PyConfig.argv` and :c:member:`PyConfig.parse_argv` " "must be set: see :ref:`Python Initialization Configuration `." msgstr "" -":c:func:`Py_Initialize` no establece la \"lista de argumentos de script\" " -"(``sys.argv``). Si esta variable es necesaria por el código Python que se " -"ejecutará más tarde, debe establecerse :c:member:`PyConfig.argv` y :c:member:" -"`PyConfig.parse_argv`: consulte :ref:`Python Initialization Configuration " -"`." +":c:func:`Py_Initialize` no establece la \"lista de argumentos de " +"script\" (``sys.argv``). Si esta variable es necesaria por el código Python " +"que se ejecutará más tarde, debe establecerse :c:member:`PyConfig.argv` y :c:" +"member:`PyConfig.parse_argv`: consulte :ref:`Python Initialization " +"Configuration `." -#: ../Doc/c-api/intro.rst:755 +#: ../Doc/c-api/intro.rst:743 +#, python-brace-format msgid "" "On most systems (in particular, on Unix and Windows, although the details " "are slightly different), :c:func:`Py_Initialize` calculates the module " @@ -1309,7 +1299,8 @@ msgstr "" "encuentra el ejecutable llamado :file:`python` en la ruta de búsqueda del " "comando *shell* (la variable de entorno :envvar:`PATH`)." -#: ../Doc/c-api/intro.rst:764 +#: ../Doc/c-api/intro.rst:752 +#, python-brace-format 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/" @@ -1328,7 +1319,7 @@ msgstr "" "`PYTHONHOME`, o inserte directorios adicionales delante de la ruta estándar " "estableciendo :envvar:`PYTHONPATH`." -#: ../Doc/c-api/intro.rst:778 +#: ../Doc/c-api/intro.rst:766 #, fuzzy msgid "" "The embedding application can steer the search by setting :c:member:" @@ -1347,7 +1338,7 @@ msgstr "" "`Py_GetPath`, :c:func:`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, y :c:func:" "`Py_GetProgramFullPath` (todo definido en :file:`Modules/getpath.c`)." -#: ../Doc/c-api/intro.rst:789 +#: ../Doc/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:" @@ -1371,11 +1362,11 @@ msgstr "" "asignada por el intérprete de Python, por ejemplo, la memoria asignada por " "los módulos de extensión actualmente no se puede liberar." -#: ../Doc/c-api/intro.rst:803 +#: ../Doc/c-api/intro.rst:791 msgid "Debugging Builds" msgstr "Depuración de compilaciones" -#: ../Doc/c-api/intro.rst:805 +#: ../Doc/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 " @@ -1386,7 +1377,7 @@ msgstr "" "tienden a agregar una gran cantidad de sobrecarga al tiempo de ejecución, " "por lo que no están habilitadas de forma predeterminada." -#: ../Doc/c-api/intro.rst:809 +#: ../Doc/c-api/intro.rst:797 #, fuzzy msgid "" "A full list of the various types of debugging builds is in the file :file:" @@ -1403,7 +1394,7 @@ msgstr "" "creación de perfiles de bajo nivel del bucle principal del intérprete. Solo " "las compilaciones más utilizadas se describirán en el resto de esta sección." -#: ../Doc/c-api/intro.rst:817 +#: ../Doc/c-api/intro.rst:805 #, fuzzy msgid "" "Compiling the interpreter with the :c:macro:`!Py_DEBUG` macro defined " @@ -1422,7 +1413,7 @@ msgstr "" "macro:`_DEBUG`. Cuando :c:macro:`Py_DEBUG` está habilitado en la compilación " "de Unix, la optimización del compilador está deshabilitada." -#: ../Doc/c-api/intro.rst:825 +#: ../Doc/c-api/intro.rst:813 msgid "" "In addition to the reference count debugging described below, extra checks " "are performed, see :ref:`Python Debug Build `." @@ -1431,7 +1422,7 @@ msgstr "" "continuación, se realizan verificaciones adicionales, véase :ref:" "`compilaciones de depuración `." -#: ../Doc/c-api/intro.rst:828 +#: ../Doc/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 " @@ -1448,7 +1439,7 @@ msgstr "" "imprimen todas las referencias existentes. (En modo interactivo, esto sucede " "después de cada declaración ejecutada por el intérprete)." -#: ../Doc/c-api/intro.rst:835 +#: ../Doc/c-api/intro.rst:823 msgid "" "Please refer to :file:`Misc/SpecialBuilds.txt` in the Python source " "distribution for more detailed information." @@ -1456,127 +1447,201 @@ msgstr "" "Consulte :file:`Misc/SpecialBuilds.txt` en la distribución fuente de Python " "para obtener información más detallada." -#: ../Doc/c-api/intro.rst:288 +#: ../Doc/c-api/intro.rst:830 +msgid "Recommended third party tools" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/intro.rst:835 +msgid "`Cython `_" +msgstr "" + +#: ../Doc/c-api/intro.rst:836 +msgid "`cffi `_" +msgstr "" + +#: ../Doc/c-api/intro.rst:837 +msgid "`HPy `_" +msgstr "" + +#: ../Doc/c-api/intro.rst:838 +msgid "`nanobind `_ (C++)" +msgstr "" + +#: ../Doc/c-api/intro.rst:839 +msgid "`Numba `_" +msgstr "" + +#: ../Doc/c-api/intro.rst:840 +msgid "`pybind11 `_ (C++)" +msgstr "" + +#: ../Doc/c-api/intro.rst:841 +msgid "`PyO3 `_ (Rust)" +msgstr "" + +#: ../Doc/c-api/intro.rst:842 +msgid "`SWIG `_" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/intro.rst:858 +msgid "" +"`Python Packaging User Guide: Binary Extensions `_" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/intro.rst:276 msgid "object" msgstr "" -#: ../Doc/c-api/intro.rst:288 +#: ../Doc/c-api/intro.rst:276 #, fuzzy msgid "type" msgstr "Tipos" -#: ../Doc/c-api/intro.rst:327 +#: ../Doc/c-api/intro.rst:315 msgid "Py_INCREF (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:327 +#: ../Doc/c-api/intro.rst:315 msgid "Py_DECREF (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:403 +#: ../Doc/c-api/intro.rst:391 msgid "PyList_SetItem (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:403 +#: ../Doc/c-api/intro.rst:391 msgid "PyTuple_SetItem (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:474 +#: ../Doc/c-api/intro.rst:462 msgid "set_all()" msgstr "" -#: ../Doc/c-api/intro.rst:493 +#: ../Doc/c-api/intro.rst:481 msgid "PyList_GetItem (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:493 +#: ../Doc/c-api/intro.rst:481 msgid "PySequence_GetItem (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:523 +#: ../Doc/c-api/intro.rst:511 msgid "sum_list()" msgstr "" -#: ../Doc/c-api/intro.rst:555 ../Doc/c-api/intro.rst:647 +#: ../Doc/c-api/intro.rst:543 ../Doc/c-api/intro.rst:635 msgid "sum_sequence()" msgstr "" -#: ../Doc/c-api/intro.rst:590 +#: ../Doc/c-api/intro.rst:578 msgid "PyErr_Occurred (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:603 +#: ../Doc/c-api/intro.rst:591 msgid "PyErr_SetString (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:603 ../Doc/c-api/intro.rst:711 +#: ../Doc/c-api/intro.rst:591 ../Doc/c-api/intro.rst:699 msgid "PyErr_Clear (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:627 +#: ../Doc/c-api/intro.rst:615 msgid "exc_info (in module sys)" msgstr "" -#: ../Doc/c-api/intro.rst:662 ../Doc/c-api/intro.rst:709 +#: ../Doc/c-api/intro.rst:650 ../Doc/c-api/intro.rst:697 msgid "incr_item()" msgstr "" -#: ../Doc/c-api/intro.rst:711 +#: ../Doc/c-api/intro.rst:699 msgid "PyErr_ExceptionMatches (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:711 +#: ../Doc/c-api/intro.rst:699 msgid "Py_XDECREF (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:737 +#: ../Doc/c-api/intro.rst:725 msgid "Py_Initialize (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:737 +#: ../Doc/c-api/intro.rst:725 msgid "module" msgstr "" -#: ../Doc/c-api/intro.rst:737 +#: ../Doc/c-api/intro.rst:725 msgid "builtins" msgstr "" -#: ../Doc/c-api/intro.rst:737 +#: ../Doc/c-api/intro.rst:725 msgid "__main__" msgstr "" -#: ../Doc/c-api/intro.rst:737 +#: ../Doc/c-api/intro.rst:725 msgid "sys" msgstr "" -#: ../Doc/c-api/intro.rst:737 +#: ../Doc/c-api/intro.rst:725 msgid "search" msgstr "" -#: ../Doc/c-api/intro.rst:737 +#: ../Doc/c-api/intro.rst:725 msgid "path" msgstr "" -#: ../Doc/c-api/intro.rst:737 +#: ../Doc/c-api/intro.rst:725 msgid "path (in module sys)" msgstr "" -#: ../Doc/c-api/intro.rst:772 +#: ../Doc/c-api/intro.rst:760 msgid "Py_GetPath (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:772 +#: ../Doc/c-api/intro.rst:760 msgid "Py_GetPrefix (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:772 +#: ../Doc/c-api/intro.rst:760 msgid "Py_GetExecPrefix (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:772 +#: ../Doc/c-api/intro.rst:760 msgid "Py_GetProgramFullPath (C function)" msgstr "" -#: ../Doc/c-api/intro.rst:787 +#: ../Doc/c-api/intro.rst:775 msgid "Py_IsInitialized (C function)" msgstr "" diff --git a/c-api/iter.po b/c-api/iter.po index 5ebc364693..d9cedc8afd 100644 --- a/c-api/iter.po +++ b/c-api/iter.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-04-10 23:48+0200\n" "Last-Translator: David Spindola\n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.6\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/iter.rst:6 msgid "Iterator Protocol" @@ -31,25 +30,39 @@ msgid "There are two functions specifically for working with iterators." msgstr "Hay dos funciones específicas para trabajar con iteradores." #: ../Doc/c-api/iter.rst:12 +#, fuzzy msgid "" -"Return non-zero if the object *o* can be safely passed " -"to :c:func:`PyIter_Next`, and ``0`` otherwise. This function always " -"succeeds." +"Return non-zero if the object *o* can be safely passed to :c:func:" +"`PyIter_NextItem` and ``0`` otherwise. This function always succeeds." msgstr "" "Retorna un valor distinto de cero si el objeto *o* puede pasarse de manera " "segura a :c:func:`PyIter_Next`, y ``0`` en caso contrario. Esta función " "siempre tiene éxito." -#: ../Doc/c-api/iter.rst:17 +#: ../Doc/c-api/iter.rst:18 msgid "" "Return non-zero if the object *o* provides the :class:`AsyncIterator` " "protocol, and ``0`` otherwise. This function always succeeds." msgstr "" -"Retorna un valor distinto de cero si el objeto *o* proporciona el " -"protocolo :class:`AsyncIterator`, y ``0`` en caso contrario. Esta función " -"siempre tiene éxito." +"Retorna un valor distinto de cero si el objeto *o* proporciona el protocolo :" +"class:`AsyncIterator`, y ``0`` en caso contrario. Esta función siempre tiene " +"éxito." -#: ../Doc/c-api/iter.rst:24 +#: ../Doc/c-api/iter.rst:25 +msgid "" +"Return ``1`` and set *item* to a :term:`strong reference` of the next value " +"of the iterator *iter* on success. Return ``0`` and set *item* to ``NULL`` " +"if there are no remaining values. Return ``-1``, set *item* to ``NULL`` and " +"set an exception on error." +msgstr "" + +#: ../Doc/c-api/iter.rst:34 +msgid "" +"This is an older version of :c:func:`!PyIter_NextItem`, which is retained " +"for backwards compatibility. Prefer :c:func:`PyIter_NextItem`." +msgstr "" + +#: ../Doc/c-api/iter.rst:38 msgid "" "Return the next value from the iterator *o*. The object must be an iterator " "according to :c:func:`PyIter_Check` (it is up to the caller to check this). " @@ -63,91 +76,89 @@ msgstr "" "ocurre un error al recuperar el elemento, devuelve ``NULL`` y envía la " "excepción." -#: ../Doc/c-api/iter.rst:30 -msgid "" -"To write a loop which iterates over an iterator, the C code should look " -"something like this::" -msgstr "" -"Para escribir un bucle que itera sobre un iterador, el código en C debería " -"verse así::" - -#: ../Doc/c-api/iter.rst:33 -msgid "" -"PyObject *iterator = PyObject_GetIter(obj);\n" -"PyObject *item;\n" -"\n" -"if (iterator == NULL) {\n" -" /* propagate error */\n" -"}\n" -"\n" -"while ((item = PyIter_Next(iterator))) {\n" -" /* do something with item */\n" -" ...\n" -" /* release reference when done */\n" -" Py_DECREF(item);\n" -"}\n" -"\n" -"Py_DECREF(iterator);\n" -"\n" -"if (PyErr_Occurred()) {\n" -" /* propagate error */\n" -"}\n" -"else {\n" -" /* continue doing useful work */\n" -"}" -msgstr "" -"PyObject *iterator = PyObject_GetIter(obj);\n" -"PyObject *item;\n" -"\n" -"if (iterator == NULL) {\n" -" /* propagate error */\n" -"}\n" -"\n" -"while ((item = PyIter_Next(iterator))) {\n" -" /* do something with item */\n" -" ...\n" -" /* release reference when done */\n" -" Py_DECREF(item);\n" -"}\n" -"\n" -"Py_DECREF(iterator);\n" -"\n" -"if (PyErr_Occurred()) {\n" -" /* propagate error */\n" -"}\n" -"else {\n" -" /* continue doing useful work */\n" -"}" - -#: ../Doc/c-api/iter.rst:59 +#: ../Doc/c-api/iter.rst:46 msgid "" "The enum value used to represent different results of :c:func:`PyIter_Send`." msgstr "" -"El valor de enumeración utilizado para representar diferentes resultados " -"de :c:func:`PyIter_Send`." +"El valor de enumeración utilizado para representar diferentes resultados de :" +"c:func:`PyIter_Send`." -#: ../Doc/c-api/iter.rst:66 +#: ../Doc/c-api/iter.rst:53 msgid "Sends the *arg* value into the iterator *iter*. Returns:" msgstr "Envía el valor *arg* al iterador *iter*. Retorna:" -#: ../Doc/c-api/iter.rst:68 +#: ../Doc/c-api/iter.rst:55 msgid "" "``PYGEN_RETURN`` if iterator returns. Return value is returned via *presult*." msgstr "" "``PYGEN_RETURN`` si el iterador regresa. El valor de retorno se retorna a " "través de *presult*." -#: ../Doc/c-api/iter.rst:69 +#: ../Doc/c-api/iter.rst:56 msgid "" "``PYGEN_NEXT`` if iterator yields. Yielded value is returned via *presult*." msgstr "" "``PYGEN_NEXT`` si el iterador cede. El valor cedido se retorna a través de " "*presult*." -#: ../Doc/c-api/iter.rst:70 +#: ../Doc/c-api/iter.rst:57 msgid "" "``PYGEN_ERROR`` if iterator has raised and exception. *presult* is set to " "``NULL``." msgstr "" "``PYGEN_ERROR`` si el iterador ha lanzado una excepción. *presult* se " "establece en ``NULL``." + +#~ msgid "" +#~ "To write a loop which iterates over an iterator, the C code should look " +#~ "something like this::" +#~ msgstr "" +#~ "Para escribir un bucle que itera sobre un iterador, el código en C " +#~ "debería verse así::" + +#~ msgid "" +#~ "PyObject *iterator = PyObject_GetIter(obj);\n" +#~ "PyObject *item;\n" +#~ "\n" +#~ "if (iterator == NULL) {\n" +#~ " /* propagate error */\n" +#~ "}\n" +#~ "\n" +#~ "while ((item = PyIter_Next(iterator))) {\n" +#~ " /* do something with item */\n" +#~ " ...\n" +#~ " /* release reference when done */\n" +#~ " Py_DECREF(item);\n" +#~ "}\n" +#~ "\n" +#~ "Py_DECREF(iterator);\n" +#~ "\n" +#~ "if (PyErr_Occurred()) {\n" +#~ " /* propagate error */\n" +#~ "}\n" +#~ "else {\n" +#~ " /* continue doing useful work */\n" +#~ "}" +#~ msgstr "" +#~ "PyObject *iterator = PyObject_GetIter(obj);\n" +#~ "PyObject *item;\n" +#~ "\n" +#~ "if (iterator == NULL) {\n" +#~ " /* propagate error */\n" +#~ "}\n" +#~ "\n" +#~ "while ((item = PyIter_Next(iterator))) {\n" +#~ " /* do something with item */\n" +#~ " ...\n" +#~ " /* release reference when done */\n" +#~ " Py_DECREF(item);\n" +#~ "}\n" +#~ "\n" +#~ "Py_DECREF(iterator);\n" +#~ "\n" +#~ "if (PyErr_Occurred()) {\n" +#~ " /* propagate error */\n" +#~ "}\n" +#~ "else {\n" +#~ " /* continue doing useful work */\n" +#~ "}" diff --git a/c-api/lifecycle.po b/c-api/lifecycle.po new file mode 100644 index 0000000000..0395aa7356 --- /dev/null +++ b/c-api/lifecycle.po @@ -0,0 +1,362 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 Python Software Foundation +# This file is distributed under the same license as the Python en Español +# package. +# FIRST AUTHOR , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python en Español 3.14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: es\n" +"Language-Team: es \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: ../Doc/c-api/lifecycle.rst:6 +msgid "Object Life Cycle" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/lifecycle.rst:15 +msgid "Life Events" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/lifecycle.rst:55 ../Doc/c-api/lifecycle.rst:62 +msgid "Diagram showing events in an object's life. Explained in detail below." +msgstr "" + +#: ../Doc/c-api/lifecycle.rst:70 +msgid "Explanation:" +msgstr "" + +#: ../Doc/c-api/lifecycle.rst:72 +msgid "When a new object is constructed by calling its type:" +msgstr "" + +#: ../Doc/c-api/lifecycle.rst:74 +msgid ":c:member:`~PyTypeObject.tp_new` is called to create a new object." +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/lifecycle.rst:83 +msgid "After :c:member:`!tp_init` completes, the object is ready to use." +msgstr "" + +#: ../Doc/c-api/lifecycle.rst:84 +msgid "Some time after the last reference to an object is removed:" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/lifecycle.rst:136 +msgid "" +"The garbage collector occasionally calls :c:member:`~PyTypeObject." +"tp_traverse` to identify :term:`cyclic isolates `." +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/lifecycle.rst:158 +msgid "Cyclic Isolate Destruction" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/lifecycle.rst:184 +msgid "" +"**All finalized:** All objects in a cyclic isolate are finalized before any " +"of them are cleared." +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/lifecycle.rst:223 +msgid "To summarize the possible interactions:" +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/lifecycle.rst:227 +msgid "" +"A finalized object might have references to or from non-finalized, " +"finalized, and cleared objects." +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/lifecycle.rst:244 +msgid "Functions" +msgstr "" + +#: ../Doc/c-api/lifecycle.rst:246 +msgid "To allocate and free memory, see :ref:`allocating-objects`." +msgstr "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/lifecycle.rst:271 +msgid ":c:member:`~PyTypeObject.tp_dealloc` for example code." +msgstr "" diff --git a/c-api/long.po b/c-api/long.po index f7a23ef9c6..32d0802ec3 100644 --- a/c-api/long.po +++ b/c-api/long.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-10-14 01:44-0600\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.7\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/long.rst:6 msgid "Integer Objects" @@ -79,17 +78,18 @@ msgstr "" "Retorna un objeto :c:type:`PyLongObject` nuevo desde *v*, o ``NULL`` en caso " "de error." -#: ../Doc/c-api/long.rst:43 +#: ../Doc/c-api/long.rst:45 +#, fuzzy msgid "" -"The current implementation keeps an array of integer objects for all " -"integers between ``-5`` and ``256``. When you create an int in that range " -"you actually just get back a reference to the existing object." +"CPython keeps an array of integer objects for all integers between ``-5`` " +"and ``256``. When you create an int in that range you actually just get " +"back a reference to the existing object." msgstr "" "La implementación actual mantiene un arreglo de objetos enteros para todos " "los enteros entre ``-5`` y ``256``. Cuando crea un *int* en ese rango, en " "realidad solo obtiene una referencia al objeto existente." -#: ../Doc/c-api/long.rst:50 +#: ../Doc/c-api/long.rst:52 msgid "" "Return a new :c:type:`PyLongObject` object from a C :c:expr:`unsigned long`, " "or ``NULL`` on failure." @@ -97,7 +97,7 @@ msgstr "" "Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:expr:`unsigned " "long`, o ``NULL`` en caso de error." -#: ../Doc/c-api/long.rst:56 +#: ../Doc/c-api/long.rst:58 msgid "" "Return a new :c:type:`PyLongObject` object from a C :c:type:`Py_ssize_t`, or " "``NULL`` on failure." @@ -105,7 +105,7 @@ msgstr "" "Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:type:" "`Py_ssize_t`, o ``NULL`` en caso de error." -#: ../Doc/c-api/long.rst:62 +#: ../Doc/c-api/long.rst:64 msgid "" "Return a new :c:type:`PyLongObject` object from a C :c:type:`size_t`, or " "``NULL`` on failure." @@ -113,7 +113,7 @@ msgstr "" "Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:type:`size_t`, " "o ``NULL`` en caso de error." -#: ../Doc/c-api/long.rst:68 +#: ../Doc/c-api/long.rst:70 msgid "" "Return a new :c:type:`PyLongObject` object from a C :c:expr:`long long`, or " "``NULL`` on failure." @@ -121,7 +121,16 @@ msgstr "" "Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:expr:`long " "long`, o ``NULL`` en caso de error." -#: ../Doc/c-api/long.rst:74 +#: ../Doc/c-api/long.rst:77 +#, fuzzy +msgid "" +"Return a new :c:type:`PyLongObject` object from a signed C :c:expr:`int32_t` " +"or :c:expr:`int64_t`, or ``NULL`` with an exception set on failure." +msgstr "" +"Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:type:`size_t`, " +"o ``NULL`` en caso de error." + +#: ../Doc/c-api/long.rst:86 msgid "" "Return a new :c:type:`PyLongObject` object from a C :c:expr:`unsigned long " "long`, or ``NULL`` on failure." @@ -129,7 +138,17 @@ msgstr "" "Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:expr:`unsigned " "long long`, o ``NULL`` en caso de error." -#: ../Doc/c-api/long.rst:80 +#: ../Doc/c-api/long.rst:93 +#, fuzzy +msgid "" +"Return a new :c:type:`PyLongObject` object from an unsigned C :c:expr:" +"`uint32_t` or :c:expr:`uint64_t`, or ``NULL`` with an exception set on " +"failure." +msgstr "" +"Retorna un objeto :c:type:`PyLongObject` nuevo desde un C :c:expr:`unsigned " +"long`, o ``NULL`` en caso de error." + +#: ../Doc/c-api/long.rst:102 msgid "" "Return a new :c:type:`PyLongObject` object from the integer part of *v*, or " "``NULL`` on failure." @@ -137,7 +156,7 @@ msgstr "" "Retorna un nuevo objeto :c:type:`PyLongObject` de la parte entera de *v*, o " "``NULL`` en caso de error." -#: ../Doc/c-api/long.rst:86 +#: ../Doc/c-api/long.rst:108 msgid "" "Return a new :c:type:`PyLongObject` based on the string value in *str*, " "which is interpreted according to the radix in *base*, or ``NULL`` on " @@ -164,17 +183,14 @@ msgstr "" "NULL después de los dígitos y los espacios finales, se lanzará :exc:" "`ValueError`." -#: ../Doc/c-api/long.rst:97 +#: ../Doc/c-api/long.rst:119 msgid "" -"Python methods :meth:`int.to_bytes` and :meth:`int.from_bytes` to convert a :" -"c:type:`PyLongObject` to/from an array of bytes in base ``256``. You can " -"call those from C using :c:func:`PyObject_CallMethod`." +":c:func:`PyLong_AsNativeBytes()` and :c:func:`PyLong_FromNativeBytes()` " +"functions can be used to convert a :c:type:`PyLongObject` to/from an array " +"of bytes in base ``256``." msgstr "" -"Los métodos de Python :meth:`int.to_bytes` y :meth:`int.from_bytes` para " -"convertir un :c:type:`PyLongObject` a/desde un arreglo de bytes en base " -"``256``. Se pueden llamar desde C al utilizar :c:func:`PyObject_CallMethod`." -#: ../Doc/c-api/long.rst:104 +#: ../Doc/c-api/long.rst:126 msgid "" "Convert a sequence of Unicode digits in the string *u* to a Python integer " "value." @@ -182,7 +198,7 @@ msgstr "" "Convierte una secuencia de dígitos Unicode en la cadena de caracteres *u* en " "un valor entero de Python." -#: ../Doc/c-api/long.rst:112 +#: ../Doc/c-api/long.rst:134 msgid "" "Create a Python integer from the pointer *p*. The pointer value can be " "retrieved from the resulting value using :c:func:`PyLong_AsVoidPtr`." @@ -190,7 +206,7 @@ msgstr "" "Crea un entero de Python desde el puntero *p*. El valor del puntero se puede " "recuperar del valor resultante usando :c:func:`PyLong_AsVoidPtr`." -#: ../Doc/c-api/long.rst:118 +#: ../Doc/c-api/long.rst:140 msgid "" "Create a Python integer from the value contained in the first *n_bytes* of " "*buffer*, interpreted as a two's-complement signed number." @@ -198,7 +214,7 @@ msgstr "" "Crea un entero de Python desde el valor contenido en los primeros *n_bytes* " "de *buffer*, interpretado como un número con signo del complemento a dos." -#: ../Doc/c-api/long.rst:121 +#: ../Doc/c-api/long.rst:143 msgid "" "*flags* are as for :c:func:`PyLong_AsNativeBytes`. Passing ``-1`` will " "select the native endian that CPython was compiled with and assume that the " @@ -212,7 +228,7 @@ msgstr "" "``Py_ASNATIVEBYTES_UNSIGNED_BUFFER`` producirá el mismo resultado que llamar " "a :c:func:`PyLong_FromUnsignedNativeBytes`. Otros indicadores se ignoran." -#: ../Doc/c-api/long.rst:132 +#: ../Doc/c-api/long.rst:154 msgid "" "Create a Python integer from the value contained in the first *n_bytes* of " "*buffer*, interpreted as an unsigned number." @@ -220,7 +236,7 @@ msgstr "" "Crea un entero de Python desde el valor contenido en los primeros *n_bytes* " "de *buffer*, interpretado como un número sin signo." -#: ../Doc/c-api/long.rst:135 +#: ../Doc/c-api/long.rst:157 msgid "" "*flags* are as for :c:func:`PyLong_AsNativeBytes`. Passing ``-1`` will " "select the native endian that CPython was compiled with and assume that the " @@ -231,7 +247,7 @@ msgstr "" "asumirá que el bit más significativo no es un bit con signo. Los indicadores " "que no sean endian se ignoran." -#: ../Doc/c-api/long.rst:148 ../Doc/c-api/long.rst:184 +#: ../Doc/c-api/long.rst:170 ../Doc/c-api/long.rst:206 msgid "" "Return a C :c:expr:`long` representation of *obj*. If *obj* is not an " "instance of :c:type:`PyLongObject`, first call its :meth:`~object.__index__` " @@ -242,7 +258,7 @@ msgstr "" "`~object.__index__` (si está presente) para convertirlo en un :c:type:" "`PyLongObject`." -#: ../Doc/c-api/long.rst:152 +#: ../Doc/c-api/long.rst:174 msgid "" "Raise :exc:`OverflowError` if the value of *obj* is out of range for a :c:" "expr:`long`." @@ -250,27 +266,27 @@ msgstr "" "Lanza :exc:`OverflowError` si el valor de *obj* está fuera de rango para un :" "c:expr:`long`." -#: ../Doc/c-api/long.rst:155 ../Doc/c-api/long.rst:193 -#: ../Doc/c-api/long.rst:214 ../Doc/c-api/long.rst:234 -#: ../Doc/c-api/long.rst:257 +#: ../Doc/c-api/long.rst:177 ../Doc/c-api/long.rst:215 +#: ../Doc/c-api/long.rst:236 ../Doc/c-api/long.rst:256 +#: ../Doc/c-api/long.rst:279 msgid "Returns ``-1`` on error. Use :c:func:`PyErr_Occurred` to disambiguate." msgstr "" "Retorna ``-1`` en caso de error. Use :c:func:`PyErr_Occurred` para " "desambiguar." -#: ../Doc/c-api/long.rst:157 ../Doc/c-api/long.rst:195 -#: ../Doc/c-api/long.rst:216 ../Doc/c-api/long.rst:238 -#: ../Doc/c-api/long.rst:322 ../Doc/c-api/long.rst:342 +#: ../Doc/c-api/long.rst:179 ../Doc/c-api/long.rst:217 +#: ../Doc/c-api/long.rst:238 ../Doc/c-api/long.rst:260 +#: ../Doc/c-api/long.rst:344 ../Doc/c-api/long.rst:364 msgid "Use :meth:`~object.__index__` if available." msgstr "Use :meth:`~object.__index__` si está disponible." -#: ../Doc/c-api/long.rst:160 ../Doc/c-api/long.rst:198 -#: ../Doc/c-api/long.rst:219 ../Doc/c-api/long.rst:241 -#: ../Doc/c-api/long.rst:325 ../Doc/c-api/long.rst:345 +#: ../Doc/c-api/long.rst:182 ../Doc/c-api/long.rst:220 +#: ../Doc/c-api/long.rst:241 ../Doc/c-api/long.rst:263 +#: ../Doc/c-api/long.rst:347 ../Doc/c-api/long.rst:367 msgid "This function will no longer use :meth:`~object.__int__`." msgstr "Esta función no usará más :meth:`~object.__int__`." -#: ../Doc/c-api/long.rst:167 +#: ../Doc/c-api/long.rst:189 msgid "" "A :term:`soft deprecated` alias. Exactly equivalent to the preferred " "``PyLong_AsLong``. In particular, it can fail with :exc:`OverflowError` or " @@ -280,11 +296,11 @@ msgstr "" "preferido. En particular, puede fallar con :exc:`OverflowError` u otra " "excepción." -#: ../Doc/c-api/long.rst:171 +#: ../Doc/c-api/long.rst:193 msgid "The function is soft deprecated." msgstr "La función está deprecada de forma suave." -#: ../Doc/c-api/long.rst:176 +#: ../Doc/c-api/long.rst:198 msgid "" "Similar to :c:func:`PyLong_AsLong`, but store the result in a C :c:expr:" "`int` instead of a C :c:expr:`long`." @@ -292,7 +308,7 @@ msgstr "" "Similar a :c:func:`PyLong_AsLong`, pero almacena el resultado en un C :c:" "expr:`int` en lugar de un C :c:expr:`long`." -#: ../Doc/c-api/long.rst:188 +#: ../Doc/c-api/long.rst:210 msgid "" "If the value of *obj* is greater than :c:macro:`LONG_MAX` or less than :c:" "macro:`LONG_MIN`, set *\\*overflow* to ``1`` or ``-1``, respectively, and " @@ -305,7 +321,7 @@ msgstr "" "produce alguna otra excepción, configura *\\*overflow* en ``0`` y retorna " "``-1`` como de costumbre." -#: ../Doc/c-api/long.rst:207 ../Doc/c-api/long.rst:225 +#: ../Doc/c-api/long.rst:229 ../Doc/c-api/long.rst:247 msgid "" "Return a C :c:expr:`long long` representation of *obj*. If *obj* is not an " "instance of :c:type:`PyLongObject`, first call its :meth:`~object.__index__` " @@ -316,7 +332,7 @@ msgstr "" "`~object.__index__` (si está presente) para convertirlo en un :c:type:" "`PyLongObject`." -#: ../Doc/c-api/long.rst:211 +#: ../Doc/c-api/long.rst:233 msgid "" "Raise :exc:`OverflowError` if the value of *obj* is out of range for a :c:" "expr:`long long`." @@ -324,7 +340,7 @@ msgstr "" "Lanza :exc:`OverflowError` si el valor de *obj* está fuera de rango para un :" "c:expr:`long long`." -#: ../Doc/c-api/long.rst:229 +#: ../Doc/c-api/long.rst:251 msgid "" "If the value of *obj* is greater than :c:macro:`LLONG_MAX` or less than :c:" "macro:`LLONG_MIN`, set *\\*overflow* to ``1`` or ``-1``, respectively, and " @@ -337,7 +353,7 @@ msgstr "" "produce alguna otra excepción, configura *\\*overflow* en ``0`` y retorna " "``-1`` como de costumbre." -#: ../Doc/c-api/long.rst:251 +#: ../Doc/c-api/long.rst:273 msgid "" "Return a C :c:type:`Py_ssize_t` representation of *pylong*. *pylong* must " "be an instance of :c:type:`PyLongObject`." @@ -345,7 +361,7 @@ msgstr "" "Retorna una representación de C :c:type:`Py_ssize_t` de *pylong*. *pylong* " "debe ser una instancia de :c:type:`PyLongObject`." -#: ../Doc/c-api/long.rst:254 +#: ../Doc/c-api/long.rst:276 msgid "" "Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:" "type:`Py_ssize_t`." @@ -353,7 +369,7 @@ msgstr "" "Lanza :exc:`OverflowError` si el valor de *pylong* está fuera de rango para " "un :c:type:`Py_ssize_t`." -#: ../Doc/c-api/long.rst:266 +#: ../Doc/c-api/long.rst:288 msgid "" "Return a C :c:expr:`unsigned long` representation of *pylong*. *pylong* " "must be an instance of :c:type:`PyLongObject`." @@ -361,7 +377,7 @@ msgstr "" "Retorna una representación de C :c:expr:`unsigned long` de *pylong*. " "*pylong* debe ser una instancia de :c:type:`PyLongObject`." -#: ../Doc/c-api/long.rst:269 +#: ../Doc/c-api/long.rst:291 msgid "" "Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:" "expr:`unsigned long`." @@ -369,7 +385,7 @@ msgstr "" "Lanza :exc:`OverflowError` si el valor de *pylong* está fuera de rango para " "un :c:expr:`unsigned long`." -#: ../Doc/c-api/long.rst:272 +#: ../Doc/c-api/long.rst:294 msgid "" "Returns ``(unsigned long)-1`` on error. Use :c:func:`PyErr_Occurred` to " "disambiguate." @@ -377,7 +393,7 @@ msgstr "" "Retorna ``(unsigned long)-1`` en caso de error. Use :c:func:`PyErr_Occurred` " "para desambiguar." -#: ../Doc/c-api/long.rst:282 +#: ../Doc/c-api/long.rst:304 msgid "" "Return a C :c:type:`size_t` representation of *pylong*. *pylong* must be an " "instance of :c:type:`PyLongObject`." @@ -385,7 +401,7 @@ msgstr "" "Retorna una representación de C :c:type:`size_t` de *pylong*. *pylong* debe " "ser una instancia de :c:type:`PyLongObject`." -#: ../Doc/c-api/long.rst:285 +#: ../Doc/c-api/long.rst:307 msgid "" "Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:" "type:`size_t`." @@ -393,7 +409,7 @@ msgstr "" "Lanza :exc:`OverflowError` si el valor de *pylong* está fuera de rango para " "un :c:type:`size_t`." -#: ../Doc/c-api/long.rst:288 +#: ../Doc/c-api/long.rst:310 msgid "" "Returns ``(size_t)-1`` on error. Use :c:func:`PyErr_Occurred` to " "disambiguate." @@ -401,7 +417,7 @@ msgstr "" "Retorna ``(size_t) -1`` en caso de error. Use :c:func:`PyErr_Occurred` para " "desambiguar." -#: ../Doc/c-api/long.rst:297 +#: ../Doc/c-api/long.rst:319 msgid "" "Return a C :c:expr:`unsigned long long` representation of *pylong*. " "*pylong* must be an instance of :c:type:`PyLongObject`." @@ -409,7 +425,7 @@ msgstr "" "Retorna una representación de C :c:expr:`unsigned long long` de *pylong*. " "*pylong* debe ser una instancia de :c:type:`PyLongObject`." -#: ../Doc/c-api/long.rst:300 +#: ../Doc/c-api/long.rst:322 msgid "" "Raise :exc:`OverflowError` if the value of *pylong* is out of range for an :" "c:expr:`unsigned long long`." @@ -417,7 +433,7 @@ msgstr "" "Lanza :exc:`OverflowError` si el valor de *pylong* está fuera de rango para " "un :c:expr:`unsigned long long`." -#: ../Doc/c-api/long.rst:303 +#: ../Doc/c-api/long.rst:325 msgid "" "Returns ``(unsigned long long)-1`` on error. Use :c:func:`PyErr_Occurred` to " "disambiguate." @@ -425,14 +441,14 @@ msgstr "" "Retorna ``(unsigned long long) -1`` en caso de error. Use :c:func:" "`PyErr_Occurred` para desambiguar." -#: ../Doc/c-api/long.rst:306 +#: ../Doc/c-api/long.rst:328 msgid "" "A negative *pylong* now raises :exc:`OverflowError`, not :exc:`TypeError`." msgstr "" "Ahora un *pylong* negativo lanza un :exc:`OverflowError`, no :exc:" "`TypeError`." -#: ../Doc/c-api/long.rst:312 +#: ../Doc/c-api/long.rst:334 msgid "" "Return a C :c:expr:`unsigned long` representation of *obj*. If *obj* is not " "an instance of :c:type:`PyLongObject`, first call its :meth:`~object." @@ -443,7 +459,7 @@ msgstr "" "`~object.__index__` (si está presente) para convertirlo en un :c:type:" "`PyLongObject`." -#: ../Doc/c-api/long.rst:316 +#: ../Doc/c-api/long.rst:338 msgid "" "If the value of *obj* is out of range for an :c:expr:`unsigned long`, return " "the reduction of that value modulo ``ULONG_MAX + 1``." @@ -451,7 +467,7 @@ msgstr "" "Si el valor de *obj* está fuera del rango para :c:expr:`unsigned long`, " "retorna la reducción de ese valor módulo ``ULONG_MAX + 1``." -#: ../Doc/c-api/long.rst:319 +#: ../Doc/c-api/long.rst:341 msgid "" "Returns ``(unsigned long)-1`` on error. Use :c:func:`PyErr_Occurred` to " "disambiguate." @@ -459,7 +475,7 @@ msgstr "" "Retorna ``(unsigned long)-1`` en caso de error. Use :c:func:`PyErr_Occurred` " "para desambiguar." -#: ../Doc/c-api/long.rst:331 +#: ../Doc/c-api/long.rst:353 msgid "" "Return a C :c:expr:`unsigned long long` representation of *obj*. If *obj* " "is not an instance of :c:type:`PyLongObject`, first call its :meth:`~object." @@ -470,7 +486,7 @@ msgstr "" "meth:`~object.__index__` (si está presente) para convertirlo en un :c:type:" "`PyLongObject`." -#: ../Doc/c-api/long.rst:336 +#: ../Doc/c-api/long.rst:358 msgid "" "If the value of *obj* is out of range for an :c:expr:`unsigned long long`, " "return the reduction of that value modulo ``ULLONG_MAX + 1``." @@ -478,7 +494,7 @@ msgstr "" "Si el valor de *obj* está fuera del rango para :c:expr:`unsigned long long`, " "retorna la reducción de ese valor módulo ``ULLONG_MAX + 1``." -#: ../Doc/c-api/long.rst:339 +#: ../Doc/c-api/long.rst:361 msgid "" "Returns ``(unsigned long long)-1`` on error. Use :c:func:`PyErr_Occurred` " "to disambiguate." @@ -486,7 +502,49 @@ msgstr "" "Retorna ``(unsigned long long) -1`` por error. Use :c:func:`PyErr_Occurred` " "para desambiguar." -#: ../Doc/c-api/long.rst:351 +#: ../Doc/c-api/long.rst:374 +msgid "" +"Set *\\*value* to a signed C :c:expr:`int32_t` or :c:expr:`int64_t` " +"representation of *obj*." +msgstr "" + +#: ../Doc/c-api/long.rst:377 ../Doc/c-api/long.rst:397 +#, fuzzy +msgid "" +"If *obj* is not an instance of :c:type:`PyLongObject`, first call its :meth:" +"`~object.__index__` method (if present) to convert it to a :c:type:" +"`PyLongObject`." +msgstr "" +"Retorna una representación C :c:expr:`long` de *obj*. Si *obj* no es una " +"instancia de :c:type:`PyLongObject`, primero llama a su método :meth:" +"`~object.__index__` (si está presente) para convertirlo en un :c:type:" +"`PyLongObject`." + +#: ../Doc/c-api/long.rst:381 ../Doc/c-api/long.rst:402 +msgid "If the *obj* value is out of range, raise an :exc:`OverflowError`." +msgstr "" + +#: ../Doc/c-api/long.rst:383 ../Doc/c-api/long.rst:404 +msgid "" +"Set *\\*value* and return ``0`` on success. Set an exception and return " +"``-1`` on error." +msgstr "" + +#: ../Doc/c-api/long.rst:386 ../Doc/c-api/long.rst:407 +msgid "*value* must not be ``NULL``." +msgstr "" + +#: ../Doc/c-api/long.rst:394 +msgid "" +"Set *\\*value* to an unsigned C :c:expr:`uint32_t` or :c:expr:`uint64_t` " +"representation of *obj*." +msgstr "" + +#: ../Doc/c-api/long.rst:401 +msgid "If *obj* is negative, raise a :exc:`ValueError`." +msgstr "" + +#: ../Doc/c-api/long.rst:414 msgid "" "Return a C :c:expr:`double` representation of *pylong*. *pylong* must be an " "instance of :c:type:`PyLongObject`." @@ -494,7 +552,7 @@ msgstr "" "Retorna una representación de C :c:expr:`double` de *pylong*. *pylong* debe " "ser una instancia de :c:type:`PyLongObject`." -#: ../Doc/c-api/long.rst:354 +#: ../Doc/c-api/long.rst:417 msgid "" "Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:" "expr:`double`." @@ -502,14 +560,14 @@ msgstr "" "Lanza :exc:`OverflowError` si el valor de *pylong* está fuera de rango para " "un :c:expr:`double`." -#: ../Doc/c-api/long.rst:357 +#: ../Doc/c-api/long.rst:420 msgid "" "Returns ``-1.0`` on error. Use :c:func:`PyErr_Occurred` to disambiguate." msgstr "" "Retorna ``-1.0`` en caso de error. Use :c:func:`PyErr_Occurred` para " "desambiguar." -#: ../Doc/c-api/long.rst:362 +#: ../Doc/c-api/long.rst:425 msgid "" "Convert a Python integer *pylong* to a C :c:expr:`void` pointer. If *pylong* " "cannot be converted, an :exc:`OverflowError` will be raised. This is only " @@ -521,14 +579,14 @@ msgstr "" "solo se garantiza para producir un puntero utilizable :c:expr:`void` para " "valores creados con :c:func:`PyLong_FromVoidPtr`." -#: ../Doc/c-api/long.rst:367 +#: ../Doc/c-api/long.rst:430 msgid "" "Returns ``NULL`` on error. Use :c:func:`PyErr_Occurred` to disambiguate." msgstr "" "Retorna ``NULL`` en caso de error. Use :c:func:`PyErr_Occurred` para " "desambiguar." -#: ../Doc/c-api/long.rst:372 +#: ../Doc/c-api/long.rst:435 msgid "" "Copy the Python integer value *pylong* to a native *buffer* of size " "*n_bytes*. The *flags* can be set to ``-1`` to behave similarly to a C cast, " @@ -539,7 +597,7 @@ msgstr "" "similar a una conversión de C, o en los valores documentados a continuación " "para controlar el comportamiento." -#: ../Doc/c-api/long.rst:376 +#: ../Doc/c-api/long.rst:439 msgid "" "Returns ``-1`` with an exception raised on error. This may happen if " "*pylong* cannot be interpreted as an integer, or if *pylong* was negative " @@ -550,7 +608,7 @@ msgstr "" "era negativo y se configuró el indicador " "``Py_ASNATIVEBYTES_REJECT_NEGATIVE``." -#: ../Doc/c-api/long.rst:380 +#: ../Doc/c-api/long.rst:443 msgid "" "Otherwise, returns the number of bytes required to store the value. If this " "is equal to or less than *n_bytes*, the entire value was copied. All " @@ -561,19 +619,20 @@ msgstr "" "escriben todos los *n_bytes* del búfer: los búferes grandes se rellenan con " "ceros." -#: ../Doc/c-api/long.rst:385 +#: ../Doc/c-api/long.rst:448 +#, fuzzy msgid "" -"If the returned value is greater than than *n_bytes*, the value was " -"truncated: as many of the lowest bits of the value as could fit are written, " -"and the higher bits are ignored. This matches the typical behavior of a C-" -"style downcast." +"If the returned value is greater than *n_bytes*, the value was truncated: as " +"many of the lowest bits of the value as could fit are written, and the " +"higher bits are ignored. This matches the typical behavior of a C-style " +"downcast." msgstr "" "Si el valor que se retorna es mayor que *n_bytes*, se trunca el valor: se " "escriben todos los bits más bajos que quepan y se ignoran los bits más " "altos. Esto coincide con el comportamiento típico de una conversión " "descendente de estilo C." -#: ../Doc/c-api/long.rst:392 +#: ../Doc/c-api/long.rst:455 msgid "" "Overflow is not considered an error. If the returned value is larger than " "*n_bytes*, most significant bits were discarded." @@ -581,19 +640,20 @@ msgstr "" "El desbordamiento no se considera un error. Si el valor que se retorna es " "mayor que *n_bytes*, se descartan los bits más significativos." -#: ../Doc/c-api/long.rst:395 +#: ../Doc/c-api/long.rst:458 msgid "``0`` will never be returned." msgstr "``0`` nunca será retornado." -#: ../Doc/c-api/long.rst:397 +#: ../Doc/c-api/long.rst:460 msgid "Values are always copied as two's-complement." msgstr "Los valores siempre se copian como complemento a dos." -#: ../Doc/c-api/long.rst:399 +#: ../Doc/c-api/long.rst:462 msgid "Usage example::" msgstr "Ejemplo de uso::" -#: ../Doc/c-api/long.rst:401 +#: ../Doc/c-api/long.rst:464 +#, python-brace-format msgid "" "int32_t value;\n" "Py_ssize_t bytes = PyLong_AsNativeBytes(pylong, &value, sizeof(value), -1);\n" @@ -623,7 +683,7 @@ msgstr "" " // los bits más bajos truncados de pylong.\n" "}" -#: ../Doc/c-api/long.rst:415 +#: ../Doc/c-api/long.rst:478 msgid "" "Passing zero to *n_bytes* will return the size of a buffer that would be " "large enough to hold the value. This may be larger than technically " @@ -634,7 +694,7 @@ msgstr "" "técnicamente necesario, pero no excesivamente grande. Si *n_bytes=0*, " "*buffer* puede ser ``NULL``." -#: ../Doc/c-api/long.rst:422 +#: ../Doc/c-api/long.rst:485 msgid "" "Passing *n_bytes=0* to this function is not an accurate way to determine the " "bit length of the value." @@ -642,7 +702,7 @@ msgstr "" "Al pasar *n_bytes=0* a esta función no es una forma precisa de determinar la " "longitud en bits del valor." -#: ../Doc/c-api/long.rst:425 +#: ../Doc/c-api/long.rst:488 msgid "" "To get at the entire Python value of an unknown size, the function can be " "called twice: first to determine the buffer size, then to fill it::" @@ -651,7 +711,8 @@ msgstr "" "función se puede llamar dos veces: primero para determinar el tamaño del " "búfer y luego para llenarlo::" -#: ../Doc/c-api/long.rst:428 +#: ../Doc/c-api/long.rst:491 +#, python-brace-format msgid "" "// Ask how much space we need.\n" "Py_ssize_t expected = PyLong_AsNativeBytes(pylong, NULL, 0, -1);\n" @@ -709,10 +770,11 @@ msgstr "" "// ... use bignum ...\n" "free(bignum);" -#: ../Doc/c-api/long.rst:456 +#: ../Doc/c-api/long.rst:519 +#, fuzzy msgid "" "*flags* is either ``-1`` (``Py_ASNATIVEBYTES_DEFAULTS``) to select defaults " -"that behave most like a C cast, or a combintation of the other flags in the " +"that behave most like a C cast, or a combination of the other flags in the " "table below. Note that ``-1`` cannot be combined with other flags." msgstr "" "*flags* es ``-1`` (``Py_ASNATIVEBYTES_DEFAULTS``) para seleccionar valores " @@ -720,7 +782,7 @@ msgstr "" "una combinación de los demás indicadores de la tabla a continuación. Tenga " "en cuenta que ``-1`` no se puede combinar con otros indicadores." -#: ../Doc/c-api/long.rst:461 +#: ../Doc/c-api/long.rst:524 msgid "" "Currently, ``-1`` corresponds to ``Py_ASNATIVEBYTES_NATIVE_ENDIAN | " "Py_ASNATIVEBYTES_UNSIGNED_BUFFER``." @@ -728,43 +790,43 @@ msgstr "" "Actualmente, ``-1`` corresponde a ``Py_ASNATIVEBYTES_NATIVE_ENDIAN | " "Py_ASNATIVEBYTES_UNSIGNED_BUFFER``." -#: ../Doc/c-api/long.rst:467 +#: ../Doc/c-api/long.rst:530 msgid "Flag" msgstr "Indicador" -#: ../Doc/c-api/long.rst:467 +#: ../Doc/c-api/long.rst:530 msgid "Value" msgstr "Valor" -#: ../Doc/c-api/long.rst:469 +#: ../Doc/c-api/long.rst:532 msgid "``-1``" msgstr "``-1``" -#: ../Doc/c-api/long.rst:470 +#: ../Doc/c-api/long.rst:533 msgid "``0``" msgstr "``0``" -#: ../Doc/c-api/long.rst:471 +#: ../Doc/c-api/long.rst:534 msgid "``1``" msgstr "``1``" -#: ../Doc/c-api/long.rst:472 +#: ../Doc/c-api/long.rst:535 msgid "``3``" msgstr "``3``" -#: ../Doc/c-api/long.rst:473 +#: ../Doc/c-api/long.rst:536 msgid "``4``" msgstr "``4``" -#: ../Doc/c-api/long.rst:474 +#: ../Doc/c-api/long.rst:537 msgid "``8``" msgstr "``8``" -#: ../Doc/c-api/long.rst:475 +#: ../Doc/c-api/long.rst:538 msgid "``16``" msgstr "``16``" -#: ../Doc/c-api/long.rst:478 +#: ../Doc/c-api/long.rst:541 msgid "" "Specifying ``Py_ASNATIVEBYTES_NATIVE_ENDIAN`` will override any other endian " "flags. Passing ``2`` is reserved." @@ -772,7 +834,7 @@ msgstr "" "Especificar ``Py_ASNATIVEBYTES_NATIVE_ENDIAN`` redefinirá cualquier otro " "indicador endian. Pasar ``2`` está reservado." -#: ../Doc/c-api/long.rst:481 +#: ../Doc/c-api/long.rst:544 msgid "" "By default, sufficient buffer will be requested to include a sign bit. For " "example, when converting 128 with *n_bytes=1*, the function will return 2 " @@ -782,7 +844,7 @@ msgstr "" "Por ejemplo, al convertir 128 con *n_bytes=1*, la función retornará 2 (o " "más) para almacenar un bit de signo cero." -#: ../Doc/c-api/long.rst:485 +#: ../Doc/c-api/long.rst:548 msgid "" "If ``Py_ASNATIVEBYTES_UNSIGNED_BUFFER`` is specified, a zero sign bit will " "be omitted from size calculations. This allows, for example, 128 to fit in a " @@ -798,7 +860,7 @@ msgstr "" "negativo. Tenga en cuenta que este indicador no afecta el manejo de valores " "negativos: para ellos, siempre se solicita espacio para un bit de signo." -#: ../Doc/c-api/long.rst:492 +#: ../Doc/c-api/long.rst:555 msgid "" "Specifying ``Py_ASNATIVEBYTES_REJECT_NEGATIVE`` causes an exception to be " "set if *pylong* is negative. Without this flag, negative values will be " @@ -810,7 +872,7 @@ msgstr "" "negativos siempre que haya suficiente espacio para al menos un bit de signo, " "independientemente de si se especificó ``Py_ASNATIVEBYTES_UNSIGNED_BUFFER``." -#: ../Doc/c-api/long.rst:497 +#: ../Doc/c-api/long.rst:560 msgid "" "If ``Py_ASNATIVEBYTES_ALLOW_INDEX`` is specified and a non-integer value is " "passed, its :meth:`~object.__index__` method will be called first. This may " @@ -826,7 +888,7 @@ msgstr "" "valores en uso. Cuando *flags* es ``-1``, esta opción no se establece y los " "valores distintos de un entero lanzarán :exc:`TypeError`." -#: ../Doc/c-api/long.rst:506 +#: ../Doc/c-api/long.rst:569 msgid "" "With the default *flags* (``-1``, or *UNSIGNED_BUFFER* without " "*REJECT_NEGATIVE*), multiple Python integers can map to a single value " @@ -839,7 +901,56 @@ msgstr "" "a un búfer de un solo byte y configuran todos sus bits. Esto coincide con el " "comportamiento típico de conversión de C." -#: ../Doc/c-api/long.rst:517 +#: ../Doc/c-api/long.rst:580 +msgid "Get the sign of the integer object *obj*." +msgstr "" + +#: ../Doc/c-api/long.rst:582 +msgid "" +"On success, set *\\*sign* to the integer sign (0, -1 or +1 for zero, " +"negative or positive integer, respectively) and return 0." +msgstr "" + +#: ../Doc/c-api/long.rst:585 +msgid "" +"On failure, return -1 with an exception set. This function always succeeds " +"if *obj* is a :c:type:`PyLongObject` or its subtype." +msgstr "" + +#: ../Doc/c-api/long.rst:593 +msgid "Check if the integer object *obj* is positive (``obj > 0``)." +msgstr "" + +#: ../Doc/c-api/long.rst:595 +msgid "" +"If *obj* is an instance of :c:type:`PyLongObject` or its subtype, return " +"``1`` when it's positive and ``0`` otherwise. Else set an exception and " +"return ``-1``." +msgstr "" + +#: ../Doc/c-api/long.rst:604 +msgid "Check if the integer object *obj* is negative (``obj < 0``)." +msgstr "" + +#: ../Doc/c-api/long.rst:606 +msgid "" +"If *obj* is an instance of :c:type:`PyLongObject` or its subtype, return " +"``1`` when it's negative and ``0`` otherwise. Else set an exception and " +"return ``-1``." +msgstr "" + +#: ../Doc/c-api/long.rst:615 +msgid "Check if the integer object *obj* is zero." +msgstr "" + +#: ../Doc/c-api/long.rst:617 +msgid "" +"If *obj* is an instance of :c:type:`PyLongObject` or its subtype, return " +"``1`` when it's zero and ``0`` otherwise. Else set an exception and return " +"``-1``." +msgstr "" + +#: ../Doc/c-api/long.rst:626 msgid "" "On success, return a read only :term:`named tuple`, that holds information " "about Python's internal representation of integers. See :data:`sys.int_info` " @@ -849,15 +960,15 @@ msgstr "" "contiene información sobre la representación interna de enteros en Python. " "Consulte :data:`sys.int_info` para obtener una descripción de cada campo." -#: ../Doc/c-api/long.rst:521 +#: ../Doc/c-api/long.rst:630 msgid "On failure, return ``NULL`` with an exception set." msgstr "En caso de error, retorna ``NULL`` con una excepción configurada." -#: ../Doc/c-api/long.rst:528 +#: ../Doc/c-api/long.rst:637 msgid "Return 1 if *op* is compact, 0 otherwise." msgstr "Retorna 1 si *op* es compacto, 0 en caso contrario." -#: ../Doc/c-api/long.rst:530 +#: ../Doc/c-api/long.rst:639 msgid "" "This function makes it possible for performance-critical code to implement a " "“fast path” for small integers. For compact values use :c:func:" @@ -869,13 +980,13 @@ msgstr "" "`PyUnstable_Long_CompactValue`; para otros, utilice una función :c:func:" "`PyLong_As* ` o :c:func:`PyLong_AsNativeBytes`." -#: ../Doc/c-api/long.rst:536 +#: ../Doc/c-api/long.rst:645 msgid "The speedup is expected to be negligible for most users." msgstr "" "Se espera que la aceleración sea insignificante para la mayoría de los " "usuarios." -#: ../Doc/c-api/long.rst:538 +#: ../Doc/c-api/long.rst:647 msgid "" "Exactly what values are considered compact is an implementation detail and " "is subject to change." @@ -883,7 +994,7 @@ msgstr "" "Exactamente qué valores se consideran compactos es un detalle de " "implementación y está sujeto a cambios." -#: ../Doc/c-api/long.rst:543 +#: ../Doc/c-api/long.rst:655 msgid "" "If *op* is compact, as determined by :c:func:`PyUnstable_Long_IsCompact`, " "return its value." @@ -891,10 +1002,256 @@ msgstr "" "Si *op* es compacto, se determina por :c:func:`PyUnstable_Long_IsCompact`, " "retorna su valor." -#: ../Doc/c-api/long.rst:546 +#: ../Doc/c-api/long.rst:658 msgid "Otherwise, the return value is undefined." msgstr "De lo contrario, el valor que retorna está indefinido." +#: ../Doc/c-api/long.rst:664 +msgid "Export API" +msgstr "" + +#: ../Doc/c-api/long.rst:670 +msgid "" +"Layout of an array of \"digits\" (\"limbs\" in the GMP terminology), used to " +"represent absolute value for arbitrary precision integers." +msgstr "" + +#: ../Doc/c-api/long.rst:673 +msgid "" +"Use :c:func:`PyLong_GetNativeLayout` to get the native layout of Python :" +"class:`int` objects, used internally for integers with \"big enough\" " +"absolute value." +msgstr "" + +#: ../Doc/c-api/long.rst:677 +msgid "" +"See also :data:`sys.int_info` which exposes similar information in Python." +msgstr "" + +#: ../Doc/c-api/long.rst:681 +msgid "" +"Bits per digit. For example, a 15 bit digit means that bits 0-14 contain " +"meaningful information." +msgstr "" + +#: ../Doc/c-api/long.rst:686 +msgid "" +"Digit size in bytes. For example, a 15 bit digit will require at least 2 " +"bytes." +msgstr "" + +#: ../Doc/c-api/long.rst:691 +msgid "Digits order:" +msgstr "" + +#: ../Doc/c-api/long.rst:693 +msgid "``1`` for most significant digit first" +msgstr "" + +#: ../Doc/c-api/long.rst:694 +msgid "``-1`` for least significant digit first" +msgstr "" + +#: ../Doc/c-api/long.rst:698 +msgid "Digit endianness:" +msgstr "" + +#: ../Doc/c-api/long.rst:700 +msgid "``1`` for most significant byte first (big endian)" +msgstr "" + +#: ../Doc/c-api/long.rst:701 +msgid "``-1`` for least significant byte first (little endian)" +msgstr "" + +#: ../Doc/c-api/long.rst:706 +msgid "Get the native layout of Python :class:`int` objects." +msgstr "" + +#: ../Doc/c-api/long.rst:708 +msgid "See the :c:struct:`PyLongLayout` structure." +msgstr "" + +#: ../Doc/c-api/long.rst:710 +msgid "" +"The function must not be called before Python initialization nor after " +"Python finalization. The returned layout is valid until Python is finalized. " +"The layout is the same for all Python sub-interpreters in a process, and so " +"it can be cached." +msgstr "" + +#: ../Doc/c-api/long.rst:718 +msgid "Export of a Python :class:`int` object." +msgstr "" + +#: ../Doc/c-api/long.rst:720 +msgid "There are two cases:" +msgstr "" + +#: ../Doc/c-api/long.rst:722 +msgid "" +"If :c:member:`digits` is ``NULL``, only use the :c:member:`value` member." +msgstr "" + +#: ../Doc/c-api/long.rst:723 +msgid "" +"If :c:member:`digits` is not ``NULL``, use :c:member:`negative`, :c:member:" +"`ndigits` and :c:member:`digits` members." +msgstr "" + +#: ../Doc/c-api/long.rst:728 +msgid "" +"The native integer value of the exported :class:`int` object. Only valid if :" +"c:member:`digits` is ``NULL``." +msgstr "" + +#: ../Doc/c-api/long.rst:733 +msgid "" +"``1`` if the number is negative, ``0`` otherwise. Only valid if :c:member:" +"`digits` is not ``NULL``." +msgstr "" + +#: ../Doc/c-api/long.rst:738 +msgid "" +"Number of digits in :c:member:`digits` array. Only valid if :c:member:" +"`digits` is not ``NULL``." +msgstr "" + +#: ../Doc/c-api/long.rst:743 +msgid "Read-only array of unsigned digits. Can be ``NULL``." +msgstr "" + +#: ../Doc/c-api/long.rst:748 +msgid "Export a Python :class:`int` object." +msgstr "" + +#: ../Doc/c-api/long.rst:750 +msgid "" +"*export_long* must point to a :c:struct:`PyLongExport` structure allocated " +"by the caller. It must not be ``NULL``." +msgstr "" + +#: ../Doc/c-api/long.rst:753 +msgid "" +"On success, fill in *\\*export_long* and return ``0``. On error, set an " +"exception and return ``-1``." +msgstr "" + +#: ../Doc/c-api/long.rst:756 +msgid "" +":c:func:`PyLong_FreeExport` must be called when the export is no longer " +"needed." +msgstr "" + +#: ../Doc/c-api/long.rst:760 +msgid "" +"This function always succeeds if *obj* is a Python :class:`int` object or a " +"subclass." +msgstr "" + +#: ../Doc/c-api/long.rst:766 +msgid "Release the export *export_long* created by :c:func:`PyLong_Export`." +msgstr "" + +#: ../Doc/c-api/long.rst:769 +msgid "" +"Calling :c:func:`PyLong_FreeExport` is optional if *export_long->digits* is " +"``NULL``." +msgstr "" + +#: ../Doc/c-api/long.rst:774 +msgid "PyLongWriter API" +msgstr "" + +#: ../Doc/c-api/long.rst:776 +msgid "The :c:type:`PyLongWriter` API can be used to import an integer." +msgstr "" + +#: ../Doc/c-api/long.rst:782 +msgid "A Python :class:`int` writer instance." +msgstr "" + +#: ../Doc/c-api/long.rst:784 +msgid "" +"The instance must be destroyed by :c:func:`PyLongWriter_Finish` or :c:func:" +"`PyLongWriter_Discard`." +msgstr "" + +#: ../Doc/c-api/long.rst:790 +msgid "Create a :c:type:`PyLongWriter`." +msgstr "" + +#: ../Doc/c-api/long.rst:792 +msgid "" +"On success, allocate *\\*digits* and return a writer. On error, set an " +"exception and return ``NULL``." +msgstr "" + +#: ../Doc/c-api/long.rst:795 +msgid "*negative* is ``1`` if the number is negative, or ``0`` otherwise." +msgstr "" + +#: ../Doc/c-api/long.rst:797 +msgid "" +"*ndigits* is the number of digits in the *digits* array. It must be greater " +"than 0." +msgstr "" + +#: ../Doc/c-api/long.rst:800 +msgid "*digits* must not be NULL." +msgstr "" + +#: ../Doc/c-api/long.rst:802 +msgid "" +"After a successful call to this function, the caller should fill in the " +"array of digits *digits* and then call :c:func:`PyLongWriter_Finish` to get " +"a Python :class:`int`. The layout of *digits* is described by :c:func:" +"`PyLong_GetNativeLayout`." +msgstr "" + +#: ../Doc/c-api/long.rst:807 +msgid "" +"Digits must be in the range [``0``; ``(1 << bits_per_digit) - 1``] (where " +"the :c:struct:`~PyLongLayout.bits_per_digit` is the number of bits per " +"digit). Any unused most significant digits must be set to ``0``." +msgstr "" + +#: ../Doc/c-api/long.rst:812 +msgid "" +"Alternately, call :c:func:`PyLongWriter_Discard` to destroy the writer " +"instance without creating an :class:`~int` object." +msgstr "" + +#: ../Doc/c-api/long.rst:818 +msgid "" +"Finish a :c:type:`PyLongWriter` created by :c:func:`PyLongWriter_Create`." +msgstr "" + +#: ../Doc/c-api/long.rst:820 +msgid "" +"On success, return a Python :class:`int` object. On error, set an exception " +"and return ``NULL``." +msgstr "" + +#: ../Doc/c-api/long.rst:823 +msgid "" +"The function takes care of normalizing the digits and converts the object to " +"a compact integer if needed." +msgstr "" + +#: ../Doc/c-api/long.rst:826 ../Doc/c-api/long.rst:835 +msgid "The writer instance and the *digits* array are invalid after the call." +msgstr "" + +#: ../Doc/c-api/long.rst:831 +msgid "" +"Discard a :c:type:`PyLongWriter` created by :c:func:`PyLongWriter_Create`." +msgstr "" + +#: ../Doc/c-api/long.rst:833 +msgid "If *writer* is ``NULL``, no operation is performed." +msgstr "" + #: ../Doc/c-api/long.rst:8 msgid "object" msgstr "object" @@ -907,24 +1264,34 @@ msgstr "long integer" msgid "integer" msgstr "integer" -#: ../Doc/c-api/long.rst:144 +#: ../Doc/c-api/long.rst:166 msgid "LONG_MAX (C macro)" msgstr "LONG_MAX (C macro)" -#: ../Doc/c-api/long.rst:144 ../Doc/c-api/long.rst:204 -#: ../Doc/c-api/long.rst:247 ../Doc/c-api/long.rst:262 -#: ../Doc/c-api/long.rst:278 ../Doc/c-api/long.rst:294 +#: ../Doc/c-api/long.rst:166 ../Doc/c-api/long.rst:226 +#: ../Doc/c-api/long.rst:269 ../Doc/c-api/long.rst:284 +#: ../Doc/c-api/long.rst:300 ../Doc/c-api/long.rst:316 msgid "OverflowError (built-in exception)" msgstr "OverflowError (built-in exception)" -#: ../Doc/c-api/long.rst:247 +#: ../Doc/c-api/long.rst:269 msgid "PY_SSIZE_T_MAX (C macro)" msgstr "PY_SSIZE_T_MAX (C macro)" -#: ../Doc/c-api/long.rst:262 +#: ../Doc/c-api/long.rst:284 msgid "ULONG_MAX (C macro)" msgstr "ULONG_MAX (C macro)" -#: ../Doc/c-api/long.rst:278 +#: ../Doc/c-api/long.rst:300 msgid "SIZE_MAX (C macro)" msgstr "SIZE_MAX (C macro)" + +#~ msgid "" +#~ "Python methods :meth:`int.to_bytes` and :meth:`int.from_bytes` to convert " +#~ "a :c:type:`PyLongObject` to/from an array of bytes in base ``256``. You " +#~ "can call those from C using :c:func:`PyObject_CallMethod`." +#~ msgstr "" +#~ "Los métodos de Python :meth:`int.to_bytes` y :meth:`int.from_bytes` para " +#~ "convertir un :c:type:`PyLongObject` a/desde un arreglo de bytes en base " +#~ "``256``. Se pueden llamar desde C al utilizar :c:func:" +#~ "`PyObject_CallMethod`." diff --git a/c-api/marshal.po b/c-api/marshal.po index 0fb738f127..1e7a180f13 100644 --- a/c-api/marshal.po +++ b/c-api/marshal.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-01-26 17:22-0400\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.5\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/marshal.rst:6 msgid "Data marshalling support" @@ -47,18 +46,15 @@ msgstr "" #: ../Doc/c-api/marshal.rst:16 msgid "" -"The module supports two versions of the data format: version 0 is the " -"historical version, version 1 shares interned strings in the file, and upon " -"unmarshalling. Version 2 uses a binary format for floating-point numbers. " -"``Py_MARSHAL_VERSION`` indicates the current file format (currently 2)." -msgstr "" -"El módulo admite dos versiones del formato de datos: la versión 0 es la " -"versión histórica, la versión 1 comparte cadenas de caracteres internas en " -"el archivo y al desempaquetar (*unmarshalling*). La versión 2 usa un formato " -"binario para números de punto flotante. ``Py_MARSHAL_VERSION`` indica el " -"formato de archivo actual (actualmente 2)." - -#: ../Doc/c-api/marshal.rst:24 +"The module supports several versions of the data format; see the :py:mod:" +"`Python module documentation ` for details." +msgstr "" + +#: ../Doc/c-api/marshal.rst:21 +msgid "The current format version. See :py:data:`marshal.version`." +msgstr "" + +#: ../Doc/c-api/marshal.rst:25 msgid "" "Marshal a :c:expr:`long` integer, *value*, to *file*. This will only write " "the least-significant 32 bits of *value*; regardless of the size of the " @@ -69,7 +65,7 @@ msgstr "" "importar el tamaño del tipo :c:expr:`long` nativo. *version* indica el " "formato del archivo." -#: ../Doc/c-api/marshal.rst:28 ../Doc/c-api/marshal.rst:36 +#: ../Doc/c-api/marshal.rst:29 ../Doc/c-api/marshal.rst:37 msgid "" "This function can fail, in which case it sets the error indicator. Use :c:" "func:`PyErr_Occurred` to check for that." @@ -77,7 +73,7 @@ msgstr "" "Esta función puede fallar, en cuyo caso establece el indicador de error. " "Utiliza :c:func:`PyErr_Occurred` para comprobarlo." -#: ../Doc/c-api/marshal.rst:33 +#: ../Doc/c-api/marshal.rst:34 msgid "" "Marshal a Python object, *value*, to *file*. *version* indicates the file " "format." @@ -85,7 +81,7 @@ msgstr "" "Empaqueta (*marshal*) un objeto Python, *value*, a un archivo *file*. " "*version* indica el formato del archivo." -#: ../Doc/c-api/marshal.rst:41 +#: ../Doc/c-api/marshal.rst:42 msgid "" "Return a bytes object containing the marshalled representation of *value*. " "*version* indicates the file format." @@ -93,13 +89,13 @@ msgstr "" "Retorna un objeto de bytes que contiene la representación empaquetada " "(*marshalled*) de *value*. *version* indica el formato del archivo." -#: ../Doc/c-api/marshal.rst:45 +#: ../Doc/c-api/marshal.rst:46 msgid "The following functions allow marshalled values to be read back in." msgstr "" "Las siguientes funciones permiten volver a leer los valores empaquetados " "(*marshalled*)." -#: ../Doc/c-api/marshal.rst:50 +#: ../Doc/c-api/marshal.rst:51 msgid "" "Return a C :c:expr:`long` from the data stream in a :c:expr:`FILE*` opened " "for reading. Only a 32-bit value can be read in using this function, " @@ -109,7 +105,7 @@ msgstr "" "`FILE*` abierto para lectura. Solo se puede leer un valor de 32 bits con " "esta función, independientemente del tamaño nativo del tipo :c:expr:`long`." -#: ../Doc/c-api/marshal.rst:54 ../Doc/c-api/marshal.rst:64 +#: ../Doc/c-api/marshal.rst:55 ../Doc/c-api/marshal.rst:65 msgid "" "On error, sets the appropriate exception (:exc:`EOFError`) and returns " "``-1``." @@ -117,7 +113,7 @@ msgstr "" "En caso de error, establece la excepción apropiada (:exc:`EOFError`) y " "retorna ``-1``." -#: ../Doc/c-api/marshal.rst:60 +#: ../Doc/c-api/marshal.rst:61 msgid "" "Return a C :c:expr:`short` from the data stream in a :c:expr:`FILE*` opened " "for reading. Only a 16-bit value can be read in using this function, " @@ -127,7 +123,7 @@ msgstr "" "`FILE*` abierto para lectura. Solo se puede leer un valor de 16 bits con " "esta función, independientemente del tamaño nativo del tipo :c:expr:`short`." -#: ../Doc/c-api/marshal.rst:70 +#: ../Doc/c-api/marshal.rst:71 msgid "" "Return a Python object from the data stream in a :c:expr:`FILE*` opened for " "reading." @@ -135,8 +131,8 @@ msgstr "" "Retorna un objeto Python del flujo de datos :c:expr:`FILE*` abierto para " "lectura." -#: ../Doc/c-api/marshal.rst:73 ../Doc/c-api/marshal.rst:87 -#: ../Doc/c-api/marshal.rst:96 +#: ../Doc/c-api/marshal.rst:74 ../Doc/c-api/marshal.rst:88 +#: ../Doc/c-api/marshal.rst:97 msgid "" "On error, sets the appropriate exception (:exc:`EOFError`, :exc:`ValueError` " "or :exc:`TypeError`) and returns ``NULL``." @@ -144,7 +140,7 @@ msgstr "" "En caso de error, establece la excepción apropiada (:exc:`EOFError`, :exc:" "`ValueError` o :exc:`TypeError`) y retorna ``NULL``." -#: ../Doc/c-api/marshal.rst:79 +#: ../Doc/c-api/marshal.rst:80 msgid "" "Return a Python object from the data stream in a :c:expr:`FILE*` opened for " "reading. Unlike :c:func:`PyMarshal_ReadObjectFromFile`, this function " @@ -163,10 +159,23 @@ msgstr "" "la vez desde el archivo. Solo use esta variante si está seguro de que no " "leerá nada más del archivo." -#: ../Doc/c-api/marshal.rst:93 +#: ../Doc/c-api/marshal.rst:94 msgid "" "Return a Python object from the data stream in a byte buffer containing " "*len* bytes pointed to by *data*." msgstr "" "Retorna un objeto Python del flujo de datos en un búfer de bytes que " "contiene *len* bytes a los que apunta *data*." + +#~ msgid "" +#~ "The module supports two versions of the data format: version 0 is the " +#~ "historical version, version 1 shares interned strings in the file, and " +#~ "upon unmarshalling. Version 2 uses a binary format for floating-point " +#~ "numbers. ``Py_MARSHAL_VERSION`` indicates the current file format " +#~ "(currently 2)." +#~ msgstr "" +#~ "El módulo admite dos versiones del formato de datos: la versión 0 es la " +#~ "versión histórica, la versión 1 comparte cadenas de caracteres internas " +#~ "en el archivo y al desempaquetar (*unmarshalling*). La versión 2 usa un " +#~ "formato binario para números de punto flotante. ``Py_MARSHAL_VERSION`` " +#~ "indica el formato de archivo actual (actualmente 2)." diff --git a/c-api/memory.po b/c-api/memory.po index 794934cfbe..6d98896d18 100644 --- a/c-api/memory.po +++ b/c-api/memory.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.11\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-02-10 12:41-0500\n" "Last-Translator: Marco Richetta \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.5\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/memory.rst:8 msgid "Memory Management" @@ -216,8 +215,8 @@ msgstr "" "diferentes propósitos. Los detalles específicos sobre cómo cada dominio " "asigna memoria o qué funciones internas llama cada dominio se considera un " "detalle de implementación, pero para fines de depuración, se puede encontrar " -"una tabla simplificada :ref:`acá `. Los APIs " -"que se usan para designar y librar un bloque de memoria deben ser del mismo " +"una tabla simplificada :ref:`acá `. Los APIs que " +"se usan para designar y librar un bloque de memoria deben ser del mismo " "dominio. Por ejemplo, se debe usar :c:func:`PyMem_Free` para librar memoria " "usando :c:func:`PyMem_Malloc`." @@ -226,11 +225,12 @@ msgid "The three allocation domains are:" msgstr "Los tres dominios de asignación son:" #: ../Doc/c-api/memory.rst:111 +#, fuzzy msgid "" "Raw domain: intended for allocating memory for general-purpose memory " "buffers where the allocation *must* go to the system allocator or where the " -"allocator can operate without the :term:`GIL`. The memory is requested " -"directly from the system. See :ref:`Raw Memory Interface `." msgstr "" "Dominio sin formato: destinado a asignar memoria para búferes de memoria de " @@ -240,11 +240,12 @@ msgstr "" "memoryinterface>`." #: ../Doc/c-api/memory.rst:116 +#, fuzzy msgid "" "\"Mem\" domain: intended for allocating memory for Python buffers and " "general-purpose memory buffers where the allocation must be performed with " -"the :term:`GIL` held. The memory is taken from the Python private heap. See :" -"ref:`Memory Interface `." +"an :term:`attached thread state`. The memory is taken from the Python " +"private heap. See :ref:`Memory Interface `." msgstr "" "Dominio \"Mem\": destinado a asignar memoria para búferes de Python y " "búferes de memoria de propósito general donde la asignación debe realizarse " @@ -269,9 +270,10 @@ msgid "" "versions, where this was only a best practice and not a hard requirement." msgstr "" "La compilación :term:`free-threaded ` requiere que solamente " -"objetos de Python se asignen usando el dominio de \"object\" y que todos los objetos " -"de Python se asignan usando ese dominio. Esto es diferente que los versiones " -"anteriores de Python, donde esto fue una práctica buena y no un requisito." +"objetos de Python se asignen usando el dominio de \"object\" y que todos los " +"objetos de Python se asignan usando ese dominio. Esto es diferente que los " +"versiones anteriores de Python, donde esto fue una práctica buena y no un " +"requisito." #: ../Doc/c-api/memory.rst:130 msgid "" @@ -294,10 +296,11 @@ msgid "Raw Memory Interface" msgstr "Interfaz de memoria sin procesar" #: ../Doc/c-api/memory.rst:141 +#, fuzzy msgid "" "The following function sets are wrappers to the system allocator. These " -"functions are thread-safe, the :term:`GIL ` does " -"not need to be held." +"functions are thread-safe, so a :term:`thread state` does not need to be :" +"term:`attached `." msgstr "" "Los siguientes conjuntos de funciones son envoltorios para el asignador del " "sistema. Estas funciones son seguras para subprocesos, no es necesario " @@ -315,8 +318,8 @@ msgstr "" "`realloc` y :c:func:`!free`; llame a ``malloc(1)`` (o ``calloc(1, 1)``) " "cuando solicita cero bytes." -#: ../Doc/c-api/memory.rst:154 ../Doc/c-api/memory.rst:225 -#: ../Doc/c-api/memory.rst:335 +#: ../Doc/c-api/memory.rst:154 ../Doc/c-api/memory.rst:224 +#: ../Doc/c-api/memory.rst:333 msgid "" "Allocates *n* bytes and returns a pointer of type :c:expr:`void*` to the " "allocated memory, or ``NULL`` if the request fails." @@ -334,8 +337,8 @@ msgstr "" "posible, como si en su lugar se hubiera llamado a ``PyMem_RawMalloc(1)``. La " "memoria no se habrá inicializado de ninguna manera." -#: ../Doc/c-api/memory.rst:164 ../Doc/c-api/memory.rst:235 -#: ../Doc/c-api/memory.rst:345 +#: ../Doc/c-api/memory.rst:164 ../Doc/c-api/memory.rst:234 +#: ../Doc/c-api/memory.rst:343 msgid "" "Allocates *nelem* elements each whose size in bytes is *elsize* and returns " "a pointer of type :c:expr:`void*` to the allocated memory, or ``NULL`` if " @@ -355,8 +358,8 @@ msgstr "" "distinto ``NULL`` si es posible, como si en su lugar se hubiera llamado " "``PyMem_RawCalloc(1, 1)``." -#: ../Doc/c-api/memory.rst:177 ../Doc/c-api/memory.rst:248 -#: ../Doc/c-api/memory.rst:358 +#: ../Doc/c-api/memory.rst:177 ../Doc/c-api/memory.rst:247 +#: ../Doc/c-api/memory.rst:356 msgid "" "Resizes the memory block pointed to by *p* to *n* bytes. The contents will " "be unchanged to the minimum of the old and the new sizes." @@ -405,8 +408,8 @@ msgstr "" "llamado antes a ``PyMem_RawFree(p)``, se produce un comportamiento " "indefinido." -#: ../Doc/c-api/memory.rst:199 ../Doc/c-api/memory.rst:269 -#: ../Doc/c-api/memory.rst:379 +#: ../Doc/c-api/memory.rst:199 ../Doc/c-api/memory.rst:268 +#: ../Doc/c-api/memory.rst:377 msgid "If *p* is ``NULL``, no operation is performed." msgstr "Si *p* es ``NULL``, no se realiza ninguna operación." @@ -414,7 +417,7 @@ msgstr "Si *p* es ``NULL``, no se realiza ninguna operación." msgid "Memory Interface" msgstr "Interfaz de memoria" -#: ../Doc/c-api/memory.rst:207 ../Doc/c-api/memory.rst:315 +#: ../Doc/c-api/memory.rst:207 ../Doc/c-api/memory.rst:314 msgid "" "The following function sets, modeled after the ANSI C standard, but " "specifying behavior when requesting zero bytes, are available for allocating " @@ -432,22 +435,19 @@ msgstr "" "El :ref:`asignador de memoria predeterminado ` " "usa el :ref:`asignador de memorya pymalloc `." -#: ../Doc/c-api/memory.rst:216 ../Doc/c-api/memory.rst:330 +#: ../Doc/c-api/memory.rst:216 ../Doc/c-api/memory.rst:329 msgid "" -"The :term:`GIL ` must be held when using these " -"functions." +"There must be an :term:`attached thread state` when using these functions." msgstr "" -"El :term:`GIL ` debe mantenerse cuando se utilizan " -"estas funciones." -#: ../Doc/c-api/memory.rst:221 +#: ../Doc/c-api/memory.rst:220 msgid "" "The default allocator is now pymalloc instead of system :c:func:`malloc`." msgstr "" "El asignador predeterminado ahora es pymalloc en lugar del :c:func:`malloc` " "del sistema." -#: ../Doc/c-api/memory.rst:228 +#: ../Doc/c-api/memory.rst:227 msgid "" "Requesting zero bytes returns a distinct non-``NULL`` pointer if possible, " "as if ``PyMem_Malloc(1)`` had been called instead. The memory will not have " @@ -457,7 +457,7 @@ msgstr "" "posible, como si en su lugar se hubiera llamado a ``PyMem_Malloc(1)``. La " "memoria no se habrá inicializado de ninguna manera." -#: ../Doc/c-api/memory.rst:239 +#: ../Doc/c-api/memory.rst:238 msgid "" "Requesting zero elements or elements of size zero bytes returns a distinct " "non-``NULL`` pointer if possible, as if ``PyMem_Calloc(1, 1)`` had been " @@ -467,7 +467,7 @@ msgstr "" "distinto ``NULL`` si es posible, como si en su lugar se hubiera llamado " "``PyMem_Calloc(1, 1)``." -#: ../Doc/c-api/memory.rst:251 +#: ../Doc/c-api/memory.rst:250 msgid "" "If *p* is ``NULL``, the call is equivalent to ``PyMem_Malloc(n)``; else if " "*n* is equal to zero, the memory block is resized but is not freed, and the " @@ -477,7 +477,7 @@ msgstr "" "contrario, si *n* es igual a cero, el bloque de memoria cambia de tamaño " "pero no se libera, y el puntero retornado no es ``NULL``." -#: ../Doc/c-api/memory.rst:255 +#: ../Doc/c-api/memory.rst:254 msgid "" "Unless *p* is ``NULL``, it must have been returned by a previous call to :c:" "func:`PyMem_Malloc`, :c:func:`PyMem_Realloc` or :c:func:`PyMem_Calloc`." @@ -486,7 +486,7 @@ msgstr "" "previa a :c:func:`PyMem_Malloc`, :c:func:`PyMem_Realloc` o :c:func:" "`PyMem_Calloc`." -#: ../Doc/c-api/memory.rst:258 +#: ../Doc/c-api/memory.rst:257 msgid "" "If the request fails, :c:func:`PyMem_Realloc` returns ``NULL`` and *p* " "remains a valid pointer to the previous memory area." @@ -494,7 +494,7 @@ msgstr "" "Si la solicitud falla, :c:func:`PyMem_Realloc` retorna ``NULL`` y *p* sigue " "siendo un puntero válido al área de memoria anterior." -#: ../Doc/c-api/memory.rst:264 +#: ../Doc/c-api/memory.rst:263 msgid "" "Frees the memory block pointed to by *p*, which must have been returned by a " "previous call to :c:func:`PyMem_Malloc`, :c:func:`PyMem_Realloc` or :c:func:" @@ -506,7 +506,7 @@ msgstr "" "o :c:func:`PyMem_Calloc`. De lo contrario, o si se ha llamado antes a " "``PyMem_Free(p)``, se produce un comportamiento indefinido." -#: ../Doc/c-api/memory.rst:271 +#: ../Doc/c-api/memory.rst:270 msgid "" "The following type-oriented macros are provided for convenience. Note that " "*TYPE* refers to any C type." @@ -514,7 +514,7 @@ msgstr "" "Las siguientes macros orientadas a tipos se proporcionan por conveniencia. " "Tenga en cuenta que *TYPE* se refiere a cualquier tipo de C." -#: ../Doc/c-api/memory.rst:277 +#: ../Doc/c-api/memory.rst:276 msgid "" "Same as :c:func:`PyMem_Malloc`, but allocates ``(n * sizeof(TYPE))`` bytes " "of memory. Returns a pointer cast to ``TYPE*``. The memory will not have " @@ -524,7 +524,7 @@ msgstr "" "de memoria. Retorna una conversión de puntero a ``TYPE*``. La memoria no se " "habrá inicializado de ninguna manera." -#: ../Doc/c-api/memory.rst:284 +#: ../Doc/c-api/memory.rst:283 msgid "" "Same as :c:func:`PyMem_Realloc`, but the memory block is resized to ``(n * " "sizeof(TYPE))`` bytes. Returns a pointer cast to ``TYPE*``. On return, *p* " @@ -536,7 +536,7 @@ msgstr "" "``TYPE*``. Al retornar, *p* será un puntero a la nueva área de memoria, o " "``NULL`` en caso de falla." -#: ../Doc/c-api/memory.rst:289 +#: ../Doc/c-api/memory.rst:288 msgid "" "This is a C preprocessor macro; *p* is always reassigned. Save the original " "value of *p* to avoid losing memory when handling errors." @@ -544,11 +544,11 @@ msgstr "" "Esta es una macro de preprocesador C; *p* siempre se reasigna. Guarde el " "valor original de *p* para evitar perder memoria al manejar errores." -#: ../Doc/c-api/memory.rst:295 +#: ../Doc/c-api/memory.rst:294 msgid "Same as :c:func:`PyMem_Free`." msgstr "La misma que :c:func:`PyMem_Free`." -#: ../Doc/c-api/memory.rst:297 +#: ../Doc/c-api/memory.rst:296 msgid "" "In addition, the following macro sets are provided for calling the Python " "memory allocator directly, without involving the C API functions listed " @@ -561,35 +561,35 @@ msgstr "" "no conserva la compatibilidad binaria entre las versiones de Python y, por " "lo tanto, está en desuso en los módulos de extensión." -#: ../Doc/c-api/memory.rst:302 +#: ../Doc/c-api/memory.rst:301 msgid "``PyMem_MALLOC(size)``" msgstr "``PyMem_MALLOC(size)``" -#: ../Doc/c-api/memory.rst:303 +#: ../Doc/c-api/memory.rst:302 msgid "``PyMem_NEW(type, size)``" msgstr "``PyMem_NEW(type, size)``" -#: ../Doc/c-api/memory.rst:304 +#: ../Doc/c-api/memory.rst:303 msgid "``PyMem_REALLOC(ptr, size)``" msgstr "``PyMem_REALLOC(ptr, size)``" -#: ../Doc/c-api/memory.rst:305 +#: ../Doc/c-api/memory.rst:304 msgid "``PyMem_RESIZE(ptr, type, size)``" msgstr "``PyMem_RESIZE(ptr, type, size)``" -#: ../Doc/c-api/memory.rst:306 +#: ../Doc/c-api/memory.rst:305 msgid "``PyMem_FREE(ptr)``" msgstr "``PyMem_FREE(ptr)``" -#: ../Doc/c-api/memory.rst:307 +#: ../Doc/c-api/memory.rst:306 msgid "``PyMem_DEL(ptr)``" msgstr "``PyMem_DEL(ptr)``" -#: ../Doc/c-api/memory.rst:313 +#: ../Doc/c-api/memory.rst:312 msgid "Object allocators" msgstr "Asignadores de objetos" -#: ../Doc/c-api/memory.rst:320 +#: ../Doc/c-api/memory.rst:319 msgid "" "There is no guarantee that the memory returned by these allocators can be " "successfully cast to a Python object when intercepting the allocating " @@ -601,7 +601,7 @@ msgstr "" "asignación en este dominio mediante los métodos descritos en la sección :ref:" "`Personalizar Asignadores de Memoria `." -#: ../Doc/c-api/memory.rst:325 +#: ../Doc/c-api/memory.rst:324 msgid "" "The :ref:`default object allocator ` uses the :" "ref:`pymalloc memory allocator `." @@ -609,7 +609,7 @@ msgstr "" "El :ref:`asignador predeterminado de objetos ` " "usa el :ref:`asignador de memoria pymalloc `." -#: ../Doc/c-api/memory.rst:338 +#: ../Doc/c-api/memory.rst:336 msgid "" "Requesting zero bytes returns a distinct non-``NULL`` pointer if possible, " "as if ``PyObject_Malloc(1)`` had been called instead. The memory will not " @@ -619,7 +619,7 @@ msgstr "" "posible, como si en su lugar se hubiera llamado a ``PyObject_Malloc(1)``. La " "memoria no se habrá inicializado de ninguna manera." -#: ../Doc/c-api/memory.rst:349 +#: ../Doc/c-api/memory.rst:347 msgid "" "Requesting zero elements or elements of size zero bytes returns a distinct " "non-``NULL`` pointer if possible, as if ``PyObject_Calloc(1, 1)`` had been " @@ -629,7 +629,7 @@ msgstr "" "distinto ``NULL`` si es posible, como si en su lugar se hubiera llamado " "``PyObject_Calloc(1, 1)``." -#: ../Doc/c-api/memory.rst:361 +#: ../Doc/c-api/memory.rst:359 msgid "" "If *p* is ``NULL``, the call is equivalent to ``PyObject_Malloc(n)``; else " "if *n* is equal to zero, the memory block is resized but is not freed, and " @@ -639,7 +639,7 @@ msgstr "" "lo contrario, si *n* es igual a cero, el bloque de memoria cambia de tamaño " "pero no se libera, y el puntero retornado no es ``NULL``." -#: ../Doc/c-api/memory.rst:365 +#: ../Doc/c-api/memory.rst:363 msgid "" "Unless *p* is ``NULL``, it must have been returned by a previous call to :c:" "func:`PyObject_Malloc`, :c:func:`PyObject_Realloc` or :c:func:" @@ -649,7 +649,7 @@ msgstr "" "previa a :c:func:`PyObject_Malloc`, :c:func:`PyObject_Realloc` o :c:func:" "`PyObject_Calloc`." -#: ../Doc/c-api/memory.rst:368 +#: ../Doc/c-api/memory.rst:366 msgid "" "If the request fails, :c:func:`PyObject_Realloc` returns ``NULL`` and *p* " "remains a valid pointer to the previous memory area." @@ -657,7 +657,7 @@ msgstr "" "Si la solicitud falla, :c:func:`PyObject_Realloc` retorna ``NULL`` y *p* " "sigue siendo un puntero válido al área de memoria anterior." -#: ../Doc/c-api/memory.rst:374 +#: ../Doc/c-api/memory.rst:372 msgid "" "Frees the memory block pointed to by *p*, which must have been returned by a " "previous call to :c:func:`PyObject_Malloc`, :c:func:`PyObject_Realloc` or :c:" @@ -670,91 +670,141 @@ msgstr "" "llamado antes a ``PyObject_Free(p)``, se produce un comportamiento " "indefinido." -#: ../Doc/c-api/memory.rst:385 +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/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 "" + +#: ../Doc/c-api/memory.rst:389 ../Doc/c-api/memory.rst:486 +msgid ":c:func:`PyObject_Malloc`" +msgstr ":c:func:`PyObject_Malloc`" + +#: ../Doc/c-api/memory.rst:390 ../Doc/c-api/memory.rst:487 +msgid ":c:func:`PyObject_Realloc`" +msgstr ":c:func:`PyObject_Realloc`" + +#: ../Doc/c-api/memory.rst:391 ../Doc/c-api/memory.rst:488 +msgid ":c:func:`PyObject_Calloc`" +msgstr ":c:func:`PyObject_Calloc`" + +#: ../Doc/c-api/memory.rst:392 +#, fuzzy +msgid ":c:macro:`PyObject_New`" +msgstr ":c:func:`PyObject_Free`" + +#: ../Doc/c-api/memory.rst:393 +#, fuzzy +msgid ":c:macro:`PyObject_NewVar`" +msgstr ":c:func:`PyObject_Free`" + +#: ../Doc/c-api/memory.rst:394 +#, fuzzy +msgid ":c:func:`PyType_GenericAlloc`" +msgstr ":c:func:`PyMem_Calloc`" + +#: ../Doc/c-api/memory.rst:395 +#, fuzzy +msgid ":c:member:`~PyTypeObject.tp_free`" +msgstr ":c:func:`PyObject_Free`" + +#: ../Doc/c-api/memory.rst:401 msgid "Default Memory Allocators" msgstr "Asignadores de memoria predeterminados" -#: ../Doc/c-api/memory.rst:387 +#: ../Doc/c-api/memory.rst:403 msgid "Default memory allocators:" msgstr "Asignadores de memoria predeterminados:" -#: ../Doc/c-api/memory.rst:390 +#: ../Doc/c-api/memory.rst:406 msgid "Configuration" msgstr "Configuración" -#: ../Doc/c-api/memory.rst:390 +#: ../Doc/c-api/memory.rst:406 msgid "Name" msgstr "Nombre" -#: ../Doc/c-api/memory.rst:390 +#: ../Doc/c-api/memory.rst:406 msgid "PyMem_RawMalloc" msgstr "PyMem_RawMalloc" -#: ../Doc/c-api/memory.rst:390 +#: ../Doc/c-api/memory.rst:406 msgid "PyMem_Malloc" msgstr "PyMem_Malloc" -#: ../Doc/c-api/memory.rst:390 +#: ../Doc/c-api/memory.rst:406 msgid "PyObject_Malloc" msgstr "PyObject_Malloc" -#: ../Doc/c-api/memory.rst:392 +#: ../Doc/c-api/memory.rst:408 msgid "Release build" msgstr "Lanzamiento de compilación" -#: ../Doc/c-api/memory.rst:392 +#: ../Doc/c-api/memory.rst:408 msgid "``\"pymalloc\"``" msgstr "``\"pymalloc\"``" -#: ../Doc/c-api/memory.rst:392 ../Doc/c-api/memory.rst:394 +#: ../Doc/c-api/memory.rst:408 ../Doc/c-api/memory.rst:410 msgid "``malloc``" msgstr "``malloc``" -#: ../Doc/c-api/memory.rst:392 +#: ../Doc/c-api/memory.rst:408 msgid "``pymalloc``" msgstr "``malloc`` + debug" -#: ../Doc/c-api/memory.rst:393 +#: ../Doc/c-api/memory.rst:409 msgid "Debug build" msgstr "Compilación de depuración" -#: ../Doc/c-api/memory.rst:393 +#: ../Doc/c-api/memory.rst:409 msgid "``\"pymalloc_debug\"``" msgstr "``\"pymalloc_debug\"``" -#: ../Doc/c-api/memory.rst:393 ../Doc/c-api/memory.rst:395 +#: ../Doc/c-api/memory.rst:409 ../Doc/c-api/memory.rst:411 msgid "``malloc`` + debug" msgstr "``malloc`` + debug" -#: ../Doc/c-api/memory.rst:393 +#: ../Doc/c-api/memory.rst:409 msgid "``pymalloc`` + debug" msgstr "``pymalloc`` + debug" -#: ../Doc/c-api/memory.rst:394 +#: ../Doc/c-api/memory.rst:410 msgid "Release build, without pymalloc" msgstr "Lanzamiento de compilación, sin pymalloc" -#: ../Doc/c-api/memory.rst:394 +#: ../Doc/c-api/memory.rst:410 msgid "``\"malloc\"``" msgstr "``\"malloc\"``" -#: ../Doc/c-api/memory.rst:395 +#: ../Doc/c-api/memory.rst:411 msgid "Debug build, without pymalloc" msgstr "Compilación de depuración, sin pymalloc" -#: ../Doc/c-api/memory.rst:395 +#: ../Doc/c-api/memory.rst:411 msgid "``\"malloc_debug\"``" msgstr "``\"malloc_debug\"``" -#: ../Doc/c-api/memory.rst:398 +#: ../Doc/c-api/memory.rst:414 msgid "Legend:" msgstr "Leyenda:" -#: ../Doc/c-api/memory.rst:400 +#: ../Doc/c-api/memory.rst:416 msgid "Name: value for :envvar:`PYTHONMALLOC` environment variable." msgstr "Nombre: valor para variable de entorno :envvar:`PYTHONMALLOC`." -#: ../Doc/c-api/memory.rst:401 +#: ../Doc/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`." @@ -762,11 +812,11 @@ msgstr "" "``malloc``: asignadores del sistema de la biblioteca C estándar, funciones " "C: :c:func:`malloc`, :c:func:`calloc`, :c:func:`realloc` y :c:func:`free`." -#: ../Doc/c-api/memory.rst:403 +#: ../Doc/c-api/memory.rst:419 msgid "``pymalloc``: :ref:`pymalloc memory allocator `." msgstr "``pymalloc``: :ref:`asignador de memoria pymalloc `." -#: ../Doc/c-api/memory.rst:404 +#: ../Doc/c-api/memory.rst:420 msgid "" "``mimalloc``: :ref:`mimalloc memory allocator `. The pymalloc " "allocator will be used if mimalloc support isn't available." @@ -776,7 +826,7 @@ msgstr "" # debug hooks se deja como enlaces de depuración ya que en traducciones # anteriores se dejó como enlaces -#: ../Doc/c-api/memory.rst:406 +#: ../Doc/c-api/memory.rst:422 msgid "" "\"+ debug\": with :ref:`debug hooks on the Python memory allocators `." @@ -784,17 +834,17 @@ msgstr "" "\"+ debug\": con :ref:`enlaces de depuración en los asignadores de memoria " "de Python `." -#: ../Doc/c-api/memory.rst:408 +#: ../Doc/c-api/memory.rst:424 msgid "\"Debug build\": :ref:`Python build in debug mode `." msgstr "" "\"Debug build\": :ref:`Compilación de Python en modo de depuración `." -#: ../Doc/c-api/memory.rst:413 +#: ../Doc/c-api/memory.rst:429 msgid "Customize Memory Allocators" msgstr "Personalizar asignadores de memoria" -#: ../Doc/c-api/memory.rst:419 +#: ../Doc/c-api/memory.rst:435 msgid "" "Structure used to describe a memory block allocator. The structure has the " "following fields:" @@ -802,55 +852,55 @@ msgstr "" "Estructura utilizada para describir un asignador de bloque de memoria. La " "estructura tiene cuatro campos:" -#: ../Doc/c-api/memory.rst:423 ../Doc/c-api/memory.rst:670 +#: ../Doc/c-api/memory.rst:439 ../Doc/c-api/memory.rst:690 msgid "Field" msgstr "Campo" -#: ../Doc/c-api/memory.rst:423 ../Doc/c-api/memory.rst:670 +#: ../Doc/c-api/memory.rst:439 ../Doc/c-api/memory.rst:690 msgid "Meaning" msgstr "Significado" -#: ../Doc/c-api/memory.rst:425 ../Doc/c-api/memory.rst:672 +#: ../Doc/c-api/memory.rst:441 ../Doc/c-api/memory.rst:692 msgid "``void *ctx``" msgstr "``void *ctx``" -#: ../Doc/c-api/memory.rst:425 ../Doc/c-api/memory.rst:672 +#: ../Doc/c-api/memory.rst:441 ../Doc/c-api/memory.rst:692 msgid "user context passed as first argument" msgstr "contexto de usuario pasado como primer argumento" -#: ../Doc/c-api/memory.rst:427 +#: ../Doc/c-api/memory.rst:443 msgid "``void* malloc(void *ctx, size_t size)``" msgstr "``void* malloc(void *ctx, size_t size)``" -#: ../Doc/c-api/memory.rst:427 +#: ../Doc/c-api/memory.rst:443 msgid "allocate a memory block" msgstr "asignar un bloque de memoria" -#: ../Doc/c-api/memory.rst:429 +#: ../Doc/c-api/memory.rst:445 msgid "``void* calloc(void *ctx, size_t nelem, size_t elsize)``" msgstr "``void* calloc(void *ctx, size_t nelem, size_t elsize)``" -#: ../Doc/c-api/memory.rst:429 +#: ../Doc/c-api/memory.rst:445 msgid "allocate a memory block initialized with zeros" msgstr "asignar un bloque de memoria inicializado con ceros" -#: ../Doc/c-api/memory.rst:432 +#: ../Doc/c-api/memory.rst:448 msgid "``void* realloc(void *ctx, void *ptr, size_t new_size)``" msgstr "``void* realloc(void *ctx, void *ptr, size_t new_size)``" -#: ../Doc/c-api/memory.rst:432 +#: ../Doc/c-api/memory.rst:448 msgid "allocate or resize a memory block" msgstr "asignar o cambiar el tamaño de un bloque de memoria" -#: ../Doc/c-api/memory.rst:434 +#: ../Doc/c-api/memory.rst:450 msgid "``void free(void *ctx, void *ptr)``" msgstr "``void free(void *ctx, void *ptr)``" -#: ../Doc/c-api/memory.rst:434 +#: ../Doc/c-api/memory.rst:450 msgid "free a memory block" msgstr "liberar un bloque de memoria" -#: ../Doc/c-api/memory.rst:437 +#: ../Doc/c-api/memory.rst:453 msgid "" "The :c:type:`!PyMemAllocator` structure was renamed to :c:type:" "`PyMemAllocatorEx` and a new ``calloc`` field was added." @@ -858,72 +908,60 @@ msgstr "" "La estructura :c:type:`!PyMemAllocator` se renombró a :c:type:" "`PyMemAllocatorEx` y se agregó un nuevo campo ``calloc``." -#: ../Doc/c-api/memory.rst:444 +#: ../Doc/c-api/memory.rst:460 msgid "Enum used to identify an allocator domain. Domains:" msgstr "Enum se utiliza para identificar un dominio asignador. Dominios:" -#: ../Doc/c-api/memory.rst:450 ../Doc/c-api/memory.rst:459 -#: ../Doc/c-api/memory.rst:468 +#: ../Doc/c-api/memory.rst:466 ../Doc/c-api/memory.rst:475 +#: ../Doc/c-api/memory.rst:484 msgid "Functions:" msgstr "Funciones:" -#: ../Doc/c-api/memory.rst:452 +#: ../Doc/c-api/memory.rst:468 msgid ":c:func:`PyMem_RawMalloc`" msgstr ":c:func:`PyMem_RawMalloc`" -#: ../Doc/c-api/memory.rst:453 +#: ../Doc/c-api/memory.rst:469 msgid ":c:func:`PyMem_RawRealloc`" msgstr ":c:func:`PyMem_RawRealloc`" -#: ../Doc/c-api/memory.rst:454 +#: ../Doc/c-api/memory.rst:470 msgid ":c:func:`PyMem_RawCalloc`" msgstr ":c:func:`PyMem_RawCalloc`" -#: ../Doc/c-api/memory.rst:455 +#: ../Doc/c-api/memory.rst:471 msgid ":c:func:`PyMem_RawFree`" msgstr ":c:func:`PyMem_RawFree`" -#: ../Doc/c-api/memory.rst:461 +#: ../Doc/c-api/memory.rst:477 msgid ":c:func:`PyMem_Malloc`," msgstr ":c:func:`PyMem_Malloc`," -#: ../Doc/c-api/memory.rst:462 +#: ../Doc/c-api/memory.rst:478 msgid ":c:func:`PyMem_Realloc`" msgstr ":c:func:`PyMem_Realloc`" -#: ../Doc/c-api/memory.rst:463 +#: ../Doc/c-api/memory.rst:479 msgid ":c:func:`PyMem_Calloc`" msgstr ":c:func:`PyMem_Calloc`" -#: ../Doc/c-api/memory.rst:464 +#: ../Doc/c-api/memory.rst:480 msgid ":c:func:`PyMem_Free`" msgstr ":c:func:`PyMem_Free`" -#: ../Doc/c-api/memory.rst:470 -msgid ":c:func:`PyObject_Malloc`" -msgstr ":c:func:`PyObject_Malloc`" - -#: ../Doc/c-api/memory.rst:471 -msgid ":c:func:`PyObject_Realloc`" -msgstr ":c:func:`PyObject_Realloc`" - -#: ../Doc/c-api/memory.rst:472 -msgid ":c:func:`PyObject_Calloc`" -msgstr ":c:func:`PyObject_Calloc`" - -#: ../Doc/c-api/memory.rst:473 +#: ../Doc/c-api/memory.rst:489 msgid ":c:func:`PyObject_Free`" msgstr ":c:func:`PyObject_Free`" -#: ../Doc/c-api/memory.rst:477 +#: ../Doc/c-api/memory.rst:493 msgid "Get the memory block allocator of the specified domain." msgstr "Obtenga el asignador de bloque de memoria del dominio especificado." -#: ../Doc/c-api/memory.rst:482 +#: ../Doc/c-api/memory.rst:498 msgid "Set the memory block allocator of the specified domain." msgstr "Establece el asignador de bloque de memoria del dominio especificado." -#: ../Doc/c-api/memory.rst:484 +#: ../Doc/c-api/memory.rst:500 msgid "" "The new allocator must return a distinct non-``NULL`` pointer when " "requesting zero bytes." @@ -931,27 +969,29 @@ msgstr "" "El nuevo asignador debe retornar un puntero distinto ``NULL`` al solicitar " "cero bytes." -#: ../Doc/c-api/memory.rst:487 +#: ../Doc/c-api/memory.rst:503 +#, fuzzy msgid "" "For the :c:macro:`PYMEM_DOMAIN_RAW` domain, the allocator must be thread-" -"safe: the :term:`GIL ` is not held when the " -"allocator is called." +"safe: a :term:`thread state` is not :term:`attached ` " +"when the allocator is called." msgstr "" "Para el dominio :c:macro:`PYMEM_DOMAIN_RAW`, el asignador debe ser seguro " "para hilos: el :term:`GIL ` no se mantiene cuando " "se llama al asignador." -#: ../Doc/c-api/memory.rst:491 +#: ../Doc/c-api/memory.rst:507 +#, fuzzy 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 " -"``GIL``." +"allocator may be called in different interpreters that do not share a :term:" +"`GIL`." msgstr "" "Para los dominios restantes, el asignador también debe ser seguro para los " "hilos: el asignador se podría llamar desde intérpretes diferentes que no " "comparten un ``GIL``." -#: ../Doc/c-api/memory.rst:495 +#: ../Doc/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 " @@ -961,7 +1001,7 @@ msgstr "" "debe llamar a la función :c:func:`PyMem_SetupDebugHooks` para reinstalar los " "enlaces de depuración en la parte superior del nuevo asignador." -#: ../Doc/c-api/memory.rst:499 +#: ../Doc/c-api/memory.rst:515 msgid "" "See also :c:member:`PyPreConfig.allocator` and :ref:`Preinitialize Python " "with PyPreConfig `." @@ -969,27 +1009,28 @@ msgstr "" "Vea también :c:member:`PyPreConfig.allocator` y :ref:`Preinicialización de " "Python con PyPreConfig `." -#: ../Doc/c-api/memory.rst:504 +#: ../Doc/c-api/memory.rst:520 msgid ":c:func:`PyMem_SetAllocator` does have the following contract:" msgstr ":c:func:`PyMem_SetAllocator` tiene el contrato siguiente:" -#: ../Doc/c-api/memory.rst:506 +#: ../Doc/c-api/memory.rst:522 +#, fuzzy 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 " "restrictions over the installed allocator other than the ones imposed by the " "domain (for instance, the Raw Domain allows the allocator to be called " -"without the GIL held). See :ref:`the section on allocator domains ` for more information." +"without an :term:`attached thread state`). See :ref:`the section on " +"allocator domains ` for more information." msgstr "" "Se puede llamar después de :c:func:`Py_PreInitialize` y antes de :c:func:" "`Py_InitializeFromConfig` para instalar un asignador de memoria " "personalizada. No hay restricciones para el asignador instalado aparte de " "las que se interpone el dominio (por ejemplo, el Dominio Crudo permite que " -"se llame al asignador sin sostener el GIL). Consulte :ref:`la sección " -"sobre dominios de asignadores ` para más información." +"se llame al asignador sin sostener el GIL). Consulte :ref:`la sección sobre " +"dominios de asignadores ` para más información." -#: ../Doc/c-api/memory.rst:514 +#: ../Doc/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 " @@ -1001,11 +1042,11 @@ msgstr "" "asignador existente. Substituyendo el asignador actual con otro arbitrario " "**no es compatible**." -#: ../Doc/c-api/memory.rst:519 +#: ../Doc/c-api/memory.rst:535 msgid "All allocators must be thread-safe." msgstr "Todos los asignadores deben ser seguro para los hilos." -#: ../Doc/c-api/memory.rst:525 +#: ../Doc/c-api/memory.rst:541 msgid "" "Setup :ref:`debug hooks in the Python memory allocators ` " "to detect memory errors." @@ -1013,14 +1054,14 @@ msgstr "" "Configurar :ref:`enlaces de depuración en los asignadores de memoria de " "Python ` para detectar errores de memoria." -#: ../Doc/c-api/memory.rst:532 +#: ../Doc/c-api/memory.rst:548 msgid "Debug hooks on the Python memory allocators" msgstr "" "Configurar enlaces para detectar errores en las funciones del asignador de " "memoria de Python" # "debug hooks" como se traduciría -#: ../Doc/c-api/memory.rst:534 +#: ../Doc/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 " @@ -1032,7 +1073,7 @@ msgstr "" "de Python ` para configurar los enlaces de depuración en Python " "asignadores de memoria para detectar errores de memoria." -#: ../Doc/c-api/memory.rst:539 +#: ../Doc/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``)." @@ -1041,7 +1082,7 @@ msgstr "" "instalar enlaces de depuración en un Python compilado en modo de lanzamiento " "(por ejemplo: ``PYTHONMALLOC=debug``)." -#: ../Doc/c-api/memory.rst:542 +#: ../Doc/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`." @@ -1050,7 +1091,7 @@ msgstr "" "enlaces de depuración después de llamar a :c:func:`PyMem_SetAllocator`." # hooks como se traduce? -#: ../Doc/c-api/memory.rst:545 +#: ../Doc/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 " @@ -1067,11 +1108,11 @@ msgstr "" "byte ``0xFD`` (``PYMEM_FORBIDDENBYTE``). Es poco probable que las cadenas de " "estos bytes sean direcciones válidas, flotantes o cadenas ASCII." -#: ../Doc/c-api/memory.rst:552 +#: ../Doc/c-api/memory.rst:568 msgid "Runtime checks:" msgstr "Verificaciones de tiempo de ejecución:" -#: ../Doc/c-api/memory.rst:554 +#: ../Doc/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`." @@ -1079,19 +1120,20 @@ msgstr "" "Detecte violaciones de API, por ejemplo: :c:func:`PyObject_Free` llamado en " "un búfer asignado por :c:func:`PyMem_Malloc`." -#: ../Doc/c-api/memory.rst:556 +#: ../Doc/c-api/memory.rst:572 msgid "Detect write before the start of the buffer (buffer underflow)." msgstr "" "Detectar escritura antes del inicio del búfer (desbordamiento del búfer)" -#: ../Doc/c-api/memory.rst:557 +#: ../Doc/c-api/memory.rst:573 msgid "Detect write after the end of the buffer (buffer overflow)." msgstr "" "Detectar escritura después del final del búfer (desbordamiento del búfer)" -#: ../Doc/c-api/memory.rst:558 +#: ../Doc/c-api/memory.rst:574 +#, fuzzy msgid "" -"Check that the :term:`GIL ` is held when allocator " +"Check that there is an :term:`attached thread state` when allocator " "functions of :c:macro:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) " "and :c:macro:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) domains are " "called." @@ -1101,7 +1143,7 @@ msgstr "" "`PyObject_Malloc`) y dominios :c:macro:`PYMEM_DOMAIN_MEM` (por ejemplo: :c:" "func:`PyMem_Malloc`) se llaman." -#: ../Doc/c-api/memory.rst:563 +#: ../Doc/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 " @@ -1113,14 +1155,14 @@ msgstr "" "El rastreo solo se muestra si :mod:`tracemalloc` rastrea las asignaciones de " "memoria de Python y se rastrea el bloque de memoria." -#: ../Doc/c-api/memory.rst:568 +#: ../Doc/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 " "represents the address returned by a malloc-like or realloc-like function " -"(``p[i:j]`` means the slice of bytes from ``*(p+i)`` inclusive up to ``*(p" -"+j)`` exclusive; note that the treatment of negative indices differs from a " -"Python slice):" +"(``p[i:j]`` means the slice of bytes from ``*(p+i)`` inclusive up to " +"``*(p+j)`` exclusive; note that the treatment of negative indices differs " +"from a Python slice):" msgstr "" "Sea *S* = ``sizeof(size_t)``. Se agregan ``2*S`` bytes en cada extremo de " "cada bloque de *N* bytes solicitados. El diseño de la memoria es así, donde " @@ -1129,11 +1171,11 @@ msgstr "" "hasta ``*(p+j)`` exclusivo; tenga en cuenta que el tratamiento de los " "índices negativos difiere de un segmento de Python):" -#: ../Doc/c-api/memory.rst:575 +#: ../Doc/c-api/memory.rst:590 msgid "``p[-2*S:-S]``" msgstr "``p[-2*S:-S]``" -#: ../Doc/c-api/memory.rst:575 +#: ../Doc/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)." @@ -1141,41 +1183,41 @@ msgstr "" "Número de bytes solicitados originalmente. Este es un size_t, big-endian " "(más fácil de leer en un volcado de memoria)." -#: ../Doc/c-api/memory.rst:582 +#: ../Doc/c-api/memory.rst:593 msgid "``p[-S]``" msgstr "``p[-S]``" -#: ../Doc/c-api/memory.rst:578 +#: ../Doc/c-api/memory.rst:594 msgid "API identifier (ASCII character):" msgstr "Identificador de API (carácter ASCII):" -#: ../Doc/c-api/memory.rst:580 +#: ../Doc/c-api/memory.rst:596 msgid "``'r'`` for :c:macro:`PYMEM_DOMAIN_RAW`." msgstr "``'r'`` para :c:macro:`PYMEM_DOMAIN_RAW`." -#: ../Doc/c-api/memory.rst:581 +#: ../Doc/c-api/memory.rst:597 msgid "``'m'`` for :c:macro:`PYMEM_DOMAIN_MEM`." msgstr "``'m'`` para :c:macro:`PYMEM_DOMAIN_MEM`." -#: ../Doc/c-api/memory.rst:582 +#: ../Doc/c-api/memory.rst:598 msgid "``'o'`` for :c:macro:`PYMEM_DOMAIN_OBJ`." msgstr "``'o'`` para :c:macro:`PYMEM_DOMAIN_OBJ`." -#: ../Doc/c-api/memory.rst:585 +#: ../Doc/c-api/memory.rst:600 msgid "``p[-S+1:0]``" msgstr "``p[-S+1:0]``" -#: ../Doc/c-api/memory.rst:585 +#: ../Doc/c-api/memory.rst:601 msgid "Copies of PYMEM_FORBIDDENBYTE. Used to catch under- writes and reads." msgstr "" "Copias de PYMEM_FORBIDDENBYTE. Se utiliza para detectar suscripciones y " "lecturas." -#: ../Doc/c-api/memory.rst:594 +#: ../Doc/c-api/memory.rst:603 msgid "``p[0:N]``" msgstr "``p[0:N]``" -#: ../Doc/c-api/memory.rst:588 +#: ../Doc/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 " @@ -1194,21 +1236,21 @@ msgstr "" "similar a la realloc solicitando un bloque de memoria más pequeño, los bytes " "antiguos sobrantes también se llenan con PYMEM_DEADBYTE." -#: ../Doc/c-api/memory.rst:597 +#: ../Doc/c-api/memory.rst:612 msgid "``p[N:N+S]``" msgstr "``p[N:N+S]``" -#: ../Doc/c-api/memory.rst:597 +#: ../Doc/c-api/memory.rst:613 msgid "Copies of PYMEM_FORBIDDENBYTE. Used to catch over- writes and reads." msgstr "" "Copias de PYMEM_FORBIDDENBYTE. Se utiliza para detectar sobrescrituras y " "lecturas." -#: ../Doc/c-api/memory.rst:608 +#: ../Doc/c-api/memory.rst:615 msgid "``p[N+S:N+2*S]``" msgstr "``p[N+S:N+2*S]``" -#: ../Doc/c-api/memory.rst:600 +#: ../Doc/c-api/memory.rst:616 msgid "" "Only used if the ``PYMEM_DEBUG_SERIALNO`` macro is defined (not defined by " "default)." @@ -1216,7 +1258,7 @@ msgstr "" "Solo se utiliza si la macro ``PYMEM_DEBUG_SERIALNO`` está definida (no " "definida por defecto)." -#: ../Doc/c-api/memory.rst:603 +#: ../Doc/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 " @@ -1226,14 +1268,15 @@ msgid "" "number is incremented, and exists so you can set such a breakpoint easily." msgstr "" "Un número de serie, incrementado en 1 en cada llamada a una función similar " -"a malloc o realloc. Big-endian :c:type:`size_t`. Si se detecta \"mala memoria" -"\" más tarde, el número de serie ofrece una excelente manera de establecer " -"un punto de interrupción en la siguiente ejecución, para capturar el " -"instante en el que se pasó este bloque. La función estática bumpserialno() " -"en obmalloc.c es el único lugar donde se incrementa el número de serie, y " -"existe para que pueda establecer un punto de interrupción fácilmente." +"a malloc o realloc. Big-endian :c:type:`size_t`. Si se detecta \"mala " +"memoria\" más tarde, el número de serie ofrece una excelente manera de " +"establecer un punto de interrupción en la siguiente ejecución, para capturar " +"el instante en el que se pasó este bloque. La función estática " +"bumpserialno() en obmalloc.c es el único lugar donde se incrementa el número " +"de serie, y existe para que pueda establecer un punto de interrupción " +"fácilmente." -#: ../Doc/c-api/memory.rst:610 +#: ../Doc/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, " @@ -1255,13 +1298,15 @@ msgstr "" "(lo que significa que se está usando la memoria liberada) o PYMEM_CLEANBYTE " "(que significa que se está usando la memoria no inicializada)." -#: ../Doc/c-api/memory.rst:619 +#: ../Doc/c-api/memory.rst:635 +#, fuzzy msgid "" "The :c:func:`PyMem_SetupDebugHooks` function now also works on Python " "compiled in release mode. On error, the debug hooks now use :mod:" "`tracemalloc` to get the traceback where a memory block was allocated. The " -"debug hooks now also check if the GIL is held when functions of :c:macro:" -"`PYMEM_DOMAIN_OBJ` and :c:macro:`PYMEM_DOMAIN_MEM` domains are called." +"debug hooks now also check if there is an :term:`attached thread state` when " +"functions of :c:macro:`PYMEM_DOMAIN_OBJ` and :c:macro:`PYMEM_DOMAIN_MEM` " +"domains are called." msgstr "" "La función :c:func:`PyMem_SetupDebugHooks` ahora también funciona en Python " "compilado en modo de lanzamiento. En caso de error, los enlaces de " @@ -1270,7 +1315,7 @@ msgstr "" "comprueban si el GIL se mantiene cuando se llaman las funciones de :c:macro:" "`PYMEM_DOMAIN_OBJ` y :c:macro:`PYMEM_DOMAIN_MEM` dominios." -#: ../Doc/c-api/memory.rst:627 +#: ../Doc/c-api/memory.rst:643 msgid "" "Byte patterns ``0xCB`` (``PYMEM_CLEANBYTE``), ``0xDB`` (``PYMEM_DEADBYTE``) " "and ``0xFB`` (``PYMEM_FORBIDDENBYTE``) have been replaced with ``0xCD``, " @@ -1282,11 +1327,11 @@ msgstr "" "por ``0xCD``, ``0xDD`` y ``0xFD`` para usar los mismos valores que la " "depuración de Windows CRT ``malloc()`` y ``free()``." -#: ../Doc/c-api/memory.rst:637 +#: ../Doc/c-api/memory.rst:653 msgid "The pymalloc allocator" msgstr "El asignador pymalloc" -#: ../Doc/c-api/memory.rst:639 +#: ../Doc/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 " @@ -1301,7 +1346,7 @@ msgstr "" "`PyMem_RawMalloc` y :c:func:`PyMem_RawRealloc` para asignaciones de más de " "512 bytes." -#: ../Doc/c-api/memory.rst:645 +#: ../Doc/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:" @@ -1311,23 +1356,23 @@ msgstr "" "de :c:macro:`PYMEM_DOMAIN_MEM` (por ejemplo: :c:func:`PyMem_Malloc`) y :c:" "macro:`PYMEM_DOMAIN_OBJ` (por ejemplo: :c:func:`PyObject_Malloc`) dominios." -#: ../Doc/c-api/memory.rst:649 +#: ../Doc/c-api/memory.rst:665 msgid "The arena allocator uses the following functions:" msgstr "El asignador de arena utiliza las siguientes funciones:" -#: ../Doc/c-api/memory.rst:651 +#: ../Doc/c-api/memory.rst:667 msgid ":c:func:`!VirtualAlloc` and :c:func:`!VirtualFree` on Windows," msgstr ":c:func:`!VirtualAlloc` y :c:func:`!VirtualFree` en Windows," -#: ../Doc/c-api/memory.rst:652 +#: ../Doc/c-api/memory.rst:668 msgid ":c:func:`!mmap` and :c:func:`!munmap` if available," msgstr ":c:func:`!mmap` y :c:func:`!munmap` si está disponible," -#: ../Doc/c-api/memory.rst:653 +#: ../Doc/c-api/memory.rst:669 msgid ":c:func:`malloc` and :c:func:`free` otherwise." msgstr ":c:func:`malloc` y :c:func:`free` en caso contrario." -#: ../Doc/c-api/memory.rst:655 +#: ../Doc/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 :" @@ -1338,11 +1383,18 @@ msgstr "" "ejecución usando la variable de entorno :envvar:`PYTHONMALLOC` (por ejemplo: " "``PYTHONMALLOC=malloc``)." -#: ../Doc/c-api/memory.rst:660 +#: ../Doc/c-api/memory.rst:675 +msgid "" +"Typically, it makes sense to disable the pymalloc allocator when building " +"Python with AddressSanitizer (:option:`--with-address-sanitizer`) which " +"helps uncover low level bugs within the C code." +msgstr "" + +#: ../Doc/c-api/memory.rst:680 msgid "Customize pymalloc Arena Allocator" msgstr "Personalizar asignador de arena de pymalloc" -#: ../Doc/c-api/memory.rst:666 +#: ../Doc/c-api/memory.rst:686 msgid "" "Structure used to describe an arena allocator. The structure has three " "fields:" @@ -1350,35 +1402,35 @@ msgstr "" "Estructura utilizada para describir un asignador de arena. La estructura " "tiene tres campos:" -#: ../Doc/c-api/memory.rst:674 +#: ../Doc/c-api/memory.rst:694 msgid "``void* alloc(void *ctx, size_t size)``" msgstr "``void* alloc(void *ctx, size_t size)``" -#: ../Doc/c-api/memory.rst:674 +#: ../Doc/c-api/memory.rst:694 msgid "allocate an arena of size bytes" msgstr "asignar una arena de bytes de tamaño" -#: ../Doc/c-api/memory.rst:676 +#: ../Doc/c-api/memory.rst:696 msgid "``void free(void *ctx, void *ptr, size_t size)``" msgstr "``void free(void *ctx, void *ptr, size_t size)``" -#: ../Doc/c-api/memory.rst:676 +#: ../Doc/c-api/memory.rst:696 msgid "free an arena" msgstr "liberar la arena" -#: ../Doc/c-api/memory.rst:681 +#: ../Doc/c-api/memory.rst:701 msgid "Get the arena allocator." msgstr "Consigue el asignador de arena." -#: ../Doc/c-api/memory.rst:685 +#: ../Doc/c-api/memory.rst:705 msgid "Set the arena allocator." msgstr "Establecer el asignador de arena." -#: ../Doc/c-api/memory.rst:690 +#: ../Doc/c-api/memory.rst:710 msgid "The mimalloc allocator" msgstr "El asignador mimalloc" -#: ../Doc/c-api/memory.rst:694 +#: ../Doc/c-api/memory.rst:714 msgid "" "Python supports the mimalloc allocator when the underlying platform support " "is available. mimalloc \"is a general purpose allocator with excellent " @@ -1390,15 +1442,15 @@ msgstr "" "característicos de rendimiento. Desarrollado originalmente por Daan Leijen " "para los sistemas de tiempo de ejecución de las lenguajes Koka y Lean\"" -#: ../Doc/c-api/memory.rst:699 +#: ../Doc/c-api/memory.rst:719 msgid "tracemalloc C API" msgstr "tracemalloc C API" -#: ../Doc/c-api/memory.rst:705 +#: ../Doc/c-api/memory.rst:725 msgid "Track an allocated memory block in the :mod:`tracemalloc` module." msgstr "Rastree un bloque de memoria asignado en el módulo :mod:`tracemalloc`." -#: ../Doc/c-api/memory.rst:707 +#: ../Doc/c-api/memory.rst:727 msgid "" "Return ``0`` on success, return ``-1`` on error (failed to allocate memory " "to store the trace). Return ``-2`` if tracemalloc is disabled." @@ -1407,12 +1459,12 @@ msgstr "" "asignar memoria para almacenar la traza). Retorna ``-2`` si tracemalloc está " "deshabilitado." -#: ../Doc/c-api/memory.rst:710 +#: ../Doc/c-api/memory.rst:730 msgid "If memory block is already tracked, update the existing trace." msgstr "" "Si el bloque de memoria ya está rastreado, actualice el rastreo existente." -#: ../Doc/c-api/memory.rst:714 +#: ../Doc/c-api/memory.rst:734 msgid "" "Untrack an allocated memory block in the :mod:`tracemalloc` module. Do " "nothing if the block was not tracked." @@ -1420,17 +1472,17 @@ msgstr "" "Descomprima un bloque de memoria asignado en el módulo :mod:`tracemalloc`. " "No haga nada si el bloque no fue rastreado." -#: ../Doc/c-api/memory.rst:717 +#: ../Doc/c-api/memory.rst:737 msgid "Return ``-2`` if tracemalloc is disabled, otherwise return ``0``." msgstr "" "Retorna ``-2`` si tracemalloc está deshabilitado; de lo contrario, retorna " "``0``." -#: ../Doc/c-api/memory.rst:723 +#: ../Doc/c-api/memory.rst:743 msgid "Examples" msgstr "Ejemplos" -#: ../Doc/c-api/memory.rst:725 +#: ../Doc/c-api/memory.rst:745 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 " @@ -1440,7 +1492,7 @@ msgstr "" "el búfer de E/S se asigne desde el montón de Python utilizando el primer " "conjunto de funciones::" -#: ../Doc/c-api/memory.rst:728 +#: ../Doc/c-api/memory.rst:748 msgid "" "PyObject *res;\n" "char *buf = (char *) PyMem_Malloc(BUFSIZ); /* for I/O */\n" @@ -1462,12 +1514,13 @@ msgstr "" "PyMem_Free(buf); /* destinado con PyMem_Malloc */\n" "return res;" -#: ../Doc/c-api/memory.rst:738 +#: ../Doc/c-api/memory.rst:758 msgid "The same code using the type-oriented function set::" msgstr "" "El mismo código que utiliza el conjunto de funciones orientado a tipos::" -#: ../Doc/c-api/memory.rst:740 +#: ../Doc/c-api/memory.rst:760 +#, fuzzy msgid "" "PyObject *res;\n" "char *buf = PyMem_New(char, BUFSIZ); /* for I/O */\n" @@ -1476,7 +1529,7 @@ msgid "" " return PyErr_NoMemory();\n" "/* ...Do some I/O operation involving buf... */\n" "res = PyBytes_FromString(buf);\n" -"PyMem_Del(buf); /* allocated with PyMem_New */\n" +"PyMem_Free(buf); /* allocated with PyMem_New */\n" "return res;" msgstr "" "PyObject *res;\n" @@ -1489,7 +1542,7 @@ msgstr "" "PyMem_Del(buf); /* destinado con PyMem_New */\n" "return res;" -#: ../Doc/c-api/memory.rst:750 +#: ../Doc/c-api/memory.rst:770 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 " @@ -1506,7 +1559,8 @@ msgstr "" "uno de los cuales está etiquetado como *fatal* porque mezcla dos asignadores " "diferentes que operan en montones diferentes.::" -#: ../Doc/c-api/memory.rst:757 +#: ../Doc/c-api/memory.rst:777 +#, fuzzy msgid "" "char *buf1 = PyMem_New(char, BUFSIZ);\n" "char *buf2 = (char *) malloc(BUFSIZ);\n" @@ -1514,7 +1568,7 @@ msgid "" "...\n" "PyMem_Del(buf3); /* Wrong -- should be PyMem_Free() */\n" "free(buf2); /* Right -- allocated via malloc() */\n" -"free(buf1); /* Fatal -- should be PyMem_Del() */" +"free(buf1); /* Fatal -- should be PyMem_Free() */" msgstr "" "char *buf1 = PyMem_New(char, BUFSIZ);\n" "char *buf2 = (char *) malloc(BUFSIZ);\n" @@ -1524,17 +1578,18 @@ msgstr "" "free(buf2); /* Correcto -- asignado por malloc() */\n" "free(buf1); /* Fatal -- debe ser PyMem_Del() */" -#: ../Doc/c-api/memory.rst:765 +#: ../Doc/c-api/memory.rst:785 +#, fuzzy 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_Del`." +"`PyObject_New`, :c:macro:`PyObject_NewVar` and :c:func:`PyObject_Free`." msgstr "" "Además de las funciones destinadas a manejar bloques de memoria sin procesar " "del montón de Python, los objetos en Python se asignan y liberan con :c:" "macro:`PyObject_New`, :c:macro:`PyObject_NewVar` y :c:func:`PyObject_Del` ." -#: ../Doc/c-api/memory.rst:769 +#: ../Doc/c-api/memory.rst:789 msgid "" "These will be explained in the next chapter on defining and implementing new " "object types in C." @@ -1557,3 +1612,10 @@ msgstr "realloc (Función de C)" #: ../Doc/c-api/memory.rst:43 msgid "free (C function)" msgstr "free (Función de C)" + +#~ msgid "" +#~ "The :term:`GIL ` must be held when using these " +#~ "functions." +#~ msgstr "" +#~ "El :term:`GIL ` debe mantenerse cuando se " +#~ "utilizan estas funciones." diff --git a/c-api/module.po b/c-api/module.po index 450079c7ad..e9e8566852 100644 --- a/c-api/module.po +++ b/c-api/module.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2021-12-09 10:51+0800\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/module.rst:6 msgid "Module Objects" @@ -51,12 +51,13 @@ msgstr "" "`PyModule_Type`. Esta función siempre finaliza con éxito." #: ../Doc/c-api/module.rst:40 +#, fuzzy msgid "" -"Return a new module object with the :attr:`__name__` attribute set to " -"*name*. The module's :attr:`__name__`, :attr:`__doc__`, :attr:`__package__`, " -"and :attr:`__loader__` attributes are filled in (all but :attr:`__name__` " -"are set to ``None``); the caller is responsible for providing a :attr:" -"`__file__` attribute." +"Return a new module object with :attr:`module.__name__` set to *name*. The " +"module's :attr:`!__name__`, :attr:`~module.__doc__`, :attr:`~module." +"__package__` and :attr:`~module.__loader__` attributes are filled in (all " +"but :attr:`!__name__` are set to ``None``). The caller is responsible for " +"setting a :attr:`~module.__file__` attribute." msgstr "" "Retorna un nuevo objeto módulo con el atributo :attr:`__name__` establecido " "en *name*. Los atributos del módulo :attr:`__name__`, :attr:`__doc__`, :attr:" @@ -64,17 +65,20 @@ msgstr "" "`__name__` están configurados en ``None``); quien llama es responsable de " "proporcionar un atributo :attr:`__file__`." -#: ../Doc/c-api/module.rst:46 ../Doc/c-api/module.rst:270 -#: ../Doc/c-api/module.rst:472 +#: ../Doc/c-api/module.rst:46 ../Doc/c-api/module.rst:416 +#: ../Doc/c-api/module.rst:443 msgid "Return ``NULL`` with an exception set on error." msgstr "" #: ../Doc/c-api/module.rst:50 -msgid ":attr:`__package__` and :attr:`__loader__` are set to ``None``." +#, fuzzy +msgid "" +":attr:`~module.__package__` and :attr:`~module.__loader__` are now set to " +"``None``." msgstr "" ":attr:`__package__` y :attr:`__loader__` están configurados en ``None``." -#: ../Doc/c-api/module.rst:56 +#: ../Doc/c-api/module.rst:57 msgid "" "Similar to :c:func:`PyModule_NewObject`, but the name is a UTF-8 encoded " "string instead of a Unicode object." @@ -82,7 +86,7 @@ msgstr "" "Similar a :c:func:`PyModule_NewObject`, pero el nombre es una cadena de " "caracteres codificada UTF-8 en lugar de un objeto Unicode." -#: ../Doc/c-api/module.rst:64 +#: ../Doc/c-api/module.rst:65 msgid "" "Return the dictionary object that implements *module*'s namespace; this " "object is the same as the :attr:`~object.__dict__` attribute of the module " @@ -94,7 +98,7 @@ msgstr "" "del objeto módulo. Si *module* no es un objeto módulo (o un subtipo de un " "objeto de módulo), se lanza :exc:`SystemError` y se retorna ``NULL``." -#: ../Doc/c-api/module.rst:69 +#: ../Doc/c-api/module.rst:70 #, fuzzy msgid "" "It is recommended extensions use other ``PyModule_*`` and ``PyObject_*`` " @@ -105,17 +109,18 @@ msgstr "" "`PyModule_\\*` y :c:func:`PyObject_\\*` en lugar de manipular directamente " "el módulo :attr:`~object.__dict__`." -#: ../Doc/c-api/module.rst:80 +#: ../Doc/c-api/module.rst:81 +#, fuzzy msgid "" -"Return *module*'s :attr:`__name__` value. If the module does not provide " -"one, or if it is not a string, :exc:`SystemError` is raised and ``NULL`` is " -"returned." +"Return *module*'s :attr:`~module.__name__` value. If the module does not " +"provide one, or if it is not a string, :exc:`SystemError` is raised and " +"``NULL`` is returned." msgstr "" "Retorna el valor :attr:`__name__` del *module*. Si el módulo no proporciona " "uno, o si no es una cadena de caracteres, :exc:`SystemError` se lanza y se " "retorna ``NULL``." -#: ../Doc/c-api/module.rst:88 +#: ../Doc/c-api/module.rst:90 msgid "" "Similar to :c:func:`PyModule_GetNameObject` but return the name encoded to " "``'utf-8'``." @@ -123,7 +128,7 @@ msgstr "" "Similar a :c:func:`PyModule_GetNameObject` pero retorna el nombre codificado " "a ``'utf-8'``." -#: ../Doc/c-api/module.rst:93 +#: ../Doc/c-api/module.rst:95 msgid "" "Return the \"state\" of the module, that is, a pointer to the block of " "memory allocated at module creation time, or ``NULL``. See :c:member:" @@ -133,7 +138,7 @@ msgstr "" "asignado en el momento de la creación del módulo, o ``NULL``. Ver :c:member:" "`PyModuleDef.m_size`." -#: ../Doc/c-api/module.rst:100 +#: ../Doc/c-api/module.rst:102 msgid "" "Return a pointer to the :c:type:`PyModuleDef` struct from which the module " "was created, or ``NULL`` if the module wasn't created from a definition." @@ -142,19 +147,20 @@ msgstr "" "se creó el módulo, o ``NULL`` si el módulo no se creó a partir de una " "definición." -#: ../Doc/c-api/module.rst:110 +#: ../Doc/c-api/module.rst:112 +#, fuzzy msgid "" "Return the name of the file from which *module* was loaded using *module*'s :" -"attr:`__file__` attribute. If this is not defined, or if it is not a " -"unicode string, raise :exc:`SystemError` and return ``NULL``; otherwise " -"return a reference to a Unicode object." +"attr:`~module.__file__` attribute. If this is not defined, or if it is not " +"a string, raise :exc:`SystemError` and return ``NULL``; otherwise return a " +"reference to a Unicode object." msgstr "" "Retorna el nombre del archivo desde el cual *module* se cargó utilizando el " "atributo :attr:`__file__` del *module*. Si esto no está definido, o si no es " "una cadena de caracteres unicode, lanza :exc:`SystemError` y retornar " "``NULL``; de lo contrario, retorna una referencia a un objeto Unicode." -#: ../Doc/c-api/module.rst:120 +#: ../Doc/c-api/module.rst:122 msgid "" "Similar to :c:func:`PyModule_GetFilenameObject` but return the filename " "encoded to 'utf-8'." @@ -162,7 +168,7 @@ msgstr "" "Similar a :c:func:`PyModule_GetFilenameObject` pero retorna el nombre de " "archivo codificado a 'utf-8'." -#: ../Doc/c-api/module.rst:123 +#: ../Doc/c-api/module.rst:125 #, fuzzy msgid "" ":c:func:`PyModule_GetFilename` raises :exc:`UnicodeEncodeError` on " @@ -172,54 +178,60 @@ msgstr "" "de archivo no codificables, use :c:func:`PyModule_GetFilenameObject` en su " "lugar." -#: ../Doc/c-api/module.rst:131 -msgid "Initializing C modules" -msgstr "Inicializando módulos en C" - #: ../Doc/c-api/module.rst:133 +msgid "Module definitions" +msgstr "" + +#: ../Doc/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 "" -"Los objetos módulos generalmente se crean a partir de módulos de extensión " -"(bibliotecas compartidas que exportan una función de inicialización) o " -"módulos compilados (donde la función de inicialización se agrega usando :c:" -"func:`PyImport_AppendInittab`). Consulte :ref:`building` o :ref:`extendiendo " -"con incrustación ` para más detalles." #: ../Doc/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 "" + +#: ../Doc/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 "" -"La función de inicialización puede pasar una instancia de definición de " -"módulo a :c:func:`PyModule_Create`, y retornar el objeto módulo resultante, " -"o solicitar una \"inicialización de múltiples fases\" retornando la " -"estructura de definición." -#: ../Doc/c-api/module.rst:144 +#: ../Doc/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 "" + +#: ../Doc/c-api/module.rst:155 +#, fuzzy 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 "" "La estructura de definición de módulo, que contiene toda la información " "necesaria para crear un objeto módulo. Por lo general, solo hay una variable " "estáticamente inicializada de este tipo para cada módulo." -#: ../Doc/c-api/module.rst:150 +#: ../Doc/c-api/module.rst:163 #, fuzzy msgid "Always initialize this member to :c:macro:`PyModuleDef_HEAD_INIT`." msgstr "Siempre inicialice este miembro a :const:`PyModuleDef_HEAD_INIT`." -#: ../Doc/c-api/module.rst:154 +#: ../Doc/c-api/module.rst:167 msgid "Name for the new module." msgstr "Nombre para el nuevo módulo." -#: ../Doc/c-api/module.rst:158 +#: ../Doc/c-api/module.rst:171 msgid "" "Docstring for the module; usually a docstring variable created with :c:macro:" "`PyDoc_STRVAR` is used." @@ -227,7 +239,7 @@ msgstr "" "Docstring para el módulo; por lo general, se usa una variable docstring " "creada con :c:macro:`PyDoc_STRVAR`." -#: ../Doc/c-api/module.rst:163 +#: ../Doc/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 " @@ -238,7 +250,7 @@ msgstr "" "estáticos. Esto hace que los módulos sean seguros para su uso en múltiples " "sub-interpretadores." -#: ../Doc/c-api/module.rst:167 +#: ../Doc/c-api/module.rst:180 #, fuzzy msgid "" "This memory area is allocated based on *m_size* on module creation, and " @@ -249,31 +261,32 @@ msgstr "" "y se libera cuando el objeto del módulo se desasigna, después de que se haya " "llamado a la función :c:member:`m_free`, si está presente." -#: ../Doc/c-api/module.rst:171 -msgid "" -"Setting ``m_size`` to ``-1`` means that the module does not support sub-" -"interpreters, because it has global state." -msgstr "" -"Establecer ``m_size`` en ``-1`` significa que el módulo no admite sub-" -"interpretadores, porque tiene un estado global." - -#: ../Doc/c-api/module.rst:174 +#: ../Doc/c-api/module.rst:184 +#, fuzzy 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." +"its state." msgstr "" "Establecerlo en un valor no negativo significa que el módulo se puede " "reinicializar y especifica la cantidad adicional de memoria que requiere " "para su estado. Se requiere ``m_size`` no negativo para la inicialización de " "múltiples fases." -#: ../Doc/c-api/module.rst:179 +#: ../Doc/c-api/module.rst:188 +msgid "" +"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 "" + +#: ../Doc/c-api/module.rst:194 msgid "See :PEP:`3121` for more details." msgstr "Ver :PEP:`3121` para más detalles." -#: ../Doc/c-api/module.rst:183 +#: ../Doc/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." @@ -282,17 +295,18 @@ msgstr "" "valores :c:type:`PyMethodDef`. Puede ser ``NULL`` si no hay funciones " "presentes." -#: ../Doc/c-api/module.rst:188 +#: ../Doc/c-api/module.rst:203 +#, fuzzy, python-brace-format 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 "" "Un conjunto de definiciones de ranura para la inicialización de múltiples " "fases, terminadas por una entrada ``{0, NULL}``. Cuando se utiliza la " "inicialización monofásica, *m_slots* debe ser ``NULL``." -#: ../Doc/c-api/module.rst:194 +#: ../Doc/c-api/module.rst:209 msgid "" "Prior to version 3.5, this member was always set to ``NULL``, and was " "defined as:" @@ -300,7 +314,7 @@ msgstr "" "Antes de la versión 3.5, este miembro siempre estaba configurado en ``NULL`` " "y se definía como:" -#: ../Doc/c-api/module.rst:201 +#: ../Doc/c-api/module.rst:216 msgid "" "A traversal function to call during GC traversal of the module object, or " "``NULL`` if not needed." @@ -308,8 +322,8 @@ msgstr "" "Una función transversal para llamar durante el recorrido GC del objeto del " "módulo, o ``NULL`` si no es necesario." -#: ../Doc/c-api/module.rst:204 ../Doc/c-api/module.rst:219 -#: ../Doc/c-api/module.rst:240 +#: ../Doc/c-api/module.rst:219 ../Doc/c-api/module.rst:234 +#: ../Doc/c-api/module.rst:255 #, fuzzy msgid "" "This function is not called if the module state was requested but is not " @@ -326,12 +340,12 @@ msgstr "" "y el estado del módulo (como lo retorna :c:func:`PyModule_GetState`) es " "``NULL``." -#: ../Doc/c-api/module.rst:211 ../Doc/c-api/module.rst:232 -#: ../Doc/c-api/module.rst:247 +#: ../Doc/c-api/module.rst:226 ../Doc/c-api/module.rst:247 +#: ../Doc/c-api/module.rst:262 msgid "No longer called before the module state is allocated." msgstr "Ya no se llama antes de que se asigne el estado del módulo." -#: ../Doc/c-api/module.rst:216 +#: ../Doc/c-api/module.rst:231 msgid "" "A clear function to call during GC clearing of the module object, or " "``NULL`` if not needed." @@ -339,7 +353,7 @@ msgstr "" "Una función clara para llamar durante la limpieza GC del objeto del módulo, " "o ``NULL`` si no es necesario." -#: ../Doc/c-api/module.rst:226 +#: ../Doc/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 " @@ -353,7 +367,7 @@ msgstr "" "más, la recolección de basura cíclica no se involucra y se llama a :c:member:" "`~PyModuleDef.m_free` directamente." -#: ../Doc/c-api/module.rst:237 +#: ../Doc/c-api/module.rst:252 msgid "" "A function to call during deallocation of the module object, or ``NULL`` if " "not needed." @@ -361,170 +375,26 @@ msgstr "" "Una función para llamar durante la desasignación del objeto del módulo, o " "``NULL`` si no es necesario." -#: ../Doc/c-api/module.rst:251 -msgid "Single-phase initialization" -msgstr "Inicialización monofásica" - -#: ../Doc/c-api/module.rst:253 -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 "" -"La función de inicialización del módulo puede crear y retornar el objeto " -"módulo directamente. Esto se conoce como \"inicialización monofásica\" y " -"utiliza una de las siguientes funciones de creación de dos módulos:" - -#: ../Doc/c-api/module.rst:259 -#, fuzzy -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 "" -"Crea un nuevo objeto módulo, dada la definición en *def*. Esto se comporta " -"como :c:func:`PyModule_Create2` con *module_api_version* establecido en :" -"const:`PYTHON_API_VERSION`." - -#: ../Doc/c-api/module.rst:266 -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 "" -"Crea un nuevo objeto de módulo, dada la definición en *def*, asumiendo la " -"versión de API *module_api_version*. Si esa versión no coincide con la " -"versión del intérprete en ejecución, se emite un :exc:`RuntimeWarning`." - -#: ../Doc/c-api/module.rst:274 -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 "" -"La mayoría de los usos de esta función deberían usar :c:func:" -"`PyModule_Create` en su lugar; solo use esto si está seguro de que lo " -"necesita." - -#: ../Doc/c-api/module.rst:277 -msgid "" -"Before it is returned from in the initialization function, the resulting " -"module object is typically populated using functions like :c:func:" -"`PyModule_AddObjectRef`." -msgstr "" -"Antes de que se retorne desde la función de inicialización, el objeto del " -"módulo resultante normalmente se llena utilizando funciones como :c:func:" -"`PyModule_AddObjectRef`." - -#: ../Doc/c-api/module.rst:283 -msgid "Multi-phase initialization" -msgstr "Inicialización multifase" - -#: ../Doc/c-api/module.rst:285 -#, fuzzy -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 "" -"Una forma alternativa de especificar extensiones es solicitar una " -"\"inicialización de múltiples fases\". Los módulos de extensión creados de " -"esta manera se comportan más como los módulos de Python: la inicialización " -"se divide entre la fase de creación (*creation phase*), cuando se crea el " -"objeto módulo, y la fase de ejecución (*execution phase*), cuando se llena. " -"La distinción es similar a los métodos de clases :py:meth:`__new__` y :py:" -"meth:`__init__`." - -#: ../Doc/c-api/module.rst:292 +#: ../Doc/c-api/module.rst:267 #, fuzzy -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 "" -"A diferencia de los módulos creados con la inicialización monofásica, estos " -"módulos no son singletons: si se elimina la entrada *sys.modules* y el " -"módulo se vuelve a importar, se crea un nuevo objeto módulo y el módulo " -"anterior está sujeto a la recolección normal de basura -- Al igual que con " -"los módulos de Python. Por defecto, los módulos múltiples creados a partir " -"de la misma definición deberían ser independientes: los cambios en uno no " -"deberían afectar a los demás. Esto significa que todo el estado debe ser " -"específico para el objeto del módulo (usando, por ejemplo, usando :c:func:" -"`PyModule_GetState`), o su contenido (como el módulo :attr:`__dict__` o " -"clases individuales creadas con :c:func:`PyType_FromSpec`)." - -#: ../Doc/c-api/module.rst:302 -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 "" -"Se espera que todos los módulos creados mediante la inicialización de " -"múltiples fases admitan :ref:`sub-interpretadores `. Asegurándose de que varios módulos sean independientes suele ser " -"suficiente para lograr esto." - -#: ../Doc/c-api/module.rst:306 -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 "" -"Para solicitar la inicialización de múltiples fases, la función de " -"inicialización (*PyInit_modulename*) retorna una instancia de :c:type:" -"`PyModuleDef` con un :c:member:`~PyModuleDef.m_slots` no vacío. Antes de que " -"se retorna, la instancia ``PyModuleDef`` debe inicializarse con la siguiente " -"función:" - -#: ../Doc/c-api/module.rst:313 -msgid "" -"Ensures a module definition is a properly initialized Python object that " -"correctly reports its type and reference count." -msgstr "" -"Asegura que la definición de un módulo sea un objeto Python correctamente " -"inicializado que informe correctamente su tipo y conteo de referencias." - -#: ../Doc/c-api/module.rst:316 -msgid "Returns *def* cast to ``PyObject*``, or ``NULL`` if an error occurred." -msgstr "" -"Retorna *def* convertido a ``PyObject*`` o ``NULL`` si se produjo un error." - -#: ../Doc/c-api/module.rst:320 -msgid "" -"The *m_slots* member of the module definition must point to an array of " -"``PyModuleDef_Slot`` structures:" -msgstr "" -"El miembro *m_slots* de la definición del módulo debe apuntar a un arreglo " -"de estructuras ``PyModuleDef_Slot``:" +msgid "Module slots" +msgstr "Objetos módulo" -#: ../Doc/c-api/module.rst:327 +#: ../Doc/c-api/module.rst:273 msgid "A slot ID, chosen from the available values explained below." msgstr "" "Una ranura ID, elegida entre los valores disponibles que se explican a " "continuación." -#: ../Doc/c-api/module.rst:331 +#: ../Doc/c-api/module.rst:277 msgid "Value of the slot, whose meaning depends on the slot ID." msgstr "Valor de la ranura, cuyo significado depende de la ID de la ranura." -#: ../Doc/c-api/module.rst:335 -msgid "The *m_slots* array must be terminated by a slot with id 0." -msgstr "El arreglo *m_slots* debe estar terminada por una ranura con id 0." - -#: ../Doc/c-api/module.rst:337 +#: ../Doc/c-api/module.rst:281 msgid "The available slot types are:" msgstr "Los tipos de ranura disponibles son:" -#: ../Doc/c-api/module.rst:341 +#: ../Doc/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:" @@ -532,7 +402,7 @@ msgstr "" "Especifica una función que se llama para crear el objeto del módulo en sí. " "El puntero *value* de este espacio debe apuntar a una función de la firma:" -#: ../Doc/c-api/module.rst:348 +#: ../Doc/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 " @@ -543,7 +413,7 @@ msgstr "" "Debería retornar un nuevo objeto de módulo, o establecer un error y retornar " "``NULL``." -#: ../Doc/c-api/module.rst:353 +#: ../Doc/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 " @@ -553,7 +423,7 @@ msgstr "" "código arbitrario de Python, ya que intentar importar el mismo módulo " "nuevamente puede dar como resultado un bucle infinito." -#: ../Doc/c-api/module.rst:357 +#: ../Doc/c-api/module.rst:301 msgid "" "Multiple ``Py_mod_create`` slots may not be specified in one module " "definition." @@ -561,7 +431,7 @@ msgstr "" "Múltiples ranuras ``Py_mod_create`` no pueden especificarse en una " "definición de módulo." -#: ../Doc/c-api/module.rst:360 +#: ../Doc/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 " @@ -576,7 +446,7 @@ msgstr "" "bajo diferentes nombres a través de enlaces simbólicos, todo mientras se " "comparte una definición de módulo único." -#: ../Doc/c-api/module.rst:366 +#: ../Doc/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 " @@ -592,7 +462,7 @@ msgstr "" "``PyModuleDef`` no tiene ``NULL`` ``m_traverse``, ``m_clear``, ``m_free``; " "``m_size`` distinto de cero; o ranuras que no sean ``Py_mod_create``." -#: ../Doc/c-api/module.rst:375 +#: ../Doc/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 " @@ -604,7 +474,7 @@ msgstr "" "general, esta función agrega clases y constantes al módulo. La firma de la " "función es:" -#: ../Doc/c-api/module.rst:384 +#: ../Doc/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." @@ -612,33 +482,33 @@ msgstr "" "Si se especifican varias ranuras ``Py_mod_exec``, se procesan en el orden en " "que aparecen en el arreglo *m_slots*." -#: ../Doc/c-api/module.rst:389 ../Doc/c-api/module.rst:422 +#: ../Doc/c-api/module.rst:333 ../Doc/c-api/module.rst:366 msgid "Specifies one of the following values:" msgstr "" -#: ../Doc/c-api/module.rst:395 +#: ../Doc/c-api/module.rst:339 msgid "The module does not support being imported in subinterpreters." msgstr "" -#: ../Doc/c-api/module.rst:399 +#: ../Doc/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 "" -#: ../Doc/c-api/module.rst:405 +#: ../Doc/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 "" -#: ../Doc/c-api/module.rst:409 +#: ../Doc/c-api/module.rst:353 msgid "" "This slot determines whether or not importing this module in a " "subinterpreter will fail." msgstr "" -#: ../Doc/c-api/module.rst:412 +#: ../Doc/c-api/module.rst:356 #, fuzzy msgid "" "Multiple ``Py_mod_multiple_interpreters`` slots may not be specified in one " @@ -647,23 +517,23 @@ msgstr "" "Múltiples ranuras ``Py_mod_create`` no pueden especificarse en una " "definición de módulo." -#: ../Doc/c-api/module.rst:415 +#: ../Doc/c-api/module.rst:359 msgid "" "If ``Py_mod_multiple_interpreters`` is not specified, the import machinery " -"defaults to ``Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED``." +"defaults to ``Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED``." msgstr "" -#: ../Doc/c-api/module.rst:428 +#: ../Doc/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 "" -#: ../Doc/c-api/module.rst:433 +#: ../Doc/c-api/module.rst:377 msgid "The module is safe to run without an active GIL." msgstr "" -#: ../Doc/c-api/module.rst:435 +#: ../Doc/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 " @@ -671,7 +541,7 @@ msgid "" "threaded-cpython` for more detail." msgstr "" -#: ../Doc/c-api/module.rst:440 +#: ../Doc/c-api/module.rst:384 #, fuzzy msgid "" "Multiple ``Py_mod_gil`` slots may not be specified in one module definition." @@ -679,46 +549,69 @@ msgstr "" "Múltiples ranuras ``Py_mod_create`` no pueden especificarse en una " "definición de módulo." -#: ../Doc/c-api/module.rst:442 +#: ../Doc/c-api/module.rst:386 msgid "" "If ``Py_mod_gil`` is not specified, the import machinery defaults to " "``Py_MOD_GIL_USED``." msgstr "" -#: ../Doc/c-api/module.rst:447 -msgid "See :PEP:`489` for more details on multi-phase initialization." +#: ../Doc/c-api/module.rst:395 +msgid "Creating extension modules dynamically" msgstr "" -"Ver :PEP:`489` para más detalles sobre la inicialización de múltiples fases." - -#: ../Doc/c-api/module.rst:450 -msgid "Low-level module creation functions" -msgstr "Funciones de creación de módulos de bajo nivel" -#: ../Doc/c-api/module.rst:452 +#: ../Doc/c-api/module.rst:397 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." +"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 "" -"Las siguientes funciones se invocan en segundo plano cuando se utiliza la " -"inicialización de múltiples fases. Se pueden usar directamente, por ejemplo, " -"al crear objetos de módulo de forma dinámica. Tenga en cuenta que tanto " -"``PyModule_FromDefAndSpec`` como ``PyModule_ExecDef`` deben llamarse para " -"inicializar completamente un módulo." -#: ../Doc/c-api/module.rst:459 +#: ../Doc/c-api/module.rst:404 #, fuzzy 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*. 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 "" +"Crea un nuevo objeto módulo, dada la definición en *def*. Esto se comporta " +"como :c:func:`PyModule_Create2` con *module_api_version* establecido en :" +"const:`PYTHON_API_VERSION`." + +#: ../Doc/c-api/module.rst:412 +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 "" +"Crea un nuevo objeto de módulo, dada la definición en *def*, asumiendo la " +"versión de API *module_api_version*. Si esa versión no coincide con la " +"versión del intérprete en ejecución, se emite un :exc:`RuntimeWarning`." + +#: ../Doc/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 "" -"Cree un nuevo objeto módulo, dada la definición en *module* y ModuleSpec " -"*spec*. Esto se comporta como :c:func:`PyModule_FromDefAndSpec2` con " -"*module_api_version* establecido en :const:`PYTHON_API_VERSION`." -#: ../Doc/c-api/module.rst:467 +#: ../Doc/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 "" +"La mayoría de los usos de esta función deberían usar :c:func:" +"`PyModule_Create` en su lugar; solo use esto si está seguro de que lo " +"necesita." + +#: ../Doc/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 "" + +#: ../Doc/c-api/module.rst:438 #, fuzzy msgid "" "Create a new module object, given the definition in *def* and the ModuleSpec " @@ -731,7 +624,14 @@ msgstr "" "coincide con la versión del intérprete en ejecución, se emite un :exc:" "`RuntimeWarning`." -#: ../Doc/c-api/module.rst:476 +#: ../Doc/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 "" + +#: ../Doc/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." @@ -740,59 +640,38 @@ msgstr "" "`PyModule_FromDefAndSpec` en su lugar; solo use esto si está seguro de que " "lo necesita." -#: ../Doc/c-api/module.rst:483 +#: ../Doc/c-api/module.rst:458 msgid "Process any execution slots (:c:data:`Py_mod_exec`) given in *def*." msgstr "" "Procesa cualquier ranura de ejecución (:c:data:`Py_mod_exec`) dado en *def*." -#: ../Doc/c-api/module.rst:489 -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``." +#: ../Doc/c-api/module.rst:464 +msgid "The C API version. Defined for backwards compatibility." msgstr "" -"Establece la cadena de caracteres de documentación para *module* en " -"*docstring*. Esta función se llama automáticamente cuando se crea un módulo " -"desde ``PyModuleDef``, usando ``PyModule_Create`` o " -"``PyModule_FromDefAndSpec``." -#: ../Doc/c-api/module.rst:498 +#: ../Doc/c-api/module.rst:466 ../Doc/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 "" -"Agrega las funciones del arreglo *functions* terminadas en ``NULL`` a " -"*module*. Consulte la documentación de :c:type:`PyMethodDef` para obtener " -"detalles sobre entradas individuales (debido a la falta de un espacio de " -"nombres de módulo compartido, las \"funciones\" de nivel de módulo " -"implementadas en C generalmente reciben el módulo como su primer parámetro, " -"haciéndolos similares a la instancia métodos en clases de Python). Esta " -"función se llama automáticamente cuando se crea un módulo desde " -"``PyModuleDef``, usando ``PyModule_Create`` o ``PyModule_FromDefAndSpec``." -#: ../Doc/c-api/module.rst:510 +#: ../Doc/c-api/module.rst:471 +msgid "Defined as ``3`` for backwards compatibility." +msgstr "" + +#: ../Doc/c-api/module.rst:478 msgid "Support functions" msgstr "Funciones de soporte" -#: ../Doc/c-api/module.rst:512 +#: ../Doc/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 "" -"La función de inicialización del módulo (si usa la inicialización de fase " -"única) o una función llamada desde un intervalo de ejecución del módulo (si " -"usa la inicialización de múltiples fases), puede usar las siguientes " -"funciones para ayudar a inicializar el estado del módulo:" -#: ../Doc/c-api/module.rst:519 +#: ../Doc/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." @@ -800,28 +679,19 @@ msgstr "" "Agrega un objeto a *module* como *name*. Esta es una función de conveniencia " "que se puede usar desde la función de inicialización del módulo." -#: ../Doc/c-api/module.rst:522 +#: ../Doc/c-api/module.rst:491 msgid "" "On success, return ``0``. On error, raise an exception and return ``-1``." msgstr "" "En caso de éxito, retorna ``0``. En caso de error, lanza una excepción y " "retorna ``-1``." -#: ../Doc/c-api/module.rst:524 -#, fuzzy -msgid "" -"Return ``-1`` if *value* is ``NULL``. It must be called with an exception " -"raised in this case." -msgstr "" -"Retorna ``NULL`` si *value* es ``NULL``. Debe llamarse lanzando una " -"excepción en este caso." - -#: ../Doc/c-api/module.rst:527 ../Doc/c-api/module.rst:574 -#: ../Doc/c-api/module.rst:601 +#: ../Doc/c-api/module.rst:493 ../Doc/c-api/module.rst:544 +#: ../Doc/c-api/module.rst:571 msgid "Example usage::" msgstr "Ejemplo de uso ::" -#: ../Doc/c-api/module.rst:529 +#: ../Doc/c-api/module.rst:495 msgid "" "static int\n" "add_spam(PyObject *module, int value)\n" @@ -836,7 +706,14 @@ msgid "" " }" msgstr "" -#: ../Doc/c-api/module.rst:541 +#: ../Doc/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 "" + +#: ../Doc/c-api/module.rst:511 msgid "" "The example can also be written without checking explicitly if *obj* is " "``NULL``::" @@ -844,7 +721,8 @@ msgstr "" "El ejemplo puede también ser escrito sin verificar explicitamente si *obj* " "es ``NULL``::" -#: ../Doc/c-api/module.rst:544 +#: ../Doc/c-api/module.rst:514 +#, python-brace-format msgid "" "static int\n" "add_spam(PyObject *module, int value)\n" @@ -856,7 +734,7 @@ msgid "" " }" msgstr "" -#: ../Doc/c-api/module.rst:553 +#: ../Doc/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``." @@ -864,7 +742,7 @@ msgstr "" "Note que ``Py_XDECREF()`` debería ser usado en vez de ``Py_DECREF()`` en " "este caso, ya que *obj* puede ser ``NULL``." -#: ../Doc/c-api/module.rst:556 +#: ../Doc/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*. " @@ -874,7 +752,7 @@ msgid "" "internally to create a key object." msgstr "" -#: ../Doc/c-api/module.rst:569 +#: ../Doc/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 " @@ -882,14 +760,15 @@ msgid "" "variable." msgstr "" -#: ../Doc/c-api/module.rst:576 +#: ../Doc/c-api/module.rst:546 +#, python-brace-format msgid "" "if (PyModule_Add(module, \"spam\", PyBytes_FromString(value)) < 0) {\n" " goto error;\n" "}" msgstr "" -#: ../Doc/c-api/module.rst:585 +#: ../Doc/c-api/module.rst:555 msgid "" "Similar to :c:func:`PyModule_AddObjectRef`, but steals a reference to " "*value* on success (if it returns ``0``)." @@ -897,7 +776,7 @@ msgstr "" "Similar a :c:func:`PyModule_AddObjectRef`, pero roba una referencia a " "*value* en caso de éxito (en este caso retorna ``0``)." -#: ../Doc/c-api/module.rst:588 +#: ../Doc/c-api/module.rst:558 #, fuzzy msgid "" "The new :c:func:`PyModule_Add` or :c:func:`PyModule_AddObjectRef` functions " @@ -908,7 +787,7 @@ msgstr "" "sencillo introducir fugas de referencias por un uso incorrecto de la " "función :c:func:`PyModule_AddObject`." -#: ../Doc/c-api/module.rst:595 +#: ../Doc/c-api/module.rst:565 #, fuzzy msgid "" "Unlike other functions that steal references, ``PyModule_AddObject()`` only " @@ -918,7 +797,7 @@ msgstr "" "``PyModule_AddObject()`` solo disminuye el conteo de referencias de *value* " "**en caso de éxito**." -#: ../Doc/c-api/module.rst:598 +#: ../Doc/c-api/module.rst:568 #, fuzzy msgid "" "This means that its return value must be checked, and calling code must :c:" @@ -927,7 +806,8 @@ msgstr "" "Esto significa que su valor de retorno debe ser verificado, y el código de " "llamada debe :c:func:`Py_DECREF` *value* manualmente en caso de error." -#: ../Doc/c-api/module.rst:603 +#: ../Doc/c-api/module.rst:573 +#, python-brace-format msgid "" "PyObject *obj = PyBytes_FromString(value);\n" "if (PyModule_AddObject(module, \"spam\", obj) < 0) {\n" @@ -941,11 +821,11 @@ msgid "" "// Py_XDECREF(obj) is not needed here." msgstr "" -#: ../Doc/c-api/module.rst:616 +#: ../Doc/c-api/module.rst:586 msgid ":c:func:`PyModule_AddObject` is :term:`soft deprecated`." msgstr "" -#: ../Doc/c-api/module.rst:621 +#: ../Doc/c-api/module.rst:591 #, fuzzy msgid "" "Add an integer constant to *module* as *name*. This convenience function " @@ -956,13 +836,13 @@ msgstr "" "conveniencia se puede usar desde la función de inicialización del módulo. " "Retorna ``-1`` en caso de error, ``0`` en caso de éxito." -#: ../Doc/c-api/module.rst:625 +#: ../Doc/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 "" -#: ../Doc/c-api/module.rst:631 +#: ../Doc/c-api/module.rst:601 #, fuzzy msgid "" "Add a string constant to *module* as *name*. This convenience function can " @@ -975,14 +855,14 @@ msgstr "" "cadena de caracteres *value* debe estar terminada en ``NULL``. Retorna " "``-1`` en caso de error, ``0`` en caso de éxito." -#: ../Doc/c-api/module.rst:636 +#: ../Doc/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 "" -#: ../Doc/c-api/module.rst:643 +#: ../Doc/c-api/module.rst:613 #, fuzzy msgid "" "Add an int constant to *module*. The name and the value are taken from " @@ -995,11 +875,11 @@ msgstr "" "constante int *AF_INET* con el valor de *AF_INET* a *module*. Retorna ``-1`` " "en caso de error, ``0`` en caso de éxito." -#: ../Doc/c-api/module.rst:651 +#: ../Doc/c-api/module.rst:621 msgid "Add a string constant to *module*." msgstr "Agrega una constante de cadena de caracteres a *module*." -#: ../Doc/c-api/module.rst:655 +#: ../Doc/c-api/module.rst:625 #, fuzzy msgid "" "Add a type object to *module*. The type object is finalized by calling " @@ -1012,32 +892,76 @@ msgstr "" "último componente de :c:member:`~PyTypeObject.tp_name` después del punto. " "Retorna ``-1`` en caso de error, ``0`` en caso de éxito." -#: ../Doc/c-api/module.rst:665 +#: ../Doc/c-api/module.rst:635 +#, fuzzy +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 "" +"Agrega las funciones del arreglo *functions* terminadas en ``NULL`` a " +"*module*. Consulte la documentación de :c:type:`PyMethodDef` para obtener " +"detalles sobre entradas individuales (debido a la falta de un espacio de " +"nombres de módulo compartido, las \"funciones\" de nivel de módulo " +"implementadas en C generalmente reciben el módulo como su primer parámetro, " +"haciéndolos similares a la instancia métodos en clases de Python). Esta " +"función se llama automáticamente cuando se crea un módulo desde " +"``PyModuleDef``, usando ``PyModule_Create`` o ``PyModule_FromDefAndSpec``." + +#: ../Doc/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 "" + +#: ../Doc/c-api/module.rst:652 +#, fuzzy +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 "" +"Establece la cadena de caracteres de documentación para *module* en " +"*docstring*. Esta función se llama automáticamente cuando se crea un módulo " +"desde ``PyModuleDef``, usando ``PyModule_Create`` o " +"``PyModule_FromDefAndSpec``." + +#: ../Doc/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 "" -#: ../Doc/c-api/module.rst:678 -msgid "Module lookup" -msgstr "Búsqueda de módulos" +#: ../Doc/c-api/module.rst:675 +#, fuzzy +msgid "Module lookup (single-phase initialization)" +msgstr "Inicialización monofásica" -#: ../Doc/c-api/module.rst:680 +#: ../Doc/c-api/module.rst:677 +#, fuzzy 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 "" "La inicialización monofásica crea módulos singleton que se pueden buscar en " "el contexto del intérprete actual. Esto permite que el objeto módulo se " "recupere más tarde con solo una referencia a la definición del módulo." -#: ../Doc/c-api/module.rst:684 +#: ../Doc/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 " @@ -1047,7 +971,7 @@ msgstr "" "de múltiples fases, ya que se pueden crear múltiples módulos de este tipo " "desde una sola definición." -#: ../Doc/c-api/module.rst:689 +#: ../Doc/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 " @@ -1061,7 +985,7 @@ msgstr "" "de que el objeto módulo correspondiente no se encuentre o no se haya " "adjuntado al estado del intérprete, retornará ``NULL``." -#: ../Doc/c-api/module.rst:696 +#: ../Doc/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:" @@ -1071,13 +995,15 @@ msgstr "" "Esto permite que se pueda acceder al objeto del módulo a través de :c:func:" "`PyState_FindModule`." -#: ../Doc/c-api/module.rst:699 +#: ../Doc/c-api/module.rst:697 msgid "Only effective on modules created using single-phase initialization." msgstr "Solo es efectivo en módulos creados con la inicialización monofásica." -#: ../Doc/c-api/module.rst:701 +#: ../Doc/c-api/module.rst:699 +#, fuzzy 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 " @@ -1094,15 +1020,21 @@ msgstr "" "directamente o refiriéndose a su implementación para obtener detalles de las " "actualizaciones de estado requeridas)." -#: ../Doc/c-api/module.rst:709 ../Doc/c-api/module.rst:720 -msgid "The caller must hold the GIL." -msgstr "La persona que llama debe retener el GIL." +#: ../Doc/c-api/module.rst:708 +msgid "" +"If a module was attached previously using the same *def*, it is replaced by " +"the new *module*." +msgstr "" + +#: ../Doc/c-api/module.rst:711 ../Doc/c-api/module.rst:722 +msgid "The caller must have an :term:`attached thread state`." +msgstr "" -#: ../Doc/c-api/module.rst:711 +#: ../Doc/c-api/module.rst:713 msgid "Return ``-1`` with an exception set on error, ``0`` on success." msgstr "" -#: ../Doc/c-api/module.rst:717 +#: ../Doc/c-api/module.rst:719 #, fuzzy msgid "" "Removes the module object created from *def* from the interpreter state. " @@ -1125,7 +1057,7 @@ msgstr "Búsqueda de módulos" msgid "ModuleType (in module types)" msgstr "" -#: ../Doc/c-api/module.rst:33 ../Doc/c-api/module.rst:76 +#: ../Doc/c-api/module.rst:33 ../Doc/c-api/module.rst:77 msgid "__name__ (module attribute)" msgstr "" @@ -1133,7 +1065,7 @@ msgstr "" msgid "__doc__ (module attribute)" msgstr "" -#: ../Doc/c-api/module.rst:33 ../Doc/c-api/module.rst:106 +#: ../Doc/c-api/module.rst:33 ../Doc/c-api/module.rst:108 msgid "__file__ (module attribute)" msgstr "" @@ -1145,10 +1077,203 @@ msgstr "" msgid "__loader__ (module attribute)" msgstr "" -#: ../Doc/c-api/module.rst:62 +#: ../Doc/c-api/module.rst:63 msgid "__dict__ (module attribute)" msgstr "" -#: ../Doc/c-api/module.rst:76 ../Doc/c-api/module.rst:106 +#: ../Doc/c-api/module.rst:77 ../Doc/c-api/module.rst:108 msgid "SystemError (built-in exception)" msgstr "" + +#~ msgid "Initializing C modules" +#~ msgstr "Inicializando módulos en C" + +#~ 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." +#~ msgstr "" +#~ "Los objetos módulos generalmente se crean a partir de módulos de " +#~ "extensión (bibliotecas compartidas que exportan una función de " +#~ "inicialización) o módulos compilados (donde la función de inicialización " +#~ "se agrega usando :c:func:`PyImport_AppendInittab`). Consulte :ref:" +#~ "`building` o :ref:`extendiendo con incrustación ` para más detalles." + +#~ 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." +#~ msgstr "" +#~ "La función de inicialización puede pasar una instancia de definición de " +#~ "módulo a :c:func:`PyModule_Create`, y retornar el objeto módulo " +#~ "resultante, o solicitar una \"inicialización de múltiples fases\" " +#~ "retornando la estructura de definición." + +#~ msgid "" +#~ "Setting ``m_size`` to ``-1`` means that the module does not support sub-" +#~ "interpreters, because it has global state." +#~ msgstr "" +#~ "Establecer ``m_size`` en ``-1`` significa que el módulo no admite sub-" +#~ "interpretadores, porque tiene un estado global." + +#~ 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 "" +#~ "La función de inicialización del módulo puede crear y retornar el objeto " +#~ "módulo directamente. Esto se conoce como \"inicialización monofásica\" y " +#~ "utiliza una de las siguientes funciones de creación de dos módulos:" + +#~ msgid "" +#~ "Before it is returned from in the initialization function, the resulting " +#~ "module object is typically populated using functions like :c:func:" +#~ "`PyModule_AddObjectRef`." +#~ msgstr "" +#~ "Antes de que se retorne desde la función de inicialización, el objeto del " +#~ "módulo resultante normalmente se llena utilizando funciones como :c:func:" +#~ "`PyModule_AddObjectRef`." + +#~ msgid "Multi-phase initialization" +#~ msgstr "Inicialización multifase" + +#~ 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 "" +#~ "Una forma alternativa de especificar extensiones es solicitar una " +#~ "\"inicialización de múltiples fases\". Los módulos de extensión creados " +#~ "de esta manera se comportan más como los módulos de Python: la " +#~ "inicialización se divide entre la fase de creación (*creation phase*), " +#~ "cuando se crea el objeto módulo, y la fase de ejecución (*execution " +#~ "phase*), cuando se llena. La distinción es similar a los métodos de " +#~ "clases :py:meth:`__new__` y :py:meth:`__init__`." + +#~ 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 "" +#~ "A diferencia de los módulos creados con la inicialización monofásica, " +#~ "estos módulos no son singletons: si se elimina la entrada *sys.modules* y " +#~ "el módulo se vuelve a importar, se crea un nuevo objeto módulo y el " +#~ "módulo anterior está sujeto a la recolección normal de basura -- Al igual " +#~ "que con los módulos de Python. Por defecto, los módulos múltiples creados " +#~ "a partir de la misma definición deberían ser independientes: los cambios " +#~ "en uno no deberían afectar a los demás. Esto significa que todo el estado " +#~ "debe ser específico para el objeto del módulo (usando, por ejemplo, " +#~ "usando :c:func:`PyModule_GetState`), o su contenido (como el módulo :attr:" +#~ "`__dict__` o clases individuales creadas con :c:func:`PyType_FromSpec`)." + +#~ 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 "" +#~ "Se espera que todos los módulos creados mediante la inicialización de " +#~ "múltiples fases admitan :ref:`sub-interpretadores `. Asegurándose de que varios módulos sean independientes suele " +#~ "ser suficiente para lograr esto." + +#~ 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 "" +#~ "Para solicitar la inicialización de múltiples fases, la función de " +#~ "inicialización (*PyInit_modulename*) retorna una instancia de :c:type:" +#~ "`PyModuleDef` con un :c:member:`~PyModuleDef.m_slots` no vacío. Antes de " +#~ "que se retorna, la instancia ``PyModuleDef`` debe inicializarse con la " +#~ "siguiente función:" + +#~ msgid "" +#~ "Ensures a module definition is a properly initialized Python object that " +#~ "correctly reports its type and reference count." +#~ msgstr "" +#~ "Asegura que la definición de un módulo sea un objeto Python correctamente " +#~ "inicializado que informe correctamente su tipo y conteo de referencias." + +#~ msgid "" +#~ "Returns *def* cast to ``PyObject*``, or ``NULL`` if an error occurred." +#~ msgstr "" +#~ "Retorna *def* convertido a ``PyObject*`` o ``NULL`` si se produjo un " +#~ "error." + +#~ msgid "" +#~ "The *m_slots* member of the module definition must point to an array of " +#~ "``PyModuleDef_Slot`` structures:" +#~ msgstr "" +#~ "El miembro *m_slots* de la definición del módulo debe apuntar a un " +#~ "arreglo de estructuras ``PyModuleDef_Slot``:" + +#~ msgid "The *m_slots* array must be terminated by a slot with id 0." +#~ msgstr "El arreglo *m_slots* debe estar terminada por una ranura con id 0." + +#~ msgid "See :PEP:`489` for more details on multi-phase initialization." +#~ msgstr "" +#~ "Ver :PEP:`489` para más detalles sobre la inicialización de múltiples " +#~ "fases." + +#~ msgid "Low-level module creation functions" +#~ msgstr "Funciones de creación de módulos de bajo nivel" + +#~ 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." +#~ msgstr "" +#~ "Las siguientes funciones se invocan en segundo plano cuando se utiliza la " +#~ "inicialización de múltiples fases. Se pueden usar directamente, por " +#~ "ejemplo, al crear objetos de módulo de forma dinámica. Tenga en cuenta " +#~ "que tanto ``PyModule_FromDefAndSpec`` como ``PyModule_ExecDef`` deben " +#~ "llamarse para inicializar completamente un módulo." + +#~ 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`." +#~ msgstr "" +#~ "Cree un nuevo objeto módulo, dada la definición en *module* y ModuleSpec " +#~ "*spec*. Esto se comporta como :c:func:`PyModule_FromDefAndSpec2` con " +#~ "*module_api_version* establecido en :const:`PYTHON_API_VERSION`." + +#~ 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:" +#~ msgstr "" +#~ "La función de inicialización del módulo (si usa la inicialización de fase " +#~ "única) o una función llamada desde un intervalo de ejecución del módulo " +#~ "(si usa la inicialización de múltiples fases), puede usar las siguientes " +#~ "funciones para ayudar a inicializar el estado del módulo:" + +#~ msgid "" +#~ "Return ``-1`` if *value* is ``NULL``. It must be called with an exception " +#~ "raised in this case." +#~ msgstr "" +#~ "Retorna ``NULL`` si *value* es ``NULL``. Debe llamarse lanzando una " +#~ "excepción en este caso." + +#~ msgid "Module lookup" +#~ msgstr "Búsqueda de módulos" + +#~ msgid "The caller must hold the GIL." +#~ msgstr "La persona que llama debe retener el GIL." diff --git a/c-api/monitoring.po b/c-api/monitoring.po index a4e3f74259..de87e36060 100644 --- a/c-api/monitoring.po +++ b/c-api/monitoring.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Python en Español 3.13\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/monitoring.rst:6 msgid "Monitoring C API" @@ -110,67 +110,71 @@ msgid "Fire a ``JUMP`` event." msgstr "" #: ../Doc/c-api/monitoring.rst:80 -msgid "Fire a ``BRANCH`` event." +msgid "Fire a ``BRANCH_LEFT`` event." msgstr "" #: ../Doc/c-api/monitoring.rst:85 -msgid "Fire a ``C_RETURN`` event." +msgid "Fire a ``BRANCH_RIGHT`` event." msgstr "" #: ../Doc/c-api/monitoring.rst:90 +msgid "Fire a ``C_RETURN`` event." +msgstr "" + +#: ../Doc/c-api/monitoring.rst:95 msgid "" "Fire a ``PY_THROW`` event with the current exception (as returned by :c:func:" "`PyErr_GetRaisedException`)." msgstr "" -#: ../Doc/c-api/monitoring.rst:96 +#: ../Doc/c-api/monitoring.rst:101 msgid "" "Fire a ``RAISE`` event with the current exception (as returned by :c:func:" "`PyErr_GetRaisedException`)." msgstr "" -#: ../Doc/c-api/monitoring.rst:102 +#: ../Doc/c-api/monitoring.rst:107 msgid "" "Fire a ``C_RAISE`` event with the current exception (as returned by :c:func:" "`PyErr_GetRaisedException`)." msgstr "" -#: ../Doc/c-api/monitoring.rst:108 +#: ../Doc/c-api/monitoring.rst:113 msgid "" "Fire a ``RERAISE`` event with the current exception (as returned by :c:func:" "`PyErr_GetRaisedException`)." msgstr "" -#: ../Doc/c-api/monitoring.rst:114 +#: ../Doc/c-api/monitoring.rst:119 msgid "" "Fire an ``EXCEPTION_HANDLED`` event with the current exception (as returned " "by :c:func:`PyErr_GetRaisedException`)." msgstr "" -#: ../Doc/c-api/monitoring.rst:120 +#: ../Doc/c-api/monitoring.rst:125 msgid "" "Fire a ``PY_UNWIND`` event with the current exception (as returned by :c:" "func:`PyErr_GetRaisedException`)." msgstr "" -#: ../Doc/c-api/monitoring.rst:126 +#: ../Doc/c-api/monitoring.rst:131 msgid "" "Fire a ``STOP_ITERATION`` event. If ``value`` is an instance of :exc:" "`StopIteration`, it is used. Otherwise, a new :exc:`StopIteration` instance " "is created with ``value`` as its argument." msgstr "" -#: ../Doc/c-api/monitoring.rst:131 +#: ../Doc/c-api/monitoring.rst:136 msgid "Managing the Monitoring State" msgstr "" -#: ../Doc/c-api/monitoring.rst:133 +#: ../Doc/c-api/monitoring.rst:138 msgid "" "Monitoring states can be managed with the help of monitoring scopes. A scope " "would typically correspond to a python function." msgstr "" -#: ../Doc/c-api/monitoring.rst:138 +#: ../Doc/c-api/monitoring.rst:143 msgid "" "Enter a monitored scope. ``event_types`` is an array of the event IDs for " "events that may be fired from the scope. For example, the ID of a " @@ -183,16 +187,16 @@ msgid "" "``state_array``) is given in ``length``." msgstr "" -#: ../Doc/c-api/monitoring.rst:148 +#: ../Doc/c-api/monitoring.rst:153 msgid "" "The ``version`` argument is a pointer to a value which should be allocated " "by the user together with ``state_array`` and initialized to 0, and then set " -"only by :c:func:`!PyMonitoring_EnterScope` itelf. It allows this function to " -"determine whether event states have changed since the previous call, and to " -"return quickly if they have not." +"only by :c:func:`!PyMonitoring_EnterScope` itself. It allows this function " +"to determine whether event states have changed since the previous call, and " +"to return quickly if they have not." msgstr "" -#: ../Doc/c-api/monitoring.rst:154 +#: ../Doc/c-api/monitoring.rst:159 msgid "" "The scopes referred to here are lexical scopes: a function, class or " "method. :c:func:`!PyMonitoring_EnterScope` should be called whenever the " @@ -202,87 +206,101 @@ msgid "" "emulating a generator, the scope needs to be exited and re-entered." msgstr "" -#: ../Doc/c-api/monitoring.rst:161 +#: ../Doc/c-api/monitoring.rst:166 msgid "The macros for *event_types* are:" msgstr "" -#: ../Doc/c-api/monitoring.rst:169 +#: ../Doc/c-api/monitoring.rst:174 msgid "Macro" msgstr "" -#: ../Doc/c-api/monitoring.rst:169 +#: ../Doc/c-api/monitoring.rst:174 msgid "Event" msgstr "" -#: ../Doc/c-api/monitoring.rst:171 -msgid ":monitoring-event:`BRANCH`" +#: ../Doc/c-api/monitoring.rst:176 +msgid ":monitoring-event:`BRANCH_LEFT`" +msgstr "" + +#: ../Doc/c-api/monitoring.rst:177 +msgid ":monitoring-event:`BRANCH_RIGHT`" msgstr "" -#: ../Doc/c-api/monitoring.rst:172 +#: ../Doc/c-api/monitoring.rst:178 msgid ":monitoring-event:`CALL`" msgstr "" -#: ../Doc/c-api/monitoring.rst:173 +#: ../Doc/c-api/monitoring.rst:179 msgid ":monitoring-event:`C_RAISE`" msgstr "" -#: ../Doc/c-api/monitoring.rst:174 +#: ../Doc/c-api/monitoring.rst:180 msgid ":monitoring-event:`C_RETURN`" msgstr "" -#: ../Doc/c-api/monitoring.rst:175 +#: ../Doc/c-api/monitoring.rst:181 msgid ":monitoring-event:`EXCEPTION_HANDLED`" msgstr "" -#: ../Doc/c-api/monitoring.rst:176 +#: ../Doc/c-api/monitoring.rst:182 msgid ":monitoring-event:`INSTRUCTION`" msgstr "" -#: ../Doc/c-api/monitoring.rst:177 +#: ../Doc/c-api/monitoring.rst:183 msgid ":monitoring-event:`JUMP`" msgstr "" -#: ../Doc/c-api/monitoring.rst:178 +#: ../Doc/c-api/monitoring.rst:184 msgid ":monitoring-event:`LINE`" msgstr "" -#: ../Doc/c-api/monitoring.rst:179 +#: ../Doc/c-api/monitoring.rst:185 msgid ":monitoring-event:`PY_RESUME`" msgstr "" -#: ../Doc/c-api/monitoring.rst:180 +#: ../Doc/c-api/monitoring.rst:186 msgid ":monitoring-event:`PY_RETURN`" msgstr "" -#: ../Doc/c-api/monitoring.rst:181 +#: ../Doc/c-api/monitoring.rst:187 msgid ":monitoring-event:`PY_START`" msgstr "" -#: ../Doc/c-api/monitoring.rst:182 +#: ../Doc/c-api/monitoring.rst:188 msgid ":monitoring-event:`PY_THROW`" msgstr "" -#: ../Doc/c-api/monitoring.rst:183 +#: ../Doc/c-api/monitoring.rst:189 msgid ":monitoring-event:`PY_UNWIND`" msgstr "" -#: ../Doc/c-api/monitoring.rst:184 +#: ../Doc/c-api/monitoring.rst:190 msgid ":monitoring-event:`PY_YIELD`" msgstr "" -#: ../Doc/c-api/monitoring.rst:185 +#: ../Doc/c-api/monitoring.rst:191 msgid ":monitoring-event:`RAISE`" msgstr "" -#: ../Doc/c-api/monitoring.rst:186 +#: ../Doc/c-api/monitoring.rst:192 msgid ":monitoring-event:`RERAISE`" msgstr "" -#: ../Doc/c-api/monitoring.rst:187 +#: ../Doc/c-api/monitoring.rst:193 msgid ":monitoring-event:`STOP_ITERATION`" msgstr "" -#: ../Doc/c-api/monitoring.rst:192 +#: ../Doc/c-api/monitoring.rst:198 msgid "" "Exit the last scope that was entered with :c:func:`!PyMonitoring_EnterScope`." msgstr "" + +#: ../Doc/c-api/monitoring.rst:203 +msgid "" +"Return true if the event corresponding to the event ID *ev* is a :ref:`local " +"event `." +msgstr "" + +#: ../Doc/c-api/monitoring.rst:210 +msgid "This function is :term:`soft deprecated`." +msgstr "" diff --git a/c-api/object.po b/c-api/object.po index 8315a0bf9a..2e7292fa05 100644 --- a/c-api/object.po +++ b/c-api/object.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2026-02-13 21:04-0300\n" "Last-Translator: Carlos A. Crespo \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.0.1\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/object.rst:6 msgid "Object Protocol" @@ -32,7 +31,8 @@ msgstr "Obtiene una :term:`referencia fuerte` a una constante." #: ../Doc/c-api/object.rst:13 msgid "Set an exception and return ``NULL`` if *constant_id* is invalid." -msgstr "Establece una excepción y retorna ``NULL`` si *constant_id* es inválido." +msgstr "" +"Establece una excepción y retorna ``NULL`` si *constant_id* es inválido." #: ../Doc/c-api/object.rst:15 msgid "*constant_id* must be one of these constant identifiers:" @@ -127,8 +127,8 @@ msgid "" "Numeric values are only given for projects which cannot use the constant " "identifiers." msgstr "" -"Los valores numéricos solo se proporcionan para proyectos que no pueden usar los " -"identificadores constantes." +"Los valores numéricos solo se proporcionan para proyectos que no pueden usar " +"los identificadores constantes." #: ../Doc/c-api/object.rst:42 msgid "In CPython, all of these constants are :term:`immortal`." @@ -138,778 +138,817 @@ msgstr "En CPython, todas estas constantes son :term:`inmortales `." msgid "" "Similar to :c:func:`Py_GetConstant`, but return a :term:`borrowed reference`." msgstr "" -"Similar a :c:func:`Py_GetConstant`, pero retorna una :term:`referencia prestada`." +"Similar a :c:func:`Py_GetConstant`, pero retorna una :term:`referencia " +"prestada`." #: ../Doc/c-api/object.rst:50 msgid "" -"This function is primarily intended for backwards compatibility: using :c:func:" -"`Py_GetConstant` is recommended for new code." +"This function is primarily intended for backwards compatibility: using :c:" +"func:`Py_GetConstant` is recommended for new code." msgstr "" -"Esta función está destinada principalmente para compatibilidad hacia atrás: se " -"recomienda usar :c:func:`Py_GetConstant` para código nuevo." +"Esta función está destinada principalmente para compatibilidad hacia atrás: " +"se recomienda usar :c:func:`Py_GetConstant` para código nuevo." #: ../Doc/c-api/object.rst:53 msgid "" "The reference is borrowed from the interpreter, and is valid until the " "interpreter finalization." msgstr "" -"La referencia es prestada del intérprete, y es válida hasta la finalización del " -"intérprete." +"La referencia es prestada del intérprete, y es válida hasta la finalización " +"del intérprete." #: ../Doc/c-api/object.rst:61 msgid "" "The ``NotImplemented`` singleton, used to signal that an operation is not " "implemented for the given type combination." msgstr "" -"El singleton ``NotImplemented``, se usa para indicar que una operación no está " -"implementada para la combinación de tipos dada." +"El singleton ``NotImplemented``, se usa para indicar que una operación no " +"está implementada para la combinación de tipos dada." #: ../Doc/c-api/object.rst:67 msgid "" -"Properly handle returning :c:data:`Py_NotImplemented` from within a C function " -"(that is, create a new :term:`strong reference` to :const:`NotImplemented` and " -"return it)." +"Properly handle returning :c:data:`Py_NotImplemented` from within a C " +"function (that is, create a new :term:`strong reference` to :const:" +"`NotImplemented` and return it)." msgstr "" -"Maneja adecuadamente el retorno de :c:data:`Py_NotImplemented` desde una función " -"C (es decir, crea una nueva :term:`referencia fuerte` a :const:`NotImplemented` " -"y lo retorna)." +"Maneja adecuadamente el retorno de :c:data:`Py_NotImplemented` desde una " +"función C (es decir, crea una nueva :term:`referencia fuerte` a :const:" +"`NotImplemented` y lo retorna)." #: ../Doc/c-api/object.rst:74 msgid "" "Flag to be used with multiple functions that print the object (like :c:func:" -"`PyObject_Print` and :c:func:`PyFile_WriteObject`). If passed, these function " -"would use the :func:`str` of the object instead of the :func:`repr`." +"`PyObject_Print` and :c:func:`PyFile_WriteObject`). If passed, these " +"function would use the :func:`str` of the object instead of the :func:`repr`." msgstr "" -"Bandera (*flag*) para usar con múltiples funciones que imprimen el objeto (como :" -"c:func:`PyObject_Print` y :c:func:`PyFile_WriteObject`). Si se pasa, estas " -"funciones usarían el :func:`str` del objeto en lugar del :func:`repr`." +"Bandera (*flag*) para usar con múltiples funciones que imprimen el objeto " +"(como :c:func:`PyObject_Print` y :c:func:`PyFile_WriteObject`). Si se pasa, " +"estas funciones usarían el :func:`str` del objeto en lugar del :func:`repr`." #: ../Doc/c-api/object.rst:82 msgid "" -"Print an object *o*, on file *fp*. Returns ``-1`` on error. The flags argument " -"is used to enable certain printing options. The only option currently supported " -"is :c:macro:`Py_PRINT_RAW`; if given, the :func:`str` of the object is written " -"instead of the :func:`repr`." +"Print an object *o*, on file *fp*. Returns ``-1`` on error. The flags " +"argument is used to enable certain printing options. The only option " +"currently supported is :c:macro:`Py_PRINT_RAW`; if given, the :func:`str` of " +"the object is written instead of the :func:`repr`." msgstr "" -"Imprime un objeto *o*, en el archivo *fp*. Retorna ``-1`` en caso de error. El " -"argumento de las banderas se usa para habilitar ciertas opciones de impresión. " -"La única opción actualmente admitida es :c:macro:`Py_PRINT_RAW`; si se " -"proporciona, se escribe :func:`str` del objeto en lugar de :func:`repr`." +"Imprime un objeto *o*, en el archivo *fp*. Retorna ``-1`` en caso de error. " +"El argumento de las banderas se usa para habilitar ciertas opciones de " +"impresión. La única opción actualmente admitida es :c:macro:`Py_PRINT_RAW`; " +"si se proporciona, se escribe :func:`str` del objeto en lugar de :func:" +"`repr`." #: ../Doc/c-api/object.rst:90 msgid "" -"Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. This is " -"equivalent to the Python expression ``hasattr(o, attr_name)``. On failure, " -"return ``-1``." +"Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. " +"This is equivalent to the Python expression ``hasattr(o, attr_name)``. On " +"failure, return ``-1``." msgstr "" -"Retorna ``1`` si *o* tiene el atributo *attr_name*, y ``0`` en caso contrario. " -"Esto es equivalente a la expresión de Python ``hasattr(o, attr_name)``. En caso " -"de error, retorna ``-1``." +"Retorna ``1`` si *o* tiene el atributo *attr_name*, y ``0`` en caso " +"contrario. Esto es equivalente a la expresión de Python ``hasattr(o, " +"attr_name)``. En caso de error, retorna ``-1``." #: ../Doc/c-api/object.rst:99 msgid "" "This is the same as :c:func:`PyObject_HasAttrWithError`, but *attr_name* is " -"specified as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :" -"c:expr:`PyObject*`." +"specified as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than " +"a :c:expr:`PyObject*`." msgstr "" -"Esto es lo mismo que :c:func:`PyObject_HasAttrWithError`, pero *attr_name* se " -"especifica como una cadena de bytes codificada en UTF-8 :c:expr:`const char*`, " -"en lugar de un :c:expr:`PyObject*`." +"Esto es lo mismo que :c:func:`PyObject_HasAttrWithError`, pero *attr_name* " +"se especifica como una cadena de bytes codificada en UTF-8 :c:expr:`const " +"char*`, en lugar de un :c:expr:`PyObject*`." #: ../Doc/c-api/object.rst:108 msgid "" -"Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. This " -"function always succeeds." +"Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. " +"This function always succeeds." msgstr "" -"Retorna ``1`` si *o* tiene el atributo *attr_name*, y ``0`` en caso contrario. " -"Esta función siempre tiene éxito." +"Retorna ``1`` si *o* tiene el atributo *attr_name*, y ``0`` en caso " +"contrario. Esta función siempre tiene éxito." #: ../Doc/c-api/object.rst:113 +#, fuzzy msgid "" "Exceptions that occur when this calls :meth:`~object.__getattr__` and :meth:" -"`~object.__getattribute__` methods are silently ignored. For proper error " -"handling, use :c:func:`PyObject_HasAttrWithError`, :c:func:" -"`PyObject_GetOptionalAttr` or :c:func:`PyObject_GetAttr` instead." +"`~object.__getattribute__` methods aren't propagated, but instead given to :" +"func:`sys.unraisablehook`. For proper error handling, use :c:func:" +"`PyObject_HasAttrWithError`, :c:func:`PyObject_GetOptionalAttr` or :c:func:" +"`PyObject_GetAttr` instead." msgstr "" "Las excepciones que ocurren cuando esto llama a los métodos :meth:`~object." -"__getattr__` y :meth:`~object.__getattribute__` se ignoran silenciosamente. Para " -"un manejo adecuado de errores, use :c:func:`PyObject_HasAttrWithError`, :c:func:" -"`PyObject_GetOptionalAttr` o :c:func:`PyObject_GetAttr` en su lugar." +"__getattr__` y :meth:`~object.__getattribute__` se ignoran silenciosamente. " +"Para un manejo adecuado de errores, use :c:func:" +"`PyObject_HasAttrWithError`, :c:func:`PyObject_GetOptionalAttr` o :c:func:" +"`PyObject_GetAttr` en su lugar." -#: ../Doc/c-api/object.rst:121 +#: ../Doc/c-api/object.rst:122 msgid "" -"This is the same as :c:func:`PyObject_HasAttr`, but *attr_name* is specified as " -"a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" +"This is the same as :c:func:`PyObject_HasAttr`, but *attr_name* is specified " +"as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" "`PyObject*`." msgstr "" -"Esto es lo mismo que :c:func:`PyObject_HasAttr`, pero *attr_name* se especifica " -"como una cadena de bytes codificada en UTF-8 :c:expr:`const char*`, en lugar de " -"un :c:expr:`PyObject*`." +"Esto es lo mismo que :c:func:`PyObject_HasAttr`, pero *attr_name* se " +"especifica como una cadena de bytes codificada en UTF-8 :c:expr:`const " +"char*`, en lugar de un :c:expr:`PyObject*`." -#: ../Doc/c-api/object.rst:127 +#: ../Doc/c-api/object.rst:128 msgid "" "Exceptions that occur when this calls :meth:`~object.__getattr__` and :meth:" -"`~object.__getattribute__` methods or while creating the temporary :class:`str` " -"object are silently ignored. For proper error handling, use :c:func:" -"`PyObject_HasAttrStringWithError`, :c:func:`PyObject_GetOptionalAttrString` or :" -"c:func:`PyObject_GetAttrString` instead." +"`~object.__getattribute__` methods or while creating the temporary :class:" +"`str` object are silently ignored. For proper error handling, use :c:func:" +"`PyObject_HasAttrStringWithError`, :c:func:`PyObject_GetOptionalAttrString` " +"or :c:func:`PyObject_GetAttrString` instead." msgstr "" "Las excepciones que ocurren cuando esto llama a los métodos :meth:`~object." -"__getattr__` y :meth:`~object.__getattribute__` o mientras se crea el objeto :" -"class:`str` temporal se ignoran silenciosamente. Para un manejo adecuado de " -"errores, usa :c:func:`PyObject_HasAttrStringWithError`, :c:func:" -"`PyObject_GetOptionalAttrString` o :c:func:`PyObject_GetAttrString` en su lugar." +"__getattr__` y :meth:`~object.__getattribute__` o mientras se crea el " +"objeto :class:`str` temporal se ignoran silenciosamente. Para un manejo " +"adecuado de errores, usa :c:func:`PyObject_HasAttrStringWithError`, :c:func:" +"`PyObject_GetOptionalAttrString` o :c:func:`PyObject_GetAttrString` en su " +"lugar." -#: ../Doc/c-api/object.rst:137 +#: ../Doc/c-api/object.rst:138 msgid "" -"Retrieve an attribute named *attr_name* from object *o*. Returns the attribute " -"value on success, or ``NULL`` on failure. This is the equivalent of the Python " -"expression ``o.attr_name``." +"Retrieve an attribute named *attr_name* from object *o*. Returns the " +"attribute value on success, or ``NULL`` on failure. This is the equivalent " +"of the Python expression ``o.attr_name``." msgstr "" -"Recupera un atributo llamado *attr_name* del objeto *o*. Retorna el valor del " -"atributo en caso de éxito o ``NULL`` en caso de error. Este es el equivalente de " -"la expresión de Python ``o.attr_name``." +"Recupera un atributo llamado *attr_name* del objeto *o*. Retorna el valor " +"del atributo en caso de éxito o ``NULL`` en caso de error. Este es el " +"equivalente de la expresión de Python ``o.attr_name``." -#: ../Doc/c-api/object.rst:141 +#: ../Doc/c-api/object.rst:142 msgid "" -"If the missing attribute should not be treated as a failure, you can use :c:func:" -"`PyObject_GetOptionalAttr` instead." +"If the missing attribute should not be treated as a failure, you can use :c:" +"func:`PyObject_GetOptionalAttr` instead." msgstr "" "Si el atributo faltante no debe tratarse como un error, puedes usar :c:func:" "`PyObject_GetOptionalAttr` en su lugar." -#: ../Doc/c-api/object.rst:147 +#: ../Doc/c-api/object.rst:148 msgid "" -"This is the same as :c:func:`PyObject_GetAttr`, but *attr_name* is specified as " -"a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" +"This is the same as :c:func:`PyObject_GetAttr`, but *attr_name* is specified " +"as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" "`PyObject*`." msgstr "" -"Esto es lo mismo que :c:func:`PyObject_GetAttr`, pero *attr_name* se especifica " -"como una cadena de bytes codificada en UTF-8 :c:expr:`const char*`, en lugar de " -"un :c:expr:`PyObject*`." +"Esto es lo mismo que :c:func:`PyObject_GetAttr`, pero *attr_name* se " +"especifica como una cadena de bytes codificada en UTF-8 :c:expr:`const " +"char*`, en lugar de un :c:expr:`PyObject*`." -#: ../Doc/c-api/object.rst:151 +#: ../Doc/c-api/object.rst:152 msgid "" -"If the missing attribute should not be treated as a failure, you can use :c:func:" -"`PyObject_GetOptionalAttrString` instead." +"If the missing attribute should not be treated as a failure, you can use :c:" +"func:`PyObject_GetOptionalAttrString` instead." msgstr "" "Si el atributo faltante no debe tratarse como un error, puedes usar :c:func:" "`PyObject_GetOptionalAttrString` en su lugar." -#: ../Doc/c-api/object.rst:157 +#: ../Doc/c-api/object.rst:158 msgid "" -"Variant of :c:func:`PyObject_GetAttr` which doesn't raise :exc:`AttributeError` " -"if the attribute is not found." +"Variant of :c:func:`PyObject_GetAttr` which doesn't raise :exc:" +"`AttributeError` if the attribute is not found." msgstr "" -"Variante de :c:func:`PyObject_GetAttr` que no lanza :exc:`AttributeError` si el " -"atributo no se encuentra." +"Variante de :c:func:`PyObject_GetAttr` que no lanza :exc:`AttributeError` si " +"el atributo no se encuentra." -#: ../Doc/c-api/object.rst:160 +#: ../Doc/c-api/object.rst:161 msgid "" "If the attribute is found, return ``1`` and set *\\*result* to a new :term:" -"`strong reference` to the attribute. If the attribute is not found, return ``0`` " -"and set *\\*result* to ``NULL``; the :exc:`AttributeError` is silenced. If an " -"error other than :exc:`AttributeError` is raised, return ``-1`` and set " -"*\\*result* to ``NULL``." +"`strong reference` to the attribute. If the attribute is not found, return " +"``0`` and set *\\*result* to ``NULL``; the :exc:`AttributeError` is " +"silenced. If an error other than :exc:`AttributeError` is raised, return " +"``-1`` and set *\\*result* to ``NULL``." msgstr "" -"Si se encuentra el atributo, retorna ``1`` y establece *\\*result* a una nueva :" -"term:`referencia fuerte` al atributo. Si no se encuentra el atributo, retorna " -"``0`` y establece *\\*result* a ``NULL``; el :exc:`AttributeError` se silencia. " -"Si se lanza un error distinto de :exc:`AttributeError`, retorna ``-1`` y " -"establece *\\*result* a ``NULL``." +"Si se encuentra el atributo, retorna ``1`` y establece *\\*result* a una " +"nueva :term:`referencia fuerte` al atributo. Si no se encuentra el atributo, " +"retorna ``0`` y establece *\\*result* a ``NULL``; el :exc:`AttributeError` " +"se silencia. Si se lanza un error distinto de :exc:`AttributeError`, retorna " +"``-1`` y establece *\\*result* a ``NULL``." -#: ../Doc/c-api/object.rst:172 +#: ../Doc/c-api/object.rst:173 msgid "" "This is the same as :c:func:`PyObject_GetOptionalAttr`, but *attr_name* is " -"specified as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :" -"c:expr:`PyObject*`." +"specified as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than " +"a :c:expr:`PyObject*`." msgstr "" "Esto es lo mismo que :c:func:`PyObject_GetOptionalAttr`, pero *attr_name* se " -"especifica como una cadena de bytes codificada en UTF-8 :c:expr:`const char*`, " -"en lugar de un :c:expr:`PyObject*`." +"especifica como una cadena de bytes codificada en UTF-8 :c:expr:`const " +"char*`, en lugar de un :c:expr:`PyObject*`." -#: ../Doc/c-api/object.rst:180 +#: ../Doc/c-api/object.rst:181 msgid "" -"Generic attribute getter function that is meant to be put into a type object's " -"``tp_getattro`` slot. It looks for a descriptor in the dictionary of classes in " -"the object's MRO as well as an attribute in the object's :attr:`~object." -"__dict__` (if present). As outlined in :ref:`descriptors`, data descriptors " -"take preference over instance attributes, while non-data descriptors don't. " -"Otherwise, an :exc:`AttributeError` is raised." +"Generic attribute getter function that is meant to be put into a type " +"object's ``tp_getattro`` slot. It looks for a descriptor in the dictionary " +"of classes in the object's MRO as well as an attribute in the object's :attr:" +"`~object.__dict__` (if present). As outlined in :ref:`descriptors`, data " +"descriptors take preference over instance attributes, while non-data " +"descriptors don't. Otherwise, an :exc:`AttributeError` is raised." msgstr "" "Función *getter* de atributo genérico que debe colocarse en la ranura " "``tp_getattro`` de un objeto tipo. Busca un descriptor en el diccionario de " -"clases en el MRO del objeto, así como un atributo en el objeto :attr:`~object." -"__dict__` (si está presente). Como se describe en :ref:`descriptors`, los " -"descriptores de datos tienen preferencia sobre los atributos de instancia, " -"mientras que los descriptores que no son de datos no lo hacen. De lo contrario, " -"se lanza un :exc:`AttributeError`." +"clases en el MRO del objeto, así como un atributo en el objeto :attr:" +"`~object.__dict__` (si está presente). Como se describe en :ref:" +"`descriptors`, los descriptores de datos tienen preferencia sobre los " +"atributos de instancia, mientras que los descriptores que no son de datos no " +"lo hacen. De lo contrario, se lanza un :exc:`AttributeError`." -#: ../Doc/c-api/object.rst:190 +#: ../Doc/c-api/object.rst:191 msgid "" -"Set the value of the attribute named *attr_name*, for object *o*, to the value " -"*v*. Raise an exception and return ``-1`` on failure; return ``0`` on success. " -"This is the equivalent of the Python statement ``o.attr_name = v``." +"Set the value of the attribute named *attr_name*, for object *o*, to the " +"value *v*. Raise an exception and return ``-1`` on failure; return ``0`` on " +"success. This is the equivalent of the Python statement ``o.attr_name = v``." msgstr "" -"Establece el valor del atributo llamado *attr_name*, para el objeto *o*, en el " -"valor *v*. Lanza una excepción y retorna ``-1`` en caso de falla; retorna ``0`` " -"en caso de éxito. Este es el equivalente de la declaración de Python ``o." -"attr_name = v``." +"Establece el valor del atributo llamado *attr_name*, para el objeto *o*, en " +"el valor *v*. Lanza una excepción y retorna ``-1`` en caso de falla; retorna " +"``0`` en caso de éxito. Este es el equivalente de la declaración de Python " +"``o.attr_name = v``." -#: ../Doc/c-api/object.rst:195 +#: ../Doc/c-api/object.rst:196 msgid "" -"If *v* is ``NULL``, the attribute is deleted. This behaviour is deprecated in " -"favour of using :c:func:`PyObject_DelAttr`, but there are currently no plans to " -"remove it." +"If *v* is ``NULL``, the attribute is deleted. This behaviour is deprecated " +"in favour of using :c:func:`PyObject_DelAttr`, but there are currently no " +"plans to remove it." msgstr "" -"Si *v* es ``NULL``, el atributo se elimina. Este comportamiento está deprecado " -"en favor de usar :c:func:`PyObject_DelAttr`, pero por el momento no hay planes " -"de quitarlo." +"Si *v* es ``NULL``, el atributo se elimina. Este comportamiento está " +"deprecado en favor de usar :c:func:`PyObject_DelAttr`, pero por el momento " +"no hay planes de quitarlo." -#: ../Doc/c-api/object.rst:202 +#: ../Doc/c-api/object.rst:203 msgid "" -"This is the same as :c:func:`PyObject_SetAttr`, but *attr_name* is specified as " -"a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" +"This is the same as :c:func:`PyObject_SetAttr`, but *attr_name* is specified " +"as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" "`PyObject*`." msgstr "" -"Esto es lo mismo que :c:func:`PyObject_SetAttr`, pero *attr_name* se especifica " -"como una cadena de bytes codificada en UTF-8 :c:expr:`const char*`, en lugar de " -"un :c:expr:`PyObject*`." +"Esto es lo mismo que :c:func:`PyObject_SetAttr`, pero *attr_name* se " +"especifica como una cadena de bytes codificada en UTF-8 :c:expr:`const " +"char*`, en lugar de un :c:expr:`PyObject*`." -#: ../Doc/c-api/object.rst:206 +#: ../Doc/c-api/object.rst:207 msgid "" -"If *v* is ``NULL``, the attribute is deleted, but this feature is deprecated in " -"favour of using :c:func:`PyObject_DelAttrString`." +"If *v* is ``NULL``, the attribute is deleted, but this feature is deprecated " +"in favour of using :c:func:`PyObject_DelAttrString`." msgstr "" "Si *v* es ``NULL``, el atributo se elimina, sin embargo, esta característica " "está deprecada en favor de usar :c:func:`PyObject_DelAttrString`." -#: ../Doc/c-api/object.rst:209 +#: ../Doc/c-api/object.rst:210 msgid "" -"The number of different attribute names passed to this function should be kept " -"small, usually by using a statically allocated string as *attr_name*. For " -"attribute names that aren't known at compile time, prefer calling :c:func:" -"`PyUnicode_FromString` and :c:func:`PyObject_SetAttr` directly. For more " -"details, see :c:func:`PyUnicode_InternFromString`, which may be used internally " -"to create a key object." +"The number of different attribute names passed to this function should be " +"kept small, usually by using a statically allocated string as *attr_name*. " +"For attribute names that aren't known at compile time, prefer calling :c:" +"func:`PyUnicode_FromString` and :c:func:`PyObject_SetAttr` directly. For " +"more details, see :c:func:`PyUnicode_InternFromString`, which may be used " +"internally to create a key object." msgstr "" "El número de diferentes nombres de atributos pasados a esta función debe " -"mantenerse pequeño, generalmente usando una cadena asignada estáticamente como " -"*attr_name*. Para nombres de atributos que no se conocen en tiempo de " -"compilación, prefiere llamar directamente a :c:func:`PyUnicode_FromString` y :c:" -"func:`PyObject_SetAttr`. Para más detalles, consulta :c:func:" -"`PyUnicode_InternFromString`, que puede usarse internamente para crear un objeto " -"clave." +"mantenerse pequeño, generalmente usando una cadena asignada estáticamente " +"como *attr_name*. Para nombres de atributos que no se conocen en tiempo de " +"compilación, prefiere llamar directamente a :c:func:`PyUnicode_FromString` " +"y :c:func:`PyObject_SetAttr`. Para más detalles, consulta :c:func:" +"`PyUnicode_InternFromString`, que puede usarse internamente para crear un " +"objeto clave." -#: ../Doc/c-api/object.rst:219 +#: ../Doc/c-api/object.rst:220 msgid "" "Generic attribute setter and deleter function that is meant to be put into a " -"type object's :c:member:`~PyTypeObject.tp_setattro` slot. It looks for a data " -"descriptor in the dictionary of classes in the object's MRO, and if found it " -"takes preference over setting or deleting the attribute in the instance " -"dictionary. Otherwise, the attribute is set or deleted in the object's :attr:" -"`~object.__dict__` (if present). On success, ``0`` is returned, otherwise an :" -"exc:`AttributeError` is raised and ``-1`` is returned." -msgstr "" -"Establecimiento de atributo genérico y función de eliminación que está destinada " -"a colocarse en la ranura de un objeto tipo :c:member:`~PyTypeObject." -"tp_setattro`. Busca un descriptor de datos en el diccionario de clases en el MRO " -"del objeto y, si se encuentra, tiene preferencia sobre la configuración o " -"eliminación del atributo en el diccionario de instancias. De lo contrario, el " -"atributo se establece o elimina en el objeto :attr:`~object.__dict__` (si está " -"presente). En caso de éxito, se retorna ``0``; de lo contrario, se lanza un :exc:" -"`AttributeError` y se retorna ``-1``." - -#: ../Doc/c-api/object.rst:231 -msgid "" -"Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure. " -"This is the equivalent of the Python statement ``del o.attr_name``." -msgstr "" -"Elimina el atributo llamado *attr_name*, para el objeto *o*. Retorna ``-1`` en " -"caso de falla. Este es el equivalente de la declaración de Python ``del o." +"type object's :c:member:`~PyTypeObject.tp_setattro` slot. It looks for a " +"data descriptor in the dictionary of classes in the object's MRO, and if " +"found it takes preference over setting or deleting the attribute in the " +"instance dictionary. Otherwise, the attribute is set or deleted in the " +"object's :attr:`~object.__dict__` (if present). On success, ``0`` is " +"returned, otherwise an :exc:`AttributeError` is raised and ``-1`` is " +"returned." +msgstr "" +"Establecimiento de atributo genérico y función de eliminación que está " +"destinada a colocarse en la ranura de un objeto tipo :c:member:" +"`~PyTypeObject.tp_setattro`. Busca un descriptor de datos en el diccionario " +"de clases en el MRO del objeto y, si se encuentra, tiene preferencia sobre " +"la configuración o eliminación del atributo en el diccionario de instancias. " +"De lo contrario, el atributo se establece o elimina en el objeto :attr:" +"`~object.__dict__` (si está presente). En caso de éxito, se retorna ``0``; " +"de lo contrario, se lanza un :exc:`AttributeError` y se retorna ``-1``." + +#: ../Doc/c-api/object.rst:232 +msgid "" +"Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on " +"failure. This is the equivalent of the Python statement ``del o.attr_name``." +msgstr "" +"Elimina el atributo llamado *attr_name*, para el objeto *o*. Retorna ``-1`` " +"en caso de falla. Este es el equivalente de la declaración de Python ``del o." "attr_name``." -#: ../Doc/c-api/object.rst:237 +#: ../Doc/c-api/object.rst:238 msgid "" -"This is the same as :c:func:`PyObject_DelAttr`, but *attr_name* is specified as " -"a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" +"This is the same as :c:func:`PyObject_DelAttr`, but *attr_name* is specified " +"as a :c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" "`PyObject*`." msgstr "" -"Esto es lo mismo que :c:func:`PyObject_DelAttr`, pero *attr_name* se especifica " -"como una cadena de bytes codificada en UTF-8 :c:expr:`const char*`, en lugar de " -"un :c:expr:`PyObject*`." +"Esto es lo mismo que :c:func:`PyObject_DelAttr`, pero *attr_name* se " +"especifica como una cadena de bytes codificada en UTF-8 :c:expr:`const " +"char*`, en lugar de un :c:expr:`PyObject*`." -#: ../Doc/c-api/object.rst:241 +#: ../Doc/c-api/object.rst:242 msgid "" -"The number of different attribute names passed to this function should be kept " -"small, usually by using a statically allocated string as *attr_name*. For " -"attribute names that aren't known at compile time, prefer calling :c:func:" -"`PyUnicode_FromString` and :c:func:`PyObject_DelAttr` directly. For more " -"details, see :c:func:`PyUnicode_InternFromString`, which may be used internally " -"to create a key object for lookup." +"The number of different attribute names passed to this function should be " +"kept small, usually by using a statically allocated string as *attr_name*. " +"For attribute names that aren't known at compile time, prefer calling :c:" +"func:`PyUnicode_FromString` and :c:func:`PyObject_DelAttr` directly. For " +"more details, see :c:func:`PyUnicode_InternFromString`, which may be used " +"internally to create a key object for lookup." msgstr "" "El número de diferentes nombres de atributos pasados a esta función debe " -"mantenerse pequeño, generalmente usando una cadena asignada estáticamente como " -"*attr_name*. Para nombres de atributos que no se conocen en tiempo de " -"compilación, prefiere llamar directamente a :c:func:`PyUnicode_FromString` y :c:" -"func:`PyObject_DelAttr`. Para más detalles, consulta :c:func:" -"`PyUnicode_InternFromString`, que puede usarse internamente para crear un objeto " -"clave para la búsqueda." +"mantenerse pequeño, generalmente usando una cadena asignada estáticamente " +"como *attr_name*. Para nombres de atributos que no se conocen en tiempo de " +"compilación, prefiere llamar directamente a :c:func:`PyUnicode_FromString` " +"y :c:func:`PyObject_DelAttr`. Para más detalles, consulta :c:func:" +"`PyUnicode_InternFromString`, que puede usarse internamente para crear un " +"objeto clave para la búsqueda." -#: ../Doc/c-api/object.rst:252 +#: ../Doc/c-api/object.rst:253 msgid "" -"A generic implementation for the getter of a ``__dict__`` descriptor. It creates " -"the dictionary if necessary." +"A generic implementation for the getter of a ``__dict__`` descriptor. It " +"creates the dictionary if necessary." msgstr "" "Una implementación genérica para obtener un descriptor ``__dict__``. Crea el " "diccionario si es necesario." -#: ../Doc/c-api/object.rst:255 +#: ../Doc/c-api/object.rst:256 msgid "" -"This function may also be called to get the :py:attr:`~object.__dict__` of the " -"object *o*. Pass ``NULL`` for *context* when calling it. Since this function may " -"need to allocate memory for the dictionary, it may be more efficient to call :c:" -"func:`PyObject_GetAttr` when accessing an attribute on the object." +"This function may also be called to get the :py:attr:`~object.__dict__` of " +"the object *o*. Pass ``NULL`` for *context* when calling it. Since this " +"function may need to allocate memory for the dictionary, it may be more " +"efficient to call :c:func:`PyObject_GetAttr` when accessing an attribute on " +"the object." msgstr "" "Esta función también puede ser llamada para obtener el :py:attr:`~object." -"__dict__` del objeto *o*. Se pasa *context* igual a ``NULL`` cuando se lo llama. " -"Dado que esta función puede necesitar asignar memoria para el diccionario, puede " -"ser más eficiente llamar a :c:func:`PyObject_GetAttr` para acceder a un atributo " -"del objeto." +"__dict__` del objeto *o*. Se pasa *context* igual a ``NULL`` cuando se lo " +"llama. Dado que esta función puede necesitar asignar memoria para el " +"diccionario, puede ser más eficiente llamar a :c:func:`PyObject_GetAttr` " +"para acceder a un atributo del objeto." -#: ../Doc/c-api/object.rst:261 +#: ../Doc/c-api/object.rst:262 msgid "On failure, returns ``NULL`` with an exception set." msgstr "En caso de fallo, retorna ``NULL`` con una excepción establecida." -#: ../Doc/c-api/object.rst:268 +#: ../Doc/c-api/object.rst:269 msgid "" "A generic implementation for the setter of a ``__dict__`` descriptor. This " "implementation does not allow the dictionary to be deleted." msgstr "" -"Una implementación genérica para el creador de un descriptor ``__dict__``. Esta " -"implementación no permite que se elimine el diccionario." +"Una implementación genérica para el creador de un descriptor ``__dict__``. " +"Esta implementación no permite que se elimine el diccionario." -#: ../Doc/c-api/object.rst:276 +#: ../Doc/c-api/object.rst:277 msgid "" -"Return a pointer to :py:attr:`~object.__dict__` of the object *obj*. If there is " -"no ``__dict__``, return ``NULL`` without setting an exception." +"Return a pointer to :py:attr:`~object.__dict__` of the object *obj*. If " +"there is no ``__dict__``, return ``NULL`` without setting an exception." msgstr "" -"Retorna un puntero al :py:attr:`~object.__dict__` del objeto *obj*. Si no hay " -"``__dict__``, retorna ``NULL`` sin establecer una excepción." +"Retorna un puntero al :py:attr:`~object.__dict__` del objeto *obj*. Si no " +"hay ``__dict__``, retorna ``NULL`` sin establecer una excepción." -#: ../Doc/c-api/object.rst:279 +#: ../Doc/c-api/object.rst:280 msgid "" -"This function may need to allocate memory for the dictionary, so it may be more " -"efficient to call :c:func:`PyObject_GetAttr` when accessing an attribute on the " -"object." +"This function may need to allocate memory for the dictionary, so it may be " +"more efficient to call :c:func:`PyObject_GetAttr` when accessing an " +"attribute on the object." msgstr "" "Esta función puede necesitar asignar memoria para el diccionario, por lo que " -"puede ser más eficiente llamar a :c:func:`PyObject_GetAttr` para acceder a un " -"atributo del objeto." +"puede ser más eficiente llamar a :c:func:`PyObject_GetAttr` para acceder a " +"un atributo del objeto." -#: ../Doc/c-api/object.rst:286 +#: ../Doc/c-api/object.rst:287 msgid "" "Compare the values of *o1* and *o2* using the operation specified by *opid*, " -"which must be one of :c:macro:`Py_LT`, :c:macro:`Py_LE`, :c:macro:`Py_EQ`, :c:" -"macro:`Py_NE`, :c:macro:`Py_GT`, or :c:macro:`Py_GE`, corresponding to ``<``, " -"``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. This is the equivalent of " -"the Python expression ``o1 op o2``, where ``op`` is the operator corresponding " -"to *opid*. Returns the value of the comparison on success, or ``NULL`` on " -"failure." +"which must be one of :c:macro:`Py_LT`, :c:macro:`Py_LE`, :c:macro:`Py_EQ`, :" +"c:macro:`Py_NE`, :c:macro:`Py_GT`, or :c:macro:`Py_GE`, corresponding to " +"``<``, ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. This is the " +"equivalent of the Python expression ``o1 op o2``, where ``op`` is the " +"operator corresponding to *opid*. Returns the value of the comparison on " +"success, or ``NULL`` on failure." msgstr "" "Compara los valores de *o1* y *o2* utilizando la operación especificada por " "*opid*, que debe ser uno de :c:macro:`Py_LT`, :c:macro:`Py_LE`, :c:macro:" -"`Py_EQ`, :c:macro:`Py_NE`, :c:macro:`Py_GT`, o :c:macro:`Py_GE`, correspondiente " -"a ``<``, ``<=``, ``==``, ``!=``, ``>`` o ``>=`` respectivamente. Este es el " -"equivalente de la expresión de Python ``o1 op o2``, donde ``op`` es el operador " -"correspondiente a *opid*. Retorna el valor de la comparación en caso de éxito o " -"``NULL`` en caso de error." +"`Py_EQ`, :c:macro:`Py_NE`, :c:macro:`Py_GT`, o :c:macro:`Py_GE`, " +"correspondiente a ``<``, ``<=``, ``==``, ``!=``, ``>`` o ``>=`` " +"respectivamente. Este es el equivalente de la expresión de Python ``o1 op " +"o2``, donde ``op`` es el operador correspondiente a *opid*. Retorna el valor " +"de la comparación en caso de éxito o ``NULL`` en caso de error." -#: ../Doc/c-api/object.rst:296 +#: ../Doc/c-api/object.rst:297 msgid "" "Compare the values of *o1* and *o2* using the operation specified by *opid*, " -"like :c:func:`PyObject_RichCompare`, but returns ``-1`` on error, ``0`` if the " -"result is false, ``1`` otherwise." +"like :c:func:`PyObject_RichCompare`, but returns ``-1`` on error, ``0`` if " +"the result is false, ``1`` otherwise." msgstr "" -"Compara los valores de *o1* y *o2* usando la operación especificada por *opid*, " -"como :c:func:`PyObject_RichCompare`, pero retorna ``-1`` en caso de error, ``0`` " -"si el resultado es falso, ``1`` en caso contrario." +"Compara los valores de *o1* y *o2* usando la operación especificada por " +"*opid*, como :c:func:`PyObject_RichCompare`, pero retorna ``-1`` en caso de " +"error, ``0`` si el resultado es falso, ``1`` en caso contrario." -#: ../Doc/c-api/object.rst:301 +#: ../Doc/c-api/object.rst:302 msgid "" -"If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool` will " -"always return ``1`` for :c:macro:`Py_EQ` and ``0`` for :c:macro:`Py_NE`." +"If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool` " +"will always return ``1`` for :c:macro:`Py_EQ` and ``0`` for :c:macro:`Py_NE`." msgstr "" -"Si *o1* y *o2* son el mismo objeto, :c:func:`PyObject_RichCompareBool` siempre " -"retornará ``1`` para :c:macro:`Py_EQ` y ``0`` para :c:macro:`Py_NE`." +"Si *o1* y *o2* son el mismo objeto, :c:func:`PyObject_RichCompareBool` " +"siempre retornará ``1`` para :c:macro:`Py_EQ` y ``0`` para :c:macro:`Py_NE`." -#: ../Doc/c-api/object.rst:306 +#: ../Doc/c-api/object.rst:307 msgid "" -"Format *obj* using *format_spec*. This is equivalent to the Python expression " -"``format(obj, format_spec)``." +"Format *obj* using *format_spec*. This is equivalent to the Python " +"expression ``format(obj, format_spec)``." msgstr "" "Formatea *obj* usando *format_spec*. Esto es equivalente a la expresión de " "Python ``format(obj, format_spec)``." -#: ../Doc/c-api/object.rst:309 +#: ../Doc/c-api/object.rst:310 msgid "" "*format_spec* may be ``NULL``. In this case the call is equivalent to " -"``format(obj)``. Returns the formatted string on success, ``NULL`` on failure." +"``format(obj)``. Returns the formatted string on success, ``NULL`` on " +"failure." msgstr "" "*format_spec* puede ser ``NULL``. En este caso, la llamada es equivalente a " -"``format(obj)``. Retorna la cadena formateada en caso de éxito, ``NULL`` en caso " -"de fallo." +"``format(obj)``. Retorna la cadena formateada en caso de éxito, ``NULL`` en " +"caso de fallo." -#: ../Doc/c-api/object.rst:317 +#: ../Doc/c-api/object.rst:318 msgid "" "Compute a string representation of object *o*. Returns the string " -"representation on success, ``NULL`` on failure. This is the equivalent of the " -"Python expression ``repr(o)``. Called by the :func:`repr` built-in function." +"representation on success, ``NULL`` on failure. This is the equivalent of " +"the Python expression ``repr(o)``. Called by the :func:`repr` built-in " +"function." msgstr "" -"Calcula una representación de cadena de caracteres del objeto *o*. Retorna la " -"representación de cadena de caracteres en caso de éxito, ``NULL`` en caso de " -"error. Este es el equivalente de la expresión de Python ``repr(o)``. Llamado por " -"la función incorporada :func:`repr`." +"Calcula una representación de cadena de caracteres del objeto *o*. Retorna " +"la representación de cadena de caracteres en caso de éxito, ``NULL`` en caso " +"de error. Este es el equivalente de la expresión de Python ``repr(o)``. " +"Llamado por la función incorporada :func:`repr`." -#: ../Doc/c-api/object.rst:321 ../Doc/c-api/object.rst:345 +#: ../Doc/c-api/object.rst:322 ../Doc/c-api/object.rst:346 msgid "" "This function now includes a debug assertion to help ensure that it does not " "silently discard an active exception." msgstr "" -"Esta función ahora incluye una afirmación de depuración para ayudar a garantizar " -"que no descarte silenciosamente una excepción activa." +"Esta función ahora incluye una afirmación de depuración para ayudar a " +"garantizar que no descarte silenciosamente una excepción activa." -#: ../Doc/c-api/object.rst:329 +#: ../Doc/c-api/object.rst:330 msgid "" -"As :c:func:`PyObject_Repr`, compute a string representation of object *o*, but " -"escape the non-ASCII characters in the string returned by :c:func:" +"As :c:func:`PyObject_Repr`, compute a string representation of object *o*, " +"but escape the non-ASCII characters in the string returned by :c:func:" "`PyObject_Repr` with ``\\x``, ``\\u`` or ``\\U`` escapes. This generates a " -"string similar to that returned by :c:func:`PyObject_Repr` in Python 2. Called " -"by the :func:`ascii` built-in function." +"string similar to that returned by :c:func:`PyObject_Repr` in Python 2. " +"Called by the :func:`ascii` built-in function." msgstr "" -"Como :c:func:`PyObject_Repr`, calcula una representación de cadena de caracteres " -"del objeto *o*, pero escapa los caracteres no ASCII en la cadena de caracteres " -"retornada por :c:func:`PyObject_Repr` con ``\\x``, ``\\u`` o ``\\U`` escapa. " -"Esto genera una cadena de caracteres similar a la que retorna :c:func:" -"`PyObject_Repr` en Python 2. Llamado por la función incorporada :func:`ascii`." +"Como :c:func:`PyObject_Repr`, calcula una representación de cadena de " +"caracteres del objeto *o*, pero escapa los caracteres no ASCII en la cadena " +"de caracteres retornada por :c:func:`PyObject_Repr` con ``\\x``, ``\\u`` o " +"``\\U`` escapa. Esto genera una cadena de caracteres similar a la que " +"retorna :c:func:`PyObject_Repr` en Python 2. Llamado por la función " +"incorporada :func:`ascii`." -#: ../Doc/c-api/object.rst:340 +#: ../Doc/c-api/object.rst:341 msgid "" "Compute a string representation of object *o*. Returns the string " -"representation on success, ``NULL`` on failure. This is the equivalent of the " -"Python expression ``str(o)``. Called by the :func:`str` built-in function and, " -"therefore, by the :func:`print` function." -msgstr "" -"Calcula una representación de cadena de caracteres del objeto *o*. Retorna la " -"representación de cadena de caracteres en caso de éxito, ``NULL`` en caso de " -"error. Llamado por la función incorporada :func:`str` y, por lo tanto, por la " -"función :func:`print`." - -#: ../Doc/c-api/object.rst:354 -msgid "" -"Compute a bytes representation of object *o*. ``NULL`` is returned on failure " -"and a bytes object on success. This is equivalent to the Python expression " -"``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``, a TypeError is " -"raised when *o* is an integer instead of a zero-initialized bytes object." -msgstr "" -"Calcula una representación de bytes del objeto *o*. ``NULL`` se retorna en caso " -"de error y un objeto de bytes en caso de éxito. Esto es equivalente a la " -"expresión de Python ``bytes(o)``, cuando *o* no es un número entero. A " +"representation on success, ``NULL`` on failure. This is the equivalent of " +"the Python expression ``str(o)``. Called by the :func:`str` built-in " +"function and, therefore, by the :func:`print` function." +msgstr "" +"Calcula una representación de cadena de caracteres del objeto *o*. Retorna " +"la representación de cadena de caracteres en caso de éxito, ``NULL`` en caso " +"de error. Llamado por la función incorporada :func:`str` y, por lo tanto, " +"por la función :func:`print`." + +#: ../Doc/c-api/object.rst:355 +msgid "" +"Compute a bytes representation of object *o*. ``NULL`` is returned on " +"failure and a bytes object on success. This is equivalent to the Python " +"expression ``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``, a " +"TypeError is raised when *o* is an integer instead of a zero-initialized " +"bytes object." +msgstr "" +"Calcula una representación de bytes del objeto *o*. ``NULL`` se retorna en " +"caso de error y un objeto de bytes en caso de éxito. Esto es equivalente a " +"la expresión de Python ``bytes(o)``, cuando *o* no es un número entero. A " "diferencia de ``bytes(o)``, se lanza un TypeError cuando *o* es un entero en " "lugar de un objeto de bytes con inicialización cero." -#: ../Doc/c-api/object.rst:363 +#: ../Doc/c-api/object.rst:364 msgid "" -"Return ``1`` if the class *derived* is identical to or derived from the class " -"*cls*, otherwise return ``0``. In case of an error, return ``-1``." +"Return ``1`` if the class *derived* is identical to or derived from the " +"class *cls*, otherwise return ``0``. In case of an error, return ``-1``." msgstr "" -"Retorna ``1`` si la clase *derived* es idéntica o derivada de la clase *cls*; de " -"lo contrario, retorna ``0``. En caso de error, retorna ``-1``." +"Retorna ``1`` si la clase *derived* es idéntica o derivada de la clase " +"*cls*; de lo contrario, retorna ``0``. En caso de error, retorna ``-1``." -#: ../Doc/c-api/object.rst:366 ../Doc/c-api/object.rst:385 +#: ../Doc/c-api/object.rst:367 ../Doc/c-api/object.rst:386 msgid "" -"If *cls* is a tuple, the check will be done against every entry in *cls*. The " -"result will be ``1`` when at least one of the checks returns ``1``, otherwise it " -"will be ``0``." +"If *cls* is a tuple, the check will be done against every entry in *cls*. " +"The result will be ``1`` when at least one of the checks returns ``1``, " +"otherwise it will be ``0``." msgstr "" -"Si *cls* es una tupla, la verificación se realizará con cada entrada en *cls*. " -"El resultado será ``1`` cuando al menos una de las verificaciones retorne ``1``, " -"de lo contrario será ``0``." +"Si *cls* es una tupla, la verificación se realizará con cada entrada en " +"*cls*. El resultado será ``1`` cuando al menos una de las verificaciones " +"retorne ``1``, de lo contrario será ``0``." -#: ../Doc/c-api/object.rst:370 +#: ../Doc/c-api/object.rst:371 msgid "" "If *cls* has a :meth:`~type.__subclasscheck__` method, it will be called to " -"determine the subclass status as described in :pep:`3119`. Otherwise, *derived* " -"is a subclass of *cls* if it is a direct or indirect subclass, i.e. contained " -"in :attr:`cls.__mro__ `." +"determine the subclass status as described in :pep:`3119`. Otherwise, " +"*derived* is a subclass of *cls* if it is a direct or indirect subclass, i." +"e. contained in :attr:`cls.__mro__ `." msgstr "" "Si *cls* tiene un método :meth:`~type.__subclasscheck__`, se llamará para " "determinar el estado de la subclase como se describe en :pep:`3119`. De lo " "contrario, *derived* es una subclase de *cls* si es una subclase directa o " "indirecta, es decir, contenida en :attr:`cls.__mro__ `." -#: ../Doc/c-api/object.rst:375 +#: ../Doc/c-api/object.rst:376 msgid "" -"Normally only class objects, i.e. instances of :class:`type` or a derived class, " -"are considered classes. However, objects can override this by having a :attr:" -"`~type.__bases__` attribute (which must be a tuple of base classes)." +"Normally only class objects, i.e. instances of :class:`type` or a derived " +"class, are considered classes. However, objects can override this by having " +"a :attr:`~type.__bases__` attribute (which must be a tuple of base classes)." msgstr "" -"Normalmente, solo los objetos de clase, es decir, instancias de :class:`type` o " -"una clase derivada, se consideran clases. Sin embargo, los objetos pueden anular " -"esto al tener un atributo :attr:`~type.__bases__` (que debe ser una tupla de " -"clases base)." +"Normalmente, solo los objetos de clase, es decir, instancias de :class:" +"`type` o una clase derivada, se consideran clases. Sin embargo, los objetos " +"pueden anular esto al tener un atributo :attr:`~type.__bases__` (que debe " +"ser una tupla de clases base)." -#: ../Doc/c-api/object.rst:382 +#: ../Doc/c-api/object.rst:383 msgid "" -"Return ``1`` if *inst* is an instance of the class *cls* or a subclass of *cls*, " -"or ``0`` if not. On error, returns ``-1`` and sets an exception." +"Return ``1`` if *inst* is an instance of the class *cls* or a subclass of " +"*cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception." msgstr "" "Retorna ``1`` si *inst* es una instancia de la clase *cls* o una subclase de " -"*cls*, o ``0`` si no. En caso de error, retorna ``-1`` y establece una excepción." +"*cls*, o ``0`` si no. En caso de error, retorna ``-1`` y establece una " +"excepción." -#: ../Doc/c-api/object.rst:389 +#: ../Doc/c-api/object.rst:390 msgid "" "If *cls* has a :meth:`~type.__instancecheck__` method, it will be called to " -"determine the subclass status as described in :pep:`3119`. Otherwise, *inst* is " -"an instance of *cls* if its class is a subclass of *cls*." +"determine the subclass status as described in :pep:`3119`. Otherwise, " +"*inst* is an instance of *cls* if its class is a subclass of *cls*." msgstr "" "Si *cls* tiene un método :meth:`~type.__instancecheck__`, se llamará para " "determinar el estado de la subclase como se describe en :pep:`3119`. De lo " -"contrario, *inst* es una instancia de *cls* si su clase es una subclase de *cls*." +"contrario, *inst* es una instancia de *cls* si su clase es una subclase de " +"*cls*." -#: ../Doc/c-api/object.rst:393 +#: ../Doc/c-api/object.rst:394 msgid "" -"An instance *inst* can override what is considered its class by having a :attr:" -"`~object.__class__` attribute." +"An instance *inst* can override what is considered its class by having a :" +"attr:`~object.__class__` attribute." msgstr "" "Una instancia *inst* puede anular lo que se considera su clase al tener un " "atributo :attr:`~object.__class__`." -#: ../Doc/c-api/object.rst:396 +#: ../Doc/c-api/object.rst:397 msgid "" "An object *cls* can override if it is considered a class, and what its base " "classes are, by having a :attr:`~type.__bases__` attribute (which must be a " "tuple of base classes)." msgstr "" -"Un objeto *cls* puede anular si se considera una clase, y cuáles son sus clases " -"base, al tener un atributo :attr:`~type.__bases__` (que debe ser una tupla de " -"clases base)." +"Un objeto *cls* puede anular si se considera una clase, y cuáles son sus " +"clases base, al tener un atributo :attr:`~type.__bases__` (que debe ser una " +"tupla de clases base)." -#: ../Doc/c-api/object.rst:405 +#: ../Doc/c-api/object.rst:406 msgid "" -"Compute and return the hash value of an object *o*. On failure, return ``-1``. " -"This is the equivalent of the Python expression ``hash(o)``." +"Compute and return the hash value of an object *o*. On failure, return " +"``-1``. This is the equivalent of the Python expression ``hash(o)``." msgstr "" "Calcula y retorna el valor hash de un objeto *o*. En caso de fallo, retorna " "``-1``. Este es el equivalente de la expresión de Python ``hash(o)``." -#: ../Doc/c-api/object.rst:408 +#: ../Doc/c-api/object.rst:409 msgid "" -"The return type is now Py_hash_t. This is a signed integer the same size as :c:" -"type:`Py_ssize_t`." +"The return type is now Py_hash_t. This is a signed integer the same size " +"as :c:type:`Py_ssize_t`." msgstr "" -"El tipo de retorno ahora es *Py_hash_t*. Este es un entero con signo del mismo " -"tamaño que :c:type:`Py_ssize_t`." +"El tipo de retorno ahora es *Py_hash_t*. Este es un entero con signo del " +"mismo tamaño que :c:type:`Py_ssize_t`." -#: ../Doc/c-api/object.rst:415 +#: ../Doc/c-api/object.rst:416 msgid "" -"Set a :exc:`TypeError` indicating that ``type(o)`` is not :term:`hashable` and " -"return ``-1``. This function receives special treatment when stored in a " -"``tp_hash`` slot, allowing a type to explicitly indicate to the interpreter that " -"it is not hashable." +"Set a :exc:`TypeError` indicating that ``type(o)`` is not :term:`hashable` " +"and return ``-1``. This function receives special treatment when stored in a " +"``tp_hash`` slot, allowing a type to explicitly indicate to the interpreter " +"that it is not hashable." msgstr "" -"Establece un :exc:`TypeError` indicando que ``type(o)`` no es :term:`hashable` y " -"retorna ``-1``. Esta función recibe un tratamiento especial cuando se almacena " -"en una ranura ``tp_hash``, lo que permite que un tipo indique explícitamente al " -"intérprete que no es hashable." +"Establece un :exc:`TypeError` indicando que ``type(o)`` no es :term:" +"`hashable` y retorna ``-1``. Esta función recibe un tratamiento especial " +"cuando se almacena en una ranura ``tp_hash``, lo que permite que un tipo " +"indique explícitamente al intérprete que no es hashable." -#: ../Doc/c-api/object.rst:423 +#: ../Doc/c-api/object.rst:424 msgid "" -"Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise. " -"This is equivalent to the Python expression ``not not o``. On failure, return " -"``-1``." +"Returns ``1`` if the object *o* is considered to be true, and ``0`` " +"otherwise. This is equivalent to the Python expression ``not not o``. On " +"failure, return ``-1``." msgstr "" -"Retorna ``1`` si el objeto *o* se considera verdadero y ``0`` en caso contrario. " -"Esto es equivalente a la expresión de Python ``not not o``. En caso de error, " -"retorna ``-1``." +"Retorna ``1`` si el objeto *o* se considera verdadero y ``0`` en caso " +"contrario. Esto es equivalente a la expresión de Python ``not not o``. En " +"caso de error, retorna ``-1``." -#: ../Doc/c-api/object.rst:430 +#: ../Doc/c-api/object.rst:431 msgid "" -"Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise. " -"This is equivalent to the Python expression ``not o``. On failure, return " -"``-1``." +"Returns ``0`` if the object *o* is considered to be true, and ``1`` " +"otherwise. This is equivalent to the Python expression ``not o``. On " +"failure, return ``-1``." msgstr "" -"Retorna ``0`` si el objeto *o* se considera verdadero, y ``1`` de lo contrario. " -"Esto es equivalente a la expresión de Python ``not o``. En caso de error, " -"retorna ``-1``." +"Retorna ``0`` si el objeto *o* se considera verdadero, y ``1`` de lo " +"contrario. Esto es equivalente a la expresión de Python ``not o``. En caso " +"de error, retorna ``-1``." -#: ../Doc/c-api/object.rst:439 +#: ../Doc/c-api/object.rst:440 msgid "" -"When *o* is non-``NULL``, returns a type object corresponding to the object type " -"of object *o*. On failure, raises :exc:`SystemError` and returns ``NULL``. This " -"is equivalent to the Python expression ``type(o)``. This function creates a new :" -"term:`strong reference` to the return value. There's really no reason to use " -"this function instead of the :c:func:`Py_TYPE()` function, which returns a " -"pointer of type :c:expr:`PyTypeObject*`, except when a new :term:`strong " -"reference` is needed." +"When *o* is non-``NULL``, returns a type object corresponding to the object " +"type of object *o*. On failure, raises :exc:`SystemError` and returns " +"``NULL``. This is equivalent to the Python expression ``type(o)``. This " +"function creates a new :term:`strong reference` to the return value. There's " +"really no reason to use this function instead of the :c:func:`Py_TYPE()` " +"function, which returns a pointer of type :c:expr:`PyTypeObject*`, except " +"when a new :term:`strong reference` is needed." msgstr "" -"Cuando *o* es non-``NULL``, retorna un objeto de tipo correspondiente al tipo de " -"objeto del objeto *o*. En caso de fallo, lanza :exc:`SystemError` y retorna " -"``NULL``. Esto es equivalente a la expresión de Python ``type(o)``. Esta función " -"crea una nueva :term:`referencia fuerte` al valor de retorno. Realmente no hay " -"razón para usar esta función en lugar de la función :c:func:`Py_TYPE()`, que " -"retorna un puntero de tipo :c:expr:`PyTypeObject*`, excepto cuando se necesita " -"una nueva :term:`referencia fuerte`." +"Cuando *o* es non-``NULL``, retorna un objeto de tipo correspondiente al " +"tipo de objeto del objeto *o*. En caso de fallo, lanza :exc:`SystemError` y " +"retorna ``NULL``. Esto es equivalente a la expresión de Python ``type(o)``. " +"Esta función crea una nueva :term:`referencia fuerte` al valor de retorno. " +"Realmente no hay razón para usar esta función en lugar de la función :c:func:" +"`Py_TYPE()`, que retorna un puntero de tipo :c:expr:`PyTypeObject*`, excepto " +"cuando se necesita una nueva :term:`referencia fuerte`." -#: ../Doc/c-api/object.rst:451 +#: ../Doc/c-api/object.rst:452 msgid "" -"Return non-zero if the object *o* is of type *type* or a subtype of *type*, and " -"``0`` otherwise. Both parameters must be non-``NULL``." +"Return non-zero if the object *o* is of type *type* or a subtype of *type*, " +"and ``0`` otherwise. Both parameters must be non-``NULL``." msgstr "" "Retorna un valor no-nulo si el objeto *o* es de tipo *type* o un subtipo de " -"*type*, y ``0`` en cualquier otro caso. Ninguno de los dos parámetros debe ser " -"``NULL``." +"*type*, y ``0`` en cualquier otro caso. Ninguno de los dos parámetros debe " +"ser ``NULL``." -#: ../Doc/c-api/object.rst:460 +#: ../Doc/c-api/object.rst:461 msgid "" -"Return the length of object *o*. If the object *o* provides either the sequence " -"and mapping protocols, the sequence length is returned. On error, ``-1`` is " -"returned. This is the equivalent to the Python expression ``len(o)``." +"Return the length of object *o*. If the object *o* provides either the " +"sequence and mapping protocols, the sequence length is returned. On error, " +"``-1`` is returned. This is the equivalent to the Python expression " +"``len(o)``." msgstr "" -"Retorna la longitud del objeto *o*. Si el objeto *o* proporciona los protocolos " -"de secuencia y mapeo, se retorna la longitud de la secuencia. En caso de error, " -"se retorna ``-1``. Este es el equivalente a la expresión de Python ``len(o)``." +"Retorna la longitud del objeto *o*. Si el objeto *o* proporciona los " +"protocolos de secuencia y mapeo, se retorna la longitud de la secuencia. En " +"caso de error, se retorna ``-1``. Este es el equivalente a la expresión de " +"Python ``len(o)``." -#: ../Doc/c-api/object.rst:467 +#: ../Doc/c-api/object.rst:468 msgid "" -"Return an estimated length for the object *o*. First try to return its actual " -"length, then an estimate using :meth:`~object.__length_hint__`, and finally " -"return the default value. On error return ``-1``. This is the equivalent to the " -"Python expression ``operator.length_hint(o, defaultvalue)``." -msgstr "" -"Retorna una longitud estimada para el objeto *o*. Primero intenta retornar su " -"longitud real, luego una estimación usando :meth:`~object.__length_hint__`, y " -"finalmente retorna el valor predeterminado. En caso de error, retorna ``-1``. " -"Este es el equivalente a la expresión de Python ``operator.length_hint(o, " +"Return an estimated length for the object *o*. First try to return its " +"actual length, then an estimate using :meth:`~object.__length_hint__`, and " +"finally return the default value. On error return ``-1``. This is the " +"equivalent to the Python expression ``operator.length_hint(o, " "defaultvalue)``." +msgstr "" +"Retorna una longitud estimada para el objeto *o*. Primero intenta retornar " +"su longitud real, luego una estimación usando :meth:`~object." +"__length_hint__`, y finalmente retorna el valor predeterminado. En caso de " +"error, retorna ``-1``. Este es el equivalente a la expresión de Python " +"``operator.length_hint(o, defaultvalue)``." -#: ../Doc/c-api/object.rst:477 +#: ../Doc/c-api/object.rst:478 msgid "" -"Return element of *o* corresponding to the object *key* or ``NULL`` on failure. " -"This is the equivalent of the Python expression ``o[key]``." +"Return element of *o* corresponding to the object *key* or ``NULL`` on " +"failure. This is the equivalent of the Python expression ``o[key]``." msgstr "" "Retorna el elemento de *o* correspondiente a la clave *key* del objeto o " "``NULL`` en caso de error. Este es el equivalente de la expresión de Python " "``o[key]``." -#: ../Doc/c-api/object.rst:483 +#: ../Doc/c-api/object.rst:484 msgid "" -"Map the object *key* to the value *v*. Raise an exception and return ``-1`` on " -"failure; return ``0`` on success. This is the equivalent of the Python " +"Map the object *key* to the value *v*. Raise an exception and return ``-1`` " +"on failure; return ``0`` on success. This is the equivalent of the Python " "statement ``o[key] = v``. This function *does not* steal a reference to *v*." msgstr "" "Asigna el objeto *key* al valor *v*. Lanza una excepción y retorna ``-1`` en " "caso de error; retorna ``0`` en caso de éxito. Este es el equivalente de la " -"declaración de Python ``o[key] = v``. Esta función *no* roba una referencia a " -"*v*." +"declaración de Python ``o[key] = v``. Esta función *no* roba una referencia " +"a *v*." -#: ../Doc/c-api/object.rst:491 +#: ../Doc/c-api/object.rst:492 msgid "" -"Remove the mapping for the object *key* from the object *o*. Return ``-1`` on " -"failure. This is equivalent to the Python statement ``del o[key]``." +"Remove the mapping for the object *key* from the object *o*. Return ``-1`` " +"on failure. This is equivalent to the Python statement ``del o[key]``." msgstr "" "Elimina la asignación para el objeto *key* del objeto *o*. Retorna ``-1`` en " "caso de falla. Esto es equivalente a la declaración de Python ``del o[key]``." -#: ../Doc/c-api/object.rst:497 +#: ../Doc/c-api/object.rst:498 +#, fuzzy msgid "" -"This is the equivalent to the Python expression ``dir(o)``, returning a " -"(possibly empty) list of strings appropriate for the object argument, or " -"``NULL`` if there was an error. If the argument is ``NULL``, this is like the " -"Python ``dir()``, returning the names of the current locals; in this case, if no " -"execution frame is active then ``NULL`` is returned but :c:func:`PyErr_Occurred` " -"will return false." +"This is the same as :c:func:`PyObject_DelItem`, but *key* is specified as a :" +"c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:" +"`PyObject*`." msgstr "" -"Esto es equivalente a la expresión de Python ``dir(o)``, que retorna una lista " -"(posiblemente vacía) de cadenas de caracteres apropiadas para el argumento del " -"objeto, o ``NULL`` si hubo un error. Si el argumento es ``NULL``, es como el " -"Python ``dir()``, que retorna los nombres de los locales actuales; en este caso, " -"si no hay un marco de ejecución activo, se retorna ``NULL`` pero :c:func:" -"`PyErr_Occurred` retornará falso." +"Esto es lo mismo que :c:func:`PyObject_DelAttr`, pero *attr_name* se " +"especifica como una cadena de bytes codificada en UTF-8 :c:expr:`const " +"char*`, en lugar de un :c:expr:`PyObject*`." -#: ../Doc/c-api/object.rst:506 +#: ../Doc/c-api/object.rst:505 +#, fuzzy msgid "" -"This is the equivalent to the Python expression ``iter(o)``. It returns a new " -"iterator for the object argument, or the object itself if the object is already " -"an iterator. Raises :exc:`TypeError` and returns ``NULL`` if the object cannot " -"be iterated." +"This is equivalent to the Python expression ``dir(o)``, returning a " +"(possibly empty) list of strings appropriate for the object argument, or " +"``NULL`` if there was an error. If the argument is ``NULL``, this is like " +"the Python ``dir()``, returning the names of the current locals; in this " +"case, if no execution frame is active then ``NULL`` is returned but :c:func:" +"`PyErr_Occurred` will return false." +msgstr "" +"Esto es equivalente a la expresión de Python ``dir(o)``, que retorna una " +"lista (posiblemente vacía) de cadenas de caracteres apropiadas para el " +"argumento del objeto, o ``NULL`` si hubo un error. Si el argumento es " +"``NULL``, es como el Python ``dir()``, que retorna los nombres de los " +"locales actuales; en este caso, si no hay un marco de ejecución activo, se " +"retorna ``NULL`` pero :c:func:`PyErr_Occurred` retornará falso." + +#: ../Doc/c-api/object.rst:514 +#, fuzzy +msgid "" +"This is equivalent to the Python expression ``iter(o)``. It returns a new " +"iterator for the object argument, or the object itself if the object is " +"already an iterator. Raises :exc:`TypeError` and returns ``NULL`` if the " +"object cannot be iterated." msgstr "" "Esto es equivalente a la expresión de Python ``iter(o)``. Retorna un nuevo " -"iterador para el argumento del objeto, o el propio objeto si el objeto ya es un " -"iterador. Lanza :exc:`TypeError` y retorna ``NULL`` si el objeto no puede " +"iterador para el argumento del objeto, o el propio objeto si el objeto ya es " +"un iterador. Lanza :exc:`TypeError` y retorna ``NULL`` si el objeto no puede " "iterarse." -#: ../Doc/c-api/object.rst:514 +#: ../Doc/c-api/object.rst:522 +msgid "" +"This is equivalent to the Python ``__iter__(self): return self`` method. It " +"is intended for :term:`iterator` types, to be used in the :c:member:" +"`PyTypeObject.tp_iter` slot." +msgstr "" + +#: ../Doc/c-api/object.rst:528 msgid "" -"This is the equivalent to the Python expression ``aiter(o)``. Takes an :class:" -"`AsyncIterable` object and returns an :class:`AsyncIterator` for it. This is " -"typically a new iterator but if the argument is an :class:`AsyncIterator`, this " -"returns itself. Raises :exc:`TypeError` and returns ``NULL`` if the object " -"cannot be iterated." +"This is the equivalent to the Python expression ``aiter(o)``. Takes an :" +"class:`AsyncIterable` object and returns an :class:`AsyncIterator` for it. " +"This is typically a new iterator but if the argument is an :class:" +"`AsyncIterator`, this returns itself. Raises :exc:`TypeError` and returns " +"``NULL`` if the object cannot be iterated." msgstr "" -"Esto es equivalente a la expresión de Python ``aiter(o)``. Toma un objeto :class:" -"`AsyncIterable` y retorna un :class:`AsyncIterator`. Este es típicamente un " -"nuevo iterador, pero si el argumento es un :class:`AsyncIterator`, se retornará " -"a sí mismo. Lanza :exc:`TypeError` y retorna ``NULL`` si el objeto no puede ser " -"iterado." +"Esto es equivalente a la expresión de Python ``aiter(o)``. Toma un objeto :" +"class:`AsyncIterable` y retorna un :class:`AsyncIterator`. Este es " +"típicamente un nuevo iterador, pero si el argumento es un :class:" +"`AsyncIterator`, se retornará a sí mismo. Lanza :exc:`TypeError` y retorna " +"``NULL`` si el objeto no puede ser iterado." -#: ../Doc/c-api/object.rst:524 +#: ../Doc/c-api/object.rst:538 msgid "Get a pointer to subclass-specific data reserved for *cls*." -msgstr "Obtiene un puntero a datos específicos de subclase reservados para *cls*." +msgstr "" +"Obtiene un puntero a datos específicos de subclase reservados para *cls*." -#: ../Doc/c-api/object.rst:526 +#: ../Doc/c-api/object.rst:540 msgid "" -"The object *o* must be an instance of *cls*, and *cls* must have been created " -"using negative :c:member:`PyType_Spec.basicsize`. Python does not check this." +"The object *o* must be an instance of *cls*, and *cls* must have been " +"created using negative :c:member:`PyType_Spec.basicsize`. Python does not " +"check this." msgstr "" "El objeto *o* debe ser una instancia de *cls*, y *cls* debe haberse creado " "usando :c:member:`PyType_Spec.basicsize` negativo. Python no verifica esto." -#: ../Doc/c-api/object.rst:530 +#: ../Doc/c-api/object.rst:544 msgid "On error, set an exception and return ``NULL``." msgstr "En caso de error, establece una excepción y retorna ``NULL``." -#: ../Doc/c-api/object.rst:536 +#: ../Doc/c-api/object.rst:550 msgid "" -"Return the size of the instance memory space reserved for *cls*, i.e. the size " -"of the memory :c:func:`PyObject_GetTypeData` returns." +"Return the size of the instance memory space reserved for *cls*, i.e. the " +"size of the memory :c:func:`PyObject_GetTypeData` returns." msgstr "" -"Retorna el tamaño del espacio de memoria de instancia reservado para *cls*, es " -"decir, el tamaño de la memoria que retorna :c:func:`PyObject_GetTypeData`." +"Retorna el tamaño del espacio de memoria de instancia reservado para *cls*, " +"es decir, el tamaño de la memoria que retorna :c:func:`PyObject_GetTypeData`." -#: ../Doc/c-api/object.rst:539 +#: ../Doc/c-api/object.rst:553 msgid "" "This may be larger than requested using :c:member:`-PyType_Spec.basicsize " -"`; it is safe to use this larger size (e.g. with :c:func:" -"`!memset`)." -msgstr "" -"Esto puede ser mayor de lo solicitado usando :c:member:`-PyType_Spec.basicsize " -"`; es seguro usar este tamaño mayor (por ejemplo, con :c:" +"`; it is safe to use this larger size (e.g. with :c:" "func:`!memset`)." +msgstr "" +"Esto puede ser mayor de lo solicitado usando :c:member:`-PyType_Spec." +"basicsize `; es seguro usar este tamaño mayor (por " +"ejemplo, con :c:func:`!memset`)." -#: ../Doc/c-api/object.rst:542 +#: ../Doc/c-api/object.rst:556 msgid "" -"The type *cls* **must** have been created using negative :c:member:`PyType_Spec." -"basicsize`. Python does not check this." +"The type *cls* **must** have been created using negative :c:member:" +"`PyType_Spec.basicsize`. Python does not check this." msgstr "" -"El tipo *cls* **debe** haberse creado usando :c:member:`PyType_Spec.basicsize` " -"negativo. Python no verifica esto." +"El tipo *cls* **debe** haberse creado usando :c:member:`PyType_Spec." +"basicsize` negativo. Python no verifica esto." -#: ../Doc/c-api/object.rst:546 +#: ../Doc/c-api/object.rst:560 msgid "On error, set an exception and return a negative value." msgstr "En caso de error, establece una excepción y retorna un valor negativo." -#: ../Doc/c-api/object.rst:552 +#: ../Doc/c-api/object.rst:566 msgid "" "Get a pointer to per-item data for a class with :c:macro:" "`Py_TPFLAGS_ITEMS_AT_END`." @@ -917,64 +956,278 @@ msgstr "" "Obtiene un puntero a datos por elemento para una clase con :c:macro:" "`Py_TPFLAGS_ITEMS_AT_END`." -#: ../Doc/c-api/object.rst:555 +#: ../Doc/c-api/object.rst:569 msgid "" -"On error, set an exception and return ``NULL``. :py:exc:`TypeError` is raised if " -"*o* does not have :c:macro:`Py_TPFLAGS_ITEMS_AT_END` set." +"On error, set an exception and return ``NULL``. :py:exc:`TypeError` is " +"raised if *o* does not have :c:macro:`Py_TPFLAGS_ITEMS_AT_END` set." msgstr "" -"En caso de error, establece una excepción y retorna ``NULL``. Se lanza :py:exc:" -"`TypeError` si *o* no tiene establecido :c:macro:`Py_TPFLAGS_ITEMS_AT_END`." +"En caso de error, establece una excepción y retorna ``NULL``. Se lanza :py:" +"exc:`TypeError` si *o* no tiene establecido :c:macro:" +"`Py_TPFLAGS_ITEMS_AT_END`." -#: ../Doc/c-api/object.rst:563 +#: ../Doc/c-api/object.rst:577 msgid "Visit the managed dictionary of *obj*." msgstr "Visita el diccionario gestionado de *obj*." -#: ../Doc/c-api/object.rst:565 ../Doc/c-api/object.rst:574 +#: ../Doc/c-api/object.rst:579 ../Doc/c-api/object.rst:588 msgid "" -"This function must only be called in a traverse function of the type which has " -"the :c:macro:`Py_TPFLAGS_MANAGED_DICT` flag set." +"This function must only be called in a traverse function of the type which " +"has the :c:macro:`Py_TPFLAGS_MANAGED_DICT` flag set." msgstr "" -"Esta función solo debe llamarse en una función de recorrido del tipo que tiene " -"la bandera :c:macro:`Py_TPFLAGS_MANAGED_DICT` establecida." +"Esta función solo debe llamarse en una función de recorrido del tipo que " +"tiene la bandera :c:macro:`Py_TPFLAGS_MANAGED_DICT` establecida." -#: ../Doc/c-api/object.rst:572 +#: ../Doc/c-api/object.rst:586 msgid "Clear the managed dictionary of *obj*." msgstr "Limpia el diccionario gestionado de *obj*." -#: ../Doc/c-api/object.rst:315 ../Doc/c-api/object.rst:327 -#: ../Doc/c-api/object.rst:352 ../Doc/c-api/object.rst:403 -#: ../Doc/c-api/object.rst:437 ../Doc/c-api/object.rst:458 +#: ../Doc/c-api/object.rst:595 +msgid "" +"Enable `deferred reference counting `_ on *obj*, if supported by the runtime. In " +"the :term:`free-threaded ` build, this allows the " +"interpreter to avoid reference count adjustments to *obj*, which may improve " +"multi-threaded performance. The tradeoff is that *obj* will only be " +"deallocated by the tracing garbage collector, and not when the interpreter " +"no longer has any references to it." +msgstr "" + +#: ../Doc/c-api/object.rst:602 +msgid "" +"This function returns ``1`` if deferred reference counting is enabled on " +"*obj*, and ``0`` if deferred reference counting is not supported or if the " +"hint was ignored by the interpreter, such as when deferred reference " +"counting is already enabled on *obj*. This function is thread-safe, and " +"cannot fail." +msgstr "" + +#: ../Doc/c-api/object.rst:607 +msgid "" +"This function does nothing on builds with the :term:`GIL` enabled, which do " +"not support deferred reference counting. This also does nothing if *obj* is " +"not an object tracked by the garbage collector (see :func:`gc.is_tracked` " +"and :c:func:`PyObject_GC_IsTracked`)." +msgstr "" + +#: ../Doc/c-api/object.rst:612 +msgid "" +"This function is intended to be used soon after *obj* is created, by the " +"code that creates it, such as in the object's :c:member:`~PyTypeObject." +"tp_new` slot." +msgstr "" + +#: ../Doc/c-api/object.rst:620 +msgid "" +"Check if *obj* is a unique temporary object. Returns ``1`` if *obj* is known " +"to be a unique temporary object, and ``0`` otherwise. This function cannot " +"fail, but the check is conservative, and may return ``0`` in some cases even " +"if *obj* is a unique temporary object." +msgstr "" + +#: ../Doc/c-api/object.rst:626 +msgid "" +"If an object is a unique temporary, it is guaranteed that the current code " +"has the only reference to the object. For arguments to C functions, this " +"should be used instead of checking if the reference count is ``1``. Starting " +"with Python 3.14, the interpreter internally avoids some reference count " +"modifications when loading objects onto the operands stack by :term:" +"`borrowing ` references when possible, which means that " +"a reference count of ``1`` by itself does not guarantee that a function " +"argument uniquely referenced." +msgstr "" + +#: ../Doc/c-api/object.rst:635 +msgid "" +"In the example below, ``my_func`` is called with a unique temporary object " +"as its argument::" +msgstr "" + +#: ../Doc/c-api/object.rst:638 +msgid "my_func([1, 2, 3])" +msgstr "" + +#: ../Doc/c-api/object.rst:640 +msgid "" +"In the example below, ``my_func`` is **not** called with a unique temporary " +"object as its argument, even if its refcount is ``1``::" +msgstr "" + +#: ../Doc/c-api/object.rst:643 +msgid "" +"my_list = [1, 2, 3]\n" +"my_func(my_list)" +msgstr "" + +#: ../Doc/c-api/object.rst:646 +msgid "See also the function :c:func:`Py_REFCNT`." +msgstr "" + +#: ../Doc/c-api/object.rst:652 +msgid "" +"This function returns non-zero if *obj* is :term:`immortal`, and zero " +"otherwise. This function cannot fail." +msgstr "" + +#: ../Doc/c-api/object.rst:657 +msgid "" +"Objects that are immortal in one CPython version are not guaranteed to be " +"immortal in another." +msgstr "" + +#: ../Doc/c-api/object.rst:664 +msgid "" +"Increments the reference count of *obj* if it is not zero. Returns ``1`` if " +"the object's reference count was successfully incremented. Otherwise, this " +"function returns ``0``." +msgstr "" + +#: ../Doc/c-api/object.rst:668 +msgid "" +":c:func:`PyUnstable_EnableTryIncRef` must have been called earlier on *obj* " +"or this function may spuriously return ``0`` in the :term:`free threading` " +"build." +msgstr "" + +#: ../Doc/c-api/object.rst:672 +msgid "" +"This function is logically equivalent to the following C code, except that " +"it behaves atomically in the :term:`free threading` build::" +msgstr "" + +#: ../Doc/c-api/object.rst:675 +#, python-brace-format +msgid "" +"if (Py_REFCNT(op) > 0) {\n" +" Py_INCREF(op);\n" +" return 1;\n" +"}\n" +"return 0;" +msgstr "" + +#: ../Doc/c-api/object.rst:681 +msgid "" +"This is intended as a building block for managing weak references without " +"the overhead of a Python :ref:`weak reference object `." +msgstr "" + +#: ../Doc/c-api/object.rst:684 +msgid "" +"Typically, correct use of this function requires support from *obj*'s " +"deallocator (:c:member:`~PyTypeObject.tp_dealloc`). For example, the " +"following sketch could be adapted to implement a \"weakmap\" that works like " +"a :py:class:`~weakref.WeakValueDictionary` for a specific type:" +msgstr "" + +#: ../Doc/c-api/object.rst:690 +msgid "" +"PyMutex mutex;\n" +"\n" +"PyObject *\n" +"add_entry(weakmap_key_type *key, PyObject *value)\n" +"{\n" +" PyUnstable_EnableTryIncRef(value);\n" +" weakmap_type weakmap = ...;\n" +" PyMutex_Lock(&mutex);\n" +" weakmap_add_entry(weakmap, key, value);\n" +" PyMutex_Unlock(&mutex);\n" +" Py_RETURN_NONE;\n" +"}\n" +"\n" +"PyObject *\n" +"get_value(weakmap_key_type *key)\n" +"{\n" +" weakmap_type weakmap = ...;\n" +" PyMutex_Lock(&mutex);\n" +" PyObject *result = weakmap_find(weakmap, key);\n" +" if (PyUnstable_TryIncRef(result)) {\n" +" // `result` is safe to use\n" +" PyMutex_Unlock(&mutex);\n" +" return result;\n" +" }\n" +" // if we get here, `result` is starting to be garbage-collected,\n" +" // but has not been removed from the weakmap yet\n" +" PyMutex_Unlock(&mutex);\n" +" return NULL;\n" +"}\n" +"\n" +"// tp_dealloc function for weakmap values\n" +"void\n" +"value_dealloc(PyObject *value)\n" +"{\n" +" weakmap_type weakmap = ...;\n" +" PyMutex_Lock(&mutex);\n" +" weakmap_remove_value(weakmap, value);\n" +"\n" +" ...\n" +" PyMutex_Unlock(&mutex);\n" +"}" +msgstr "" + +#: ../Doc/c-api/object.rst:738 +msgid "" +"Enables subsequent uses of :c:func:`PyUnstable_TryIncRef` on *obj*. The " +"caller must hold a :term:`strong reference` to *obj* when calling this." +msgstr "" + +#: ../Doc/c-api/object.rst:745 +msgid "Determine if *op* only has one reference." +msgstr "" + +#: ../Doc/c-api/object.rst:747 +msgid "" +"On GIL-enabled builds, this function is equivalent to :c:expr:`Py_REFCNT(op) " +"== 1`." +msgstr "" + +#: ../Doc/c-api/object.rst:750 +msgid "" +"On a :term:`free threaded ` build, this checks if *op*'s :" +"term:`reference count` is equal to one and additionally checks if *op* is " +"only used by this thread. :c:expr:`Py_REFCNT(op) == 1` is **not** thread-" +"safe on free threaded builds; prefer this function." +msgstr "" + +#: ../Doc/c-api/object.rst:755 +msgid "" +"The caller must hold an :term:`attached thread state`, despite the fact that " +"this function doesn't call into the Python interpreter. This function cannot " +"fail." +msgstr "" + +#: ../Doc/c-api/object.rst:316 ../Doc/c-api/object.rst:328 +#: ../Doc/c-api/object.rst:353 ../Doc/c-api/object.rst:404 +#: ../Doc/c-api/object.rst:438 ../Doc/c-api/object.rst:459 msgid "built-in function" msgstr "función incorporada" -#: ../Doc/c-api/object.rst:315 +#: ../Doc/c-api/object.rst:316 msgid "repr" msgstr "repr" -#: ../Doc/c-api/object.rst:327 +#: ../Doc/c-api/object.rst:328 msgid "ascii" msgstr "ascii" -#: ../Doc/c-api/object.rst:335 +#: ../Doc/c-api/object.rst:336 msgid "string" msgstr "cadena" -#: ../Doc/c-api/object.rst:335 +#: ../Doc/c-api/object.rst:336 msgid "PyObject_Str (C function)" msgstr "PyObject_Str (función C)" -#: ../Doc/c-api/object.rst:352 +#: ../Doc/c-api/object.rst:353 msgid "bytes" msgstr "bytes" -#: ../Doc/c-api/object.rst:403 +#: ../Doc/c-api/object.rst:404 msgid "hash" msgstr "hash" -#: ../Doc/c-api/object.rst:437 +#: ../Doc/c-api/object.rst:438 msgid "type" msgstr "type" -#: ../Doc/c-api/object.rst:458 +#: ../Doc/c-api/object.rst:459 msgid "len" msgstr "len" diff --git a/c-api/perfmaps.po b/c-api/perfmaps.po index 1bfd599da0..f154da74b3 100644 --- a/c-api/perfmaps.po +++ b/c-api/perfmaps.po @@ -9,17 +9,16 @@ msgid "" msgstr "" "Project-Id-Version: Python en Español 3.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-01-31 10:04-0300\n" "Last-Translator: srmorita \n" -"Language-Team: es \n" "Language: es\n" +"Language-Team: es \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.5\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/perfmaps.rst:6 msgid "Support for Perf Maps" @@ -29,12 +28,12 @@ msgstr "Soporte para Mapeo Perf" msgid "" "On supported platforms (as of this writing, only Linux), the runtime can " "take advantage of *perf map files* to make Python functions visible to an " -"external profiling tool (such as `perf `_). A running process may create a file in the ``/tmp`` " +"external profiling tool (such as `perf `_). A running process may create a file in the ``/tmp`` " "directory, which contains entries that can map a section of executable code " "to a name. This interface is described in the `documentation of the Linux " -"Perf tool `_." +"Perf tool `_." msgstr "" "En las plataformas soportadas (en el momento de escribir esto, sólo Linux), " "el tiempo de ejecución puede aprovechar *perf map files* para hacer que las " @@ -55,9 +54,10 @@ msgstr "" "funciones que dependen de la generación de código de máquina sobre la marcha." #: ../Doc/c-api/perfmaps.rst:19 +#, fuzzy msgid "" -"Note that holding the Global Interpreter Lock (GIL) is not required for " -"these APIs." +"Note that holding an :term:`attached thread state` is not required for these " +"APIs." msgstr "" "Tenga en cuenta que para estas APIs no es necesario mantener el Bloqueo " "Global del Intérprete (GIL)." @@ -67,17 +67,16 @@ msgid "" "Open the ``/tmp/perf-$pid.map`` file, unless it's already opened, and create " "a lock to ensure thread-safe writes to the file (provided the writes are " "done through :c:func:`PyUnstable_WritePerfMapEntry`). Normally, there's no " -"need to call this explicitly; just " -"use :c:func:`PyUnstable_WritePerfMapEntry` and it will initialize the state " -"on first call." +"need to call this explicitly; just use :c:func:" +"`PyUnstable_WritePerfMapEntry` and it will initialize the state on first " +"call." msgstr "" "Abre el archivo ``/tmp/perf-$pid.map``, a menos que ya esté abierto, y crea " "un bloqueo para garantizar escrituras seguras para hilos en el archivo " -"(siempre que las escrituras se realicen " -"mediante :c:func:`PyUnstable_WritePerfMapEntry`). Normalmente, no es " -"necesario llamar a esto explícitamente; solo " -"use :c:func:`PyUnstable_WritePerfMapEntry` e inicializará el estado en la " -"primera llamada." +"(siempre que las escrituras se realicen mediante :c:func:" +"`PyUnstable_WritePerfMapEntry`). Normalmente, no es necesario llamar a esto " +"explícitamente; solo use :c:func:`PyUnstable_WritePerfMapEntry` e " +"inicializará el estado en la primera llamada." #: ../Doc/c-api/perfmaps.rst:29 msgid "" @@ -114,8 +113,8 @@ msgid "" msgstr "" "Llamará a :c:func:`PyUnstable_PerfMapState_Init` antes de escribir la " "entrada, si el fichero perf map no está ya abierto. Retorna ``0`` en caso de " -"éxito, o los mismos códigos de error " -"que :c:func:`PyUnstable_PerfMapState_Init` en caso de fallo." +"éxito, o los mismos códigos de error que :c:func:" +"`PyUnstable_PerfMapState_Init` en caso de fallo." #: ../Doc/c-api/perfmaps.rst:47 msgid "" @@ -124,8 +123,8 @@ msgid "" "general, there shouldn't be a reason to explicitly call this, except to " "handle specific scenarios such as forking." msgstr "" -"Cierra el fichero perf map abierto " -"por :c:func:`PyUnstable_PerfMapState_Init`. Esto es llamado por el propio " -"tiempo de ejecución durante el cierre del intérprete. En general, no debería " -"haber una razón para llamar explícitamente a esto, excepto para manejar " -"escenarios específicos como la bifurcación." +"Cierra el fichero perf map abierto por :c:func:" +"`PyUnstable_PerfMapState_Init`. Esto es llamado por el propio tiempo de " +"ejecución durante el cierre del intérprete. En general, no debería haber una " +"razón para llamar explícitamente a esto, excepto para manejar escenarios " +"específicos como la bifurcación." diff --git a/c-api/refcounting.po b/c-api/refcounting.po index a76233eb0f..8893092f26 100644 --- a/c-api/refcounting.po +++ b/c-api/refcounting.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-05-16 20:01+0200\n" "Last-Translator: Marcos Medrano \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.6\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/refcounting.rst:8 msgid "Reference Counting" @@ -41,16 +40,16 @@ msgstr "Obtiene el recuento de referencias para el objeto de Python *o*." #: ../Doc/c-api/refcounting.rst:18 msgid "" "Note that the returned value may not actually reflect how many references to " -"the object are actually held. For example, some objects " -"are :term:`immortal` and have a very high refcount that does not reflect the " -"actual number of references. Consequently, do not rely on the returned " -"value to be accurate, other than a value of 0 or 1." +"the object are actually held. For example, some objects are :term:" +"`immortal` and have a very high refcount that does not reflect the actual " +"number of references. Consequently, do not rely on the returned value to be " +"accurate, other than a value of 0 or 1." msgstr "" "Ten cuenta que el valor devuelto puede que no reflejar cuantas referencias " -"al objecto existen realmente. Por ejemplo, algunos objetos " -"son :term:`immortal` y tienen un refcount muy alto que no refleja el número " -"real de referencias. Por lo tanto, no confíes en que el valor devuelto sea " -"preciso, salvo cuando sea 0 o 1." +"al objecto existen realmente. Por ejemplo, algunos objetos son :term:" +"`immortal` y tienen un refcount muy alto que no refleja el número real de " +"referencias. Por lo tanto, no confíes en que el valor devuelto sea preciso, " +"salvo cuando sea 0 o 1." #: ../Doc/c-api/refcounting.rst:24 msgid "" @@ -59,38 +58,52 @@ msgstr "" "Usa la función :c:func:`Py_SET_REFCNT()` para establecer la cuenta de " "referencias de un objeto." -#: ../Doc/c-api/refcounting.rst:26 +#: ../Doc/c-api/refcounting.rst:28 +msgid "" +"On :term:`free threaded ` builds of Python, returning 1 " +"isn't sufficient to determine if it's safe to treat *o* as having no access " +"by other threads. Use :c:func:`PyUnstable_Object_IsUniquelyReferenced` for " +"that instead." +msgstr "" + +#: ../Doc/c-api/refcounting.rst:33 +msgid "" +"See also the function :c:func:" +"`PyUnstable_Object_IsUniqueReferencedTemporary()`." +msgstr "" + +#: ../Doc/c-api/refcounting.rst:35 msgid ":c:func:`Py_REFCNT()` is changed to the inline static function." msgstr ":c:func:`Py_REFCNT()` se convierte en una función estática en línea." -#: ../Doc/c-api/refcounting.rst:29 +#: ../Doc/c-api/refcounting.rst:38 msgid "The parameter type is no longer :c:expr:`const PyObject*`." msgstr "El tipo de parámetro ya no es :c:expr:`const PyObject*`." -#: ../Doc/c-api/refcounting.rst:35 +#: ../Doc/c-api/refcounting.rst:44 msgid "Set the object *o* reference counter to *refcnt*." msgstr "Establece la cuenta de referencias del objeto *o* al valor *refcnt*." -#: ../Doc/c-api/refcounting.rst:37 +#: ../Doc/c-api/refcounting.rst:46 msgid "" "On :ref:`Python build with Free Threading `, if " "*refcnt* is larger than ``UINT32_MAX``, the object is made :term:`immortal`." msgstr "" "En :ref:`compilación de Python con Free Threading `, " -"si *refcnt* es mas mayor que ``UINT32_MAX``, el objeto se convierte " -"en :term:`immortal`." +"si *refcnt* es mas mayor que ``UINT32_MAX``, el objeto se convierte en :term:" +"`immortal`." -#: ../Doc/c-api/refcounting.rst:40 ../Doc/c-api/refcounting.rst:53 -#: ../Doc/c-api/refcounting.rst:119 +#: ../Doc/c-api/refcounting.rst:49 ../Doc/c-api/refcounting.rst:62 +#: ../Doc/c-api/refcounting.rst:128 msgid "This function has no effect on :term:`immortal` objects." msgstr "Esta función no afecta a los objetos :term:`immortal`." -#: ../Doc/c-api/refcounting.rst:44 ../Doc/c-api/refcounting.rst:68 -#: ../Doc/c-api/refcounting.rst:147 +#: ../Doc/c-api/refcounting.rst:53 ../Doc/c-api/refcounting.rst:77 +#: ../Doc/c-api/refcounting.rst:156 msgid "Immortal objects are not modified." msgstr "Los objetos inmortales no se modifican." -#: ../Doc/c-api/refcounting.rst:50 +#: ../Doc/c-api/refcounting.rst:59 msgid "" "Indicate taking a new :term:`strong reference` to object *o*, indicating it " "is in use and should not be destroyed." @@ -98,24 +111,23 @@ msgstr "" "Indica tomar una nueva :term:`strong reference` al objeto *o*, lo que indica " "que está en uso y no debe ser destruido." -#: ../Doc/c-api/refcounting.rst:55 +#: ../Doc/c-api/refcounting.rst:64 msgid "" -"This function is usually used to convert a :term:`borrowed reference` to " -"a :term:`strong reference` in-place. The :c:func:`Py_NewRef` function can be " +"This function is usually used to convert a :term:`borrowed reference` to a :" +"term:`strong reference` in-place. The :c:func:`Py_NewRef` function can be " "used to create a new :term:`strong reference`." msgstr "" "Esta función se usa generalmente para convertir un :term:`borrowed " -"reference` en un :term:`strong reference` en su lugar. La " -"función :c:func:`Py_NewRef` se puede utilizar para crear un " -"nuevo :term:`strong reference`." +"reference` en un :term:`strong reference` en su lugar. La función :c:func:" +"`Py_NewRef` se puede utilizar para crear un nuevo :term:`strong reference`." -#: ../Doc/c-api/refcounting.rst:59 +#: ../Doc/c-api/refcounting.rst:68 msgid "When done using the object, release is by calling :c:func:`Py_DECREF`." msgstr "" -"Cuando se termine de usar el objeto, se libera llamando " -"a :c:func:`Py_DECREF`." +"Cuando se termine de usar el objeto, se libera llamando a :c:func:" +"`Py_DECREF`." -#: ../Doc/c-api/refcounting.rst:61 +#: ../Doc/c-api/refcounting.rst:70 msgid "" "The object must not be ``NULL``; if you aren't sure that it isn't ``NULL``, " "use :c:func:`Py_XINCREF`." @@ -123,15 +135,16 @@ msgstr "" "El objeto no debe ser ``NULL``; si no está seguro de que no sea ``NULL``, " "use :c:func:`Py_XINCREF`." -#: ../Doc/c-api/refcounting.rst:64 +#: ../Doc/c-api/refcounting.rst:73 msgid "" -"Do not expect this function to actually modify *o* in any way. For at " -"least :pep:`some objects <0683>`, this function has no effect." +"Do not expect this function to actually modify *o* in any way. For at least :" +"pep:`some objects <0683>`, this function has no effect." msgstr "" "No esperes que esta función modifique realmente *o* de ninguna manera. Al " -"menos para :pep:`algunos objetos <0683>`, esta función no tiene ningún efecto." +"menos para :pep:`algunos objetos <0683>`, esta función no tiene ningún " +"efecto." -#: ../Doc/c-api/refcounting.rst:74 +#: ../Doc/c-api/refcounting.rst:83 msgid "" "Similar to :c:func:`Py_INCREF`, but the object *o* can be ``NULL``, in which " "case this has no effect." @@ -139,27 +152,27 @@ msgstr "" "Similar a :c:func:`Py_INCREF`, pero el objeto *o* puede ser ``NULL``, en " "cuyo caso esto no tiene efecto." -#: ../Doc/c-api/refcounting.rst:77 +#: ../Doc/c-api/refcounting.rst:86 msgid "See also :c:func:`Py_XNewRef`." msgstr "Ver también :c:func:`Py_XNewRef`." -#: ../Doc/c-api/refcounting.rst:82 +#: ../Doc/c-api/refcounting.rst:91 msgid "" "Create a new :term:`strong reference` to an object: call :c:func:`Py_INCREF` " "on *o* and return the object *o*." msgstr "" -"Crea una nueva :term:`strong reference` a un objeto: llama " -"a :c:func:`Py_INCREF` sobre *o* y devuelve el objeto *o*." +"Crea una nueva :term:`strong reference` a un objeto: llama a :c:func:" +"`Py_INCREF` sobre *o* y devuelve el objeto *o*." -#: ../Doc/c-api/refcounting.rst:85 +#: ../Doc/c-api/refcounting.rst:94 msgid "" "When the :term:`strong reference` is no longer needed, :c:func:`Py_DECREF` " "should be called on it to release the reference." msgstr "" -"Cuando la :term:`strong reference` ya no sea necesaria, se debe llamar " -"a :c:func:`Py_DECREF` para disminuir el recuento de referencias del objeto." +"Cuando la :term:`strong reference` ya no sea necesaria, se debe llamar a :c:" +"func:`Py_DECREF` para disminuir el recuento de referencias del objeto." -#: ../Doc/c-api/refcounting.rst:88 +#: ../Doc/c-api/refcounting.rst:97 msgid "" "The object *o* must not be ``NULL``; use :c:func:`Py_XNewRef` if *o* can be " "``NULL``." @@ -167,11 +180,11 @@ msgstr "" "El objeto *o* no debe ser ``NULL``; use :c:func:`Py_XNewRef` si *o* puede " "ser ``NULL``." -#: ../Doc/c-api/refcounting.rst:91 +#: ../Doc/c-api/refcounting.rst:100 msgid "For example::" msgstr "Por ejemplo::" -#: ../Doc/c-api/refcounting.rst:93 +#: ../Doc/c-api/refcounting.rst:102 msgid "" "Py_INCREF(obj);\n" "self->attr = obj;" @@ -179,27 +192,27 @@ msgstr "" "Py_INCREF(obj);\n" "self->attr = obj;" -#: ../Doc/c-api/refcounting.rst:96 +#: ../Doc/c-api/refcounting.rst:105 msgid "can be written as::" msgstr "puede ser escrito como::" -#: ../Doc/c-api/refcounting.rst:98 +#: ../Doc/c-api/refcounting.rst:107 msgid "self->attr = Py_NewRef(obj);" msgstr "self->attr = Py_NewRef(obj);" -#: ../Doc/c-api/refcounting.rst:100 +#: ../Doc/c-api/refcounting.rst:109 msgid "See also :c:func:`Py_INCREF`." msgstr "Ver también :c:func:`Py_INCREF`." -#: ../Doc/c-api/refcounting.rst:107 +#: ../Doc/c-api/refcounting.rst:116 msgid "Similar to :c:func:`Py_NewRef`, but the object *o* can be NULL." msgstr "Similar a :c:func:`Py_NewRef`, pero el objeto *o* puede ser NULL." -#: ../Doc/c-api/refcounting.rst:109 +#: ../Doc/c-api/refcounting.rst:118 msgid "If the object *o* is ``NULL``, the function just returns ``NULL``." msgstr "Si el objeto *o* es ``NULL``, la función solo retorna ``NULL``." -#: ../Doc/c-api/refcounting.rst:116 +#: ../Doc/c-api/refcounting.rst:125 msgid "" "Release a :term:`strong reference` to object *o*, indicating the reference " "is no longer used." @@ -207,7 +220,7 @@ msgstr "" "Libera una :term:`strong reference` al objeto *o*, indicando que la " "referencia ya no se usa." -#: ../Doc/c-api/refcounting.rst:121 +#: ../Doc/c-api/refcounting.rst:130 msgid "" "Once the last :term:`strong reference` is released (i.e. the object's " "reference count reaches 0), the object's type's deallocation function (which " @@ -217,7 +230,7 @@ msgstr "" "cuando la cuenta de referencias del objeto llegue a 0), se invoca la función " "de desasignación del tipo de objeto (la cual no debe ser ``NULL``)." -#: ../Doc/c-api/refcounting.rst:126 +#: ../Doc/c-api/refcounting.rst:135 msgid "" "This function is usually used to delete a :term:`strong reference` before " "exiting its scope." @@ -225,7 +238,7 @@ msgstr "" "Esta función se usa generalmente para eliminar un :term:`strong reference` " "antes de salir de su alcance." -#: ../Doc/c-api/refcounting.rst:129 +#: ../Doc/c-api/refcounting.rst:138 msgid "" "The object must not be ``NULL``; if you aren't sure that it isn't ``NULL``, " "use :c:func:`Py_XDECREF`." @@ -233,18 +246,18 @@ msgstr "" "El objeto no debe ser ``NULL``; si no está seguro de que no sea ``NULL``, " "use :c:func:`Py_XINCREF`." -#: ../Doc/c-api/refcounting.rst:132 +#: ../Doc/c-api/refcounting.rst:141 msgid "" -"Do not expect this function to actually modify *o* in any way. For at " -"least :pep:`some objects <683>`, this function has no effect." +"Do not expect this function to actually modify *o* in any way. For at least :" +"pep:`some objects <683>`, this function has no effect." msgstr "" "No esperes que esta función modifique realmente *o* de ninguna manera. Al " "menos para :pep:`algunos objetos <683>`, esta función no tiene ningún efecto." -#: ../Doc/c-api/refcounting.rst:138 +#: ../Doc/c-api/refcounting.rst:147 msgid "" -"The deallocation function can cause arbitrary Python code to be invoked " -"(e.g. when a class instance with a :meth:`~object.__del__` method is " +"The deallocation function can cause arbitrary Python code to be invoked (e." +"g. when a class instance with a :meth:`~object.__del__` method is " "deallocated). While exceptions in such code are not propagated, the " "executed code has free access to all Python global variables. This means " "that any object that is reachable from a global variable should be in a " @@ -264,17 +277,17 @@ msgstr "" "variable temporal, actualizar la estructura de datos de la lista y luego " "llamar a :c:func:`Py_DECREF` para la variable temporal." -#: ../Doc/c-api/refcounting.rst:153 +#: ../Doc/c-api/refcounting.rst:162 msgid "" "Similar to :c:func:`Py_DECREF`, but the object *o* can be ``NULL``, in which " "case this has no effect. The same warning from :c:func:`Py_DECREF` applies " "here as well." msgstr "" "Similar a :c:func:`Py_DECREF`, pero el objeto *o* puede ser ``NULL``, en " -"cuyo caso esto no tendría efecto alguno. El mismo aviso " -"de :c:func:`Py_DECREF` aplica aquí también." +"cuyo caso esto no tendría efecto alguno. El mismo aviso de :c:func:" +"`Py_DECREF` aplica aquí también." -#: ../Doc/c-api/refcounting.rst:160 +#: ../Doc/c-api/refcounting.rst:169 msgid "" "Release a :term:`strong reference` for object *o*. The object may be " "``NULL``, in which case the macro has no effect; otherwise the effect is the " @@ -290,7 +303,7 @@ msgstr "" "en este caso, ya que el macro usa cuidadosamente una variable temporal y " "asigna ``NULL`` al argumento antes de liberar la referencia." -#: ../Doc/c-api/refcounting.rst:168 +#: ../Doc/c-api/refcounting.rst:177 msgid "" "It is a good idea to use this macro whenever releasing a reference to an " "object that might be traversed during garbage collection." @@ -298,7 +311,7 @@ msgstr "" "Es buena idea usar este macro al liberar una referencia de un objeto que " "podría ser recorrido durante la recolección de basura." -#: ../Doc/c-api/refcounting.rst:171 +#: ../Doc/c-api/refcounting.rst:180 msgid "" "The macro argument is now only evaluated once. If the argument has side " "effects, these are no longer duplicated." @@ -306,7 +319,7 @@ msgstr "" "Ahora, el macro argumento solo se evalúa una vez. Si el argumento tiene " "efectos secundarios, estos ya no se duplican." -#: ../Doc/c-api/refcounting.rst:178 +#: ../Doc/c-api/refcounting.rst:187 msgid "" "Indicate taking a new :term:`strong reference` to object *o*. A function " "version of :c:func:`Py_XINCREF`. It can be used for runtime dynamic " @@ -316,17 +329,16 @@ msgstr "" "versión en forma de función de :c:func:`Py_XINCREF`. Puede utilizarse para " "la integración dinámica de Python en tiempo de ejecución." -#: ../Doc/c-api/refcounting.rst:185 +#: ../Doc/c-api/refcounting.rst:194 msgid "" -"Release a :term:`strong reference` to object *o*. A function version " -"of :c:func:`Py_XDECREF`. It can be used for runtime dynamic embedding of " -"Python." +"Release a :term:`strong reference` to object *o*. A function version of :c:" +"func:`Py_XDECREF`. It can be used for runtime dynamic embedding of Python." msgstr "" "Libera una :term:`strong reference` al objeto *o*. Una versión en forma de " "función de :c:func:`Py_XDECREF`. Puede utilizarse para la integración " "dinámica de Python en tiempo de ejecución." -#: ../Doc/c-api/refcounting.rst:192 +#: ../Doc/c-api/refcounting.rst:201 msgid "" "Macro safely releasing a :term:`strong reference` to object *dst* and " "setting *dst* to *src*." @@ -334,12 +346,12 @@ msgstr "" "Un macro que libera de forma segura un :term:`strong reference` al objeto " "*dst* y establece *dst* al valor *src*." -#: ../Doc/c-api/refcounting.rst:195 +#: ../Doc/c-api/refcounting.rst:204 msgid "As in case of :c:func:`Py_CLEAR`, \"the obvious\" code can be deadly::" msgstr "" "Como en el caso de :c:func:`Py_CLEAR`, el código \"obvio\" puede ser mortal::" -#: ../Doc/c-api/refcounting.rst:197 +#: ../Doc/c-api/refcounting.rst:206 msgid "" "Py_DECREF(dst);\n" "dst = src;" @@ -347,17 +359,18 @@ msgstr "" "Py_DECREF(dst);\n" "dst = src;" -#: ../Doc/c-api/refcounting.rst:200 +#: ../Doc/c-api/refcounting.rst:209 msgid "The safe way is::" msgstr "La forma segura es::" -#: ../Doc/c-api/refcounting.rst:202 +#: ../Doc/c-api/refcounting.rst:211 msgid "Py_SETREF(dst, src);" msgstr "Py_SETREF(dst, src);" -#: ../Doc/c-api/refcounting.rst:204 +#: ../Doc/c-api/refcounting.rst:213 +#, fuzzy 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 "" @@ -366,7 +379,7 @@ msgstr "" "secundario de *dst* siendo destruido ya no crea que *dst* señala a un objeto " "válido." -#: ../Doc/c-api/refcounting.rst:211 ../Doc/c-api/refcounting.rst:223 +#: ../Doc/c-api/refcounting.rst:220 ../Doc/c-api/refcounting.rst:232 msgid "" "The macro arguments are now only evaluated once. If an argument has side " "effects, these are no longer duplicated." @@ -374,7 +387,7 @@ msgstr "" "Los macro argumentos ahora solo se evalúan una vez. Si algún argumento tiene " "efectos secundarios, estos ya no se duplican." -#: ../Doc/c-api/refcounting.rst:218 +#: ../Doc/c-api/refcounting.rst:227 msgid "" "Variant of :c:macro:`Py_SETREF` macro that uses :c:func:`Py_XDECREF` instead " "of :c:func:`Py_DECREF`." diff --git a/c-api/reflection.po b/c-api/reflection.po index 14714def82..9c87ca2ebc 100644 --- a/c-api/reflection.po +++ b/c-api/reflection.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-05-15 13:52-0500\n" "Last-Translator: Rodrigo Tobar \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.6\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/reflection.rst:6 msgid "Reflection" @@ -35,23 +34,22 @@ msgid "" "Return a dictionary of the builtins in the current execution frame, or the " "interpreter of the thread state if no frame is currently executing." msgstr "" -"Retorna un diccionario de los builtins en el marco de ejecución actual, o " -"el intérprete del estado del hilo si no hay ningún marco en ejecución " +"Retorna un diccionario de los builtins en el marco de ejecución actual, o el " +"intérprete del estado del hilo si no hay ningún marco en ejecución " "actualmente." #: ../Doc/c-api/reflection.rst:22 msgid "" "Use either :c:func:`PyEval_GetFrameLocals` to obtain the same behaviour as " -"calling :func:`locals` in Python code, or else " -"call :c:func:`PyFrame_GetLocals` on the result of :c:func:`PyEval_GetFrame` " -"to access the :attr:`~frame.f_locals` attribute of the currently executing " -"frame." +"calling :func:`locals` in Python code, or else call :c:func:" +"`PyFrame_GetLocals` on the result of :c:func:`PyEval_GetFrame` to access " +"the :attr:`~frame.f_locals` attribute of the currently executing frame." msgstr "" "Utilice :c:func:`PyEval_GetFrameLocals` para obtener el mismo comportamiento " -"que llamando a :func:`locals` en código Python, o bien llama " -"a :c:func:`PyFrame_GetLocals` sobre el resultado " -"de :c:func:`PyEval_GetFrame` para acceder al " -"atributo :attr:`~frame.f_locals` del frame actualmente en ejecución." +"que llamando a :func:`locals` en código Python, o bien llama a :c:func:" +"`PyFrame_GetLocals` sobre el resultado de :c:func:`PyEval_GetFrame` para " +"acceder al atributo :attr:`~frame.f_locals` del frame actualmente en " +"ejecución." #: ../Doc/c-api/reflection.rst:27 msgid "" @@ -73,11 +71,11 @@ msgstr "" msgid "" "As this function returns a :term:`borrowed reference`, the dictionary " "returned for :term:`optimized scopes ` is cached on the " -"frame object and will remain alive as long as the frame object does. " -"Unlike :c:func:`PyEval_GetFrameLocals` and :func:`locals`, subsequent calls " -"to this function in the same frame will update the contents of the cached " -"dictionary to reflect changes in the state of the local variables rather " -"than returning a new snapshot." +"frame object and will remain alive as long as the frame object does. Unlike :" +"c:func:`PyEval_GetFrameLocals` and :func:`locals`, subsequent calls to this " +"function in the same frame will update the contents of the cached dictionary " +"to reflect changes in the state of the local variables rather than returning " +"a new snapshot." msgstr "" "Como esta función retorna una :term:`referencia prestada`, el diccionario " "retornado para :term:`ámbitos optimizados ` se almacena en " @@ -89,15 +87,15 @@ msgstr "" #: ../Doc/c-api/reflection.rst:39 msgid "" -"As part of :pep:`667`, :c:func:`PyFrame_GetLocals`, :func:`locals`, " -"and :attr:`FrameType.f_locals ` no longer make use of the " -"shared cache dictionary. Refer to the :ref:`What's New entry ` for additional details." +"As part of :pep:`667`, :c:func:`PyFrame_GetLocals`, :func:`locals`, and :" +"attr:`FrameType.f_locals ` no longer make use of the shared " +"cache dictionary. Refer to the :ref:`What's New entry ` for additional details." msgstr "" -"Como parte de :pep:`667`, :c:func:`PyFrame_GetLocals`, :func:`locals`, " -"y :attr:`FrameType.f_locals ` ya no utilizan el diccionario " -"de caché compartido. Consulte la entrada :ref:`What's New ` para más detalles." +"Como parte de :pep:`667`, :c:func:`PyFrame_GetLocals`, :func:`locals`, y :" +"attr:`FrameType.f_locals ` ya no utilizan el diccionario de " +"caché compartido. Consulte la entrada :ref:`What's New ` para más detalles." #: ../Doc/c-api/reflection.rst:50 msgid "Use :c:func:`PyEval_GetFrameGlobals` instead." @@ -112,9 +110,10 @@ msgstr "" "actual, o ``NULL`` si actualmente no se está ejecutando ningún marco." #: ../Doc/c-api/reflection.rst:58 +#, fuzzy msgid "" -"Return the current thread state's frame, which is ``NULL`` if no frame is " -"currently executing." +"Return the :term:`attached thread state`'s frame, which is ``NULL`` if no " +"frame is currently executing." msgstr "" "Retorna el marco del estado del hilo actual, que es ``NULL`` si actualmente " "no se está ejecutando ningún marco." @@ -126,8 +125,8 @@ msgstr "Vea también :c:func:`PyThreadState_GetFrame`." #: ../Doc/c-api/reflection.rst:74 msgid "" "Return a dictionary of the local variables in the current execution frame, " -"or ``NULL`` if no frame is currently executing. Equivalent to " -"calling :func:`locals` in Python code." +"or ``NULL`` if no frame is currently executing. Equivalent to calling :func:" +"`locals` in Python code." msgstr "" "Retorna un diccionario de las variables locales en el marco de ejecución " "actual, o ``NULL`` si no se está ejecutando ningún marco. Equivale a llamar " @@ -136,19 +135,19 @@ msgstr "" #: ../Doc/c-api/reflection.rst:78 msgid "" "To access :attr:`~frame.f_locals` on the current frame without making an " -"independent snapshot in :term:`optimized scopes `, " -"call :c:func:`PyFrame_GetLocals` on the result of :c:func:`PyEval_GetFrame`." +"independent snapshot in :term:`optimized scopes `, call :c:" +"func:`PyFrame_GetLocals` on the result of :c:func:`PyEval_GetFrame`." msgstr "" "Para acceder a :attr:`~frame.f_locals` en el marco actual sin hacer una " -"captura independiente en :term:`ámbitos optimizados `, llame " -"a :c:func:`PyFrame_GetLocals` sobre el resultado " -"de :c:func:`PyEval_GetFrame`." +"captura independiente en :term:`ámbitos optimizados `, " +"llame a :c:func:`PyFrame_GetLocals` sobre el resultado de :c:func:" +"`PyEval_GetFrame`." #: ../Doc/c-api/reflection.rst:87 msgid "" "Return a dictionary of the global variables in the current execution frame, " -"or ``NULL`` if no frame is currently executing. Equivalent to " -"calling :func:`globals` in Python code." +"or ``NULL`` if no frame is currently executing. Equivalent to calling :func:" +"`globals` in Python code." msgstr "" "Retorna un diccionario de las variables locales en el marco de ejecución " "actual, o ``NULL`` si no se está ejecutando ningún marco. Equivale a llamar " @@ -166,8 +165,8 @@ msgstr "" msgid "" "Return a description string, depending on the type of *func*. Return values " "include \"()\" for functions and methods, \" constructor\", \" instance\", " -"and \" object\". Concatenated with the result " -"of :c:func:`PyEval_GetFuncName`, the result will be a description of *func*." +"and \" object\". Concatenated with the result of :c:func:" +"`PyEval_GetFuncName`, the result will be a description of *func*." msgstr "" "Retorna una cadena de caracteres de descripción, según el tipo de *func*. " "Los valores de retorno incluyen \"()\" para funciones y métodos, " diff --git a/c-api/sequence.po b/c-api/sequence.po index 73c61bd28b..10b5d91cf2 100644 --- a/c-api/sequence.po +++ b/c-api/sequence.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-12 19:43+0200\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2020-05-17 14:28+0200\n" "Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.13.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/sequence.rst:6 msgid "Sequence Protocol" @@ -172,6 +172,16 @@ msgstr "" "``-1``. Esto es equivalente a la expresión de Python ``value in o``." #: ../Doc/c-api/sequence.rst:110 +msgid "Alias for :c:func:`PySequence_Contains`." +msgstr "" + +#: ../Doc/c-api/sequence.rst:112 +msgid "" +"The function is :term:`soft deprecated` and should no longer be used to " +"write new code." +msgstr "" + +#: ../Doc/c-api/sequence.rst:119 msgid "" "Return the first index *i* for which ``o[i] == value``. On error, return " "``-1``. This is equivalent to the Python expression ``o.index(value)``." @@ -180,7 +190,7 @@ msgstr "" "retorna ``-1``. Esto es equivalente a la expresión de Python ``o." "index(value)``." -#: ../Doc/c-api/sequence.rst:116 +#: ../Doc/c-api/sequence.rst:125 msgid "" "Return a list object with the same contents as the sequence or iterable *o*, " "or ``NULL`` on failure. The returned list is guaranteed to be new. This is " @@ -190,7 +200,7 @@ msgstr "" "*o*, o ``NULL`` en caso de error. La lista retornada está garantizada como " "nueva. Esto es equivalente a la expresión de Python ``list(o)``." -#: ../Doc/c-api/sequence.rst:125 +#: ../Doc/c-api/sequence.rst:134 msgid "" "Return a tuple object with the same contents as the sequence or iterable " "*o*, or ``NULL`` on failure. If *o* is a tuple, a new reference will be " @@ -202,7 +212,7 @@ msgstr "" "nueva referencia; de lo contrario, se construirá una tupla con el contenido " "apropiado. Esto es equivalente a la expresión de Python ``tupla(o)``." -#: ../Doc/c-api/sequence.rst:133 +#: ../Doc/c-api/sequence.rst:142 msgid "" "Return the sequence or iterable *o* as an object usable by the other " "``PySequence_Fast*`` family of functions. If the object is not a sequence or " @@ -214,7 +224,7 @@ msgstr "" "o no es iterable, lanza :exc:`TypeError` con *m* como texto del mensaje. " "Retorna ``NULL`` en caso de falla." -#: ../Doc/c-api/sequence.rst:138 +#: ../Doc/c-api/sequence.rst:147 msgid "" "The ``PySequence_Fast*`` functions are thus named because they assume *o* is " "a :c:type:`PyTupleObject` or a :c:type:`PyListObject` and access the data " @@ -224,7 +234,7 @@ msgstr "" "es un :c:type:`PyTupleObject` o un :c:type:`PyListObject` y acceden a los " "campos de datos de *o* directamente." -#: ../Doc/c-api/sequence.rst:142 +#: ../Doc/c-api/sequence.rst:151 msgid "" "As a CPython implementation detail, if *o* is already a sequence or list, it " "will be returned." @@ -232,7 +242,7 @@ msgstr "" "Como detalle de implementación de CPython, si *o* ya es una secuencia o " "lista, se retornará." -#: ../Doc/c-api/sequence.rst:148 +#: ../Doc/c-api/sequence.rst:157 #, fuzzy msgid "" "Returns the length of *o*, assuming that *o* was returned by :c:func:" @@ -247,7 +257,7 @@ msgstr "" "`PySequence_Fast_GET_SIZE` es más rápido porque puede suponer que *o* es una " "lista o tupla." -#: ../Doc/c-api/sequence.rst:157 +#: ../Doc/c-api/sequence.rst:166 msgid "" "Return the *i*\\ th element of *o*, assuming that *o* was returned by :c:" "func:`PySequence_Fast`, *o* is not ``NULL``, and that *i* is within bounds." @@ -256,7 +266,7 @@ msgstr "" "por :c:func:`PySequence_Fast`, *o* no es ``NULL`` y que *i* está dentro de " "los límites." -#: ../Doc/c-api/sequence.rst:163 +#: ../Doc/c-api/sequence.rst:172 msgid "" "Return the underlying array of PyObject pointers. Assumes that *o* was " "returned by :c:func:`PySequence_Fast` and *o* is not ``NULL``." @@ -264,7 +274,7 @@ msgstr "" "Retorna el arreglo subyacente de punteros `PyObject`. Asume que *o* fue " "retornado por :c:func:`PySequence_Fast` y *o* no es ``NULL``." -#: ../Doc/c-api/sequence.rst:166 +#: ../Doc/c-api/sequence.rst:175 msgid "" "Note, if a list gets resized, the reallocation may relocate the items array. " "So, only use the underlying array pointer in contexts where the sequence " @@ -274,7 +284,7 @@ msgstr "" "reubicar el arreglo de elementos. Por lo tanto, solo use el puntero de " "arreglo subyacente en contextos donde la secuencia no puede cambiar." -#: ../Doc/c-api/sequence.rst:173 +#: ../Doc/c-api/sequence.rst:182 msgid "" "Return the *i*\\ th element of *o* or ``NULL`` on failure. Faster form of :c:" "func:`PySequence_GetItem` but without checking that :c:func:" @@ -286,7 +296,7 @@ msgstr "" "func:`PySequence_Check` en *o* es verdadero y sin ajuste para índices " "negativos." -#: ../Doc/c-api/sequence.rst:21 ../Doc/c-api/sequence.rst:123 +#: ../Doc/c-api/sequence.rst:21 ../Doc/c-api/sequence.rst:132 msgid "built-in function" msgstr "" @@ -294,6 +304,6 @@ msgstr "" msgid "len" msgstr "" -#: ../Doc/c-api/sequence.rst:123 +#: ../Doc/c-api/sequence.rst:132 msgid "tuple" msgstr "" diff --git a/c-api/slice.po b/c-api/slice.po index ce1caa9568..a07d74b668 100644 --- a/c-api/slice.po +++ b/c-api/slice.po @@ -10,17 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2025-07-16 18:09-0500\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language-Team: python-doc-es\n" "Language: es\n" +"Language-Team: python-doc-es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.6\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/slice.rst:6 msgid "Slice Objects" @@ -28,77 +27,84 @@ msgstr "Objetos rebanada (*slice*)" #: ../Doc/c-api/slice.rst:11 msgid "" -"The type object for slice objects. This is the same as :class:`slice` in the Python " -"layer." +"The type object for slice objects. This is the same as :class:`slice` in " +"the Python layer." msgstr "" -"El objeto tipo para objetos rebanadas. Esto es lo mismo que :class:`slice` en la capa " -"de Python." +"El objeto tipo para objetos rebanadas. Esto es lo mismo que :class:`slice` " +"en la capa de Python." #: ../Doc/c-api/slice.rst:17 msgid "" -"Return true if *ob* is a slice object; *ob* must not be ``NULL``. This function " -"always succeeds." +"Return true if *ob* is a slice object; *ob* must not be ``NULL``. This " +"function always succeeds." msgstr "" -"Retorna verdadero si *ob* es un objeto rebanada; *ob* no debe ser ``NULL``. Esta " -"función siempre funciona correctamente." +"Retorna verdadero si *ob* es un objeto rebanada; *ob* no debe ser ``NULL``. " +"Esta función siempre funciona correctamente." #: ../Doc/c-api/slice.rst:23 msgid "" -"Return a new slice object with the given values. The *start*, *stop*, and *step* " -"parameters are used as the values of the slice object attributes of the same names. " -"Any of the values may be ``NULL``, in which case the ``None`` will be used for the " -"corresponding attribute." +"Return a new slice object with the given values. The *start*, *stop*, and " +"*step* parameters are used as the values of the slice object attributes of " +"the same names. Any of the values may be ``NULL``, in which case the " +"``None`` will be used for the corresponding attribute." msgstr "" -"Retorna un nuevo objeto rebanada con los valores dados. Los parámetros *start*, " -"*stop* y *step* se utilizan como los valores de los atributos del objeto rebanada de " -"los mismos nombres. Cualquiera de los valores puede ser ``NULL``, en cuyo caso se " -"usará ``None`` para el atributo correspondiente." +"Retorna un nuevo objeto rebanada con los valores dados. Los parámetros " +"*start*, *stop* y *step* se utilizan como los valores de los atributos del " +"objeto rebanada de los mismos nombres. Cualquiera de los valores puede ser " +"``NULL``, en cuyo caso se usará ``None`` para el atributo correspondiente." #: ../Doc/c-api/slice.rst:28 -msgid "Return ``NULL`` with an exception set if the new object could not be allocated." +msgid "" +"Return ``NULL`` with an exception set if the new object could not be " +"allocated." msgstr "" -"Retorna ``NULL`` con una excepción establecida si no se ha podido asignar el nuevo " -"objeto." +"Retorna ``NULL`` con una excepción establecida si no se ha podido asignar el " +"nuevo objeto." #: ../Doc/c-api/slice.rst:34 msgid "" -"Retrieve the start, stop and step indices from the slice object *slice*, assuming a " -"sequence of length *length*. Treats indices greater than *length* as errors." +"Retrieve the start, stop and step indices from the slice object *slice*, " +"assuming a sequence of length *length*. Treats indices greater than *length* " +"as errors." msgstr "" -"Recupera los índices *start*, *stop* y *step* del objeto rebanada *slice*, suponiendo " -"una secuencia de longitud *length*. Trata los índices mayores que *length* como " -"errores." +"Recupera los índices *start*, *stop* y *step* del objeto rebanada *slice*, " +"suponiendo una secuencia de longitud *length*. Trata los índices mayores que " +"*length* como errores." #: ../Doc/c-api/slice.rst:38 msgid "" -"Returns ``0`` on success and ``-1`` on error with no exception set (unless one of the " -"indices was not ``None`` and failed to be converted to an integer, in which case " -"``-1`` is returned with an exception set)." +"Returns ``0`` on success and ``-1`` on error with no exception set (unless " +"one of the indices was not ``None`` and failed to be converted to an " +"integer, in which case ``-1`` is returned with an exception set)." msgstr "" "Retorna ``0`` en caso de éxito y ``-1`` en caso de error sin una excepción " -"establecida (a menos que uno de los índices no sea ``None`` y no se haya convertido a " -"un entero, en cuyo caso ``- 1`` se retorna con una excepción establecida)." +"establecida (a menos que uno de los índices no sea ``None`` y no se haya " +"convertido a un entero, en cuyo caso ``- 1`` se retorna con una excepción " +"establecida)." #: ../Doc/c-api/slice.rst:42 msgid "You probably do not want to use this function." msgstr "Probablemente no quiera usar esta función." #: ../Doc/c-api/slice.rst:44 ../Doc/c-api/slice.rst:75 -msgid "The parameter type for the *slice* parameter was ``PySliceObject*`` before." -msgstr "El tipo de parámetro para el parámetro *slice* era ``PySliceObject*`` antes." +msgid "" +"The parameter type for the *slice* parameter was ``PySliceObject*`` before." +msgstr "" +"El tipo de parámetro para el parámetro *slice* era ``PySliceObject*`` antes." #: ../Doc/c-api/slice.rst:51 msgid "" -"Usable replacement for :c:func:`PySlice_GetIndices`. Retrieve the start, stop, and " -"step indices from the slice object *slice* assuming a sequence of length *length*, " -"and store the length of the slice in *slicelength*. Out of bounds indices are " -"clipped in a manner consistent with the handling of normal slices." -msgstr "" -"Reemplazo utilizable para :c:func:`PySlice_GetIndices`. Recupera los índices de " -"*start*, *stop*, y *step* del objeto rebanada *slice* asumiendo una secuencia de " -"longitud *length*, y almacena la longitud de la rebanada en *slicelength*. Los " -"índices fuera de los límites se recortan de manera coherente con el manejo de " -"sectores normales." +"Usable replacement for :c:func:`PySlice_GetIndices`. Retrieve the start, " +"stop, and step indices from the slice object *slice* assuming a sequence of " +"length *length*, and store the length of the slice in *slicelength*. Out of " +"bounds indices are clipped in a manner consistent with the handling of " +"normal slices." +msgstr "" +"Reemplazo utilizable para :c:func:`PySlice_GetIndices`. Recupera los índices " +"de *start*, *stop*, y *step* del objeto rebanada *slice* asumiendo una " +"secuencia de longitud *length*, y almacena la longitud de la rebanada en " +"*slicelength*. Los índices fuera de los límites se recortan de manera " +"coherente con el manejo de sectores normales." #: ../Doc/c-api/slice.rst:57 msgid "Return ``0`` on success and ``-1`` on error with an exception set." @@ -108,21 +114,24 @@ msgstr "" #: ../Doc/c-api/slice.rst:60 msgid "" -"This function is considered not safe for resizable sequences. Its invocation should " -"be replaced by a combination of :c:func:`PySlice_Unpack` " -"and :c:func:`PySlice_AdjustIndices` where ::" +"This function is considered not safe for resizable sequences. Its invocation " +"should be replaced by a combination of :c:func:`PySlice_Unpack` and :c:func:" +"`PySlice_AdjustIndices` where ::" msgstr "" -"Esta función se considera no segura para secuencias redimensionables. Su invocación " -"debe ser reemplazada por una combinación de :c:func:`PySlice_Unpack` " -"y :c:func:`PySlice_AdjustIndices` donde::" +"Esta función se considera no segura para secuencias redimensionables. Su " +"invocación debe ser reemplazada por una combinación de :c:func:" +"`PySlice_Unpack` y :c:func:`PySlice_AdjustIndices` donde::" #: ../Doc/c-api/slice.rst:64 +#, python-brace-format msgid "" -"if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {\n" +"if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) " +"< 0) {\n" " // return error\n" "}" msgstr "" -"if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {\n" +"if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) " +"< 0) {\n" " // retorna un error\n" "}" @@ -131,6 +140,7 @@ msgid "is replaced by ::" msgstr "es reemplazado por::" #: ../Doc/c-api/slice.rst:70 +#, python-brace-format msgid "" "if (PySlice_Unpack(slice, &start, &stop, &step) < 0) {\n" " // return error\n" @@ -144,73 +154,88 @@ msgstr "" #: ../Doc/c-api/slice.rst:79 msgid "" -"If ``Py_LIMITED_API`` is not set or set to the value between ``0x03050400`` and " -"``0x03060000`` (not including) or ``0x03060100`` or higher :c:func:`!" -"PySlice_GetIndicesEx` is implemented as a macro using :c:func:`!PySlice_Unpack` " -"and :c:func:`!PySlice_AdjustIndices`. Arguments *start*, *stop* and *step* are " -"evaluated more than once." -msgstr "" -"Si ``Py_LIMITED_API`` no se establece o se establece el valor entre ``0x03050400`` y " -"``0x03060000`` (sin incluir) o ``0x03060100`` o un superior :c:func:`!" -"PySlice_GetIndicesEx` se implementa como un macro usando :c:func:`! PySlice_Unpack` " -"y :c:func:`!PySlice_AdjustIndices`. Los argumentos *start*, *stop* y *step* se " -"evalúan más de una vez." +"If ``Py_LIMITED_API`` is not set or set to the value between ``0x03050400`` " +"and ``0x03060000`` (not including) or ``0x03060100`` or higher :c:func:`!" +"PySlice_GetIndicesEx` is implemented as a macro using :c:func:`!" +"PySlice_Unpack` and :c:func:`!PySlice_AdjustIndices`. Arguments *start*, " +"*stop* and *step* are evaluated more than once." +msgstr "" +"Si ``Py_LIMITED_API`` no se establece o se establece el valor entre " +"``0x03050400`` y ``0x03060000`` (sin incluir) o ``0x03060100`` o un " +"superior :c:func:`!PySlice_GetIndicesEx` se implementa como un macro usando :" +"c:func:`! PySlice_Unpack` y :c:func:`!PySlice_AdjustIndices`. Los argumentos " +"*start*, *stop* y *step* se evalúan más de una vez." #: ../Doc/c-api/slice.rst:86 msgid "" -"If ``Py_LIMITED_API`` is set to the value less than ``0x03050400`` or between " -"``0x03060000`` and ``0x03060100`` (not including) :c:func:`!PySlice_GetIndicesEx` is " -"a deprecated function." +"If ``Py_LIMITED_API`` is set to the value less than ``0x03050400`` or " +"between ``0x03060000`` and ``0x03060100`` (not including) :c:func:`!" +"PySlice_GetIndicesEx` is a deprecated function." msgstr "" -"Si ``Py_LIMITED_API`` se establece en un valor menor que ``0x03050400`` o entre " -"``0x03060000`` y ``0x03060100`` (sin incluir) :c:func:`!PySlice_GetIndicesEx` es una " -"función obsoleta." +"Si ``Py_LIMITED_API`` se establece en un valor menor que ``0x03050400`` o " +"entre ``0x03060000`` y ``0x03060100`` (sin incluir) :c:func:`!" +"PySlice_GetIndicesEx` es una función obsoleta." #: ../Doc/c-api/slice.rst:94 msgid "" -"Extract the start, stop and step data members from a slice object as C integers. " -"Silently reduce values larger than ``PY_SSIZE_T_MAX`` to ``PY_SSIZE_T_MAX``, silently " -"boost the start and stop values less than ``PY_SSIZE_T_MIN`` to ``PY_SSIZE_T_MIN``, " -"and silently boost the step values less than ``-PY_SSIZE_T_MAX`` to ``-" +"Extract the start, stop and step data members from a slice object as C " +"integers. Silently reduce values larger than ``PY_SSIZE_T_MAX`` to " +"``PY_SSIZE_T_MAX``, silently boost the start and stop values less than " +"``PY_SSIZE_T_MIN`` to ``PY_SSIZE_T_MIN``, and silently boost the step values " +"less than ``-PY_SSIZE_T_MAX`` to ``-PY_SSIZE_T_MAX``." +msgstr "" +"Extrae los miembros de datos *start*, *stop*, y *step* de un objeto rebanada " +"como enteros en C. Reduce silenciosamente los valores mayores que " +"``PY_SSIZE_T_MAX`` a ``PY_SSIZE_T_MAX``, aumenta silenciosamente los valores " +"*start* y *stop* inferiores a ``PY_SSIZE_T_MIN`` a ``PY_SSIZE_T_MIN``, y " +"silenciosamente aumenta los valores de *step* a menos de ``-PY_SSE`` a ``-" "PY_SSIZE_T_MAX``." -msgstr "" -"Extrae los miembros de datos *start*, *stop*, y *step* de un objeto rebanada como " -"enteros en C. Reduce silenciosamente los valores mayores que ``PY_SSIZE_T_MAX`` a " -"``PY_SSIZE_T_MAX``, aumenta silenciosamente los valores *start* y *stop* inferiores a " -"``PY_SSIZE_T_MIN`` a ``PY_SSIZE_T_MIN``, y silenciosamente aumenta los valores de " -"*step* a menos de ``-PY_SSE`` a ``-PY_SSIZE_T_MAX``." #: ../Doc/c-api/slice.rst:100 msgid "Return ``-1`` with an exception set on error, ``0`` on success." msgstr "" -"Retorna ``-1`` con una excepción establecida en caso de error, ``0`` en caso de éxito." +"Retorna ``-1`` con una excepción establecida en caso de error, ``0`` en caso " +"de éxito." #: ../Doc/c-api/slice.rst:107 msgid "" -"Adjust start/end slice indices assuming a sequence of the specified length. Out of " -"bounds indices are clipped in a manner consistent with the handling of normal slices." +"Adjust start/end slice indices assuming a sequence of the specified length. " +"Out of bounds indices are clipped in a manner consistent with the handling " +"of normal slices." msgstr "" -"Ajusta los índices de corte de inicio/fin asumiendo una secuencia de la longitud " -"especificada. Los índices fuera de los límites se recortan de manera coherente con el " -"manejo de sectores normales." +"Ajusta los índices de corte de inicio/fin asumiendo una secuencia de la " +"longitud especificada. Los índices fuera de los límites se recortan de " +"manera coherente con el manejo de sectores normales." #: ../Doc/c-api/slice.rst:111 -msgid "Return the length of the slice. Always successful. Doesn't call Python code." +msgid "" +"Return the length of the slice. Always successful. Doesn't call Python " +"code." msgstr "" -"Retorna la longitud de la rebanada. Siempre exitoso. No llama al código de Python." +"Retorna la longitud de la rebanada. Siempre exitoso. No llama al código de " +"Python." #: ../Doc/c-api/slice.rst:118 msgid "Ellipsis Object" msgstr "Objeto elipsis" #: ../Doc/c-api/slice.rst:123 +#, fuzzy +msgid "" +"The type of Python :const:`Ellipsis` object. Same as :class:`types." +"EllipsisType` in the Python layer." +msgstr "" +"El objeto tipo para objetos rebanadas. Esto es lo mismo que :class:`slice` " +"en la capa de Python." + +#: ../Doc/c-api/slice.rst:129 msgid "" -"The Python ``Ellipsis`` object. This object has no methods. Like :c:data:`Py_None`, " -"it is an :term:`immortal` singleton object." +"The Python ``Ellipsis`` object. This object has no methods. Like :c:data:" +"`Py_None`, it is an :term:`immortal` singleton object." msgstr "" "El objeto ``Ellipsis`` de Python. Este objeto no tiene métodos. Al igual " "que :c:data:`Py_None`, es un objeto singleton :term:`immortal`." -#: ../Doc/c-api/slice.rst:126 +#: ../Doc/c-api/slice.rst:132 msgid ":c:data:`Py_Ellipsis` is immortal." msgstr ":c:data:`Py_Ellipsis` es inmortal." diff --git a/c-api/stable.po b/c-api/stable.po index 6d460552fc..98bb0ecdde 100644 --- a/c-api/stable.po +++ b/c-api/stable.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-21 16:38-0300\n" +"POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2021-10-23 03:44-0500\n" "Last-Translator: José Luis Salgado Banda \n" "Language: es\n" @@ -19,7 +19,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.18.0\n" #: ../Doc/c-api/stable.rst:7 msgid "C API Stability" @@ -112,11 +112,11 @@ msgid "" "spend extra effort adjusting to changes." msgstr "" -#: ../Doc/c-api/stable.rst:56 +#: ../Doc/c-api/stable.rst:57 msgid "Stable Application Binary Interface" msgstr "Interfaz binaria de aplicación estable" -#: ../Doc/c-api/stable.rst:58 +#: ../Doc/c-api/stable.rst:59 #, fuzzy msgid "" "For simplicity, this document talks about *extensions*, but the Limited API " @@ -127,17 +127,17 @@ msgstr "" "limitada y la ABI estable funcionan de la misma forma para todos los usos de " "la API - por ejemplo, incrustar Python.)" -#: ../Doc/c-api/stable.rst:65 +#: ../Doc/c-api/stable.rst:66 #, fuzzy msgid "Limited C API" msgstr "Advertencias de la API limitada" -#: ../Doc/c-api/stable.rst:67 +#: ../Doc/c-api/stable.rst:68 #, fuzzy msgid "" "Python 3.2 introduced the *Limited API*, a subset of Python's C API. " -"Extensions that only use the Limited API can be compiled once and work with " -"multiple versions of Python. Contents of the Limited API are :ref:`listed " +"Extensions that only use the Limited API can be compiled once and be loaded " +"on multiple versions of Python. Contents of the Limited API are :ref:`listed " "below `." msgstr "" "En Python 3.2 se introdujo la *API limitada*, un subconjunto de la API en C " @@ -145,7 +145,7 @@ msgstr "" "una vez y funcionan con múltiples versiones de Python. El contenido de la " "API limitada es :ref:`enumerado a continuación `." -#: ../Doc/c-api/stable.rst:74 +#: ../Doc/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." @@ -153,14 +153,13 @@ msgstr "" "Se define esta macro antes de incluir ``Python.h`` para optar por usar sólo " "la API limitada y para seleccionar la versión de la API limitada." -#: ../Doc/c-api/stable.rst:77 +#: ../Doc/c-api/stable.rst:78 #, fuzzy msgid "" "Define ``Py_LIMITED_API`` to the value of :c:macro:`PY_VERSION_HEX` " "corresponding to the lowest Python version your extension supports. The " -"extension will work without recompilation with all Python 3 releases from " -"the specified one onward, and can use Limited API introduced up to that " -"version." +"extension will be ABI-compatible with all Python 3 releases from the " +"specified one onward, and can use Limited API introduced up to that version." msgstr "" "Se define ``Py_LIMITED_API`` con el valor de :c:data:`PY_VERSION_HEX` " "correspondiente a la versión más baja de Python que soporte su extensión. La " @@ -168,7 +167,7 @@ msgstr "" "Python 3 desde la especificada en adelante, y se puede usar la API limitada " "que se introdujo hasta esa versión." -#: ../Doc/c-api/stable.rst:83 +#: ../Doc/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 " @@ -178,7 +177,7 @@ msgstr "" "una versión menor mínima (por ejemplo, ``0x030A0000`` para Python 3.10) para " "tener estabilidad cuando se compila con futuras versiones de Python." -#: ../Doc/c-api/stable.rst:87 +#: ../Doc/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)." @@ -186,17 +185,26 @@ msgstr "" "También se puede definir ``Py_LIMITED_API`` con ``3``. Esto funciona igual " "que ``0x03020000`` (Python 3.2, la función que introdujo la API limitada)." -#: ../Doc/c-api/stable.rst:94 +#: ../Doc/c-api/stable.rst:95 msgid "Stable ABI" msgstr "" -#: ../Doc/c-api/stable.rst:96 +#: ../Doc/c-api/stable.rst:97 msgid "" "To enable this, Python provides a *Stable ABI*: a set of symbols that will " -"remain compatible across Python 3.x versions." +"remain ABI-compatible across Python 3.x versions." msgstr "" -#: ../Doc/c-api/stable.rst:99 +#: ../Doc/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 " +"signatures. However, other changes in Python can change the *behavior* of " +"extensions. See Python's Backwards Compatibility Policy (:pep:`387`) for " +"details." +msgstr "" + +#: ../Doc/c-api/stable.rst:108 #, fuzzy msgid "" "The Stable ABI contains symbols exposed in the :ref:`Limited API