Python en español

Python en español #19: Tertulia 2021-02-09

05.20.2021 - By Jesús CeaPlay

Download our free app to listen on your phone

Download on the App StoreGet it on Google Play

¿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/19

Participantes:

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 Jason

Shaw. Publicada en https://audionautix.com/ con licencia

- Creative Commons Attribution 4.0 International

License.

[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.

More episodes from Python en español