Skip to content

Commit

Permalink
Arregla y wrapea library/re.po (#2873)
Browse files Browse the repository at this point in the history
En `library/re.po` había una entrada que no estaba delineada
correctamente con comillas dobles (si ven el diff entero es la última
entrada en el diff, o pueden ver simplemente el primer commit de este
PR). Esto hacía que `powrap --check` se saltara el archivo y no lo
validara. Esto, a su vez, ocurría porque la utilidad `msgcat` de
`gettext` identificaba el error de sintaxis, y fallaba al ser ejecutada.
`powrap` no consideraba esos errores al momento de calcular el exit code
del proceso, y por lo tanto el archivo no sólo seguía siendo inválido,
sino que tampoco era verificado. De igual forma, el archivo no podía ser
wrapeado correctamente usando `powrap library/re.po`.

Ya abrí un PR contra `powrap` para cambiar este comportamiento en
https://git.afpy.org/AFPy/powrap/pulls/4 (actualización: el PR ya fue
mergeado, y una nuevs versión de powrap fue publicada, pornlo que
también actualicé en este PR nuestra dependencia de powrap, además del
pre-commit hook de powrap).

Por otro lado, el resto de nuestras herramientas *no* consideraban este
archivo como inválido, Esto es porque `polib` no hacía la validación
correspondiente, e incorrectamente parseaba la entrada. También abrí un
PR contra polib para esto en izimobil/polib#161.
Actualización: en el intertanto también me di cuenta de que el paquete
`babel` sufre del mismo problema, yo incorrectamente había asumido que
babel dependía de polib; PR creada contra babel:
python-babel/babel#1151.

Después de corregir el error de sintaxis, ejecuté powrap de tal manera
que ahora `library/re.po` está bien formateado.

---------

Signed-off-by: Rodrigo Tobar <rtobar@icrar.org>
  • Loading branch information
rtobar authored Nov 18, 2024
1 parent 875e5df commit a65f03e
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 80 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ jobs:
diff -Naur TRANSLATORS <(LANG=es python scripts/sort.py < TRANSLATORS)
- name: Powrap
if: steps.po-files-to-check.outputs.any_po_files_to_check == 'true'
run: powrap --check --quiet ${{ steps.po-files-to-check.outputs.po_files_to_check }}
run: powrap --diff --check --quiet ${{ steps.po-files-to-check.outputs.po_files_to_check }}
- name: Sphinx lint
if: steps.po-files-to-check.outputs.any_po_files_to_check == 'true'
run: sphinx-lint ${{ steps.po-files-to-check.outputs.po_files_to_check }}
Expand Down
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/JulienPalard/powrap
rev: v0.4.0
- repo: https://git.afpy.org/AFPy/powrap
rev: v1.0.2
hooks:
- id: powrap
- repo: local
Expand Down
159 changes: 83 additions & 76 deletions library/re.po
Original file line number Diff line number Diff line change
Expand Up @@ -208,10 +208,10 @@ msgid ""
"For example, the expression ``(?:a{6})*`` matches any multiple of six "
"``'a'`` characters."
msgstr ""
"Los operadores de repetición o cuantificadores (``*``, ``+``, ``?``, ``{m,n}``, etc.) "
"no pueden ser anidados directamente. Esto evita la ambigüedad con el sufijo "
"modificador no codicioso ``?``, y con otros modificadores en "
"otras implementaciones. Para aplicar una segunda repetición a una repetición "
"Los operadores de repetición o cuantificadores (``*``, ``+``, ``?``, ``{m,n}"
"``, etc.) no pueden ser anidados directamente. Esto evita la ambigüedad con "
"el sufijo modificador no codicioso ``?``, y con otros modificadores en otras "
"implementaciones. Para aplicar una segunda repetición a una repetición "
"interna, se pueden usar paréntesis. Por ejemplo, la expresión ``(?:a{6})*`` "
"coincide con cualquier múltiplo de seis caracteres ``'a'``."

Expand Down Expand Up @@ -358,14 +358,14 @@ msgstr ""
"permiten retroceder cuando la expresión que le sigue no coincide. Estos se "
"conocen como cuantificadores :dfn:`possessive`. Por ejemplo, ``a*a`` "
"coincidirá con ``'aaaa'`` porque la ``a*`` coincidirá con los 4 ``'a'``\\ s, "
"pero, cuando se encuentra la ``'a'`` final, la expresión retrocede de "
"modo que al final la ``a*`` termina coincidiendo con 3 ``'a'``\\ s total, y "
"la cuarta ``'a'`` coincide con la final ``'a'``. Sin embargo, cuando "
"``a*+a`` se usa para que coincida con ``'aaaa'``, el ``a*+`` coincidirá con "
"los 4 ``'a'``, pero cuando el ``'a'`` final no encuentra más caracteres para "
"coincidir, la expresión no puede retroceder y, por lo tanto, no "
"coincidirá. ``x*+``, ``x++`` and ``x?+`` son equivalentes a ``(?>x*)``, ``(?"
">x+)`` and ``(?>x?)`` correspondientemente."
"pero, cuando se encuentra la ``'a'`` final, la expresión retrocede de modo "
"que al final la ``a*`` termina coincidiendo con 3 ``'a'``\\ s total, y la "
"cuarta ``'a'`` coincide con la final ``'a'``. Sin embargo, cuando ``a*+a`` "
"se usa para que coincida con ``'aaaa'``, el ``a*+`` coincidirá con los 4 "
"``'a'``, pero cuando el ``'a'`` final no encuentra más caracteres para "
"coincidir, la expresión no puede retroceder y, por lo tanto, no coincidirá. "
"``x*+``, ``x++`` and ``x?+`` son equivalentes a ``(?>x*)``, ``(?>x+)`` and "
"``(?>x?)`` correspondientemente."

#: ../Doc/library/re.rst:187
msgid "``{m}``"
Expand Down Expand Up @@ -782,12 +782,12 @@ msgstr ""
"separada, y si tiene éxito, continúa coincidiendo con el resto del patrón "
"que la sigue. Si el patrón posterior no coincide, la pila solo se puede "
"desenrollar a un punto *antes* del ``(?>...)`` Porque una vez que salió, la "
"expresión, conocida como :dfn:`grupo atomico <atomic group>`, ha desechado todos los puntos de pila "
"dentro de sí misma. Por lo tanto, ``(?>.*).`` nunca coincidiría con nada "
"porque primero el ``.*`` coincidiría con todos los caracteres posibles, "
"luego, al no tener nada que igualar, el ``.`` final no coincidiría. Dado que "
"no hay puntos de pila guardados en el Grupo Atómico, y no hay ningún punto "
"de pila antes de él, toda la expresión no coincidiría."
"expresión, conocida como :dfn:`grupo atomico <atomic group>`, ha desechado "
"todos los puntos de pila dentro de sí misma. Por lo tanto, ``(?>.*).`` nunca "
"coincidiría con nada porque primero el ``.*`` coincidiría con todos los "
"caracteres posibles, luego, al no tener nada que igualar, el ``.`` final no "
"coincidiría. Dado que no hay puntos de pila guardados en el Grupo Atómico, y "
"no hay ningún punto de pila antes de él, toda la expresión no coincidiría."

#: ../Doc/library/re.rst:424
msgid "``(?P<name>...)``"
Expand Down Expand Up @@ -869,8 +869,8 @@ msgid ""
"In :class:`bytes` patterns, group *name* can only contain bytes in the ASCII "
"range (``b'\\x00'``-``b'\\x7f'``)."
msgstr ""
"En patrones de tipo :class:`bytes`, el nombre del grupo *name* solo puede contener "
"bytes en el rango ASCII (``b'\\x00'``-``b'\\x7f'``)."
"En patrones de tipo :class:`bytes`, el nombre del grupo *name* solo puede "
"contener bytes en el rango ASCII (``b'\\x00'``-``b'\\x7f'``)."

#: ../Doc/library/re.rst:430
msgid "``(?P=name)``"
Expand Down Expand Up @@ -1006,9 +1006,9 @@ msgid ""
"Group *id* can only contain ASCII digits. In :class:`bytes` patterns, group "
"*name* can only contain bytes in the ASCII range (``b'\\x00'``-``b'\\x7f'``)."
msgstr ""
"El *id* del grupo solo puede contener dígitos ASCII. En patrones de "
"tipo :class:`bytes`, el *name* del grupo solo puede contener bytes "
"en el rango ASCII (``b'\\x00'``-``b'\\x7f'``)."
"El *id* del grupo solo puede contener dígitos ASCII. En patrones de tipo :"
"class:`bytes`, el *name* del grupo solo puede contener bytes en el rango "
"ASCII (``b'\\x00'``-``b'\\x7f'``)."

#: ../Doc/library/re.rst:506
msgid ""
Expand Down Expand Up @@ -1208,8 +1208,9 @@ msgid ""
"const:`ASCII` flag is used, only ``[a-zA-Z0-9_]`` is matched."
msgstr ""
"Coincide con los caracteres de palabras Unicode; esto incluye los caracteres "
"alfanuméricos (como se define por :meth:`str.isalnum`) así como el guión bajo "
"(``_``). Si se utiliza la bandera :const:`ASCII`, sólo coincide con ``[a-zA-Z0-9_]``."
"alfanuméricos (como se define por :meth:`str.isalnum`) así como el guión "
"bajo (``_``). Si se utiliza la bandera :const:`ASCII`, sólo coincide con "
"``[a-zA-Z0-9_]``."

#: ../Doc/library/re.rst:604
msgid ""
Expand Down Expand Up @@ -1254,8 +1255,8 @@ msgid ""
"string literals are also accepted by the regular expression parser::"
msgstr ""
"La mayoría de las :ref:`secuencias de escape <escape-sequences>` soportadas "
"por los literales de cadena de Python también son aceptadas por el analizador "
"de expresiones regulares::"
"por los literales de cadena de Python también son aceptadas por el "
"analizador de expresiones regulares::"

#: ../Doc/library/re.rst:644
msgid ""
Expand Down Expand Up @@ -1482,9 +1483,9 @@ msgid ""
msgstr ""
"Indica que no se aplica ninguna bandera, el valor es ``0``. Esta bandera "
"puede ser utilizada como valor predeterminado para un argumento de palabra "
"clave de función o como un valor que será condicionalmente combinado "
"con otras banderas usando el operador binario OR. Ejemplo de uso como "
"valor predeterminado::"
"clave de función o como un valor que será condicionalmente combinado con "
"otras banderas usando el operador binario OR. Ejemplo de uso como valor "
"predeterminado::"

#: ../Doc/library/re.rst:779
msgid ""
Expand All @@ -1503,13 +1504,15 @@ msgid ""
"include Unicode characters in matches. Since Python 3, Unicode characters "
"are matched by default."
msgstr ""
"En Python 2, esta bandera hacía que :ref:`secuencias especiales <re-special-sequences>` "
"incluyeran caracteres Unicode en las coincidencias. Desde Python 3, los caracteres "
"Unicode se coinciden por defecto."
"En Python 2, esta bandera hacía que :ref:`secuencias especiales <re-special-"
"sequences>` incluyeran caracteres Unicode en las coincidencias. Desde Python "
"3, los caracteres Unicode se coinciden por defecto."

#: ../Doc/library/re.rst:791
msgid "See :const:`A` for restricting matching on ASCII characters instead."
msgstr "Ver :const:`A` para restringir la coincidencia a caracteres ASCII en su lugar."
msgstr ""
"Ver :const:`A` para restringir la coincidencia a caracteres ASCII en su "
"lugar."

#: ../Doc/library/re.rst:793
msgid "This flag is only kept for backward compatibility."
Expand Down Expand Up @@ -1613,9 +1616,9 @@ msgid ""
"pattern; note that this is different from finding a zero-length match at "
"some point in the string."
msgstr ""
"Explora la cadena de caracteres *string* en busca de la primera ubicación donde el "
"patrón *pattern* de la expresión regular produce una coincidencia, y "
"retorna un :class:`~re.Match` correspondiente. Retorna ``None`` si ninguna "
"Explora la cadena de caracteres *string* en busca de la primera ubicación "
"donde el patrón *pattern* de la expresión regular produce una coincidencia, "
"y retorna un :class:`~re.Match` correspondiente. Retorna ``None`` si ninguna "
"posición en la cadena coincide con el patrón; nota que esto es diferente a "
"encontrar una coincidencia de longitud cero en algún punto de la cadena."

Expand All @@ -1626,8 +1629,8 @@ msgid ""
"``None`` if the string does not match the pattern; note that this is "
"different from a zero-length match."
msgstr ""
"Si cero o más caracteres al principio de la cadena *string* coinciden con "
"el patrón *pattern* de la expresión regular, retorna un :class:`~re.Match` "
"Si cero o más caracteres al principio de la cadena *string* coinciden con el "
"patrón *pattern* de la expresión regular, retorna un :class:`~re.Match` "
"correspondiente. Retorna ``None`` si la cadena no coincide con el patrón; "
"notar que esto es diferente de una coincidencia de longitud cero."

Expand All @@ -1654,10 +1657,10 @@ msgid ""
"corresponding :class:`~re.Match`. Return ``None`` if the string does not "
"match the pattern; note that this is different from a zero-length match."
msgstr ""
"Si toda la cadena *string* coincide con el patrón *pattern* de la "
"expresión regular, retorna un :class:`~re.Match` correspondiente. Retorna "
"``None`` si la cadena no coincide con el patrón; notar que esto es diferente "
"de una coincidencia de longitud cero."
"Si toda la cadena *string* coincide con el patrón *pattern* de la expresión "
"regular, retorna un :class:`~re.Match` correspondiente. Retorna ``None`` si "
"la cadena no coincide con el patrón; notar que esto es diferente de una "
"coincidencia de longitud cero."

#: ../Doc/library/re.rst:889
msgid ""
Expand Down Expand Up @@ -1752,10 +1755,10 @@ msgid ""
"scanned left-to-right, and matches are returned in the order found. Empty "
"matches are included in the result."
msgstr ""
"Retorna un :term:`iterador <iterator>` que produce objetos :class:`~re.Match` sobre "
"todas las coincidencias no superpuestas para el patrón de RE *pattern* en la "
"*string*. La *string* es examinada de izquierda a derecha, y las "
"coincidencias son retornadas en el orden en que se encuentran. Las "
"Retorna un :term:`iterador <iterator>` que produce objetos :class:`~re."
"Match` sobre todas las coincidencias no superpuestas para el patrón de RE "
"*pattern* en la *string*. La *string* es examinada de izquierda a derecha, y "
"las coincidencias son retornadas en el orden en que se encuentran. Las "
"coincidencias vacías se incluyen en el resultado."

#: ../Doc/library/re.rst:966
Expand Down Expand Up @@ -1869,9 +1872,9 @@ msgid ""
"strings, group *name* can only contain bytes in the ASCII range "
"(``b'\\x00'``-``b'\\x7f'``)."
msgstr ""
"El *id* del grupo solo puede contener dígitos ASCII. En las cadenas de reemplazo "
":class:`bytes`, el nombre del grupo *name* solo puede contener bytes en el rango ASCII "
"(``b'\\x00'``-``b'\\x7f'``)."
"El *id* del grupo solo puede contener dígitos ASCII. En las cadenas de "
"reemplazo :class:`bytes`, el nombre del grupo *name* solo puede contener "
"bytes en el rango ASCII (``b'\\x00'``-``b'\\x7f'``)."

#: ../Doc/library/re.rst:1041
msgid ""
Expand Down Expand Up @@ -1977,8 +1980,8 @@ msgid ""
":py:class:`re.Pattern` supports ``[]`` to indicate a Unicode (str) or bytes "
"pattern. See :ref:`types-genericalias`."
msgstr ""
":py:class:`re.Pattern` soporta ``[]`` para indicar un patrón Unicode (str) o de bytes. "
"Ver :ref:`types-genericalias`."
":py:class:`re.Pattern` soporta ``[]`` para indicar un patrón Unicode (str) o "
"de bytes. Ver :ref:`types-genericalias`."

#: ../Doc/library/re.rst:1140
msgid ""
Expand All @@ -1988,10 +1991,10 @@ msgid ""
"this is different from finding a zero-length match at some point in the "
"string."
msgstr ""
"Escanea a través de la cadena *string* buscando la primera ubicación "
"donde esta expresión regular produce una coincidencia, y retorna un :class:"
"`~re.Match` correspondiente. Retorna ``None`` si ninguna posición en la "
"cadena coincide con el patrón; notar que esto es diferente a encontrar una "
"Escanea a través de la cadena *string* buscando la primera ubicación donde "
"esta expresión regular produce una coincidencia, y retorna un :class:`~re."
"Match` correspondiente. Retorna ``None`` si ninguna posición en la cadena "
"coincide con el patrón; notar que esto es diferente a encontrar una "
"coincidencia de longitud cero en algún punto de la cadena."

#: ../Doc/library/re.rst:1145
Expand Down Expand Up @@ -2031,10 +2034,10 @@ msgid ""
"the string does not match the pattern; note that this is different from a "
"zero-length match."
msgstr ""
"Si cero o más caracteres en el comienzo *beginning* de la cadena "
"*string* coinciden con esta expresión regular, retorna un :class:`~re.Match` "
"correspondiente. Retorna ``None`` si la cadena no coincide con el patrón; notar "
"que esto es diferente de una coincidencia de longitud cero."
"Si cero o más caracteres en el comienzo *beginning* de la cadena *string* "
"coinciden con esta expresión regular, retorna un :class:`~re.Match` "
"correspondiente. Retorna ``None`` si la cadena no coincide con el patrón; "
"notar que esto es diferente de una coincidencia de longitud cero."

#: ../Doc/library/re.rst:1171 ../Doc/library/re.rst:1189
msgid ""
Expand All @@ -2059,10 +2062,10 @@ msgid ""
"corresponding :class:`~re.Match`. Return ``None`` if the string does not "
"match the pattern; note that this is different from a zero-length match."
msgstr ""
"Si toda la cadena *string* coincide con esta expresión regular, "
"retorna un :class:`~re.Match` correspondiente. Retorna ``None`` si la "
"cadena no coincide con el patrón; notar que esto es diferente de una "
"coincidencia de longitud cero."
"Si toda la cadena *string* coincide con esta expresión regular, retorna un :"
"class:`~re.Match` correspondiente. Retorna ``None`` si la cadena no "
"coincide con el patrón; notar que esto es diferente de una coincidencia de "
"longitud cero."

#: ../Doc/library/re.rst:1203
msgid "Identical to the :func:`split` function, using the compiled pattern."
Expand Down Expand Up @@ -2158,8 +2161,8 @@ msgid ""
":py:class:`re.Match` supports ``[]`` to indicate a Unicode (str) or bytes "
"match. See :ref:`types-genericalias`."
msgstr ""
":py:class:`re.Match` soporta ``[]`` para indicar una coincidencia Unicode (str) o de bytes. "
"Ver :ref:`types-genericalias`."
":py:class:`re.Match` soporta ``[]`` para indicar una coincidencia Unicode "
"(str) o de bytes. Ver :ref:`types-genericalias`."

#: ../Doc/library/re.rst:1283
msgid ""
Expand Down Expand Up @@ -2559,11 +2562,14 @@ msgstr "search() vs. match()"
#: ../Doc/library/re.rst:1591
msgid ""
"Python offers different primitive operations based on regular expressions:"
msgstr "Python ofrece diferentes operaciones primitivas basadas en expresiones regulares:"
msgstr ""
"Python ofrece diferentes operaciones primitivas basadas en expresiones "
"regulares:"

#: ../Doc/library/re.rst:1593
msgid ":func:`re.match` checks for a match only at the beginning of the string"
msgstr ":func:`re.match` verifica una coincidencia solo al principio de la cadena"
msgstr ""
":func:`re.match` verifica una coincidencia solo al principio de la cadena"

#: ../Doc/library/re.rst:1594
msgid ""
Expand All @@ -2575,7 +2581,8 @@ msgstr ""

#: ../Doc/library/re.rst:1596
msgid ":func:`re.fullmatch` checks for entire string to be a match"
msgstr ":func:`re.fullmatch` verifica si la cadena completa es una coincidencia"
msgstr ""
":func:`re.fullmatch` verifica si la cadena completa es una coincidencia"

#: ../Doc/library/re.rst:1608
msgid ""
Expand Down Expand Up @@ -2697,12 +2704,12 @@ msgid ""
"writer wanted to find all of the adverbs *and their positions* in some text, "
"they would use :func:`finditer` in the following manner::"
msgstr ""
"Si se desea obtener más información sobre todas las coincidencias de un patrón en "
"lugar del texto coincidente, :func:`finditer` es útil ya que proporciona :"
"class:`~re.Match` objetos en lugar de cadenas. "
"Continuando con el ejemplo anterior, si un escritor quisiera encontrar todos "
"los adverbios *y sus posiciones* en algún texto, usaría :func:`finditer` de "
"la siguiente manera::"
"Si se desea obtener más información sobre todas las coincidencias de un "
"patrón en lugar del texto coincidente, :func:`finditer` es útil ya que "
"proporciona :class:`~re.Match` objetos en lugar de cadenas. Continuando con "
"el ejemplo anterior, si un escritor quisiera encontrar todos los adverbios "
"*y sus posiciones* en algún texto, usaría :func:`finditer` de la siguiente "
"manera::"

#: ../Doc/library/re.rst:1736
msgid "Raw String Notation"
Expand Down Expand Up @@ -2810,7 +2817,7 @@ msgstr "$ (dólar)"

#: ../Doc/library/re.rst:123
msgid "* (asterisk)"
msgstr * (asterisco)"
msgstr "* (asterisco)"

#: ../Doc/library/re.rst:130
msgid "+ (plus)"
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ PyICU
polib
pospell>=1.1
potodo
powrap
powrap>=1.0.2
python-docs-theme>=2022.1
setuptools
sphinx-intl>=2.3.0
Expand Down

0 comments on commit a65f03e

Please sign in to comment.