Escuchar "Python en español #20: Tertulia 2021-02-16"
Síntesis del Episodio
Internet Archive, no acabamos de hablar del nuevo "pattern matching", complejidad creciente de la sintaxis de Python https://podcast.jcea.es/python/20
Participantes:
Eduardo Castro, email:
[email protected]. Conectando desde A
Guarda.
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.
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.
[01:33] Cómo documentar en Python.
Google docs: https://docs.google.com.
Wikis en GitHub:
https://docs.github.com/en/communities/documenting-your-project-with-wikis/about-wikis.
Ventajas de tener la documentación en el control de
versiones del proyecto.
Ventajas de ir escribiendo la documentación mientras
escribes el propio código: Realimentación.
Sphinx: https://www.sphinx-doc.org/en/master/.
sphinx.ext.autodoc:
https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html.
plantuml: https://github.com/sphinx-contrib/plantuml.
Markdown: https://www.markdownguide.org/.
[03:48] La vieja guardia es escéptica con las novedades de
la semana.
No hay balas de plata.
La documentación guía el desarrollo.
Paralelismo con los tests.
[08:38] Open source y la vergüenza: tests y documentación.
[09:28] CPython Internals Book
https://realpython.com/products/cpython-internals-book/.
[11:13] HPy https://hpyproject.org/. Nuevo API
https://es.wikipedia.org/wiki/Api para programar extensiones C
para Python, independizándote de la versión del intérprete y
compatible con cosas como PyPy: https://www.pypy.org/.
[13:18] Internet Archive como biblioteca de libros modernos:
https://archive.org/details/inlibrary.
Funciona como una biblioteca tradicional.
Préstamo de libros.
Están escaneando a toda velocidad: 2.5 millones de libros en
el momento de escribir estas notas (mayo de 2021).
Internet Archive: https://archive.org/.
Wayback Machine: https://web.archive.org/.
Preservación de videojuegos, páginas en flash, discos de
música...
[17:03] Web de Python en Internet Archive.
1997:
https://web.archive.org/web/19970606181701/http://www.python.org/.
1998:
https://web.archive.org/web/19981212032130/http://www.python.org/.
Un ejemplo de "batteries included":
https://commons.wikimedia.org/wiki/File:Python_batteries_included.jpg.
[17:53] Jesús Cea echa de menos la internet distribuida.
[18:23] Pattern Matching en Python 3.10. PEP 622 -- Structural
Pattern Matching https://www.python.org/dev/peps/pep-0622/.
¿"match" y "case" serán palabras reservadas?
PEP 617 -- New PEG parser for CPython
https://www.python.org/dev/peps/pep-0617/.
Se repasa la funcionalidad un poco por encima.
[27:48] Logs fáciles de configurar y decorados con colorines:
Daiquiri: https://daiquiri.readthedocs.io/en/latest/.
Colorama: https://pypi.org/project/colorama/. Compatible
con Windows.
[29:28] Truco: Python -i: Ejecuta un script y pasa a modo
interactivo.
Comentado hace unas semanas.
También se puede hacer desde el propio código con
code.InteractiveConsole(locals=globals()).interact().
Jesús Cea se queja de que usando la invocación desde código
no funciona la edición de líneas. Javier da la pista correcta:
para que funcione, basta con hacer import readline antes de
lanzar el modo interactivo.
[30:48] Manhole: https://pypi.org/project/manhole/.
[31:53] Breakpoints condicionales
https://docs.python.org/3/library/pdb.html#pdbcommand-condition.
breakpoint() como función nativa: PEP 553 -- Built-in
breakpoint() https://www.python.org/dev/peps/pep-0553/.
import pdb; pdb.set_trace().
[33:28] Scraping a mano:
scrapy shell:
https://docs.scrapy.org/en/latest/topics/shell.html.
Jesús Cea no echa de menos Scrapy
https://docs.scrapy.org/en/latest/.
[36:03] Indexador y buscador de documentos: Whoosh
https://whoosh.readthedocs.io/en/latest/intro.html.
Jesús necesitaba ignorar tildes, lo que impacta en la
extracción del lexema.
El backend está documentado, para que te lo puedas currar tú
si lo necesitas.
[38:23] ¿Cómo hacer copia de seguridad de un fichero de 600
gigabytes con pocos cambios internos?
[40:58] Eduardo Castro ha ganado un hackathon en Pontevedra.
Software para Django: https://www.djangoproject.com/.
[46:38] Experiencias agridulces con los hackathones
https://en.wikipedia.org/wiki/Hackathon.
Netflix Prize https://en.wikipedia.org/wiki/Netflix_Prize.
[50:38] Una URL puede no estar no disponible ya cuando escuchas
el podcast:
Podcast: Programar es una mierda:
https://www.programaresunamierda.com/.
[52:28] Jamii https://jamii.es/.
API https://es.wikipedia.org/wiki/Api
[55:38] GraphQL https://es.wikipedia.org/wiki/GraphQL.
REST:
https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacional.
Permisos de usuario.
No hay cacheo.
Vulcain: https://github.com/dunglas/vulcain.
[01:02:53] HTTP/2 https://en.wikipedia.org/wiki/HTTP/2.
HTTP/2 Server Push:
https://en.wikipedia.org/wiki/HTTP/2_Server_Push.
No se tiene que responder por orden. Multiplexación.
[01:08:53] La explosión de la complejidad innecesaria ocultada
por bibliotecas:
OAuth2
https://en.wikipedia.org/wiki/OAuth#OAuth_2.0.
OpenID: https://en.wikipedia.org/wiki/OpenID.
[01:10:33] Complejidad creciente de la sintaxis de Python.
Volvemos a Structural Pattern Matching
https://www.python.org/dev/peps/pep-0622/.
Complejidad de la sintaxis.
Un lenguaje pequeño y capaz reemplaza a lenguajes
dinosaurio. Python reemplazó a otros lenguajes dinosaurio.
Ahora Python es un dinosaurio. ¿Cuándo saldrá un lenguaje
que reemplace a Python?
[01:12:13] Metaclases
https://realpython.com/python-metaclasses/.
Closures:
https://es.wikipedia.org/wiki/Clausura_(inform%C3%A1tica).
[01:15:08] Empiezan a aparecer sublenguajes, tribus,
subculturas de Python.
Ciertos cambios de sintaxis pueden unificar subculturas: "la
forma oficial de hacerlo".
El operador ternario de Python v = VALOR1 if CONDICIÓN
else VALOR2: PEP 308 -- Conditional Expressions
https://www.python.org/dev/peps/pep-0308/.
List comprehension: [f(i) for i in ITER if
CONDICIÓN(i)]: PEP 202 -- List Comprehensions
https://www.python.org/dev/peps/pep-0202/.
[01:20:18] En los viejos tiempos, podías hacer barbaridades
como True = 0. Esto funciona en Pythonn 2.7. Es algo que
se cambió en Python 3.0:
https://docs.python.org/3.0/whatsnew/3.0.html#changed-syntax.
[01:21:53] Jesús Cea echa de menos que se eliminen cosas.
Está obsesionado con el tamaño del lenguaje.
¿Qué eliminaríamos?
[01:25:23] El lenguaje C incluye solo lo mínimo imprescindible.
[01:26:48] Curiosidades: What the f*ck Python!
https://github.com/satwikkansal/wtfpython:
>>> all([])
True
>>> all([[]])
False
>>> all([[[]]])
True
[01:28:03] Algunos avances en la investigación del bug descrito
por Virako en las últimas semanas: 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.
Requiere mejorar el módulo runpy
https://docs.python.org/3/library/runpy.html.
A nadie le ha dolido lo suficiente el bug como para
solucionarlo. No es que sea realmente difícil. Tal vez sí.
[01:35:53] Nuitka https://nuitka.net/.
Ejecutables Python independientes de lo que tengas instalado
en el sistema. Por ejemplo, para poder usar una versión de
Python "moderna".
También funciona en MS Windows.
[01:39:43] Tertulia previa: Fuentes de caracteres con ligaduras.
Combinación de caracteres unicode.
Las banderas de los países, por ejemplo, son un código
"bandera" seguido del código del país:
https://en.wikipedia.org/wiki/Regional_indicator_symbol.
La bandera de Taiwan se ve distinta en China que en el resto
del mundo: https://emojipedia.org/flag-taiwan/.
"Collation"
https://en.wikipedia.org/wiki/Unicode_collation_algorithm,
para ordenar y comparar correctamente
caracteres unicode: PyICU: https://pypi.org/project/PyICU/.
[01:50:23] Cuando el Steering Council
https://www.python.org/dev/peps/pep-0013/ vota un tema
polémico, la decisión es final. Ya no se busca el consenso a
toda costa.
[01:52:53] Despedida.
[01:53:55] Final.
Más episodios del podcast Python en español
Python en español #29: Tertulia 2021-04-20
12/07/2021
Python en español #28: Tertulia 2021-04-13
29/06/2021
Python en español #27: Tertulia 2021-04-06
19/06/2021
Python en español #26: Tertulia 2021-03-30
17/06/2021
Python en español #25: Tertulia 2021-03-23
09/06/2021
Python en español #24: Tertulia 2021-03-16
07/06/2021
Python en español #23: Tertulia 2021-03-09
31/05/2021
Python en español #22: Tertulia 2021-03-02
27/05/2021
Python en español #21: Tertulia 2021-02-23
27/05/2021
Python en español #19: Tertulia 2021-02-09
20/05/2021
ZARZA Somos ZARZA, la firma de prestigio que esta detras de los grandes proyectos en tecnología de la información.