Python en español

Python en español #28: Tertulia 2021-04-13

06.29.2021 - By Jesús CeaPlay

Download our free app to listen on your phone

Download on the App StoreGet it on Google Play

Tener varias versiones de Python en el mismo ordenador, estado de Durus, su licencia y cómo funciona la persistencia de datos https://podcast.jcea.es/python/28

Participantes:

Jesús Cea, email: [email protected], twitter:

@jcea, https://blog.jcea.es/,

https://www.jcea.es/. Conectando desde Madrid.

Jesús, conectando desde Ferrol.

Felipem, conectando desde Cantabria.

Eduardo Castro, email:

[email protected]. Conectando desde A

Guarda.

Víctor Ramírez, twitter: @virako,

programador python y amante de

vim, conectando desde

Huelva.

Sergio, conectando desde Vigo.

Juan José, Nekmo, https://nekmo.com/,

https://github.com/Nekmo/. Madrileño conectando desde Málaga.

Miguel Sánchez, email:

[email protected], conectando desde

Las Palmas.

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] Presentaciones.

[03:47] Utilizar diferentes versiones de Python en el mismo

ordenador.

Cada paquete instalado está vinculado a una instancia

concreta de Python instalada en el sistema.

Nunca hacer pip install, sino indicar la versión: pip3.9

install.

A la hora de instalar paquetes Python en la versión nativa

del sistema operativo, se puede usar pip o bien el gestor

de paquetes del sistema operativo. Mezclar ambas es una

receta para el desastre.

[16:37] Un problema de los paquetes precompilados ("wheels"

https://www.python.org/dev/peps/pep-0427/) es que no se suelen

precompilar de forma retroactiva para la última versión de

Python que acaba de salir.

No suelen estar disponibles hasta que sale una versión nueva

del paquete, lo que puede tardar meses.

[19:52] ¿Bibliotecas para manejar imágenes, compatibles con PyPy

https://www.pypy.org/?

Numpy https://numpy.org/ aún no funciona en PyPy

https://www.pypy.org/.

[21:17] ¿Qué es PyPy https://www.pypy.org/ exactamente?

Jit: Compilación al vuelo

https://es.wikipedia.org/wiki/Compilaci%C3%B3n_en_tiempo_de_ejecuci%C3%B3n.

Barrera de entrada muy grande para entrar en el proyecto.

Curva de aprendizaje.

Problemas con los módulos en C. No valoraron la

importancia del ecosistema.

HPy https://hpyproject.org/.

[27:27] Experiencia de un par de semanas con Flit

https://pypi.org/project/flit/.

Jesús Cea lo está utilizando para publicar su biblioteca

toc2audio https://docs.jcea.es/toc2audio/.

Herramienta propuesta en la charla "Python Packaging: Lo

estás haciendo mal"

https://www.youtube.com/watch?v=OeOtIEDFr4Y, de Juan Luis

Cano.

https://github.com/astrojuanlu/charla-python-packaging.

https://nbviewer.jupyter.org/format/slides/github/astrojuanlu/charla-python-packaging/blob/main/Charla%20Python%20packaging.ipynb#/

PEP 621 -- Storing project metadata in pyproject.toml

https://www.python.org/dev/peps/pep-0621/.

Lo importante que es tener enlaces directos al "changelog" o

a la documentación en PyPI https://pypi.org/.

[31:32] Módulos de documentación. Carencias.

Docstrings.

doctest

https://docs.python.org/3/library/doctest.html.

Sphinx https://pypi.org/project/Sphinx/.

make html.

Tema eterno: Incluir una biblioteca en la biblioteca

estándar o como biblioteca estándar.

ReST: reStructuredText

https://docutils.sourceforge.io/rst.html.

PEP 287 -- reStructuredText Docstring Format

https://www.python.org/dev/peps/pep-0287/.

docutils: https://pypi.org/project/docutils/.

[40:02] ¿Formato tertulia o preguntas y respuestas?

[41:22] Estado actual de Durus

https://www.mems-exchange.org/software/DurusWorks/ y

comentarios variados sobre el sistema de persistencia.

Jesús Cea ha estado intentando conectar con los autores, con

poco éxito.

Jesús Cea tiene problemas con la licencia.

¿Abandonar el proyecto y pasarse a ZODB

https://zodb.org/en/latest/?

La gente está haciendo "forks"

https://en.wikipedia.org/wiki/Fork_(software_development)

pasando olímpicamente de las licencias.

Jesús Cea se está currando varios cambios de licencia en

ciertos proyectos que le interesan, con muy poco éxito.

ZOPE https://zopefoundation.github.io/Zope/.

COPYRIGHT ASSIGNMENT

https://www.copylaw.com/forms/copyassn.html.

[50:32] ¿Cómo funciona un sistema de persistencia?

Modelo completamente diferente a un ORM

https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping.

SQL: https://en.wikipedia.org/wiki/SQL.

Working set: https://en.wikipedia.org/wiki/Working_set.

[58:17] Volvemos al tema de licencias.

[59:52] Explícame esto:

https://lists.es.python.org/pipermail/general/2021-April/003476.html.

Creamos un fichero "a.py" con el contenido:

def x():

print('X')

Creamos otro fichero "b.py" con el contenido:

import a

class clase:

x = a.x

def p(self):

print(self.x)

self.x()

if __name__ == '__main__':

a.x()

b = clase()

b.p()

Ejecutas "b.py" y me explicas por qué sale lo que sale :-).

[01:03:42] A la gente le encanta que le "piquen".

[01:03:52] Las versiones actuales de Python ya han integrado el

parche del "memory leak" que se habló en navidades.

bpo-35930: Raising an exception raised in a "future"

instance will create reference cycles #24995

https://github.com/python/cpython/pull/24995.

[01:04:22] Llamada a ponencias de la PyConES

https://2021.es.pycon.org/.

[01:05:22] Volvemos al reto en

https://lists.es.python.org/pipermail/general/2021-April/003476.html.

Pista: los métodos son descriptores:

https://docs.python.org/3/howto/descriptor.html.

Bound method:

https://www.geeksforgeeks.org/bound-methods-python/.

Métodos estáticos:

https://pythonbasics.org/static-method/.

No se ha entendido nada porque ha habido numerosos cortes de

sonido. El tema está bastante mejor explicado y se entiende

en, por ejemplo, From Function to Method

https://wiki.python.org/moin/FromFunctionToMethod.

[01:10:02] Atributos de función. PEP 232 -- Function Attributes

https://www.python.org/dev/peps/pep-0232/.

Se pueden meter atributos a un método, pero se hace a nivel

de clase, no de instancia, porque los métodos pertenecen a

la clase, no a la instancia:class clase:

def p(self):

clase.p.hola = 78

>>> x=clase()

>>> x.p()

>>> x.p.hola

78

>>> y=clase()

>>> a.p.hola

78

>>> clase.p.hola

78

[01:14:42] Notas de las grabaciones, temas futuros y enviar

temas con algún tiempo previo a la tertulia si requieren pensar.

[01:16:06] Final.

More episodes from Python en español