diff --git a/reference/executionmodel.po b/reference/executionmodel.po index c5aebbf634..d2c3a2d51f 100644 --- a/reference/executionmodel.po +++ b/reference/executionmodel.po @@ -6,27 +6,29 @@ # Check https://github.com/PyCampES/python-docs-es/blob/3.8/TRANSLATORS to # get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-05-05 12:54+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-26 09:14-0300\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.8.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Last-Translator: \n" +"Language: es\n" +"X-Generator: Poedit 2.3\n" #: ../Doc/reference/executionmodel.rst:6 msgid "Execution model" -msgstr "" +msgstr "Modelo de ejecución" #: ../Doc/reference/executionmodel.rst:15 msgid "Structure of a program" -msgstr "" +msgstr "Estructura de un programa" #: ../Doc/reference/executionmodel.rst:19 msgid "" @@ -40,6 +42,17 @@ msgid "" "argument passed to the built-in functions :func:`eval` and :func:`exec` is a " "code block." msgstr "" +"Un programa Python está construido a partir de bloques de código. Un :dfn:" +"`block` es un trozo de texto de un programa Python que se ejecuta como una " +"unidad. Los siguientes son bloques: un módulo, el cuerpo de una función y la " +"definición de una clase. Cada comando ingresado en el intérprete interactivo " +"es un bloque. Un archivo de script (un archivo provisto como entrada " +"estándar al intérprete, o especificado como argumento en la línea de comando " +"al intérprete) es un bloque de código. Un comando de script (un comando " +"especificado en la línea de comandos del intérprete con la opción :option:`-" +"c` es un bloque de código. El argumento cadena de caracteres que se envía a " +"las funciones incorporadas :func:`eval` y :func:`exec` es también un bloque " +"de código." #: ../Doc/reference/executionmodel.rst:31 msgid "" @@ -47,22 +60,30 @@ msgid "" "some administrative information (used for debugging) and determines where " "and how execution continues after the code block's execution has completed." msgstr "" +"Un bloque de código se ejecuta en un :dfn:`execution frame`. Un marco " +"contiene alguna información administrativa (que se usa para depuración) y " +"determina dónde y cómo continuará la ejecución una vez que el bloque de " +"código se haya completado." #: ../Doc/reference/executionmodel.rst:38 msgid "Naming and binding" -msgstr "" +msgstr "Nombres y vínculos" #: ../Doc/reference/executionmodel.rst:47 msgid "Binding of names" -msgstr "" +msgstr "Vinculación de nombres" #: ../Doc/reference/executionmodel.rst:53 msgid "" ":dfn:`Names` refer to objects. Names are introduced by name binding " "operations." msgstr "" +"Los :dfn:`Names` refieren a objetos. Los nombres se introducen por las " +"operaciones de vinculación de nombre (*name binding operations*)." +# ¿ target == objetivo ? #: ../Doc/reference/executionmodel.rst:57 +#, fuzzy msgid "" "The following constructs bind names: formal parameters to functions, :" "keyword:`import` statements, class and function definitions (these bind the " @@ -73,18 +94,35 @@ msgid "" "binds all names defined in the imported module, except those beginning with " "an underscore. This form may only be used at the module level." msgstr "" +"Las siguientes construcciones vinculan nombres: parámetros formales a las " +"funciones, declaraciones :keyword:`import`, definiciones de función y de " +"clase (éstas vinculan el nombre de la clase o función en el bloque de " +"definición), y objetivos que son identificadores si ocurren en una " +"asignación, encabezados de bucles :keyword:`for`, o luego de :keyword:`!as` " +"en una declaración :keyword:`with` o una cláusula :keyword:`except`. La " +"declaración :keyword:`!import` de la forma ``from ... import *`` vincula " +"todos los nombres definidos en el módulo importado, excepto aquellos que " +"comienzan con un guion bajo. Esta forma solamente puede ser usada a nivel de " +"módulo." #: ../Doc/reference/executionmodel.rst:67 +#, fuzzy msgid "" "A target occurring in a :keyword:`del` statement is also considered bound " "for this purpose (though the actual semantics are to unbind the name)." msgstr "" +"Un objetivo que ocurre en una declaración :keyword:`del` también está " +"considerado como vinculado para este propósito (aunque la semántica real es " +"desvincular el nombre)." #: ../Doc/reference/executionmodel.rst:70 msgid "" "Each assignment or import statement occurs within a block defined by a class " "or function definition or at the module level (the top-level code block)." msgstr "" +"Cada declaración de asignación o importación ocurre dentro de un bloque " +"determinado por una definición de clase o de función, o a nivel de módulo " +"(el bloque de código de máximo nivel)." #: ../Doc/reference/executionmodel.rst:75 msgid "" @@ -94,16 +132,25 @@ msgid "" "code block are local and global.) If a variable is used in a code block but " "not defined there, it is a :dfn:`free variable`." msgstr "" +"Si un nombre está vinculado en un bloque, es una variable local en ese " +"bloque, salvo que sea declarado como :keyword:`nonlocal` o :keyword:" +"`global`. Si un nombre está vinculado a nivel de módulo, es una variable " +"global. (Las variables del bloque de código del módulo son locales y " +"globales.) Si una variable se una en un bloque de código pero no está " +"definida ahí, es una :dfn:`free variable`." #: ../Doc/reference/executionmodel.rst:81 msgid "" "Each occurrence of a name in the program text refers to the :dfn:`binding` " "of that name established by the following name resolution rules." msgstr "" +"Cada ocurrencia de un nombre en el texto del programa se refiere al :dfn:" +"`binding` de ese nombre, establecido por las siguientes reglas de resolución " +"de nombres." #: ../Doc/reference/executionmodel.rst:87 msgid "Resolution of names" -msgstr "" +msgstr "Resolución de nombres" #: ../Doc/reference/executionmodel.rst:91 msgid "" @@ -113,13 +160,24 @@ msgid "" "contained within the defining one, unless a contained block introduces a " "different binding for the name." msgstr "" +"Un :dfn:`scope` define la visibilidad de un nombre en un bloque. Si una " +"variable local se define en un bloque, su ámbito (*scope*) incluye ese " +"bloque. Si la definición ocurre en un bloque de función, el ámbito se " +"extiende a cualquier bloque contenido en el bloque en donde está la " +"definición, a menos que uno de los bloques contenidos introduzca un vínculo " +"diferente para el nombre." +# ¿"the nearest enclosing scope" == "el ámbito que cierre más cerca"? #: ../Doc/reference/executionmodel.rst:99 +#, fuzzy msgid "" "When a name is used in a code block, it is resolved using the nearest " "enclosing scope. The set of all such scopes visible to a code block is " "called the block's :dfn:`environment`." msgstr "" +"Cuando un nombre es utilizado en un bloque de código, se resuelve utilizando " +"el ámbito de cierre más cercano. El conjunto de todos esos ámbitos visibles " +"para un bloque de código se llama el :dfn:`environment` del bloque." #: ../Doc/reference/executionmodel.rst:107 msgid "" @@ -129,6 +187,11 @@ msgid "" "is used, an :exc:`UnboundLocalError` exception is raised. :exc:" "`UnboundLocalError` is a subclass of :exc:`NameError`." msgstr "" +"Cuando un nombre no se encuentra, se lanza una excepción :exc:`NameError`. " +"Si el ámbito actual es una función, y el nombre se refiere a una variable " +"local que todavía no ha sido vinculada a un valor en el punto en el que " +"nombre es utilizado, se lanza una excepción :exc:`UnboundLocalError`. :exc:" +"`UnboundLocalError` es una subclase de :exc:`NameError`." #: ../Doc/reference/executionmodel.rst:113 msgid "" @@ -140,7 +203,17 @@ msgid "" "variables of a code block can be determined by scanning the entire text of " "the block for name binding operations." msgstr "" - +"Si una operación de vinculación de nombre ocurre en cualquier parte dentro " +"de un bloque de código, todos los usos del nombre dentro de ese bloque son " +"tratados como referencias al bloque actual. Esto puede llevar a errores " +"cuando el nombre es utilizado dentro del bloque antes de su vinculación. " +"Esta regla es sutil. Python carece de declaraciones y permite que las " +"operaciones de vinculación de nombres ocurran en cualquier lugar dentro del " +"bloque de código. Las variables locales de un bloque de código pueden " +"determinarse buscando operaciones de vinculación de nombres en el texto " +"completo del bloque." + +# Vi que en la memoria traducen builtin como "incorporado/a", pero no estoy seguro en este caso, ya que en varios lugares del archivo aparece utilizado como sustantivo. #: ../Doc/reference/executionmodel.rst:120 msgid "" "If the :keyword:`global` statement occurs within a block, all uses of the " @@ -152,28 +225,55 @@ msgid "" "found there, the builtins namespace is searched. The :keyword:`!global` " "statement must precede all uses of the name." msgstr "" - +"Si la declaración :keyword:`global` ocurre dentro de un bloque, todos los " +"usos del nombre especificado en la declaración se refieren a la vinculación " +"que ese nombre tiene en el espacio de nombres (*namespace*) de nivel " +"superior. Los nombres se resuelven en el espacio de nombres de nivel " +"superior buscando en el espacio de nombres global, es decir, el espacio de " +"nombres del módulo que contiene el bloque de código, y en el espacio de " +"nombres incorporado, el *namespace* del módulo :mod:`builtins`. La búsqueda " +"se realiza primero en el espacio de nombres global. Si el nombre no se " +"encuentra ahí, se busca en el espacio de nombres incorporado (*builtins " +"namespace*). La declaración :keyword:`!global` debe preceder a todos los " +"usos del nombre." + +# Tengo dudas con la palabra enclosing en este contexto. Aparece también en otras partes del archivo. #: ../Doc/reference/executionmodel.rst:129 +#, fuzzy msgid "" "The :keyword:`global` statement has the same scope as a name binding " "operation in the same block. If the nearest enclosing scope for a free " "variable contains a global statement, the free variable is treated as a " "global." msgstr "" +"La declaración :keyword:`global` tiene el mismo ámbito que una operación de " +"vinculación de nombre en el mismo bloque. Si el ámbito de cierre más cercano " +"para una variable libre contiene una declaración global, se trata a la " +"variable libre como global." +# Otra vez enclosing. #: ../Doc/reference/executionmodel.rst:135 +#, fuzzy msgid "" "The :keyword:`nonlocal` statement causes corresponding names to refer to " "previously bound variables in the nearest enclosing function scope. :exc:" "`SyntaxError` is raised at compile time if the given name does not exist in " "any enclosing function scope." msgstr "" +"La declaración :keyword:`nonlocal` causa que los nombre correspondientes se " +"refieran a variables previamente vinculadas en el ámbito de la función de " +"cierre más cercano. Se lanza un :exc:`SyntaxError` en tiempo de compilación " +"si el nombre dado no existe en ningún ámbito de las funciones dentro de las " +"cuales está." #: ../Doc/reference/executionmodel.rst:142 msgid "" "The namespace for a module is automatically created the first time a module " "is imported. The main module for a script is always called :mod:`__main__`." msgstr "" +"El espacio de nombres (*namespace*) para un módulo se crea automáticamente " +"la primera vez que se importa el módulo. El módulo principal de un *script* " +"siempre se llama :mod:`__main__`." #: ../Doc/reference/executionmodel.rst:145 msgid "" @@ -188,10 +288,23 @@ msgid "" "expressions since they are implemented using a function scope. This means " "that the following will fail::" msgstr "" +"Los bloques de definición de clase y los argumentos para :func:`exec` y :" +"func:`eval` son especiales en el contexto de la resolución de nombres. Una " +"definición de clase es una declaración ejecutable que puede usar y definir " +"nombres. Estas referencias siguen las reglas normales para la resolución de " +"nombres con la excepción de que se buscan las variables locales no " +"vinculadas en el espacio de nombres global. El espacio de nombres de la " +"definición de clase se vuelve el diccionario de atributos de la clase. El " +"ámbito de nombres definido en un bloque de clase está limitado a dicho " +"bloque; no se extiende a los bloques de código de los métodos. Esto incluye " +"las comprensiones y las expresiones generadoras (*generator expressions*), " +"dado que están implementadas usando el alcance de función. Esto implica que " +"lo siguiente fallará::" #: ../Doc/reference/executionmodel.rst:163 +#, fuzzy msgid "Builtins and restricted execution" -msgstr "" +msgstr "Módulos incorporados (*builtins*) y ejecución restringida" #: ../Doc/reference/executionmodel.rst:169 msgid "" @@ -200,6 +313,11 @@ msgid "" "keyword:`import` the :mod:`builtins` module and modify its attributes " "appropriately." msgstr "" +"Los usuarios no deberían tocar ``__builtins__``; es un detalle de la " +"implementación en sentido estricto. Los usuarios que quieran sobreescribir " +"valores en los espacios de nombres incorporados deberían usar :keyword:" +"`import` con el módulo :mod:`builtins` y modificar sus atributos de un modo " +"adecuado." #: ../Doc/reference/executionmodel.rst:174 msgid "" @@ -211,18 +329,29 @@ msgid "" "other module, ``__builtins__`` is an alias for the dictionary of the :mod:" "`builtins` module itself." msgstr "" +"El espacio de nombres incorporado (*builtin namespace*) asociado a la " +"ejecución de un bloque de código es encontrado buscando el nombre " +"``__builtins__`` en su espacio de nombres global; debería ser un diccionario " +"o un módulo (en este último caso, se usa el diccionario del módulo). Por " +"defecto, en el módulo :mod:`__main__`, ``__builtins__`` es el módulo :mod:" +"`builtins`. En cualquier otro módulo, ``__builtins__`` es un alias para el " +"diccionario del propio módulo :mod:`builtins`." #: ../Doc/reference/executionmodel.rst:186 msgid "Interaction with dynamic features" -msgstr "" +msgstr "Interacción con funcionalidades dinámicas" #: ../Doc/reference/executionmodel.rst:188 msgid "" "Name resolution of free variables occurs at runtime, not at compile time. " "This means that the following code will print 42::" msgstr "" +"La resolución de variables libres sucede en tiempo de ejecución, no en " +"tiempo de compilación. Esto significa que el siguiente código va a mostrar " +"42::" #: ../Doc/reference/executionmodel.rst:199 +#, fuzzy msgid "" "The :func:`eval` and :func:`exec` functions do not have access to the full " "environment for resolving names. Names may be resolved in the local and " @@ -232,10 +361,18 @@ msgid "" "global and local namespace. If only one namespace is specified, it is used " "for both." msgstr "" +"Las funciones :func:`eval` y :func:`exec`no tienen acceso al entorno " +"completo para resolver nombres. Los nombres pueden resolverse en el espacio " +"de nombres local y global del código que invoque. Las variables libres no se " +"resuelven en el espacio de nombres de cierre más cercano, sino en el espacio " +"de nombres global. [#]_ Las funciones :func:`exec` y :func:`eval` tienen " +"argumentos opcionales para sobreescribir el espacio de nombres local y " +"global. Si se especifica un solo espacio de nombres, éste se usa para ambas " +"cosas." #: ../Doc/reference/executionmodel.rst:210 msgid "Exceptions" -msgstr "" +msgstr "Excepciones" #: ../Doc/reference/executionmodel.rst:221 msgid "" @@ -245,6 +382,12 @@ msgid "" "*handled* by the surrounding code block or by any code block that directly " "or indirectly invoked the code block where the error occurred." msgstr "" +"Las excepciones son un medio para salir del flujo de control normal de un " +"bloque de código, para gestionar errores u otras condiciones excepcionales. " +"Una excepción es *lanzada* (*raised*) en el momento en que se detecta el " +"error; puede ser *gestionada* (*handled*) por el bloque de código que la " +"rodea o por cualquier bloque de código que directa o indirectamente ha " +"invocado al bloque de código en el que ocurrió el error." #: ../Doc/reference/executionmodel.rst:227 msgid "" @@ -256,6 +399,15 @@ msgid "" "code which does not handle the exception, but is executed whether an " "exception occurred or not in the preceding code." msgstr "" +"El intérprete Python lanza una excepción cuando detecta un error en tiempo " +"de ejecución (como una división por cero). Un programa Python también puede " +"lanzar una excepción explícitamente, con la declaración :keyword:`raise`. " +"Los gestores de excepciones se especifican con la declaración :keyword:" +"`try` ... :keyword:`except`. La cláusula :keyword:`finally` de tales " +"declaraciones puede utilizarse para especificar código de limpieza que no es " +"el que gestiona la excepción, sino que se ejecutará en cualquier caso, tanto " +"cuando la excepción ha ocurrido en el código que la precede, como cuando " +"esto no ha sucedido." #: ../Doc/reference/executionmodel.rst:237 msgid "" @@ -264,6 +416,11 @@ msgid "" "but it cannot repair the cause of the error and retry the failing operation " "(except by re-entering the offending piece of code from the top)." msgstr "" +"Python usa el modelo de gestión de errores de \"terminación" +"\" (\"*termination*\"): un gestor de excepción puede descubrir qué sucedió y " +"continuar la ejecución en un nivel exterior, pero no puede reparar la causa " +"del error y reintentar la operación que ha fallado (excepto que se reingrese " +"al trozo de código fallido desde su inicio)." #: ../Doc/reference/executionmodel.rst:244 msgid "" @@ -272,6 +429,10 @@ msgid "" "either case, it prints a stack traceback, except when the exception is :exc:" "`SystemExit`." msgstr "" +"Cuando una excepción no está gestionada en absoluto, el intérprete termina " +"la ejecución del programa, o retorna a su bucle principal interactivo. En " +"cualquier caso, imprime un seguimiento de pila, excepto cuando la excepción " +"es :exc:`SystemExit`." #: ../Doc/reference/executionmodel.rst:248 msgid "" @@ -281,6 +442,11 @@ msgid "" "by the handler and can carry additional information about the exceptional " "condition." msgstr "" +"Las excepciones están identificadas por instancias de clase. Se selecciona " +"la cláusula :keyword:`except` dependiendo de la clase de la instancia: debe " +"referenciar a la clase de la instancia o a una clase base de la misma. La " +"instancia puede ser recibida por el gestor y puede contener información " +"adicional acerca de la condición excepcional." #: ../Doc/reference/executionmodel.rst:255 msgid "" @@ -289,19 +455,27 @@ msgid "" "be relied on by code which will run under multiple versions of the " "interpreter." msgstr "" +"Los mensajes de excepción no forman parte de la API Python. Su contenido " +"puede cambiar entre una versión de Python y la siguiente sin ningún tipo de " +"advertencia; el código que corre bajo múltiples versiones del intérprete no " +"debería basarse en estos mensajes." #: ../Doc/reference/executionmodel.rst:259 msgid "" "See also the description of the :keyword:`try` statement in section :ref:" "`try` and :keyword:`raise` statement in section :ref:`raise`." msgstr "" +"Mira también la descripción de la declaración :keyword:`try` en la sección :" +"ref:`try`, y la declaración :keyword:`raise` en la sección :ref:`raise`." #: ../Doc/reference/executionmodel.rst:264 msgid "Footnotes" -msgstr "" +msgstr "Notas al pie" #: ../Doc/reference/executionmodel.rst:265 msgid "" "This limitation occurs because the code that is executed by these operations " "is not available at the time the module is compiled." msgstr "" +"Esta limitación se da porque el código ejecutado por estas operaciones no " +"está disponible en el momento en que se compila el módulo."