Python en español #19: Tertulia 2021-02-09 - a podcast by Jesús Cea, Samuel de Ancos y Juan Ignacio Rodríguez de León
from 2021-05-20T18:00
¿Se pueden usar diferentes versiones de una misma librería en un proyecto? (resumen: ¡No vayas por ahí!). MultiVersion Concurrent Controlhttps://podcast.jcea.es/python/19
Participantes:
Jesús Cea, email:jcea@jcea.es, twitter:@jcea,https://blog.jcea.es/,https://www.jcea.es/. Conectando desde Madrid.
Víctor Ramírez, twitter:@virako,
programador python y amante devim, conectando desde Huelva.Javier, conectando desde Madrid.
Miguel Sánchez, email:msanchez@uninet.edu, conectando desde
Canarias.
Audio editado por Pablo Gómez, twitter:@julebek.
La música de la entrada y la salida es"Lightning Bugs", de Jason
Shaw. Publicada enhttps://audionautix.com/con licencia
-Creative Commons Attribution 4.0 International
License.
[00:52] Prólogo: FOSDEMhttps://fosdem.org/.
Escuchar audios previos para ver errores y comentar"erratas".
[03:07] ¡Tenemos un voluntario para editar el podcast! Detalles de cómo grabamos las tertulias.
Todo se graba en una sola pista :-(.
Ideas para automatizar el proceso.
[09:17] Aviso legal de que se está grabando el sonido y que se
va a publicar online.- El audio publicado tendrá un índice en texto, para poder
hacer búsquedas y poder moverse con facilidad entre temas.
- El audio publicado tendrá un índice en texto, para poder
[11:22] Errata de la tertulia anterior: No, pipenvhttps://pypi.org/project/pipenv/no puede instalar dos
versiones diferentes de la misma librería.[13:07] Tormenta de ideashttps://es.wikipedia.org/wiki/Lluvia_de_ideassobre cómo usar
diferentes versiones de la misma librería en el mismo proyecto.Conclusión: ¡No vayas por ahí!Las bibliotecas solo se cargan una vez en el programa,
aunque se hagan muchosimport
en el código.sys.modules
https://docs.python.org/3/library/sys.html#sys.modules.Dependencias transitivas.
Subintérpretes Python. PEP 554:https://www.python.org/dev/peps/pep-0554/.
Módulos en C: PEP 489 -- Multi-phase extension module
initializationhttps://www.python.org/dev/peps/pep-0489/.
[22:17] Python 3.10a5. PEP 636 -- Structural Pattern Matching:
Tutorialhttps://www.python.org/dev/peps/pep-0636/.¡Más sintaxis nueva!
PEP 617 -- New PEG parser for CPythonhttps://www.python.org/dev/peps/pep-0617/.
[23:57] Nuitkahttps://nuitka.net/. - Puede generar un binario que no depende de tener nada
instalado.
- Puede generar un binario que no depende de tener nada
[26:02] Volvemos a"Structural Pattern Matching"https://www.python.org/dev/peps/pep-0636/. - "Switch"con esteroides.
[27:32] Lo importante que fue la modernización de los tutoriales
y ejemplos para ayudar a la migración de Python 2 a Python 3.PEP 414 -- Explicit Unicode Literal for Python 3.3https://www.python.org/dev/peps/pep-0414/.
Jesús Cea opina que la migración de Python 2 a Python 3
se hizo mal y ha sido muy traumática.
[30:22] PEP 8https://www.python.org/dev/peps/pep-0008/. ¿Ajustarse estrictamente a 80 columnas?
Flake8:https://pypi.org/project/flake8/.
[33:22] Mucho cuidado con"python-ideas"https://mail.python.org/mailman3/lists/python-ideas.python.org/. Tabulación de código.
La anotación de tipos puede gustar o no, pero de momento es
opcional.Tema recurrente: ¿Qué es ser pythonico?
[35:12] Ventajas de anotar tipos. Origen de MYPY:http://mypy-lang.org/.
Aportar información al IDEhttps://en.wikipedia.org/wiki/Integrated_development_environment.
Valor a la hora de documentar los tipos en los APIhttps://en.wikipedia.org/wiki/API.
[39:52] Cryptographyhttps://cryptography.io/en/latest/y
polémica al integrar módulos en Rusthttps://en.wikipedia.org/wiki/Rust_(programming_language)- Comunidad tóxica.
[41:27] Digresión sobre systemdhttps://en.wikipedia.org/wiki/Systemdy otras cosas de
sistemas.- ¿El cambio por el cambio?
[45:07] El peso de la web está moviéndose otra vez al backend.
¿Qué opciones tiene Python en este area?El cliente web solo envía eventos al servidor y recibe
cambios al DOMhttps://es.wikipedia.org/wiki/Document_Object_Modelenviadas por el servidor.Abre la posibilidad olvidarnos de JavaScript:https://es.wikipedia.org/wiki/JavaScript.
[51:02] splashhttps://pypi.org/project/splash/.
Servicio de dibujado de javascript en Python.[56:07] Integrar Python en otros programas y demonios. [57:07] PyOxidizerhttps://pyoxidizer.readthedocs.io/en/stable/y PyO3https://pyo3.rs/. Interactuar con otros lenguajes.
Python en Java, interactuando sin dolor: Jythonhttps://www.jython.org/.
[59:52] ¿Cómo empezamos en Python? Valor de Python como lenguaje fácil de entender y
pseudocódigo.- SpamBayes:http://spambayes.sourceforge.net/.
Tutorial de Python:https://docs.python.org/es/3/tutorial/index.html.
[01:05:07] Modificación atómica de ficheros. En Unix se suele hacer: write + flush + rename.
MS Windows eso no funciona.
Python 3.3 añadió
os.replace()
https://docs.python.org/3.8/library/os.html#os.replace.En MS Windows es atómico... casi siempre: Issue8828: Atomic
function to rename a filehttps://bugs.python.org/issue8828.
[01:10:02] Combinar fork e hilos en Python es una receta para el
desastre.[01:11:37] Decorador @overload
https://docs.python.org/3/library/typing.html#typing.overload.@functools.singledispatch
https://docs.python.org/3/library/functools.html.¿Qué se ve cuando salta una excepción?
Especializaciones.
Cythonhttps://cython.org/.
[01:17:00] AnyIOhttps://anyio.readthedocs.io/en/stable/basics.html.
Unificación de reactores asíncronos.[01:18:12] "lxml soporta xpath". Hilo en la lista de correo:"[Python-es] Biblioteca XPATH"https://mail.python.org/pipermail/python-es/2021-February/037931.html.
lxml:https://lxml.de/.
beautifulsoup4:https://pypi.org/project/beautifulsoup4/.
Scrapy:https://scrapy.org/.
El buscador de PyPIhttps://pypi.org/funciona fatal a la
hora de ordenar por relevancia.
[01:20:02] El valor de estudiar el código fuente ajeno no solo
para aprender de él sino también para descubrir qué bibliotecasútiles utilizan para añadirlas a tu cajón de herramientas.Es la documentación última.
Los tests son muy útiles para saber cómo se usa el producto.
[01:22:02] ¿Cómo gestionáis la paginación cuando los datos del
backend cambian? ¿Cómo evitáis repetir resultados o saltarosdatos?Brainstorming de diversas estrategias.
Berkeley DB:https://pypi.org/project/berkeleydb/.
Multiversion concurrency control:https://es.wikipedia.org/wiki/Multiversion_concurrency_control.
Copy on Write:https://es.wikipedia.org/wiki/Copy_on_write.
Snapshot:https://es.wikipedia.org/wiki/Copia_instant%C3%A1nea_de_volumen.
PostgreSQL:https://www.postgresql.org/.
ZFS:https://es.wikipedia.org/wiki/ZFS_(sistema_de_archivos).
Normalización y formas normales:https://es.wikipedia.org/wiki/Forma_normal_(base_de_datos).
[01:48:42] FOSDEMhttps://fosdem.org/: Virako recomienda las siguientes:
Some SQL Tricks of an Application DBA - Non-trivial tips for
database developmenthttps://fosdem.org/2021/schedule/event/postgresql_some_sql_tricks_of_an_application_dba/.Database Disasters and How to Find Themhttps://fosdem.org/2021/schedule/event/postgresql_database_disasters_and_how_to_find_them/.
Practical advice for using Mypy - Hidden gems in the typing
system!https://fosdem.org/2021/schedule/event/python_mypy/.Escaping the Cargo Cult - How to structure your project
without losing your mind.https://fosdem.org/2021/schedule/event/python_escaping_cargo_cult/.
[01:52:02] Charla Python Madridhttps://www.python-madrid.es/. - TDD - ¿panacea del desarrollo o pérdida de tiempo?https://www.python-madrid.es/meetings/reunion-febrero-2021-python-madrid/.
[01:54:27] Comentado en la tertulia de la semana pasada: Bugs
sobre"pickle"https://docs.python.org/3/library/pickle.htmlen el módulo__main__
.Se trata de un problema conocido.
Ejemplo de código:https://pastebin.com/vGM1sh8r.
Issue24676: Error in pickle using cProfilehttps://bugs.python.org/issue24676.
Issue9914: trace/profile conflict with the use of
sys.modules[__name__]
https://bugs.python.org/issue9914.Issue9325: Add an option to pdb/trace/profile to run library
module as a scripthttps://bugs.python.org/issue9325.
[02:00:42] Que te cuenten lo que no funciona es mucho más
interesante.- Postmortem.
[02:02:52] Whoosh:https://whoosh.readthedocs.io/en/latest/intro.html. ¿Cómo
normalizar las palabras para español?- La palabra"real"Whoosh:https://www.wordreference.com/es/translation.asp?tranword=whoosh.
Dificultades para buscar el proyecto Python Whooshhttps://whoosh.readthedocs.io/en/latest/intro.htmlen
internet.
- La palabra"real"Whoosh:https://www.wordreference.com/es/translation.asp?tranword=whoosh.
[02:05:48] Final.
Further episodes of Python en español
Further podcasts by Jesús Cea, Samuel de Ancos y Juan Ignacio Rodríguez de León
Website of Jesús Cea, Samuel de Ancos y Juan Ignacio Rodríguez de León