Salta al contenido principal

Explicación del Archivo 'pyproject.toml' de Ejemplo

Sitio: STRATIO Training & Certification
Curso: Creación de un chain con datos Estructurados (Virtualizador)
Libro: Explicación del Archivo 'pyproject.toml' de Ejemplo
Imprimido por: Invitado
Día: lunes, 27 de octubre de 2025, 03:10

Descripción

El archivo pyproject.toml es la pieza central de configuración en un proyecto gestionado por Poetry. Este archivo define aspectos clave del proyecto como el nombre, la versión, las dependencias, y las configuraciones adicionales para herramientas de desarrollo. A continuación, se describen los apartados principales del archivo de ejemplo.

1. [tool.poetry]

Este apartado define la información básica del proyecto.

  • name: Especifica el nombre del proyecto, en este caso "genai-chain-examples". Este nombre es utilizado para identificar el paquete cuando se distribuye.

  • version: Indica la versión actual del proyecto, aquí "0.3.0a0", donde a0 señala que es una versión alfa.

  • description: Un campo opcional para una breve descripción del proyecto.

  • authors: Una lista de autores del proyecto. Este campo puede estar vacío, como en el ejemplo, pero normalmente contiene nombres y correos electrónicos de los desarrolladores.

  • packages: Este campo define qué subdirectorios contienen paquetes de Python que deben ser incluidos en la distribución del proyecto. En este caso, se incluye el paquete "genai_chain_joke".


2. [tool.poetry.dependencies]

Aquí se definen las dependencias principales del proyecto.

  • python: Especifica la versión de Python requerida. En este ejemplo, el proyecto requiere cualquier versión de Python mayor o igual a 3.9 (^3.9).

  • genai-core: Dependencia específica del proyecto, con la versión exacta "0.2.0".

  • Otras dependencias: Como lmdb, langchain, langchain-core, y langchain-openai. Cada una con su versión especificada. Estas son bibliotecas que el proyecto necesita para funcionar correctamente.


3. [tool.poetry.group.dev.dependencies]

Este apartado se utiliza para las dependencias de desarrollo, que no son necesarias para la ejecución del proyecto en producción, pero sí para tareas como pruebas, linting y formateo de código.

  • pytest: Herramienta para realizar pruebas unitarias.
  • pytest-asyncio: Extensión de pytest para manejar código asíncrono.
  • pylint: Herramienta de análisis estático de código para identificar problemas en el código.
  • black: Formateador de código que asegura que todo el código siga un estilo consistente.
  • Otras dependencias: Como mypy para chequeo de tipos y pytest-cov para la cobertura de pruebas, entre otras.

4. [tool.poetry.scripts]

Este apartado define comandos personalizados que se pueden ejecutar usando Poetry.

  • start_joke: Este script ejecuta el método main del módulo genai_chain_joke.main. Los estudiantes pueden ejecutar este comando para iniciar su aplicación directamente con poetry run start_joke.

5. [[tool.poetry.source]]

Aquí se configuran fuentes adicionales desde donde Poetry puede buscar e instalar dependencias.

  • name y url: Define repositorios personalizados, como "stratio-releases", "stratio-snapshots", y "stratio-staging", que son repositorios internos donde se alojan dependencias específicas de la empresa.

  • priority: Define la prioridad del repositorio. En este caso, están marcados como supplemental, lo que indica que son repositorios adicionales a los predeterminados.


6. [tool.coverage.run]

Este apartado se utiliza para la configuración de cobertura de código (con pytest-cov en este caso).

  • omit: Define qué archivos o directorios deben ser omitidos al calcular la cobertura de código, como tests/* y scripts/*.

7. [tool.pylint.*]

Varios apartados bajo tool.pylint configuran pylint, una herramienta de análisis de código.

  • main: Especifica la versión de Python y otros ajustes generales de pylint, como los patrones de archivos a ignorar y los plugins a cargar.
  • basic: Configura opciones básicas como expresiones regulares para nombres de funciones sin docstring.
  • messages control: Aquí se deshabilitan ciertos mensajes de advertencia que pylint podría generar, como los relacionados con "too-few-public-methods".
  • format: Define el formato del código, por ejemplo, max-line-length establece un límite de 120 caracteres por línea.
  • variables: Configura los nombres de variables que pylint debería ignorar.

8. [build-system]

Este apartado es estándar en proyectos de Poetry y define cómo se debe construir el proyecto.

  • requires: Indica que se necesita poetry-core para construir el proyecto.
  • build-backend: Define el backend de construcción, en este caso poetry.core.masonry.api.