¿Se pueden usar diferentes versiones de una misma librería en un proyecto? (resumen: ¡No vayas por ahí!). MultiVersion Concurrent Control
Autor: Jesús Cea & Otros - Contacto: python2021@podcast.jcea.es
Fecha de grabación: 2021/02/09 - Duración: 02:06:40
Fecha de publicación: 2021/05/20
Palabras clave: Tertulia
Descarga el audio: M4A (32089592 bytes) - OPUS (15692313 bytes)
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 de vim, 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 en https://audionautix.com/ con licencia - Creative Commons Attribution 4.0 International License.
FOSDEM https://fosdem.org/.
Escuchar audios previos para ver errores y comentar "erratas".
Detalles de cómo grabamos las tertulias.
Todo se graba en una sola pista :-(.
Ideas para automatizar el proceso.
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/.
¡Más sintaxis nueva!
PEP 617 -- New PEG parser for CPython https://www.python.org/dev/peps/pep-0617/.
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.
¿Ajustarse estrictamente a 80 columnas?
Flake8: https://pypi.org/project/flake8/.
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?
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.
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.
Interactuar con otros lenguajes.
Python en Java, interactuando sin dolor: Jython https://www.jython.org/.
Valor de Python como lenguaje fácil de entender y pseudocódigo.
Tutorial de Python: https://docs.python.org/es/3/tutorial/index.html.
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 file https://bugs.python.org/issue8828.
@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/.
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 PyPI https://pypi.org/ funciona fatal a la hora de ordenar por relevancia.
Es la documentación última.
Los tests son muy útiles para saber cómo se usa el producto.
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).
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/.
__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.