Python en español

Python en español #19: Tertulia 2021-02-09


Listen Later

¿Se pueden usar diferentes versiones de una misma librería en un proyecto? (resumen: ¡No vayas por ahí!). MultiVersion Concurrent Control https://podcast.jcea.es/python/19

Participantes:

  • 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.

  • Miguel Sánchez, email:

    [email protected], conectando desde
    Canarias.

    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] Prólogo:

      • FOSDEM https://fosdem.org/.

      • Escuchar audios previos para ver errores y comentar

        "erratas".

      • [03:07] ¡Tenemos un voluntario para editar el podcast!

        • Detalles de cómo grabamos las tertulias.

        • Todo se graba en una sola pista :-(.

        • RNNoise: https://people.xiph.org/~jm/demo/rnnoise/.

        • Ideas para automatizar el proceso.

        • [09:17] Aviso legal de que se está grabando el sonido y que se

          va a publicar online.

          • El audio publicado tendrá un índice en texto, para poder
          • hacer búsquedas y poder moverse con facilidad entre temas.
          • [11:22] Errata de la tertulia anterior: No, pipenv

            https://pypi.org/project/pipenv/ no puede instalar dos
            versiones diferentes de la misma librería.

          • [13:07] Tormenta de ideas

            https://es.wikipedia.org/wiki/Lluvia_de_ideas sobre cómo usar
            diferentes versiones de la misma librería en el mismo proyecto.
            Conclusión: ¡No vayas por ahí!

            • Las bibliotecas solo se cargan una vez en el programa,

              aunque se hagan muchos import en el código.

            • sys.modules

              https://docs.python.org/3/library/sys.html#sys.modules.

            • Dependencias transitivas.

            • Subintérpretes Python. PEP 554:

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

            • Módulos en C: PEP 489 -- Multi-phase extension module

              initialization https://www.python.org/dev/peps/pep-0489/.

            • [22:17] Python 3.10a5. PEP 636 -- Structural Pattern Matching:

              Tutorial https://www.python.org/dev/peps/pep-0636/.

              • ¡Más sintaxis nueva!

              • PEP 617 -- New PEG parser for CPython

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

              • [23:57] Nuitka https://nuitka.net/.

                • Puede generar un binario que no depende de tener nada
                • instalado.
                • [26:02] Volvemos a "Structural Pattern Matching"

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

                  • "Switch" con esteroides.
                  • [27:32] Lo importante que fue la modernización de los tutoriales

                    y ejemplos para ayudar a la migración de Python 2 a Python 3.

                    • PEP 414 -- Explicit Unicode Literal for Python 3.3

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

                    • Jesús Cea opina que la migración de Python 2 a Python 3

                      se hizo mal y ha sido muy traumática.

                    • [30:22] PEP 8 https://www.python.org/dev/peps/pep-0008/.

                      • ¿Ajustarse estrictamente a 80 columnas?

                      • Flake8: https://pypi.org/project/flake8/.

                      • [33:22] Mucho cuidado con "python-ideas"

                        https://mail.python.org/mailman3/lists/python-ideas.python.org/.

                        • Tabulación de código.

                        • La anotación de tipos puede gustar o no, pero de momento es

                          opcional.

                        • Tema recurrente: ¿Qué es ser pythonico?

                        • [35:12] Ventajas de anotar tipos.

                          • Origen de MYPY: http://mypy-lang.org/.

                          • Aportar información al IDE

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

                          • Valor a la hora de documentar los tipos en los API

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

                          • [39:52] Cryptography https://cryptography.io/en/latest/ y

                            polémica al integrar módulos en Rust
                            https://en.wikipedia.org/wiki/Rust_(programming_language)

                            • Comunidad tóxica.
                            • [41:27] Digresión sobre systemd

                              https://en.wikipedia.org/wiki/Systemd y otras cosas de
                              sistemas.

                              • ¿El cambio por el cambio?
                              • [45:07] El peso de la web está moviéndose otra vez al backend.

                                ¿Qué opciones tiene Python en este area?

                                • El cliente web solo envía eventos al servidor y recibe

                                  cambios al DOM
                                  https://es.wikipedia.org/wiki/Document_Object_Model
                                  enviadas por el servidor.

                                • Abre la posibilidad olvidarnos de JavaScript:

                                  https://es.wikipedia.org/wiki/JavaScript.

                                • ItsNat: https://en.wikipedia.org/wiki/ItsNat.

                                • [51:02] splash https://pypi.org/project/splash/.

                                  Servicio de dibujado de javascript en Python.

                                  • AJAX: https://es.wikipedia.org/wiki/AJAX.
                                  • [56:07] Integrar Python en otros programas y demonios.

                                    • LUA: https://es.wikipedia.org/wiki/Lua.
                                    • [57:07] PyOxidizer

                                      https://pyoxidizer.readthedocs.io/en/stable/ y PyO3
                                      https://pyo3.rs/.

                                      • Interactuar con otros lenguajes.

                                      • Python en Java, interactuando sin dolor: Jython

                                        https://www.jython.org/.

                                      • [59:52] ¿Cómo empezamos en Python?

                                        • Valor de Python como lenguaje fácil de entender y

                                          pseudocódigo.

                                          • SpamBayes: http://spambayes.sourceforge.net/.
                                          • Tutorial de Python:

                                            https://docs.python.org/es/3/tutorial/index.html.

                                          • bc -l https://linux.die.net/man/1/bc.

                                          • [01:05:07] Modificación atómica de ficheros.

                                            • En Unix se suele hacer: write + flush + rename.

                                              • rename:
                                              • https://www.man7.org/linux/man-pages/man2/rename.2.html.
                                              • MS Windows eso no funciona.

                                              • Python 3.3 añadió os.replace()

                                                https://docs.python.org/3.8/library/os.html#os.replace.

                                              • En MS Windows es atómico... casi siempre: Issue8828: Atomic

                                                function to rename a file
                                                https://bugs.python.org/issue8828.

                                              • [01:10:02] Combinar fork e hilos en Python es una receta para el

                                                desastre.

                                                • fork:

                                                  https://www.man7.org/linux/man-pages/man2/fork.2.html.

                                                • multiprocessing:

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

                                                • [01:11:37] Decorador @overload

                                                  https://docs.python.org/3/library/typing.html#typing.overload.

                                                  • @functools.singledispatch

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

                                                  • ¿Qué se ve cuando salta una excepción?

                                                  • Especializaciones.

                                                  • Cython https://cython.org/.

                                                  • [01:17:00] AnyIO

                                                    https://anyio.readthedocs.io/en/stable/basics.html.
                                                    Unificación de reactores asíncronos.

                                                  • [01:18:12] "lxml soporta xpath".

                                                    • Hilo en la lista de correo: "[Python-es] Biblioteca XPATH"

                                                      https://mail.python.org/pipermail/python-es/2021-February/037931.html.

                                                    • lxml: https://lxml.de/.

                                                    • beautifulsoup4: https://pypi.org/project/beautifulsoup4/.

                                                    • XPath: https://es.wikipedia.org/wiki/XPath.

                                                    • Scrapy: https://scrapy.org/.

                                                    • El buscador de PyPI https://pypi.org/ funciona fatal a la

                                                      hora de ordenar por relevancia.

                                                    • [01:20:02] El valor de estudiar el código fuente ajeno no solo

                                                      para aprender de él sino también para descubrir qué bibliotecas
                                                      útiles utilizan para añadirlas a tu cajón de herramientas.

                                                      • Es la documentación última.

                                                      • Los tests son muy útiles para saber cómo se usa el producto.

                                                      • [01:22:02] ¿Cómo gestionáis la paginación cuando los datos del

                                                        backend cambian? ¿Cómo evitáis repetir resultados o saltaros
                                                        datos?

                                                        • Brainstorming de diversas estrategias.

                                                        • Berkeley DB: https://pypi.org/project/berkeleydb/.

                                                        • lmdb: https://pypi.org/project/lmdb/.

                                                        • Multiversion concurrency control:

                                                          https://es.wikipedia.org/wiki/Multiversion_concurrency_control.

                                                        • Copy on Write:

                                                          https://es.wikipedia.org/wiki/Copy_on_write.

                                                        • Snapshot:

                                                          https://es.wikipedia.org/wiki/Copia_instant%C3%A1nea_de_volumen.

                                                        • BTree: https://es.wikipedia.org/wiki/%C3%81rbol-B.

                                                        • PostgreSQL: https://www.postgresql.org/.

                                                        • ZFS:

                                                          https://es.wikipedia.org/wiki/ZFS_(sistema_de_archivos).

                                                        • Normalización y formas normales:

                                                          https://es.wikipedia.org/wiki/Forma_normal_(base_de_datos).

                                                        • [01:48:42] FOSDEM https://fosdem.org/:

                                                          Virako recomienda las siguientes:

                                                          • Some SQL Tricks of an Application DBA - Non-trivial tips for

                                                            database development
                                                            https://fosdem.org/2021/schedule/event/postgresql_some_sql_tricks_of_an_application_dba/.

                                                          • Database Disasters and How to Find Them

                                                            https://fosdem.org/2021/schedule/event/postgresql_database_disasters_and_how_to_find_them/.

                                                          • Practical advice for using Mypy - Hidden gems in the typing

                                                            system!
                                                            https://fosdem.org/2021/schedule/event/python_mypy/.

                                                          • Escaping the Cargo Cult - How to structure your project

                                                            without losing your mind.
                                                            https://fosdem.org/2021/schedule/event/python_escaping_cargo_cult/.

                                                          • [01:52:02] Charla Python Madrid https://www.python-madrid.es/.

                                                            • TDD - ¿panacea del desarrollo o pérdida de tiempo?
                                                            • https://www.python-madrid.es/meetings/reunion-febrero-2021-python-madrid/.
                                                            • [01:54:27] Comentado en la tertulia de la semana pasada: Bugs

                                                              sobre "pickle" https://docs.python.org/3/library/pickle.html
                                                              en el módulo __main__.

                                                              Se trata de un problema conocido.

                                                              • 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.

                                                              • [02:00:42] Que te cuenten lo que no funciona es mucho más

                                                                interesante.

                                                                • Postmortem.
                                                                • [02:02:52] Whoosh:

                                                                  https://whoosh.readthedocs.io/en/latest/intro.html. ¿Cómo
                                                                  normalizar las palabras para español?

                                                                  • La palabra "real" Whoosh:
                                                                  • https://www.wordreference.com/es/translation.asp?tranword=whoosh.
                                                                    Dificultades para buscar el proyecto Python Whoosh
                                                                    https://whoosh.readthedocs.io/en/latest/intro.html en
                                                                    internet.
                                                                  • [02:05:48] Final.

                                                                    ...more
                                                                    View all episodesView all episodes
                                                                    Download on the App Store

                                                                    Python en españolBy Jesús Cea


                                                                    More shows like Python en español

                                                                    View all
                                                                    Libros para Emprendedores by Luis Ramos

                                                                    Libros para Emprendedores

                                                                    1,115 Listeners