8000 Traducido library/isolating-extending by cmaureir · Pull Request #2262 · python/python-docs-es · GitHub
[go: up one dir, main page]

Skip to content

Traducido library/isolating-extending #2262

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Mar 13, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Apply suggestions from code review
Co-authored-by: Marcos Medrano <786907+mmmarcos@users.noreply.github.com>
  • Loading branch information
cmaureir and mmmarcos authored Mar 12, 2023
commit 0b748323722de793538e5dee2a06fb221a6e1050
134 changes: 67 additions & 67 deletions howto/isolating-extensions.po
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ msgstr ""

#: ../Doc/howto/isolating-extensions.rst:21
msgid "Who should read this"
msgstr "¿Quien debería leer esto?"
msgstr "¿Quién debería leer esto?"

#: ../Doc/howto/isolating-extensions.rst:23
msgid ""
Expand Down Expand Up @@ -124,7 +124,7 @@ msgid ""
msgstr ""
"Históricamente, los módulos de extensión de Python no manejan bien este caso "
"de uso. Muchos módulos de extensión (e incluso algunos módulos stdlib) usan "
"el estado global *per-process*, porque las variables C ``static`` son "
"el estado global *por-proceso*, porque las variables C ``static`` son "
"extremadamente fáciles de usar. Así, los datos que deberían ser específicos "
"de un intérprete acaban siendo compartidos entre intérpretes. A menos que el "
"desarrollador de la extensión tenga cuidado, es muy fácil introducir casos "
Expand All @@ -137,13 +137,13 @@ msgid ""
"authors tend to not keep multiple interpreters in mind when developing, and "
"it is currently cumbersome to test the behavior."
msgstr ""
"Desafortunadamente, el estado *per-interpreter* no es fácil de lograr. Los "
"Desafortunadamente, el estado *por-intérprete* no es fácil de lograr. Los "
"autores de extensiones tienden a no tener en cuenta múltiples intérpretes "
"cuando desarrollan, y actualmente es engorroso probar el comportamiento."

#: ../Doc/howto/isolating-extensions.rst:61
msgid "Enter Per-Module State"
msgstr "Ingrese el estado por módulo"
msgstr "Ingrese al estado por módulo"

#: ../Doc/howto/isolating-extensions.rst:63
msgid ""
Expand All @@ -155,7 +155,7 @@ msgid ""
"loaded in a single interpreter."
msgstr ""
"En lugar de centrarse en el estado por intérprete, la API C de Python está "
"evolucionando para admitir mejor el estado *per-module* más granular. Esto "
"evolucionando para admitir mejor el estado *por-módulo* más granular. Esto "
"significa que los datos de nivel C se adjuntan a un *module object*. Cada "
"intérprete crea su propio objeto de módulo, manteniendo los datos separados. "
"Para probar el aislamiento, se pueden cargar varios objetos de módulo "
Expand Down Expand Up @@ -191,7 +191,7 @@ msgstr ""

#: ../Doc/howto/isolating-extensions.rst:85
msgid "Isolated Module Objects"
msgstr "Objetos de módulos aislados"
msgstr "Objetos módulos aislados"

#: ../Doc/howto/isolating-extensions.rst:87
msgid ""
Expand Down Expand Up @@ -231,7 +231,7 @@ msgstr ""

#: ../Doc/howto/isolating-extensions.rst:115
msgid "Surprising Edge Cases"
msgstr "Casos de borde sorprendentes"
msgstr "Casos extremos sorprendentes"

#: ../Doc/howto/isolating-extensions.rst:117
msgid ""
Expand Down Expand Up @@ -286,14 +286,14 @@ msgstr ""

#: ../Doc/howto/isolating-extensions.rst:156
msgid "The ``readline`` module manages *the* terminal."
msgstr "El módulo ``readline`` gestiona el terminal *the*."
msgstr "El módulo ``readline`` gestiona *el* terminal."

#: ../Doc/howto/isolating-extensions.rst:157
msgid ""
"A module running on a circuit board wants to control *the* on-board LED."
msgstr ""
"Un módulo que se ejecuta en una placa de circuito quiere controlar el LED "
"integrado *the*."
"Un módulo que se ejecuta en una placa de circuito quiere controlar *el* LED "
"integrado."

#: ../Doc/howto/isolating-extensions.rst:160
msgid ""
Expand All @@ -303,8 +303,8 @@ msgid ""
"whether for Python or other languages). If that is not possible, consider "
"explicit locking."
msgstr ""
"En estos casos, el módulo Python debería proporcionar *access* al estado "
"global, en lugar de *own*. Si es posible, escriba el módulo para que varias "
"En estos casos, el módulo Python debería proporcionar *acceso* al estado "
"global, en lugar de *poseerlo*. Si es posible, escriba el módulo para que varias "
"copias del mismo puedan acceder al estado de forma independiente (junto con "
"otras bibliotecas, ya sea para Python u otros lenguajes). Si eso no es "
"posible, considere el bloqueo explícito."
Expand Down Expand Up @@ -444,15 +444,15 @@ msgstr ""

#: ../Doc/howto/isolating-extensions.rst:256
msgid "Heap Types"
msgstr "Tipos de montón"
msgstr "Tipos Heap"

#: ../Doc/howto/isolating-extensions.rst:258
msgid ""
"Traditionally, types defined in C code are *static*; that is, ``static "
"PyTypeObject`` structures defined directly in code and initialized using "
"``PyType_Ready()``."
msgstr ""
"Tradicionalmente, los tipos definidos en código C son *static*; es decir, "
"Tradicionalmente, los tipos definidos en código C son *estáticos*; es decir, "
"estructuras ``static PyTypeObject`` definidas directamente en el código e "
"inicializadas mediante ``PyType_Ready()``."

Expand Down Expand Up @@ -496,19 +496,20 @@ msgid ""
msgstr ""
"Debido a que son inmutables y globales de proceso, los tipos estáticos no "
"pueden acceder a \"su\" estado de módulo. Si algún método de este tipo "
"requiere acceso al estado del módulo, el tipo debe convertirse a *heap-"
"allocated type* o *heap type* para abreviar. Estos se corresponden más "
"estrechamente con las clases creadas por la instrucción ``class`` de Python."
"requiere acceso al estado del módulo, el tipo debe convertirse a *tipo "
"almacenado en memoria dinámica (heap)* o *tipo heap* para abreviar. Estos se "
"corresponden más estrechamente con las clases creadas por la instrucción "
"``class`` de Python."

#: ../Doc/howto/isolating-extensions.rst:282
msgid "For new modules, using heap types by default is a good rule of thumb."
msgstr ""
"Para los módulos nuevos, usar tipos de almacenamiento dinámico de forma "
"predeterminada es una buena regla general."
"Para los módulos nuevos, usar tipos heap de forma predeterminada es una "
"buena regla general."

#: ../Doc/howto/isolating-extensions.rst:286
msgid "Changing Static Types to Heap Types"
msgstr "Cambio de tipos estáticos a tipos de montón"
msgstr "Cambio de tipos estáticos a tipos heap"

#: ../Doc/howto/isolating-extensions.rst:288
msgid ""
Expand All @@ -519,13 +520,13 @@ msgid ""
"unintentionally change a few details (e.g. pickleability or inherited "
"slots). Always test the details that are important to you."
msgstr ""
"Los tipos estáticos se pueden convertir en tipos de montón, pero tenga en "
"cuenta que la API de tipo de montón no se diseñó para la conversión \"sin "
"pérdidas\" de tipos estáticos, es decir, para crear un tipo que funcione "
"exactamente como un tipo estático determinado. Por lo tanto, al reescribir "
"la definición de clase en una nueva API, es probable que cambie sin querer "
"algunos detalles (por ejemplo, capacidad de selección o espacios heredados). "
"Siempre pruebe los detalles que son importantes para usted."
"Los tipos estáticos se pueden convertir en tipos heap, pero tenga en cuenta "
"que la API de tipo heap no se diseñó para la conversión \"sin pérdidas\" de "
"tipos estáticos, es decir, para crear un tipo que funcione exactamente como "
"un tipo estático determinado. Por lo tanto, al reescribir la definición de "
"clase en una nueva API, es probable que cambie sin querer algunos detalles "
"(por ejemplo, capacidad de selección o espacios heredados). Siempre pruebe "
"los detalles que son importantes para usted."

#: ../Doc/howto/isolating-extensions.rst:297
msgid ""
Expand All @@ -540,7 +541,7 @@ msgid ""
"Unlike static types, heap type objects are mutable by default. Use the :c:"
"data:`Py_TPFLAGS_IMMUTABLETYPE` flag to prevent mutability."
msgstr ""
"A diferencia de los tipos estáticos, los objetos de tipo montón son mutables "
"A diferencia de los tipos estáticos, los objetos de tipo heap son mutables "
"de forma predeterminada. Utilice el indicador :c:data:"
"`Py_TPFLAGS_IMMUTABLETYPE` para evitar la mutabilidad."

Expand All @@ -550,25 +551,25 @@ msgid ""
"become possible to instantiate them from Python code. You can prevent this "
"with the :c:data:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag."
msgstr ""
"Los tipos de almacenamiento dinámico heredan :c:member:`~PyTypeObject."
"tp_new` de forma predeterminada, por lo que es posible crear instancias de "
"ellos desde el código de Python. Puede evitar esto con el indicador :c:data:"
"Los tipos heap heredan :c:member:`~PyTypeObject.tp_new` de forma "
"predeterminada, por lo que es posible crear instancias de ellos desde el "
"código de Python. Puede evitar esto con el indicador :c:data:"
"`Py_TPFLAGS_DISALLOW_INSTANTIATION`."

#: ../Doc/howto/isolating-extensions.rst:308
msgid "Defining Heap Types"
msgstr "Definición de tipos de almacenamiento dinámico"
msgstr "Definición de tipos heap"

#: ../Doc/howto/isolating-extensions.rst:310
msgid ""
"Heap types can be created by filling a :c:struct:`PyType_Spec` structure, a "
"description or \"blueprint\" of a class, and calling :c:func:"
"`PyType_FromModuleAndSpec` to construct a new class object."
msgstr ""
"Los tipos de almacenamiento dinámico se pueden crear completando una "
"estructura :c:struct:`PyType_Spec`, una descripción o \"modelo\" de una "
"clase y llamando a :c:func:`PyType_FromModuleAndSpec` para construir un "
"nuevo objeto de clase."
"Los tipos heap se pueden crear completando una estructura "
":c:struct:`PyType_Spec`, una descripción o \"modelo\" de una clase y "
"llamando a :c:func:`PyType_FromModuleAndSpec` para construir un nuevo objeto "
"de clase."

#: ../Doc/howto/isolating-extensions.rst:315
msgid ""
Expand All @@ -577,17 +578,16 @@ msgid ""
"allowing access to the module state from methods."
msgstr ""
"Otras funciones, como :c:func:`PyType_FromSpec`, también pueden crear tipos "
"de almacenamiento dinámico, pero :c:func:`PyType_FromModuleAndSpec` asocia "
"el módulo con la clase, lo que permite el acceso al estado del módulo desde "
"los métodos."
"heap, pero :c:func:`PyType_FromModuleAndSpec` asocia el módulo con la clase, "
"lo que permite el acceso al estado del módulo desde los métodos."

#: ../Doc/howto/isolating-extensions.rst:319
msgid ""
"The class should generally be stored in *both* the module state (for safe "
"access from C) and the module's ``__dict__`` (for access from Python code)."
msgstr ""
"La clase generalmente debe almacenarse en *both*, el estado del módulo (para "
"acceso seguro desde C) y el ``__dict__`` del módulo (para acceso desde "
"La clase generalmente debe almacenarse en *ambos*, el estado del módulo "
"(para acceso seguro desde C) y el ``__dict__`` del módulo (para acceso desde "
"código Python)."

#: ../Doc/howto/isolating-extensions.rst:325
Expand All @@ -600,19 +600,19 @@ msgid ""
"the type isn't destroyed before all its instances are, but may result in "
"reference cycles that need to be broken by the garbage collector."
msgstr ""
"Las instancias de tipos de almacenamiento dinámico contienen una referencia "
"a su tipo. Esto garantiza que el tipo no se destruya antes de que se "
"destruyan todas sus instancias, pero puede generar ciclos de referencia que "
"el recolector de elementos no utilizados debe interrumpir."
"Las instancias de tipos heap contienen una referencia a su tipo. Esto "
"garantiza que el tipo no se destruya antes de que se destruyan todas sus "
"instancias, pero puede generar ciclos de referencia que el recolector de "
"elementos no utilizados debe interrumpir."

#: ../Doc/howto/isolating-extensions.rst:332
msgid ""
"To avoid memory leaks, instances of heap types must implement the garbage "
"collection protocol. That is, heap types should:"
msgstr ""
"Para evitar pérdidas de memoria, las instancias de los tipos de "
"almacenamiento dinámico deben implementar el protocolo de recolección de "
"elementos no utilizados. Es decir, los tipos de montón deben:"
"Para evitar pérdidas de memoria, las instancias de los tipos heap deben "
"implementar el protocolo de recolección de elementos no utilizados. Es decir, "
"los tipos heap deben:"

#: ../Doc/howto/isolating-extensions.rst:336
msgid "Have the :c:data:`Py_TPFLAGS_HAVE_GC` flag."
Expand Down Expand Up @@ -700,7 +700,7 @@ msgid ""
msgstr ""
"Acceder al estado de nivel de módulo desde los métodos de una clase es algo "
"más complicado, pero es posible gracias a la API introducida en Python 3.9. "
"Para obtener el estado, primero debe obtener el *defining class* y luego "
"Para obtener el estado, primero debe obtener la *clase de definición* y luego "
"obtener el estado del módulo."

#: ../Doc/howto/isolating-extensions.rst:388
Expand All @@ -709,9 +709,9 @@ msgid ""
"that method's \"defining class\" for short. The defining class can have a "
"reference to the module it is part of."
msgstr ""
"El obstáculo más grande es obtener *the class a method was defined in*, o la "
"\"clase de definición\" de ese método para abreviar. La clase de definición "
"puede tener una referencia al módulo del que forma parte."
"El obstáculo más grande es obtener *la clase en la que se definió un método*, "
"o la \"clase de definición\" de ese método para abreviar. La clase de "
"definición puede tener una referencia al módulo del que forma parte."

#: ../Doc/howto/isolating-extensions.rst:392
msgid ""
Expand All @@ -720,7 +720,7 @@ msgid ""
"to that subclass, which may be defined in different module than yours."
msgstr ""
"No confunda la clase de definición con :c:expr:`Py_TYPE(self)`. Si se llama "
"al método en un *subclass* de su tipo, ``Py_TYPE(self)`` se referirá a esa "
"al método en una *subclase* de su tipo, ``Py_TYPE(self)`` se referirá a esa "
"subclase, que puede estar definida en un módulo diferente al suyo."

#: ../Doc/howto/isolating-extensions.rst:397
Expand Down Expand Up @@ -769,10 +769,10 @@ msgid ""
"allow passing in the defining class, unlike with :c:type:`PyCMethod`. The "
"same goes for getters and setters defined with :c:type:`PyGetSetDef`."
msgstr ""
"Los métodos de ranura, los equivalentes rápidos de C para métodos "
"especiales, como :c:member:`~PyNumberMethods.nb_add` para :py:attr:`~object."
"__add__` o :c:member:`~PyType.tp_new` para la inicialización, tienen una API "
"muy simple que no permite pasar la clase de definición, a diferencia de :c:"
"Los métodos slot, los equivalentes rápidos de C para métodos especiales, como "
":c:member:`~PyNumberMethods.nb_add` para :py:attr:`~object.__add__` o &qu 786A ot;
":c:member:`~PyType.tp_new` para la inicialización, tienen una API muy simple "
"que no permite pasar la clase de definición, a diferencia de :c:"
"type:`PyCMethod`. Lo mismo ocurre con los getters y setters definidos con :c:"
"type:`PyGetSetDef`."

Expand Down Expand Up @@ -844,8 +844,8 @@ msgstr "Problemas abiertos"
#: ../Doc/howto/isolating-extensions.rst:517
msgid "Several issues around per-module state and heap types are still open."
msgstr ""
"Varios problemas relacionados con el estado por módulo y los tipos de "
"almacenamiento dinámico todavía están abiertos."
"Varios problemas relacionados con el estado por módulo y los tipos heap "
"todavía están abiertos."

#: ../Doc/howto/isolating-extensions.rst:519
msgid ""
Expand All @@ -868,20 +868,20 @@ msgid ""
"may change in the future—perhaps, ironically, to allow a proper solution for "
"per-class scope)."
msgstr ""
"Actualmente (a partir de Python 3.11) no es posible adjuntar el estado a un "
"*types* individual sin depender de los detalles de implementación de CPython "
"(que pueden cambiar en el futuro, tal vez, irónicamente, para permitir una "
"solución adecuada para el alcance por clase)."
"Actualmente (a partir de Python 3.11) no es posible adjuntar estado a "
"*tipos* individuales sin depender de los detalles de implementación de "
"CPython (que pueden cambiar en el futuro, tal vez, irónicamente, para "
"permitir una solución adecuada para el alcance por clase)."

#: ../Doc/howto/isolating-extensions.rst:533
msgid "Lossless Conversion to Heap Types"
msgstr "Conversión sin pérdidas a tipos de almacenamiento dinámico"
msgstr "Conversión sin pérdidas a tipos heap"

#: ../Doc/howto/isolating-extensions.rst:535
msgid ""
"The heap type API was not designed for \"lossless\" conversion from static "
"types; that is, creating a type that works exactly like a given static type."
msgstr ""
"La API de tipo montón no se diseñó para la conversión \"sin pérdidas\" de "
"tipos estáticos; es decir, crear un tipo que funcione exactamente como un "
"tipo estático determinado."
"La API de tipo heap no se diseñó para la conversión \"sin pérdidas\" de tipos "
"estáticos; es decir, crear un tipo que funcione exactamente como un tipo "
"estático determinado."
0