05.27.2021 - By Jesús Cea
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.