# `importlib.resources.abc` – Abstract base classes for resources

Source code: Lib/importlib/resources/abc.py

Added in version 3.11.

class importlib.resources.abc.ResourceReader

  Superseded by TraversableResources

  Un abstract base class para proporcionar la capacidad de leer resources.

  From the perspective of this ABC, a resource is a binary artifact that is shipped within a package. Typically this is something like a data file that lives next to the `__init__.py` file of the package. The purpose of this class is to help abstract out the accessing of such data files so that it does not matter if the package and its data file(s) are stored e.g. in a zip file versus on the file system.

  Para cualquiera de los métodos de esta clase, se espera que un argumento resource sea un path-like object que represente conceptualmente solo un nombre de archivo. Esto significa que no se deben incluir rutas de subdirectorios en el argumento resource. Esto se debe a que la ubicación del paquete para el que se encuentra el lector actúa como el «directorio». Por lo tanto, la metáfora de directorios y nombres de archivos 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).

  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 implementa la interfaz de este ABC. Si el módulo especificado por nombre completo no es un paquete, este método debería retornar `None`. Un objeto compatible con este ABC solo debe retornarse cuando el módulo especificado es un paquete.

  Obsoleto desde la versión 3.12: Use `importlib.resources.abc.TraversableResources` instead.

  abstractmethod open_resource(resource)

    > Retorna un file-like object abierto para la lectura binaria del resource.

    > Si no se puede encontrar el recurso, se genera `FileNotFoundError`.

  abstractmethod resource_path(resource)

    > Retorna la ruta del sistema de archivos al resource.

    > Si el recurso no existe concretamente en el sistema de archivos, lanza `FileNotFoundError`.

  abstractmethod is_resource(name)

    > Retorna `True` si el name con nombre se considera un recurso. `FileNotFoundError` se genera si name no existe.

  abstractmethod contents()

    > Retorna un iterable de cadenas sobre el contenido del paquete. Tenga en cuenta que no se requiere que todos los nombres devueltos por el iterador sean recursos reales, p. es aceptable devolver nombres para los que `is_resource()` sería falso.

    > Permitir que se retornen nombres que no son de 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 de recursos serían útiles. Por ejemplo, se permite devolver 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.

    > El método abstracto retorna un iterable sin elementos.

class importlib.resources.abc.Traversable

  An object with a subset of `pathlib.Path` methods suitable for traversing directories and opening files.

  For a representation of the object on the file-system, use `importlib.resources.as_file()`.

  name

    Resumen. El nombre base de este objeto sin ninguna referencia principal.

  abstractmethod iterdir()

    Produce generador iterador de objetos Traversable en self.

  abstractmethod is_dir()

    Return `True` if self is a directory.

  abstractmethod is_file()

    Return `True` if self is a file.

  abstractmethod joinpath(*pathsegments)

    Traverse directories according to pathsegments and return the result as `Traversable`.

    Each pathsegments argument may contain multiple names separated by forward slashes (`/`, `posixpath.sep` ). For example, the following are equivalent:

        files.joinpath('subdir', 'subsuddir', 'file.txt')
        files.joinpath('subdir/subsuddir/file.txt')

    Note that some `Traversable` implementations might not be updated to the latest version of the protocol. For compatibility with such implementations, provide a single argument without path separators to each call to `joinpath`. For example:

        files.joinpath('subdir').joinpath('subsubdir').joinpath('file.txt')

    Distinto en la versión 3.11: `joinpath` accepts multiple pathsegments, and these segments may contain forward slashes as path separators. Previously, only a single child argument was accepted.

  abstractmethod __truediv__(child)

    Return Traversable child in self. Equivalent to `joinpath(child)`.

  abstractmethod open(mode='r', *args, **kwargs)

    mode puede ser “r” o “rb” para abrir como texto o binario. Retorna un identificador adecuado para la lectura (igual que `pathlib.Path.open`).

    When opening as text, accepts encoding parameters such as those accepted by `io.TextIOWrapper`.

  read_bytes()

    Lee el contenido de self como bytes.

  read_text(encoding=None)

    Lee el contenido de self como texto.

class importlib.resources.abc.TraversableResources

  An abstract base class for resource readers capable of serving the `importlib.resources.files()` interface. Subclasses `ResourceReader` and provides concrete implementations of the `ResourceReader`’s abstract methods. Therefore, any loader supplying `TraversableResources` also supplies `ResourceReader`.

  Se espera que los cargadores que deseen admitir la lectura de recursos implementen esta interfaz.

  abstractmethod files()

    Retorna un objeto `importlib.resources.abc.Traversable` para el paquete cargado.