Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Este libro es una guía de las herramientas modernas para desarrolladores de Python: los programas que te ayudan a realizar tareas como:
-
Gestionar las instalaciones de Python en tu sistema
-
Instalar paquetes de terceros para tu proyecto actual
-
Construir un paquete Python para distribuirlo en un repositorio de paquetes
-
Ejecutar un conjunto de pruebas repetidamente en varios entornos
-
Linting y comprobación tipográfica de tu código para detectar errores
No necesitas estrictamente estas herramientas para escribir software Python. Enciende el intérprete de Python de tu sistema y obtén un prompt interactivo. Guarda tu código Python como un script para más tarde. ¿Por qué utilizar algo más que un editor y un intérprete de comandos?
No es una pregunta retórica. Cada herramienta que añadas a tu flujo de trabajo de desarrollo debe tener un propósito claro y aportar beneficios que superen los costes de su uso. Generalmente, los beneficios de las herramientas de desarrollo se manifiestan cuando necesitas que el desarrollo sea sostenible en el tiempo. En algún momento, publicar tu módulo en el Índice de Paquetes de Python será más fácil que enviarlo por correo electrónico a tus usuarios.
En algún punto del camino, desde escribir guiones puntuales hasta distribuir y mantener paquetes, surgen retos:
-
Soporte de múltiples versiones de Python en múltiples sistemas operativos
-
Mantener actualizadas las dependencias y analizarlas en busca de vulnerabilidades
-
Mantener la base de código legible y coherente
-
Interactuar con los informes de errores y las contribuciones externas de la comunidad
-
Mantener alta la cobertura de las pruebas para reducir la tasa de defectos en los cambios de código
-
Automatizar las tareas repetidas para reducir la fricción y evitar sorpresas
Este libro te mostrará cómo las herramientas para desarrolladores pueden ayudarte con esos retos. Las herramientas aquí descritas benefician enormemente la calidad del código, la seguridad y la mantenibilidad de los proyectos Python.
Pero las herramientas también añaden complejidad y sobrecarga. Este libro se esfuerza por minimizarlo forjando herramientas en una cadena de herramientas fácil de usar y automatizando los flujos de trabajo de forma fiable y repetible, tanto si se ejecutan localmente en una máquina de desarrollador como en un servidor de integración continua en diversas plataformas y entornos.
Se ha dicho que la pereza es "la mayor virtud de un programador".1 y este dicho también se aplica a las herramientas de desarrollo: simplifica tu flujo de trabajo y no adoptes herramientas porque sí. Al mismo tiempo, los buenos programadores también son curiosos. Prueba las herramientas de este libro para ver qué valor pueden aportar a tus proyectos.
El ecosistema Python evoluciona constantemente: lo que hoy consideramos moderno cede inevitablemente el paso a las formas hipermodernas del mañana.2 Este libro intenta dar a conocer las herramientas, estándares y buenas prácticas más recientes, no por su novedad, sino porque mejoran tu productividad y tu experiencia como desarrollador. Comprender los porqués y los cómos de estas herramientas y flujos de trabajo -así como sus ventajas y desventajas- te preparará para cuando la próxima generación de herramientas Python aparezca en el horizonte.
¿Quién debería leer este libro?
Si eres una de estas personas, te beneficiarás de la lectura de este libro:
-
Dominas Python, pero no estás seguro de cómo crear un paquete.
-
Llevas años haciendo esto: setuptools, virtualenv y pip son tus amigos. Sientes curiosidad por los últimos avances en herramientas y lo que aportan.
-
Mantienes código de misión crítica que se ejecuta en producción. Pero debe haber una forma mejor de hacer todo esto. Quieres conocer las herramientas más avanzadas y las buenas prácticas en evolución.
-
Quieres ser más productivo como desarrollador de Python.
-
Eres un mantenedor de código abierto que busca una infraestructura de proyecto robusta y moderna.
-
Estás utilizando un montón de herramientas Python en tus proyectos, pero te resulta difícil ver cómo encaja todo. Quieres reducir la fricción que conlleva todo este conjunto de herramientas.
-
"Las cosas se siguen rompiendo: ¿por qué Python no encuentra ahora mi módulo? ¿Por qué no puedo importar el paquete que acabo de instalar?"
Este libro asume que tienes conocimientos básicos del lenguaje de programación Python. Las únicas herramientas con las que necesitas estar familiarizado son el intérprete de Python, un editor o IDE y la línea de comandos de tu sistema operativo.
Cómo está organizado este libro
Este libro está organizado en tres partes:
- Parte I, "Trabajar con Python"
-
-
El Capítulo 1, "Instalar Python", te enseña a gestionar las instalaciones de Python a lo largo del tiempo en distintas plataformas. El capítulo también presenta los Lanzadores de Python para Windows y Unix: los utilizarás a lo largo del libro.
-
El Capítulo 2, "Entornos de Python", se adentra en una instalación de Python y analiza cómo interactúa tu código con ella. También conocerás herramientas que te ayudarán a trabajar eficazmente con entornos virtuales.
-
- Parte II, "Proyectos Python"
-
-
El Capítulo 3, "Paquetes Python", te enseña a configurar tu proyecto como un paquete Python, y a construir y publicar artefactos de empaquetado. El capítulo también presenta la aplicación de ejemplo utilizada a lo largo del libro.
-
El Capítulo 4, "Gestión de dependencias", describe cómo añadir paquetes de terceros a un proyecto Python y cómo hacer un seguimiento de las dependencias de tu proyecto a lo largo del tiempo.
-
El Capítulo 5, "Gestionar proyectoscon Poesía", te enseña a trabajar con proyectos Python utilizando Poesía. Poetry te permite gestionar entornos, dependencias y empaquetado a un nivel superior.
-
- Parte III, "Pruebas y análisis estático"
-
-
El capítulo 6, "Probar con pytest", trata sobre cómo probar un proyecto Python y cómo trabajar eficazmente con el framework pytest y su ecosistema.
-
El capítulo 7, "Medición de la coberturacon Coverage.py", te enseña a descubrir código no probado midiendo la cobertura del código de tu conjunto de pruebas.
-
El capítulo 8, "Automatización con Nox", presenta el marco de automatización Nox. Lo utilizarás para ejecutar pruebas en entornos Python y, de forma más general, para automatizar comprobaciones y otras tareas de desarrollador en tus proyectos.
-
El capítulo 9, "Linting con Ruffy pre-commit", te muestra cómo encontrar y corregir errores probables, y cómo dar formato a tu código, con Ruff. También aprenderás sobre pre-commit, un framework de linter multilingüe con integración en Git.
-
El capítulo 10, "Uso de tipos para seguridade inspección", te enseña a verificar la seguridad de tipos con comprobadores de tipos estáticos y en tiempo de ejecución, y a inspeccionar tipos en tiempo de ejecución para realizar magia real (se aplican términos y condiciones).
-
Referencias y lecturas adicionales
Tu primer punto de referencia fuera de este libro debe ser la documentación oficial de cada herramienta. Además, en el Discurso Python tienen lugar muchas discusiones interesantes relacionadas con el empaquetado. Las discusiones en la categoría Empaquetado a menudo dan forma al futuro del ecosistema de empaquetado y herramientas de Python en forma de estándares de empaquetado mediante el proceso Python Enhancement Proposal (PEP). Por último, la Autoridad de Empaquetado de Python (PyPA) es un grupo de trabajo que mantiene un conjunto básico de proyectos de software utilizados en el empaquetado de Python. Su sitio web realiza un seguimiento de la lista de normas de interoperabilidad actualmente activas que rigen el empaquetado de Python. La PyPA también publica laGuía del Usuario de Empaquetado de Python.
Convenciones utilizadas en este libro
En este libro se utilizan las siguientes convenciones tipográficas:
- Cursiva
-
Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.
Constant width
-
Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.
Constant width bold
-
Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.
Constant width italic
-
Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.
Consejo
Este elemento significa un consejo o sugerencia.
Nota
Este elemento significa una nota general.
Advertencia
Este elemento indica una advertencia o precaución.
Utilizar ejemplos de código
El material complementario (ejemplos de código, ejercicios, etc.) se puede descargar en https://oreil.ly/hmpt-code.
Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a bookquestions@oreilly.com.
Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.
Agradecemos la atribución, pero en general no la exigimos. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Hypermodern Python Tooling por Claudio Jolowicz (O'Reilly). Copyright 2024 Claudio Jolowicz, 978-1-098-13958-2".
Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en permissions@oreilly.com.
Aprendizaje en línea O'Reilly
Nota
Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.
Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita https://oreilly.com.
Cómo contactar con nosotros
Dirige tus comentarios y preguntas sobre este libro a la editorial:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Norte
- Sebastopol, CA 95472
- 800-889-8969 (en Estados Unidos o Canadá)
- 707-827-7019 (internacional o local)
- 707-829-0104 (fax)
- support@oreilly.com
- https://oreilly.com/about/contact.html
Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/hypermodern-python-tooling.
Para obtener noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.
Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media
Míranos en YouTube: https://youtube.com/oreillymedia
Agradecimientos
Este libro abarca muchos proyectos Python de código abierto. Estoy muy agradecido a sus autores y mantenedores, la mayoría de los cuales trabajan en ellos en su tiempo libre, a menudo durante muchos años. En particular, me gustaría reconocer a los héroes anónimos de la PyPA, cuyo trabajo en los estándares de empaquetado permite que el ecosistema evolucione hacia mejores herramientas. Un agradecimiento especial a Thea Flowers por escribir Nox y construir una comunidad acogedora.
Antes de este libro, estaba la serie de artículos Python Hipermoderno. Me gustaría dar las gracias a Brian Okken, Michael Kennedy y Paul Everitt por difundirla, y a Brian por darme el valor de convertirla en un libro.
Estoy en deuda con mis revisores Pat Viafore, Jürgen Gmach, Hynek Schlawack, William Jamir Silva, Ganesh Hark y Karandeep Johar, por sus profundos conocimientos y sus opiniones. Este libro no sería lo mismo sin ellos. Asumo la responsabilidad de los errores que puedan quedar.
Para hacer un libro hace falta un pueblo. Me gustaría dar las gracias a mis editores Zan McQuade, Brian Guerin, Sarah Grey, Greg Hyman y Emily Wydeven, así como a todo el equipo de O'Reilly. Mi agradecimiento especial a Sarah por mantenerme en el buen camino y mejorar mi escritura durante este viaje. Por darme tiempo para trabajar en este libro, doy las gracias a Jakub Borys, mi jefe en Cloudflare. Gracias, Gabriela Jolowicz, por crear unas viñetas de capítulos tan bellas y convincentes que muestran visiones pasadas del futuro.
Este libro está dedicado a Marianna, el amor de mi vida. Sin su apoyo, ánimo e inspiración, no podría haber escrito este libro.
1 Larry Wall, Programming Perl (Sebastopol: O'Reilly, 1991).
2 El título de este libro se inspira en Die hypermoderne Schachpartie (El juego de ajedrez hipermoderno), escrito por Savielly Tartakower en 1924. Analiza la revolución que se estaba produciendo en la teoría del ajedrez durante su época.
Get Herramientas Python hipermodernas now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.