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