Skip to content

Instantly share code, notes, and snippets.

@rtobar
Last active November 19, 2024 04:02
Show Gist options
  • Save rtobar/6ce7030953f4cac0ecf43af8cfaaf199 to your computer and use it in GitHub Desktop.
Save rtobar/6ce7030953f4cac0ecf43af8cfaaf199 to your computer and use it in GitHub Desktop.
Notas acerca de transición a 3.13

Notas

  1. Seguí las instrucciones en .overrides/update-python-version.rst

  2. En la instrucción acerca de hacer el update del submódulo de cpython usé el hash a86632f7ea8cc77af770b33f60124ca767698c7, que era el último commit en la rama 3.13. Ya pasaron varios días ya, así que está viejito. El último commit en esa rama al escribir esto este texto es c2c18acc3db031647fce06c4e1701ec0303e309c.

  3. Usé Python 3.11, que es lo que estamos usando en CI también, para no introducir más variables al proceso.

  4. Un par de archivos en .overrides necesitaron un par de cambios para usar un nuevo rol pypi en vez de links directos a pypi.org (ver más abajo).

  5. Sofide reportó dos problemas en Telegram (https://t.me/python_docs_es/22678):

    1. El problema #1 se soluciona con un ajuste al conf.py (ver más abajo)
    2. Durante un tiempo fui modificando mi instalación de Sphinx para poder evitar el problema #2, pero cuando trabajé en python/python-docs-es#2875 me di cuenta que parte de la culpa era nuestra, y que podíamos resolver el problema definiendo app.srcdir para que fuera un Path tabmién. El cambio ya está hecho como parte de ese PR, y ya está mergeado en 3.12. En resumen, éste ya no es un problema.
  6. Un inconveniente que encontré fue que la ejecución del paso sphinx-intl era demasiado lenta. El programa usaba sólo un CPU, ejecutándose de forma serial por sobre todos los archivos. Cada archivo puede ser procesado de forma independiente, por lo que era posible acelerar el proceso. Abrí sphinx-doc/sphinx-intl#110 con los cambios necesarios para que sphinx-intl ejecutara el update en paralelo. El PR fue aceptado, y una nueva versión de la herramienta fue publicada. En resumen, ahora el paso cuando se ejecuta sphinx-intl es más rápido de lo que solía ser.

  7. Otro problema que encontré durante este proceso fue que el archivo library/re.po era inválido, ya que había una entrada msgstr donde el string que lo seguía no estaba bien delimitado por comillas dobles (msgstr * (asterisco)" en vez de msgstr "* (asterisco)"). Todos los detalles acá: python/python-docs-es#2873. Esto me llevó en una cruzada por powrap, polib, y babel para solucionar distintos aspectos de este problema:

    1. powrap: https://git.afpy.org/AFPy/powrap/pulls/4 (nueva versión ya publicada con el fix)
    2. polib (usado por pospell, sphinx-lint): izimobil/polib#161 (aún sin respuesta)
    3. babel (usado por sphinx): python-babel/babel#1151

    De todas maneras el archivo ya está arreglado. Sigo pendiente a que polib y babel mergeen el fix y publiquen nuevas versiones.

  8. Idea: en vez de generar los archivos .pot en ../python-docs-es los generamos en cpython/python-doc-es, y actualizamos las instrucciones que los generan y los usan (SPHINX_GETTEXT=True sphinx-build ... y sphinx-intl ...), ya no es necesario el siguiente paso donde se ejecuta el comando sed para actualizar las líneas en los .po apuntando a los archivos fuente.

Diffs relevantes

Diff a requirements.txt

diff --git a/requirements.txt b/requirements.txt
index 52096aab..e8d74127 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,14 +1,14 @@
-docutils==0.20.1
+docutils==0.21.2
 pip
-Sphinx==7.2.6
+sphinx~=8.1.0
 blurb
-Pygments==2.16.1
+Pygments>=2.17
 PyICU
 polib
 pospell>=1.1
 potodo
 powrap
-python-docs-theme>=2022.1
+python-docs-theme>=2023.3.1,!=2023.7
 setuptools
 sphinx-intl>=2.3.0
 pre-commit
@@ -16,4 +16,6 @@ sphinx-autorun
 sphinxemoji
 sphinx-tabs==3.4.5
 sphinx-lint==0.7.0
+sphinxext-opengraph~=0.9.0
+sphinx-notfound-page~=1.0.0
 tabulate

Diff a Makefile

diff --git a/Makefile b/Makefile
index 581a2c19..f51cdfd3 100644
--- a/Makefile
+++ b/Makefile
@@ -8,7 +8,7 @@
 # Configuration

 CPYTHON_PATH        := cpython   # Current commit for this upstream repo is setted by the submodule
-BRANCH              := 3.12
+BRANCH              := 3.13
 LANGUAGE_TEAM       := python-docs-es
 LANGUAGE            := es

Diff a conf.py

diff --git a/conf.py b/conf.py
index f1749d3b..1ea5b788 100644
--- a/conf.py
+++ b/conf.py
@@ -29,10 +29,9 @@ sys.path.append(os.path.abspath('cpython/Doc/includes'))
 sys.path.insert(0, os.path.abspath('cpython/Doc'))
 from conf import *

-# Call patchlevel with the proper path to get the version from
-# instead of hardcoding it
-from patchlevel import get_header_version_info
-version, release = get_header_version_info(os.path.abspath('cpython/Doc'))
+# Call patchlevel to get the version instead of hardcoding it
+from patchlevel import get_version_info
+version, release = get_version_info()

 project = 'Python en Español'
 year = time.strftime("%Y")
@@ -54,6 +53,8 @@ _exclude_patterns = [
     # This file is not included and it's not marked as :orphan:
     'distutils/_setuptools_disclaimer.rst',
     'includes/wasm-notavail.rst',
+    'deprecations/c-api-pending-removal-in-*.rst',
+    'deprecations/pending-removal-in-*.rst',
 ]
 if 'exclude_patterns' in globals():
     exclude_patterns += _exclude_patterns

Diff a directorio .overrides

diff --git a/.overrides/faq.rst b/.overrides/faq.rst
index 11f9a09e..ba0a548a 100644
--- a/.overrides/faq.rst
+++ b/.overrides/faq.rst
@@ -19,7 +19,7 @@ Tenemos un `grupo de Telegram`_ en el que hay mucha gente que te puede ayudar.
 Uno de los chequeos que realiza nuestro servidor de github cada vez que hacemos
 un pull de request es un test de corrección ortográfico usando la herramienta
 pospell. Pospell puede ser instalada en tu entorno de Python empleando pip
-(https://pypi.org/project/pospell/)::
+(:pypi:`pospell`)::

     pip install pospell

diff --git a/.overrides/git_diff.rst b/.overrides/git_diff.rst
index 36d64e6e..ed5febca 100644
--- a/.overrides/git_diff.rst
+++ b/.overrides/git_diff.rst
@@ -11,7 +11,7 @@ El comando `git diff` tiene datos que pueden llegar a ser inútiles como por eje
     -#: ../Doc/library/signal.rst:406
     +#: ../Doc/library/signal.rst:408

-La instalación de `podiff` mediante `pip` no se encuentra totalmente funcional, pero los usuarios de macOS
+La instalación de :pypi:`podiff` mediante `pip` no se encuentra totalmente funcional, pero los usuarios de macOS
 podrán continuar con estas instrucciones.

 Primero debemos instalar brew. Si no lo tienes instalado puedes seguir el instructivo de instalación Brew_.
@@ -44,8 +44,8 @@ archivos .po con los que se van a trabajar, crealo, y luego,  agregar la siguien

     *.po diff=podiff

-Para las distribuciones de Linux se pueden utilizar algunas herramientas, como por ejemplo podiff_ y
-potools_, que son compatibles con Python 2. Se puede utilizar `pip` para instalarlas.
+Para las distribuciones de Linux se pueden utilizar algunas herramientas, como por ejemplo :pypi:`podiff` y
+:pypi:`potools`, que son compatibles con Python 2. Se puede utilizar `pip` para instalarlas.

 .. code-block:: bash

@@ -54,5 +54,3 @@ potools_, que son compatibles con Python 2. Se puede utilizar `pip` para instala
     pip install potools

 .. _Brew: https://docs.brew.sh/Installation
-.. _podiff: https://pypi.org/project/podiff/
-.. _potools: https://pypi.org/project/potools/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment