Show notes
¿Se pueden usar diferentes versiones de una misma librería en un proyecto? (resumen: ¡No vayas por ahí!). MultiVersion Concurrent Control https://podcast.jcea.es/python/19Participantes:Jesús Cea, email: [email protected], twitter: @jcea, https://blog.jcea.es/, https://www.jcea.es/. Conectando desde Madrid.Víctor Ramírez, twitter: @virako, programador python y amante de vim, conectando desde Huelva.Javier, conectando desde Madrid.Miguel Sánchez, email: [email protected], conectando desde Canarias.Audio editado por Pablo Gómez, twitter:@julebek.La música de la entrada y la salida es "Lightning Bugs", de JasonShaw. Publicada en https://audionautix.com/ con licencia- Creative Commons Attribution 4.0 InternationalLicense.[00:52] Prólogo:FOSDEM https://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 :-(.RNNoise: https://people.xiph.org/~jm/demo/rnnoise/.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.[11:22] Errata de la tertulia anterior: No, pipenv https://pypi.org/project/pipenv/ no puede instalar dos versiones diferentes de la misma librería.[13:07] Tormenta de ideas https://es.wikipedia.org/wiki/Lluvia_de_ideas sobre 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 muchos import 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 initialization https://www.python.org/dev/peps/pep-0489/.[22:17] Python 3.10a5. PEP 636 -- Structural Pattern Matching: Tutorial https://www.python.org/dev/peps/pep-0636/.¡Más sintaxis nueva!PEP 617 -- New PEG parser for CPython https://www.python.org/dev/peps/pep-0617/.[23:57] Nuitka https://nuitka.net/.Puede generar un binario que no depende de tener nada instalado.[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.3 https://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 8 https://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 IDE https://en.wikipedia.org/wiki/Integrated_development_environment.Valor a la hora de documentar los tipos en los API https://en.wikipedia.org/wiki/API.[39:52] Cryptography https://cryptography.io/en/latest/ y polémica al integrar módulos en Rust https://en.wikipedia.org/wiki/Rust_(programming_language)Comunidad tóxica.[41:27] Digresión sobre systemd https://en.wikipedia.org/wiki/Systemd y 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 DOM https://es.wikipedia.org/wiki/Document_Object_Model enviadas por el servidor.Abre la posibilidad olvidarnos de JavaScript: https://es.wikipedia.org/wiki/JavaScript.ItsNat: https://en.wikipedia.org/wiki/ItsNat.[51:02] splash https://pypi.org/project/splash/. Servicio de dibujado de javascript en Python.AJAX: https://es.wikipedia.org/wiki/AJAX.[56:07] Integrar Python en otros programas y demonios.LUA: https://es.wikipedia.org/wiki/Lua.[57:07] PyOxidizer https://pyoxidizer.readthedocs.io/en/stable/ y PyO3 https://pyo3.rs/.Interactuar con otros lenguajes.Python en Java, interactuando sin dolor: Jython https://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.bc -l https://linux.die.net/man/1/bc.[01:05:07] Modificación atómica de ficheros.En Unix se suele hacer: write + flush + rename.rename: https://www.man7.org/linux/man-pages/man2/rename.2.html.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 file https://bugs.python.org/issue8828.[01:10:02] Combinar fork e hilos en Python es una receta para el desastre.fork: https://www.man7.org/linux/man-pages/man2/fork.2.html.multiprocessing: https://docs.python.org/3/library/multiprocessing.html.[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.Cython https://cython.org/.[01:17:00] AnyIO https://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/.XPath: https://es.wikipedia.org/wiki/XPath.Scrapy: https://scrapy.org/.El buscador de PyPI https://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 saltaros datos?Brainstorming de diversas estrategias.Berkeley DB: https://pypi.org/project/berkeleydb/.lmdb: https://pypi.org/project/lmdb/.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.BTree: https://es.wikipedia.org/wiki/%C3%81rbol-B.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] FOSDEM https://fosdem.org/:Virako recomienda las siguientes:Some SQL Tricks of an Application DBA - Non-trivial tips for database development https://fosdem.org/2021/schedule/event/postgresql_some_sql_tricks_of_an_application_dba/.Database Disasters and How to Find Them https://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 Madrid https://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.html en el módulo __main__.Se trata de un problema conocido.Ejemplo de código: https://pastebin.com/vGM1sh8r.Issue24676: Error in pickle using cProfile https://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 script https://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 Whoosh https://whoosh.readthedocs.io/en/latest/intro.html en internet.[02:05:48] Final.

