diff --git a/library/importlib.po b/library/importlib.po index e8d7508952..2a845272cb 100644 --- a/library/importlib.po +++ b/library/importlib.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-21 16:38-0300\n" -"PO-Revision-Date: 2022-11-25 00:29+0800\n" -"Last-Translator: Rodrigo Tobar \n" -"Language: es\n" +"PO-Revision-Date: 2025-01-29 10:47-0300\n" +"Last-Translator: Alfonso Areiza \n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\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" #: ../Doc/library/importlib.rst:2 msgid ":mod:`!importlib` --- The implementation of :keyword:`!import`" @@ -35,7 +36,7 @@ msgstr "Introducción" #: ../Doc/library/importlib.rst:20 msgid "The purpose of the :mod:`importlib` package is three-fold." -msgstr "El propósito del paquete :mod:`importlib` es triple:" +msgstr "El propósito del paquete :mod:`importlib` es triple." #: ../Doc/library/importlib.rst:22 msgid "" @@ -409,6 +410,10 @@ msgid "" "except NameError:\n" " cache = {}" msgstr "" +"try:\n" +"cache\n" +"except NameError:\n" +"cache = {}" #: ../Doc/library/importlib.rst:187 msgid "" @@ -495,15 +500,23 @@ msgid "" " +-- FileLoader\n" " +-- SourceLoader" msgstr "" +"object\n" +"+-- MetaPathFinder\n" +"+-- PathEntryFinder\n" +"+-- Loader\n" +"+-- ResourceLoader --------+\n" +"+-- InspectLoader |\n" +"+-- ExecutionLoader --+\n" +"+-- FileLoader\n" +"+-- SourceLoader" #: ../Doc/library/importlib.rst:240 msgid "An abstract base class representing a :term:`meta path finder`." msgstr "Una clase base abstracta que representa :term:`meta path finder`." #: ../Doc/library/importlib.rst:244 ../Doc/library/importlib.rst:280 -#, fuzzy msgid "No longer a subclass of :class:`!Finder`." -msgstr "Ya no hereda de :class:`Finder`." +msgstr "Ya no hereda de :class:`!Finder`." #: ../Doc/library/importlib.rst:249 msgid "" @@ -538,9 +551,8 @@ msgstr "" "`sys.meta_path`." #: ../Doc/library/importlib.rst:267 -#, fuzzy msgid "Returns ``None`` when called instead of :data:`NotImplemented`." -msgstr "Retorna ``None`` cuando se llama en lugar de ``NotImplemented``." +msgstr "Retorna ``None`` cuando se llama en lugar de :data:`NotImplemented`." #: ../Doc/library/importlib.rst:273 msgid "" @@ -645,7 +657,6 @@ msgstr "" "se lanza :exc:`ImportError`; de lo contrario, se retorna el módulo cargado." #: ../Doc/library/importlib.rst:345 -#, fuzzy msgid "" "If the requested module already exists in :data:`sys.modules`, that module " "should be used and reloaded. Otherwise the loader should create a new module " @@ -660,9 +671,8 @@ msgstr "" "e insertarlo en :data:`sys.modules` antes de que comience la carga, para " "evitar la recursividad de la importación. Si el cargador insertó un módulo y " "la carga falla, el cargador debe eliminarlo de :data:`sys.modules`; los " -"módulos que ya están en :data:`sys.modules` antes de que el cargador " -"comenzara a ejecutarse deben dejarse en paz (ver :func:`importlib.util." -"module_for_loader`)." +"módulos que ya estaban en :data:`sys.modules` antes de que el cargador " +"comenzara a ejecutarse deben dejarse intactos." #: ../Doc/library/importlib.rst:354 msgid "" @@ -715,7 +725,6 @@ msgid ":attr:`__path__`" msgstr ":attr:`__path__`" #: ../Doc/library/importlib.rst:372 -#, fuzzy msgid "" "The list of locations where the package's submodules will be found. Most of " "the time this is a single directory. The import system passes this attribute " @@ -726,7 +735,7 @@ msgstr "" "La lista de ubicaciones donde los sub-módulos del paquete pueden ser " "encontrados. La mayoría de las veces es un solo directorio. El sistema de " "importación pasa este atributo a ``__import__()`` y a buscadores de la misma " -"forma que :attr:`sys.path` pero sólo para el paquete. No está establecido en " +"forma que :data:`sys.path` pero sólo para el paquete. No está establecido en " "módulos que no son paquetes, por lo que puede ser usado como un indicador si " "el módulo es un paquete." @@ -863,10 +872,10 @@ msgid "" msgstr "" "Un método abstracto para retornar la fuente de un módulo. Se retorna como " "una cadena de caracteres de texto usando :term:`universal newlines`, " -"traduciendo todos los separadores de línea reconocidos en caracteres ``'\n" -"'``. Retorna ``None`` si no hay una fuente disponible (por ejemplo, un " -"módulo integrado). Lanza :exc:`ImportError` si el cargador no puede " -"encontrar el módulo especificado." +"traduciendo todos los separadores de línea reconocidos en caracteres " +"``’\\n’``. Retorna ``None`` si no hay una fuente disponible (por ejemplo, un " +"módulo integrado). Lanza la excepción :exc:`ImportError` si el cargador no " +"puede encontrar el módulo especificado." #: ../Doc/library/importlib.rst:457 ../Doc/library/importlib.rst:466 #: ../Doc/library/importlib.rst:516 @@ -991,7 +1000,7 @@ msgstr "Retorna :attr:`path`." #: ../Doc/library/importlib.rst:552 msgid "Reads *path* as a binary file and returns the bytes from it." -msgstr "Lee *path* como un archivo binario y devuelve los bytes de él." +msgstr "Lee *path* como un archivo binario y retorna los bytes de él." #: ../Doc/library/importlib.rst:557 msgid "" @@ -1045,7 +1054,7 @@ msgid "" "Optional abstract method which returns a :class:`dict` containing metadata " "about the specified path. Supported dictionary keys are:" msgstr "" -"Método abstracto opcional que devuelve un :class:`dict` que contiene " +"Método abstracto opcional que retorna un :class:`dict` que contiene " "metadatos sobre la ruta especificada. Las claves de diccionario admitidas " "son:" @@ -1102,13 +1111,12 @@ msgstr "" "automáticamente." #: ../Doc/library/importlib.rst:611 -#, fuzzy msgid "" "When writing to the path fails because the path is read-only (:const:`errno." "EACCES`/:exc:`PermissionError`), do not propagate the exception." msgstr "" "Cuando la escritura en la ruta falla porque la ruta es de solo lectura (:" -"attr:`errno.EACCES`/:exc:`PermissionError`), no propague la excepción." +"const:`errno.EACCES`/:exc:`PermissionError`), no propague la excepción." #: ../Doc/library/importlib.rst:615 msgid "No longer raises :exc:`NotImplementedError` when called." @@ -1150,12 +1158,14 @@ msgstr "" #: ../Doc/library/importlib.rst:650 msgid "*Superseded by TraversableResources*" -msgstr "" +msgstr "*Reemplazado por TraversableResources*" #: ../Doc/library/importlib.rst:652 msgid "" "An :term:`abstract base class` to provide the ability to read *resources*." msgstr "" +"Una :term:`clase base abstracta` para proporcionar la capacidad de leer " +"*recursos*." #: ../Doc/library/importlib.rst:655 msgid "" @@ -1166,6 +1176,12 @@ msgid "" "does not matter if the package and its data file(s) are stored e.g. in a zip " "file versus on the file system." msgstr "" +"Desde la perspectiva de este ABC, un *recurso* es un artefacto binario que " +"se envía dentro de un paquete. Normalmente, es algo así como un archivo de " +"datos que se encuentra junto al archivo ``__init__.py`` del paquete. El " +"propósito de esta clase es ayudar a abstraer el acceso a dichos archivos de " +"datos de modo que no importe si el paquete y sus archivos de datos se " +"almacenan, por ejemplo, en un archivo zip o en el sistema de archivos." #: ../Doc/library/importlib.rst:663 msgid "" @@ -1178,6 +1194,16 @@ msgid "" "class are expected to directly correlate to a specific package (instead of " "potentially representing multiple packages or a module)." msgstr "" +"Para cualquiera de los métodos de esta clase, se espera que un argumento " +"*recurso* sea un :term:`path-like object` que conceptualmente, representa " +"solo un nombre de archivo. Esto significa que no se deben incluir rutas de " +"subdirectorio en el argumento *recurso*. Esto se debe a que la ubicación del " +"paquete al que se dirige el lector actúa como el “directorio”. Por lo tanto, " +"la metáfora para los directorios y los nombres de archivo es paquetes y " +"recursos, respectivamente. Esta es también la razón por la que se espera que " +"las instancias de esta clase se correlacionen directamente con un paquete " +"específico (en lugar de representar potencialmente varios paquetes o un " +"módulo)." #: ../Doc/library/importlib.rst:674 msgid "" @@ -1187,38 +1213,51 @@ msgid "" "not a package, this method should return :const:`None`. An object compatible " "with this ABC should only be returned when the specified module is a package." msgstr "" +"Se espera que los cargadores que deseen admitir la lectura de recursos " +"proporcionen un método llamado ``get_resource_reader(fullname)`` que retorna " +"un objeto que implemente la interfaz de este ABC. Si el módulo especificado " +"por fullname no es un paquete, este método debe retornar un :const:`None`. " +"Un objeto compatible con este ABC solo debe devolverse cuando el módulo " +"especificado sea un paquete." #: ../Doc/library/importlib.rst:683 ../Doc/library/importlib.rst:793 -#, fuzzy msgid "Use :class:`importlib.resources.abc.TraversableResources` instead." -msgstr "Utilice :meth:`importlib.abc.Loader.exec_module` en su lugar." +msgstr "" +"Utilice :class:`importlib.resources.abc.TraversableResources` en su lugar." #: ../Doc/library/importlib.rst:688 msgid "" "Returns an opened, :term:`file-like object` for binary reading of the " "*resource*." msgstr "" +"Retorna un objeto abierto, :term:`file-like object`, para la lectura binaria " +"del *recurso*." #: ../Doc/library/importlib.rst:691 msgid "If the resource cannot be found, :exc:`FileNotFoundError` is raised." msgstr "" +"Si no se puede encontrar el recurso, se lanza una excepción :exc:" +"`FileNotFoundError`." #: ../Doc/library/importlib.rst:696 -#, fuzzy msgid "Returns the file system path to the *resource*." -msgstr "La ruta al archivo de origen." +msgstr "Retorna la ruta del sistema de archivos al *recurso*." #: ../Doc/library/importlib.rst:698 msgid "" "If the resource does not concretely exist on the file system, raise :exc:" "`FileNotFoundError`." msgstr "" +"Si el recurso no existe concretamente en el sistema de archivos, lanza una " +"excepción :exc:`FileNotFoundError`." #: ../Doc/library/importlib.rst:703 msgid "" "Returns ``True`` if the named *name* is considered a resource. :exc:" "`FileNotFoundError` is raised if *name* does not exist." msgstr "" +"Retorna ``True`` si el nombre *name* se considera un recurso. La excepción :" +"exc:`FileNotFoundError` se lanza si *name* no existe." #: ../Doc/library/importlib.rst:708 msgid "" @@ -1227,6 +1266,10 @@ msgid "" "actual resources, e.g. it is acceptable to return names for which :meth:" "`is_resource` would be false." msgstr "" +"Retorna un :term:`iterable` de cadenas de caracteres sobre el contenido del " +"paquete. Tenga en cuenta que no es necesario que todos los nombres devueltos " +"por el iterador sean recursos reales, por ejemplo, es aceptable devolver " +"nombres para los cuales :meth:`is_resource` sería falso." #: ../Doc/library/importlib.rst:714 msgid "" @@ -1236,71 +1279,85 @@ msgid "" "is allowed so that when it is known that the package and resources are " "stored on the file system then those subdirectory names can be used directly." msgstr "" +"Permitir que se retornen nombres que no sean recursos es permitir " +"situaciones en las que se conoce a priori cómo se almacenan un paquete y sus " +"recursos y los nombres que no son recursos serían útiles. Por ejemplo, se " +"permite retornar nombres de subdirectorios para que, cuando se sepa que el " +"paquete y los recursos están almacenados en el sistema de archivos, esos " +"nombres de subdirectorios se puedan usar directamente." #: ../Doc/library/importlib.rst:722 msgid "The abstract method returns an iterable of no items." -msgstr "" +msgstr "El método abstracto retorna un iterable sin elementos." #: ../Doc/library/importlib.rst:727 msgid "" "An object with a subset of :class:`pathlib.Path` methods suitable for " "traversing directories and opening files." msgstr "" +"Un objeto con un subconjunto de métodos de :class:`pathlib.Path` adecuados " +"para recorrer directorios y abrir archivos." #: ../Doc/library/importlib.rst:730 msgid "" "For a representation of the object on the file-system, use :meth:`importlib." "resources.as_file`." msgstr "" +"Para obtener una representación del objeto en el sistema de archivos, " +"utilice :meth:`importlib.resources.as_file`." #: ../Doc/library/importlib.rst:735 -#, fuzzy msgid "Use :class:`importlib.resources.abc.Traversable` instead." -msgstr "Utilice :meth:`importlib.abc.Loader.exec_module` en su lugar." +msgstr "Utilice :class:`importlib.resources.abc.Traversable` en su lugar." #: ../Doc/library/importlib.rst:740 msgid "Abstract. The base name of this object without any parent references." msgstr "" +"Abstracto. El nombre base de este objeto sin ninguna referencia principal." #: ../Doc/library/importlib.rst:744 msgid "Yield ``Traversable`` objects in ``self``." -msgstr "" +msgstr "Produce objetos ``Traversable`` en ``self``." #: ../Doc/library/importlib.rst:748 msgid "Return ``True`` if ``self`` is a directory." -msgstr "" +msgstr "Retorna ``True`` si ``self`` es un directorio." #: ../Doc/library/importlib.rst:752 msgid "Return ``True`` if ``self`` is a file." -msgstr "" +msgstr "Retorna ``True`` si ``self`` es un archivo." #: ../Doc/library/importlib.rst:756 msgid "Return Traversable child in ``self``." -msgstr "" +msgstr "Retorna un Traversable secundario en ``self``." #: ../Doc/library/importlib.rst:760 msgid "Return ``Traversable`` child in ``self``." -msgstr "" +msgstr "Retorna un ``Traversable`` secundario en ``self``." #: ../Doc/library/importlib.rst:764 msgid "" "*mode* may be 'r' or 'rb' to open as text or binary. Return a handle " "suitable for reading (same as :attr:`pathlib.Path.open`)." msgstr "" +"*mode* puede ser ‘r’ o ‘rb’ para abrir como texto o binario. Retorna un " +"identificador adecuado para su lectura (igual que :attr:`pathlib.Path.open`)." #: ../Doc/library/importlib.rst:767 msgid "" "When opening as text, accepts encoding parameters such as those accepted by :" "attr:`io.TextIOWrapper`." msgstr "" +"Al abrir como texto, acepta parámetros de codificación como los aceptados " +"por :attr:`io.TextIOWrapper`." #: ../Doc/library/importlib.rst:772 msgid "Read contents of ``self`` as bytes." -msgstr "" +msgstr "Lee el contenido de ``self`` como bytes." #: ../Doc/library/importlib.rst:776 msgid "Read contents of ``self`` as text." -msgstr "" +msgstr "Lee el contenido de ``self`` como texto." #: ../Doc/library/importlib.rst:781 msgid "" @@ -1311,18 +1368,28 @@ msgid "" "Therefore, any loader supplying :class:`importlib.abc.TraversableResources` " "also supplies ResourceReader." msgstr "" +"Una clase base abstracta para lectores de recursos capaces de servir a la " +"interfaz :meth:`importlib.resources.files`. Subclases :class:`importlib." +"resources.abc.ResourceReader` y proporciona implementaciones concretas de " +"los métodos abstractos de :class:`importlib.resources.abc.ResourceReader`. " +"Por lo tanto, cualquier cargador que proporcione :class:`importlib.abc." +"TraversableResources` también proporciona ResourceReader." #: ../Doc/library/importlib.rst:788 msgid "" "Loaders that wish to support resource reading are expected to implement this " "interface." msgstr "" +"Se espera que los cargadores que deseen admitir la lectura de recursos " +"implementen esta interfaz." #: ../Doc/library/importlib.rst:798 msgid "" "Returns a :class:`importlib.resources.abc.Traversable` object for the loaded " "package." msgstr "" +"Retorna un objeto :class:`importlib.resources.abc.Traversable` para el " +"paquete cargado." #: ../Doc/library/importlib.rst:804 msgid ":mod:`importlib.machinery` -- Importers and path hooks" @@ -1598,16 +1665,15 @@ msgid "Clear out the internal cache." msgstr "Borrar el caché interno." #: ../Doc/library/importlib.rst:1000 -#, fuzzy msgid "" "A class method which returns a closure for use on :data:`sys.path_hooks`. An " "instance of :class:`FileFinder` is returned by the closure using the path " "argument given to the closure directly and *loader_details* indirectly." msgstr "" -"Un método de clase que devuelve un cierre para su uso en :attr:`sys." -"path_hooks`. Una instancia de :class:`FileFinder` es retornada por el cierre " -"usando el argumento de ruta dado al cierre directamente y *loader_details* " -"indirectamente." +"Un método de clase que retorna un cierre para su uso en :data:`sys." +"path_hooks`. El cierre retorna una instancia de :class:`FileFinder` " +"utilizando el argumento de ruta proporcionado al cierre directamente y " +"*loader_details* indirectamente." #: ../Doc/library/importlib.rst:1005 msgid "" @@ -1637,7 +1703,7 @@ msgstr "La ruta al archivo de origen." #: ../Doc/library/importlib.rst:1027 msgid "Return ``True`` if :attr:`path` appears to be for a package." -msgstr "Devuelve ``True`` si :attr:`path` parece ser para un paquete." +msgstr "Retorna ``True`` si :attr:`path` parece ser para un paquete." #: ../Doc/library/importlib.rst:1031 msgid "" @@ -1704,7 +1770,7 @@ msgstr "" msgid "" "Returns ``None`` as bytecode files have no source when this loader is used." msgstr "" -"Devuelve ``None`` ya que los archivos de código de bytes no tienen fuente " +"Retorna ``None`` ya que los archivos de código de bytes no tienen fuente " "cuando se usa este cargador." #: ../Doc/library/importlib.rst:1092 @@ -1729,10 +1795,15 @@ msgid "" "subinterpreters if it doesn't implement multi-phase init (see :pep:`489`), " "even if it would otherwise import successfully." msgstr "" +"Tenga en cuenta que, de manera predeterminada, la importación de un módulo " +"de extensión fallará en los subintérpretes si no implementa la " +"inicialización multifase (ver :pep:`489`), incluso si de lo contrario se " +"importaría correctamente." #: ../Doc/library/importlib.rst:1104 msgid "Multi-phase init is now required for use in subinterpreters." msgstr "" +"Ahora se requiere inicialización multifase para el uso en subintérpretes." #: ../Doc/library/importlib.rst:1109 ../Doc/library/importlib.rst:1293 msgid "Name of the module the loader supports." @@ -1794,9 +1865,15 @@ msgid "" ">>> isinstance(my_namespace.__loader__, importlib.abc.Loader)\n" "True" msgstr "" +">>> from importlib.machinery import NamespaceLoader\n" +">>> import my_namespace\n" +">>> isinstance(my_namespace.__loader__, NamespaceLoader)\n" +"True\n" +">>> import importlib.abc\n" +">>> isinstance(my_namespace.__loader__, importlib.abc.Loader)\n" +"True" #: ../Doc/library/importlib.rst:1168 -#, fuzzy msgid "" "A specification for a module's import-system-related state. This is " "typically exposed as the module's :attr:`__spec__` attribute. Many of these " @@ -1809,37 +1886,35 @@ msgid "" "versa." msgstr "" "Una especificación para el estado relacionado con el sistema de importación " -"de un módulo. Esto generalmente se expone como el atributo :attr:`__spec__`` " -"del módulo. En las descripciones siguientes, los nombres entre paréntesis " -"dan el atributo correspondiente disponible directamente en el objeto del " -"módulo, por ejemplo, ``module.__spec__.origin == module.__file__``. Sin " -"embargo, tenga en cuenta que, si bien los *valores* suelen ser equivalentes, " -"pueden diferir ya que no hay sincronización entre los dos objetos. Por " -"ejemplo, es posible actualizar el :attr:`__path__` del módulo en tiempo de " -"ejecución, y esto no se reflejará automáticamente en el :attr:`__spec__." -"origin` del módulo, y viceversa." +"de un módulo. Esto se expone típicamente como el atributo :attr:`__spec__` " +"del módulo. Muchos de estos atributos también están disponibles directamente " +"en un módulo: por ejemplo, ``module.__spec__.origin == module.__file__``. " +"Sin embargo, tenga en cuenta que si bien los *values* suelen ser " +"equivalentes, pueden diferir ya que no hay sincronización entre los dos " +"objetos. Por ejemplo, es posible actualizar el :attr:`__file__` del módulo " +"en tiempo de ejecución y esto no se reflejará automáticamente en el :attr:" +"`__spec__.origin` del módulo, y viceversa." #: ../Doc/library/importlib.rst:1181 -#, fuzzy msgid "" "The module's fully qualified name (see :attr:`__name__` attributes on " "modules). The :term:`finder` should always set this attribute to a non-empty " "string." msgstr "" -"El nombre completo del módulo. El :term:`buscador ` debe siempre " -"establecer este atributo a una cadena de caracteres no vacía." +"El nombre completo del módulo (consulte los atributos :attr:`__name__` en " +"los módulos). El :term:`finder` siempre debe establecer este atributo en una " +"cadena de caracteres que no esté vacía." #: ../Doc/library/importlib.rst:1187 -#, fuzzy msgid "" "The :term:`loader` used to load the module (see :attr:`__loader__` " "attributes on modules). The :term:`finder` should always set this attribute." msgstr "" -"El :term:`Cargador ` que debe usarse para cargar el módulo. El :term:" -"`Buscador ` siempre debe establecer este atributo." +"El :term:`loader` utilizado para cargar el módulo (ver atributos :attr:" +"`__loader__` en módulos). El :term:`finder` siempre debe establecer este " +"atributo." #: ../Doc/library/importlib.rst:1193 -#, fuzzy msgid "" "The location the :term:`loader` should use to load the module (see :attr:" "`__file__` attributes on modules). For example, for modules loaded from a ." @@ -1848,15 +1923,15 @@ msgid "" "uncommon case that there is not one (like for namespace packages), it should " "be set to ``None``." msgstr "" -"La ubicación que el :term:`cargador ` debe usar para cargar el " -"módulo. Por ejemplo, para módulos cargados de archivos .py éste es el nombre " -"del archivo. El :term:`buscador ` debe siempre establecer este " -"atributo a un valor significativo para que el :term:`cargador ` lo " -"use. El en caso poco común de que no hay uno (como para paquetes de nombre " -"de espacio), debe estar establecido en ``None``." +"La ubicación que el :term:`loader` debe usar para cargar el módulo (vea los " +"atributos :attr:`__file__` en los módulos). Por ejemplo, para los módulos " +"cargados desde un archivo .py, este es el nombre del archivo. El :term:" +"`finder` siempre debe establecer este atributo en un valor significativo " +"para que lo use el :term:`loader`. En el caso poco común de que no haya uno " +"(como para los paquetes de espacios de nombres), se debe establecer en " +"``None``." #: ../Doc/library/importlib.rst:1202 -#, fuzzy msgid "" "The list of locations where the package's submodules will be found (see :" "attr:`__path__` attributes on modules). Most of the time this is a single " @@ -1865,12 +1940,13 @@ msgid "" "It should be set to ``None`` for non-package modules. It is set " "automatically later to a special object for namespace packages." msgstr "" -"La lista de ubicaciones donde los sub-módulos del paquete serán encontrados. " -"La mayoría de las veces es un solo directorio. El :term:`buscador ` " -"debe establecer este atributo a una lista, incluso una vacía, para indicar " -"al sistema de importación que el módulo es un paquete. Debe ser establecido " -"en ``None`` para módulos que no son paquetes. Es establecido automáticamente " -"más tarde a un objeto especial para paquetes de espacio de nombres." +"La lista de ubicaciones donde se encontrarán los submódulos del paquete " +"(consulte los atributos :attr:`__path__` en los módulos). La mayoría de las " +"veces, se trata de un solo directorio. El :term:`finder` debe establecer " +"este atributo en una lista, incluso una vacía, para indicar al sistema de " +"importación que el módulo es un paquete. Debe establecerse en ``None`` para " +"módulos que no sean paquetes. Se establece automáticamente más tarde en un " +"objeto especial para paquetes de espacio de nombres." #: ../Doc/library/importlib.rst:1212 msgid "" @@ -1883,46 +1959,46 @@ msgstr "" "carga el módulo.. De lo contrario, debe establecerse en ``None``." #: ../Doc/library/importlib.rst:1218 -#, fuzzy msgid "" "The filename of a compiled version of the module's code (see :attr:" "`__cached__` attributes on modules). The :term:`finder` should always set " "this attribute but it may be ``None`` for modules that do not need compiled " "code stored." msgstr "" -"El nombre de archivo de una versión compilada del código de el módulo. El :" -"term:`buscador ` siempre debe establecer este atributo pero puede " -"ser ``None`` para módulos que no necesitan guardar código compilado." +"El nombre de archivo de una versión compilada del código del módulo " +"(consulte los atributos :attr:`__cached__` en los módulos). El :term:" +"`finder` siempre debe establecer este atributo, pero puede ser ``None`` para " +"los módulos que no necesitan almacenar el código compilado." #: ../Doc/library/importlib.rst:1225 -#, fuzzy msgid "" "(Read-only) The fully qualified name of the package the module is in (or the " "empty string for a top-level module). See :attr:`__package__` attributes on " "modules. If the module is a package then this is the same as :attr:`name`." msgstr "" -"(Solo lectura) El nombre completo del paquete bajo el cual está este módulo " -"(o la cadena de caracteres vacía para los módulos de nivel superior). Si el " -"módulo es un paquete es lo mismo que :attr:`__name__`." +"(Solo lectura) El nombre completo del paquete en el que se encuentra el " +"módulo (o la cadena de caracteres vacía para un módulo de nivel superior). " +"Consulte los atributos :attr:`__package__` en los módulos. Si el módulo es " +"un paquete, esto es lo mismo que :attr:`name`." #: ../Doc/library/importlib.rst:1232 -#, fuzzy msgid "" "``True`` if the spec's :attr:`origin` refers to a loadable location, " "``False`` otherwise. This value impacts how :attr:`origin` is interpreted " "and how the module's :attr:`__file__` is populated." msgstr "" -"``False`` en caso contrario. Este valor impacta en cómo :attr:`origin` es " -"interpretado y cómo el atributo :attr:`__file__` del módulo es poblado." +"``True`` si el :attr:`origin` de la especificación hace referencia a una " +"ubicación cargable, ``Falso`` en caso contrario. Este valor afecta la forma " +"en que se interpreta el :attr:`origin` y cómo se completa el :attr:" +"`__file__` del módulo." #: ../Doc/library/importlib.rst:1239 -#, fuzzy msgid "" "A specialization of :class:`importlib.machinery.ExtensionFileLoader` that is " "able to load extension modules in Framework format." msgstr "" -"Una implementación concreta de :class:`importlib.abc.ExecutionLoader` para " -"módulos de extensión." +"Una especialización de :class:`importlib.machinery.ExtensionFileLoader` que " +"puede cargar módulos de extensión en formato Framework." #: ../Doc/library/importlib.rst:1242 msgid "" @@ -1932,6 +2008,12 @@ msgid "" "be only a single binary per framework, and there can be no executable binary " "material outside the Frameworks folder." msgstr "" +"Para que sea compatible con la App Store de iOS, *todos* los módulos " +"binarios de una aplicación de iOS deben ser bibliotecas dinámicas, " +"contenidas en un marco con metadatos apropiados, almacenados en la carpeta " +"``Frameworks`` de la aplicación empaquetada. Solo puede haber un único " +"binario por marco y no puede haber material binario ejecutable fuera de la " +"carpeta Frameworks." #: ../Doc/library/importlib.rst:1248 msgid "" @@ -1946,6 +2028,18 @@ msgid "" "expected to contain a ``.origin`` file that contains the location of the ``." "fwork`` file, relative to the app bundle." msgstr "" +"Para cumplir con este requisito, cuando se ejecuta en iOS, los binarios del " +"módulo de extensión *no* se empaquetan como archivos ``.so`` en ``sys." +"path``, sino como marcos independientes individuales. Para descubrir esos " +"marcos, este cargador se debe registrar con la extensión de archivo ``." +"fwork``, con un archivo ``.fwork`` que actúa como marcador de posición en la " +"ubicación original del binario en ``sys.path``. El archivo ``.fwork`` " +"contiene la ruta del binario real en la carpeta ``Frameworks``, en relación " +"con el paquete de la aplicación. Para permitir la resolución de un binario " +"empaquetado en el marco de trabajo en la ubicación original, se espera que " +"el marco de trabajo contenga un archivo ``.origin`` que contenga la " +"ubicación del archivo ``.fwork``, en relación con el paquete de la " +"aplicación." #: ../Doc/library/importlib.rst:1259 msgid "" @@ -1962,6 +2056,18 @@ msgid "" "framework would also contain ``Frameworks/foo.bar._whiz.framework/foo.bar." "_whiz.origin``, containing the path to the ``.fwork`` file." msgstr "" +"Por ejemplo, considere el caso de una importación ``from foo.bar import " +"_whiz``, donde ``_whiz`` se implementa con el módulo binario ``sources/foo/" +"bar/_whiz.abi3.so``, donde ``sources`` es la ubicación registrada en ``sys." +"path``, relativa al paquete de la aplicación. Este módulo *debe* " +"distribuirse como ``Frameworks/foo.bar._whiz.framework/foo.bar._whiz`` " +"(creando el nombre del marco a partir de la ruta de importación completa del " +"módulo), con un archivo ``Info.plist`` en el directorio ``.framework`` que " +"identifica el binario como un marco. El módulo ``foo.bar._whiz`` se " +"representaría en la ubicación original con un archivo marcador ``sources/foo/" +"bar/_whiz.abi3.fwork``, que contiene la ruta ``Frameworks/foo.bar._whiz/foo." +"bar._whiz``. El framework también contendría ``Frameworks/foo.bar._whiz." +"framework/foo.bar._whiz.origin``, que contiene la ruta al archivo ``.fwork``." #: ../Doc/library/importlib.rst:1273 msgid "" @@ -1971,6 +2077,11 @@ msgid "" "However, the spec origin will reference the location of the *actual* binary " "in the ``.framework`` folder." msgstr "" +"Cuando se carga un módulo con este cargador, el ``__file__`` del módulo se " +"indicará como la ubicación del archivo ``.fwork``. Esto permite que el " +"código utilice el ``__file__`` de un módulo como ancla para recorrer el " +"sistema de archivos. Sin embargo, el origen de la especificación hará " +"referencia a la ubicación del binario *real* en la carpeta ``.framework``." #: ../Doc/library/importlib.rst:1279 msgid "" @@ -1982,15 +2093,21 @@ msgid "" "with a build step in the Xcode project; see the iOS documentation for " "details on how to construct this build step." msgstr "" +"El proyecto Xcode que crea la aplicación es responsable de convertir los " +"archivos ``.so`` desde donde se encuentren en ``PYTHONPATH`` en marcos en la " +"carpeta ``Frameworks`` (lo que incluye quitar las extensiones del archivo " +"del módulo, agregar metadatos del marco y firmar el marco resultante), y " +"crear los archivos ``.fwork`` y ``.origin``. Esto generalmente se hará con " +"un paso de compilación en el proyecto Xcode; consulte la documentación de " +"iOS para obtener detalles sobre cómo construir este paso de compilación." #: ../Doc/library/importlib.rst:1289 msgid ":ref:`Availability `: iOS." -msgstr "" +msgstr ":ref:`Availability `: iOS." #: ../Doc/library/importlib.rst:1297 -#, fuzzy msgid "Path to the ``.fwork`` file for the extension module." -msgstr "Ruta al archivo del módulo." +msgstr "Ruta al archivo ``.fwork`` para el módulo de extensión." #: ../Doc/library/importlib.rst:1301 msgid ":mod:`importlib.util` -- Utility code for importers" @@ -2150,7 +2267,6 @@ msgstr "" "relativa no válidos." #: ../Doc/library/importlib.rst:1403 -#, fuzzy msgid "" "Find the :term:`spec ` for a module, optionally relative to the " "specified **package** name. If the module is in :data:`sys.modules`, then " @@ -2159,13 +2275,13 @@ msgid "" "Otherwise a search using :data:`sys.meta_path` is done. ``None`` is returned " "if no spec is found." msgstr "" -"Busca el :term:`spec ` para un módulo, opcionalmente relativo " -"al nombre del **package** especificado. Si el módulo está en :attr:`sys." +"Busque el :term:`spec ` de un módulo, opcionalmente relativa al " +"nombre del **paquete** especificado. Si el módulo está en :data:`sys." "modules`, se retorna ``sys.modules[name].__spec__`` (a menos que la " -"especificación sea ``None`` o no esté establecida, en cuyo caso se lanza :" -"exc:`ValueError`). De lo contrario, se realiza una búsqueda utilizando :attr:" -"`sys.meta_path`. Se retorna ``None`` si no se encuentra ninguna " -"especificación." +"especificación sea ``None`` o no esté configurada, en cuyo caso se lanza una " +"excepción :exc:`ValueError`). De lo contrario, se realiza una búsqueda " +"utilizando :data:`sys.meta_path`. Se retorna ``None`` si no se encuentra " +"ninguna especificación." #: ../Doc/library/importlib.rst:1410 msgid "" @@ -2263,6 +2379,12 @@ msgid "" "for a multi-phase init module that doesn't explicitly support a per-" "interpreter GIL, when imported in an interpreter with its own GIL." msgstr "" +"Un administrador de contexto que puede omitir temporalmente la comprobación " +"de compatibilidad para módulos de extensión. De manera predeterminada, la " +"comprobación está habilitada y fallará cuando se importe un módulo de " +"inicialización de una sola fase en un subintérprete. También fallará para un " +"módulo de inicialización de varias fases que no admita explícitamente una " +"GIL por intérprete, cuando se importe en un intérprete con su propia GIL." #: ../Doc/library/importlib.rst:1477 msgid "" @@ -2270,6 +2392,9 @@ msgid "" "is likely to eventually go away. There's is a pretty good chance this is " "not what you were looking for." msgstr "" +"Tenga en cuenta que esta función está pensada para dar cabida a un caso " +"inusual, que probablemente desaparecerá en algún momento. Es muy probable " +"que esto no sea lo que estaba buscando." #: ../Doc/library/importlib.rst:1481 msgid "" @@ -2277,12 +2402,18 @@ msgid "" "interface of multi-phase init (:pep:`489`) and lying about support for " "multiple interpreters (or per-interpreter GIL)." msgstr "" +"Puede obtener el mismo efecto que esta función implementando la interfaz " +"básica de init multifase (:pep:`489`) y mintiendo acerca del soporte para " +"múltiples intérpretes (o por intérprete GIL)." #: ../Doc/library/importlib.rst:1486 msgid "" "Using this function to disable the check can lead to unexpected behavior and " "even crashes. It should only be used during extension module development." msgstr "" +"El uso de esta función para desactivar la comprobación puede provocar un " +"comportamiento inesperado e incluso fallos. Solo debe utilizarse durante el " +"desarrollo de módulos de extensión." #: ../Doc/library/importlib.rst:1494 msgid "" @@ -2293,7 +2424,6 @@ msgstr "" "módulo tiene acceso a un atributo." #: ../Doc/library/importlib.rst:1497 -#, fuzzy msgid "" "This class **only** works with loaders that define :meth:`~importlib.abc." "Loader.exec_module` as control over what module type is used for the module " @@ -2306,14 +2436,14 @@ msgid "" "raised if such a substitution is detected." msgstr "" "Esta clase **solo** funciona con cargadores que definen :meth:`~importlib." -"abc.Loader.exec_module` ya que se requiere control sobre qué tipo de módulo " -"se usa para el módulo. Por esas mismas razones, el método del cargador :meth:" -"`~importlib.abc.Loader.create_module` debe retornar ``None`` o un tipo para " -"el cual su atributo ``__class__`` se puede mutar junto con no usar :term:" +"abc.Loader.exec_module`, ya que se requiere control sobre qué tipo de módulo " +"se usa para el módulo. Por esas mismas razones, el método :meth:`~importlib." +"abc.Loader.create_module` del cargador debe retornar ``None`` o un tipo para " +"el cual se pueda mutar su atributo ``__class__`` junto con no usar :term:" "`slots <__slots__>`. Finalmente, los módulos que sustituyen el objeto " -"colocado en :attr:`sys.modules` no funcionarán ya que no hay forma de " +"colocado en :data:`sys.modules` no funcionarán ya que no hay forma de " "reemplazar correctamente las referencias del módulo en todo el intérprete de " -"forma segura; :exc:`ValueError` se genera si se detecta tal sustitución." +"manera segura; :exc:`ValueError` se lanza si se detecta dicha sustitución." #: ../Doc/library/importlib.rst:1508 msgid "" @@ -2341,14 +2471,13 @@ msgstr "" "BuiltinImporter` y :class:`importlib.machinery.ExtensionFileLoader`." #: ../Doc/library/importlib.rst:1523 -#, fuzzy msgid "" "A class method which returns a callable that creates a lazy loader. This is " "meant to be used in situations where the loader is passed by class instead " "of by instance. ::" msgstr "" -"Un método estático que devuelve un invocable que crea un cargador diferido. " -"Esto está destinado a utilizarse en situaciones en las que el cargador se " +"Un método de clase que retorna un elemento invocable que crea un cargador " +"diferido. Está pensado para usarse en situaciones en las que el cargador se " "pasa por clase en lugar de por instancia. ::" #: ../Doc/library/importlib.rst:1528 @@ -2358,6 +2487,10 @@ msgid "" "lazy_loader = importlib.util.LazyLoader.factory(loader)\n" "finder = importlib.machinery.FileFinder(path, (lazy_loader, suffixes))" msgstr "" +"suffixes = importlib.machinery.SOURCE_SUFFIXES\n" +"loader = importlib.machinery.SourceFileLoader\n" +"lazy_loader = importlib.util.LazyLoader.factory(loader)\n" +"finder = importlib.machinery.FileFinder(path, (lazy_loader, suffixes))" #: ../Doc/library/importlib.rst:1536 msgid "Examples" @@ -2380,6 +2513,9 @@ msgid "" "\n" "itertools = importlib.import_module('itertools')" msgstr "" +"import importlib\n" +"\n" +"itertools = importlib.import_module('itertools')" #: ../Doc/library/importlib.rst:1550 msgid "Checking if a module can be imported" @@ -2420,6 +2556,22 @@ msgid "" "else:\n" " print(f\"can't find the {name!r} module\")" msgstr "" +"import importlib.util\n" +"import sys\n" +"\n" +"# Con fines ilustrativos.\n" +"name = 'itertools'\n" +"\n" +"if name in sys.modules:\n" +"print(f\"{name!r} already in sys.modules\")\n" +"elif (spec := importlib.util.find_spec(name)) is not None:\n" +"# Si eligió realizar la importación real ...\n" +"module = importlib.util.module_from_spec(spec)\n" +"sys.modules[name] = module\n" +"spec.loader.exec_module(module)\n" +"print(f\"{name!r} ha sido importado\")\n" +"else:\n" +"print(f\"no puede ser encontrado el módulo {name!r}\")" #: ../Doc/library/importlib.rst:1578 msgid "Importing a source file directly" @@ -2434,15 +2586,20 @@ msgid "" "`runpy.run_path` when the global namespace resulting from running a Python " "file is appropriate." msgstr "" +"Esta receta debe usarse con precaución: es una aproximación de una " +"declaración de importación donde se especifica directamente la ruta del " +"archivo, en lugar de buscar :data:`sys.path`. Primero se deben considerar " +"alternativas, como modificar :data:`sys.path` cuando se requiere un módulo " +"adecuado o usar :func:`runpy.run_path` cuando el espacio de nombres global " +"resultante de la ejecución de un archivo Python es apropiado." #: ../Doc/library/importlib.rst:1587 -#, fuzzy msgid "" "To import a Python source file directly from a path, use the following " "recipe::" msgstr "" -"Para importar un archivo fuente de Python directamente, use la siguiente " -"receta::" +"Para importar un archivo fuente de Python directamente desde una ruta, use " +"la siguiente receta:" #: ../Doc/library/importlib.rst:1589 msgid "" @@ -2466,6 +2623,25 @@ msgid "" "# Similar outcome as `import json`.\n" "json = import_from_path(module_name, file_path)" msgstr "" +"import importlib.util\n" +"import sys\n" +"\n" +"\n" +"def import_from_path(module_name, file_path):\n" +"spec = importlib.util.spec_from_file_location(module_name, file_path)\n" +"module = importlib.util.module_from_spec(spec)\n" +"sys.modules[module_name] = module\n" +"spec.loader.exec_module(module)\n" +"return module\n" +"\n" +"\n" +"# Sólo con fines ilustrativos. (el uso de `json` es arbitrario).\n" +"import json\n" +"file_path = json.__file__\n" +"module_name = json.__name__\n" +"\n" +"# Resultado similar a `import json`.\n" +"json = import_from_path(module_name, file_path)" #: ../Doc/library/importlib.rst:1611 msgid "Implementing lazy imports" @@ -2494,13 +2670,28 @@ msgid "" ">>> lazy_typing.TYPE_CHECKING\n" "False" msgstr "" +">>> import importlib.util\n" +">>> import sys\n" +">>> def lazy_import(name):\n" +"...spec = importlib.util.find_spec(name)\n" +"...loader = importlib.util.LazyLoader(spec.loader)\n" +"...spec.loader = loader\n" +"...module = importlib.util.module_from_spec(spec)\n" +"...sys.modules[name] = module\n" +"...loader.exec_module(module)\n" +"...return module\n" +"...\n" +">>> lazy_typing = lazy_import(\"typing\")\n" +">>> #lazy_typing es un objeto de módulo real,\n" +">>> #pero aún no está cargado en la memoria.\n" +">>> lazy_typing.TYPE_CHECKING\n" +"False" #: ../Doc/library/importlib.rst:1634 msgid "Setting up an importer" msgstr "Configurar un importador" #: ../Doc/library/importlib.rst:1636 -#, fuzzy msgid "" "For deep customizations of import, you typically want to implement an :term:" "`importer`. This means managing both the :term:`finder` and :term:`loader` " @@ -2513,17 +2704,17 @@ msgid "" "will use them (for creating an importer for yourself, read the documentation " "for the appropriate classes defined within this package)::" msgstr "" -"Para personalizaciones profundas de la importación, normalmente desea " -"implementar un :term:`importador`. Esto significa administrar tanto el lado :" -"term:`finder` como :term:`loader` de las cosas. Para los buscadores, hay dos " -"sabores para elegir según sus necesidades: un :term:`meta path finder` o un :" -"term:`path entry finder`. El primero es lo que pondrías en :attr:`sys." -"meta_path` mientras que el segundo es lo que creas usando un :term:`path " -"entry hook` en :attr:`sys.path_hooks` que funciona con :attr:`sys .path` " -"entradas para crear potencialmente un buscador. Este ejemplo le mostrará " -"cómo registrar sus propios importadores para que import los utilice (para " -"crear un importador para usted, lea la documentación de las clases " -"apropiadas definidas dentro de este paquete):" +"Para personalizaciones profundas de importación, normalmente querrá " +"implementar un :term:`importador`. Esto significa gestionar tanto el :term:" +"`buscador` como el :term:`cargador`. Para los buscadores hay dos opciones " +"para elegir según sus necesidades: un :term:`meta path finder` o un :term:" +"`path entry finder`. El primero es lo que pondría en :data:`sys.meta_path` " +"mientras que el segundo es lo que crea utilizando un :term:`path entry hook` " +"en :data:`sys.path_hooks` que funciona con entradas :data:`sys.path` para " +"crear potencialmente un buscador. Este ejemplo le mostrará cómo registrar " +"sus propios importadores para que la importación los utilice (para crear un " +"importador para usted, lea la documentación de las clases apropiadas " +"definidas dentro de este paquete)::" #: ../Doc/library/importlib.rst:1647 msgid "" @@ -2548,6 +2739,26 @@ msgid "" "# of priority.\n" "sys.path_hooks.append(SpamPathEntryFinder.path_hook(loader_details))" msgstr "" +"import importlib.machinery\n" +"import sys\n" +"\n" +"# Sólo con fines ilustrativos.\n" +"SpamMetaPathFinder = importlib.machinery.PathFinder\n" +"SpamPathEntryFinder = importlib.machinery.FileFinder\n" +"detalles_del_cargador = (importlib.machinery.SourceFileLoader,\n" +"importlib.machinery.SOURCE_SUFFIXES)\n" +"\n" +"# Configuración de un meta buscador de rutas.\n" +"# Asegúrese de colocar el buscador en la ubicación adecuada en la lista en términos " +"de\n" +"# prioridad.\n" +"sys.meta_path.append(SpamMetaPathFinder)\n" +"\n" +"# Configuración de un buscador de entradas de ruta.\n" +"# Asegúrese de colocar el gancho de ruta en la ubicación adecuada en la lista en " +"términos\n" +"# de prioridad.\n" +"sys.path_hooks.append(SpamPathEntryFinder.path_hook(detalles_del_cargador))" #: ../Doc/library/importlib.rst:1668 msgid "Approximating :func:`importlib.import_module`" @@ -2598,11 +2809,40 @@ msgid "" " setattr(parent_module, child_name, module)\n" " return module" msgstr "" +"import importlib.util\n" +"import sys\n" +"\n" +"def import_module(name, package=None):\n" +"\"\"\"Una implementación aproximada de la importación.\"\"\"\n" +"nombre_absoluto = importlib.util.resolve_name(name, package)\n" +"try:\n" +"return sys.modules[nombre_absoluto]\n" +"except KeyError:\n" +"pass\n" +"\n" +"path = None\n" +"if '.' in nombre_absoluto:\n" +"parent_name, _, child_name = nombre_absoluto.rpartition('.')\n" +"parent_module = import_module(parent_name)\n" +"path = parent_module.__spec__.submodule_search_locations\n" +"for finder in sys.meta_path:\n" +"spec = finder.find_spec(nombre_absoluto, path)\n" +"if spec is not None:\n" +"break\n" +"else:\n" +"msg = f'Ningún módulo llamado {nombre_absoluto!r}'\n" +"raise ModuleNotFoundError(msg, name=nombre_absoluto)\n" +"module = importlib.util.module_from_spec(spec)\n" +"sys.modules[nombre_absoluto] = module\n" +"spec.loader.exec_module(module)\n" +"if path is not None:\n" +"setattr(parent_module, child_name, module)\n" +"return module" #: ../Doc/library/importlib.rst:443 msgid "universal newlines" -msgstr "" +msgstr "nuevas líneas universales" #: ../Doc/library/importlib.rst:443 msgid "importlib.abc.InspectLoader.get_source method" -msgstr "" +msgstr "importlib.abc.InspectLoader.get_source method"