Python en español #21: Tertulia 2021-02-23

Python en español - Un pódcast de Jesús Cea

Categorías:

Grupos de excepciones (PEP 654), PYPI y hasta bitcoins y blockchains (¡sin hype!) https://podcast.jcea.es/python/21 Este audio tiene mucho ruido producido por el roce del micrófono de Jesús Cea en la ropa. Participantes: Jesús Cea, email: [email protected], twitter: @jcea, https://blog.jcea.es/, https://www.jcea.es/. Conectando desde Madrid. Javier, conectando desde Madrid. Miguel Sánchez, email: [email protected], conectando desde Canarias. Eduardo Castro, email: [email protected]. Conectando desde A Guarda. Víctor Ramírez, twitter: @virako, programador python y amante de vim, conectando desde Huelva. 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:53] El aviso legal de rigor. ¡Hay un voluntario para editar! [02:23] Pasamos a reunirnos en la sala "py2021" en vez de en la sala "py2020". [03:13] ¿Las cadenas son inmutables? Las cadenas son inmutables, pero los id() se reutilizan cuando se liberan objetos. Se explica qué es id(). No es una identidad persistente, depende de su direcciñon de memoria y la memoria se reutiliza cuando se liberan objetos. [07:23] ¿Hay forma de mutar una cadena? No desde el propio lenguaje, pero desde C y... ¡No vayas por ahí! Python 3.9.2 soluciona un desbordamiento de memoria. [10:03] Grupos de excepciones: PEP 654 https://www.python.org/dev/peps/pep-0654/. Lista de correo de Python Ideas: https://mail.python.org/mailman3/lists/python-ideas.python.org/. Si usas la funcionalidad, la sintaxis y semántica de las excepciones se modifica. Como ocurrió con async y await, si alguno de los paquetes nuevos usa esta funcionalidad, te contaminará tu propio código. [14:28] Probar una biblioteca en diferentes versiones de Python. Tener varias versiones instaladas de Python. make altinstall es tu amiga para poder instalar varias versiones diferentes de Python a la vez en el sistemas operativo. Diferencia entre llamar a python3 y llamar a python3.6. Matriz de tests. Docker: https://es.wikipedia.org/wiki/Docker_(software). Flake8: https://pypi.org/project/flake8/. [22:43] Bibliotecas y cambios de sintaxis en Python con la evolución del intérprete. Si código Python 3 funciona en Python 2... ¿El código era Python 3 realmente? Proyectos con compatibilidad mal especificada. [25:53] Pruebas en varias versiones: Tox: https://pypi.org/project/tox/. pyenv: https://pypi.org/project/pyenv/. Pylint: https://pypi.org/project/pylint/. [27:53] Black: https://pypi.org/project/black/. Reformateador de código "nazi". Se acabaron las discusiones de estilo. ¿Puede un formateador "nazi" ser configurable? ¿No es un oxímoron? [32:28] Pasar tests y comprobaciones cuando se mete código en el control de versiones: gitlint: https://jorisroovers.com/gitlint/. vim-autopep8: https://vim-autopep8.readthedocs.io/en/latest/. [34:53] PEPs recientes con cambios de sintaxis: Grupos de excepciones y "pattern matching": Grupos de excepciones: PEP 654 -- Exception Groups and except* https://www.python.org/dev/peps/pep-0654/. La semántica cambia bastante y "contamina" el código como lo hace async/await. PEP 622 -- Structural Pattern Matching https://www.python.org/dev/peps/pep-0622/. PEP 634 -- Structural Pattern Matching: Specification https://www.python.org/dev/peps/pep-0634/. PEP 635 -- Structural Pattern Matching: Motivation and Rationale https://www.python.org/dev/peps/pep-0635/. PEP 636 -- Structural Pattern Matching: Tutorial https://www.python.org/dev/peps/pep-0636/. [40:28] Trio https://pypi.org/project/trio/ programación asíncrona mejor hecha que con asyncio https://docs.python.org/3/library/asyncio.html. El concepto de "guardería" en Trio: https://trio.readthedocs.io/en/stable/reference-core.html#trio.Nursery. [44:23] Python ha cumplido 30 años. La primera versión pública fue la 0.9.1 en 1991. Happy birthday, Python, you're 30 years old this week: Easy to learn, and the right tool at the right time https://www.theregister.com/2021/02/20/python_at_30/. Compilación en sistemas operativos modernos: https://github.com/smontanaro/python-0.9.1. [45:13] Comparación de diferentes tipos. En Python 2 se podían mezclar, pero en Python 3 no. Programar funciones de comparación personalizadas. Definir tipos personalizados que sepan compararse entre sí. Problemas al migrar un sistema de persistencia de Python 2 a Python 3. BTree: https://es.wikipedia.org/wiki/%C3%81rbol-B. [52:33] ¿Por qué Pillow https://pypi.org/project/Pillow/ se sigue importando como import PIL, la librería que reemplazó hace eones? Confuso. Casos similares (hay muchos más): python-dateutil https://pypi.org/project/python-dateutil/. Beautiful Soup: https://pypi.org/project/beautifulsoup4/. dnspython https://pypi.org/project/dnspython/. [59:18] Seguridad en PYPI https://pypi.org/. [01:00:48] ¿El buscador de PYPI https://pypi.org/ sirve para algo? El orden por relevancia es un chiste. [01:02:18] Estadísticas de descarga en PYPI https://pypi.org/: Antes había contadores de descargas. Vanity: https://pypi.org/project/vanity/. Ahora tenemos: (depende de Google) PyPI Download Stats https://pypistats.org/. pypinfo https://pypi.org/project/pypinfo/. [01:09:48] Servicios que Google ha matado: https://killedbygoogle.com/. 229 servicios hasta el momento. [01:10:23] Jesús y su ideología de servicios gratuitos que crecen a costa del trabajo de los usuarios. Encima dependes de ellos y queman el mercado para servicios comerciales. La resignación y pasividad de los usuarios. [01:13:28] Idea de Jesús: Estamos viviendo en la edad oscura de la informática. Dentro de 50 años no se podrá acceder a la información generada en estos momentos. Por ejemplo: Videojuegos en red con servidores. https://archive.org/. GeoCities https://es.wikipedia.org/wiki/GeoCities. Tumblr https://es.wikipedia.org/wiki/Tumblr. [01:16:43] ¿Mirrors de PYPI https://pypi.org/? Ahora mismo no hay verificación de firmas digitales. Package signing & detection/verification: https://github.com/pypa/warehouse/milestone/16. Red distribuida por IPFS https://es.wikipedia.org/wiki/Sistema_de_archivos_interplanetario o BitTorrent https://es.wikipedia.org/wiki/BitTorrent. Ideas de Jesús para Python España: red distribuida de fotos de las PyConES http://www.es.pycon.org/. [01:21:13] Montar servicios encima de PYPI https://pypi.org/. PYPI proporciona RSS https://es.wikipedia.org/wiki/Rss. PyPI recent updates https://pypi.org/rss/updates.xml. PyPI newest packages https://pypi.org/rss/packages.xml. [01:24:43] GitHub: Security vulnerability alerts for Python https://github.blog/2018-07-12-security-vulnerability-alerts-for-python/. [01:25:13] Compilar paquetes binarios para Windows. [01:26:48] Cython https://pypi.org/project/Cython/ y mypyc https://github.com/mypyc/mypyc. [01:28:33] A veces te importa a ti más el código que al dueño de la biblioteca. Dinámicas de colaboración en proyectos de código abierto. Core developer de Python: Mariatta Wijaya - What is a Python Core Developer? https://www.youtube.com/watch?v=hhj7eb6TrtI. La importancia de la realimentación. [01:35:43] Kodi https://es.wikipedia.org/wiki/Kodi y dinámica del proyecto: La compresión de datos en WebDAV. Que la gestión de base de datos sea Python. Bajar la barrera de entrada al proyecto. [01:39:21] ¿Qué micros tenemos para grabar? ¿Cómo hablamos? [01:45:08] Digresión sobre BitCoins https://es.wikipedia.org/wiki/Bitcoin y la importancia de hacer copia de seguridad del monedero. Blockchain https://es.wikipedia.org/wiki/Cadena_de_bloques. BitCoin desarrolla ideas muy interesantes. Prueba de trabajo: https://es.wikipedia.org/wiki/Sistema_de_prueba_de_trabajo. Cypherpunk: https://en.wikipedia.org/wiki/Cypherpunk. Contrato inteligente: https://es.wikipedia.org/wiki/Contrato_inteligente. Datos abiertos: https://es.wikipedia.org/wiki/Datos_abiertos. [01:55:23] Ojo, que todo queda grabado para la posteridad. Estamos teniendo una conversación de bar. Hay que valorar que las opiniones son opiniones de bar, con el peso de una opinión de bar. [01:58:03] ¿Poner deberes? Nadie tiene tiempo... [01:58:58] La motivación para hacer todo esto. Solapar intereses es difícil. [02:00:23] Despedida. [02:01:45] Final.