Skip to content

Commit f6ebc82

Browse files
authored
Añade script check_spell.py (#1669)
* Mejora varios aspectos del script create_dict La versión anterior de este script cargaba los archivos completos antes de agregarlos al set, lo que usa más memoria de lo requerido. Esta operación se puede realizar más eficientemente usando generadores, con lo cual los archivos se procesan línea a línea. El script también innecesariamente trataba de remover el string vacío del set resultando, lo cual se puede prevenir al momento de agregar elementos al set. Finalmente, el docstring todavía tenía referencias al antiguo archivo "dict", las cuales fueron quitadas. El docstring también fue cambiado de posición de tal manera que aparezca antes de los imports. * Mueve create_dict.py -> check_spell.py Los usuarios que quieren realizar un chequeo ortográfico sobre los archivos .po actualmente tienen que realizar dos pasos: invocar el sript create_dict.py, el cual genera un archivo dict.txt (un diccionario que contiene a todos los diccionarios dentro de dictionaries/), para luego invocar pospell usando este diccionario generado. Este commit toma el script create_dict.py y le agrega la funcionalidad de invocar pospell luego de generar el diccionario dict.txt (que ahora se genera como un archivo temporal). Con esto, el script ahora cumple la función completa de relizar el chequeo de ortografía, por lo que su nombre ha cambiado a check_spell.py Si no se entregan argumentos, el script corrige todos los archivos .po del repositorio; en caso contrario el usuario debe especificar arhivos .po a ser chequeados. * Cambia GitHub workflows, Makefile y pre-commit hooks para usar check_spell.py En el caseo del workflow de GitHub y del Makefile, el cambio es simple: basta con sustituir la invocación a los dos scripts anteriores por el nuevo y ya todo funciona. En el caso de pre-commit, podemos sacar el hook que corre pospell directamente, y en cambio declrar el paquete pospell como una dependencia aditional del nuestro hook local que ahora corre check_spell.py directamente. * Actualiza FAQ sobre cómo hacer chequeo de ortografía Ya no es necesario que los usuarios realizen dos pasos por separado, sino que ahora solo necesitan correr un solo script. Signed-off-by: Rodrigo Tobar <[email protected]>
1 parent 958747e commit f6ebc82

File tree

6 files changed

+43
-48
lines changed

6 files changed

+43
-48
lines changed

Diff for: .github/workflows/main.yml

+1-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ jobs:
3131
run: powrap --check --quiet **/*.po
3232
- name: Pospell
3333
run: |
34-
python scripts/create_dict.py
35-
pospell -p dict.txt -l es_ES **/*.po
34+
python scripts/check_spell.py
3635
- name: Construir documentación
3736
run: PYTHONWARNINGS=ignore::FutureWarning sphinx-build -j auto -W --keep-going -b html -d cpython/Doc/_build/doctree -D language=es . cpython/Doc/_build/html

Diff for: .overrides/faq.rst

+1-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ pospell. Pospell puede ser instalada en tu entorno de Python empleando pip
2626
Una vez instalado, para chequear el fichero .po sobre el que estás trabajando,
2727
ejecuta desde el directorio principal del repo::
2828

29-
python scripts/create_dict.py # para crear el archivo 'dict.txt'
30-
pospell -p dict.txt -l es_ES path/tu_fichero.po
29+
python scripts/check_spell.py path/tu_fichero.po
3130

3231
pospell emplea la herramienta de diccionarios hunspell. Si pospell falla dando
3332
como error que no tiene hunspell instalado, lo puedes instalar así:

Diff for: .pre-commit-config.yaml

+5-9
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,9 @@ repos:
55
- id: powrap
66
- repo: local
77
hooks:
8-
- id: merge-dicts
9-
name: merge-dicts
10-
entry: python ./scripts/create_dict.py
8+
- id: check-spell
9+
name: Check spelling
10+
entry: python ./scripts/check_spell.py
1111
language: python
12-
# This one requires package ``hunspell-es_es`` in Archlinux
13-
- repo: https://github.com/AFPy/pospell
14-
rev: v1.1
15-
hooks:
16-
- id: pospell
17-
args: ['--personal-dict', 'dict.txt', '--language', 'es_ES', '--language', 'es_AR']
12+
additional_dependencies: ['pospell>=1.1']
13+
files: \.po$

Diff for: Makefile

+1-2
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ progress: venv
8989

9090
.PHONY: spell
9191
spell: venv
92-
$(VENV)/bin/python scripts/create_dict.py
93-
$(VENV)/bin/pospell -p dict.txt -l es_ES **/*.po
92+
$(VENV)/bin/python scripts/check_spell.py
9493

9594

9695
.PHONY: wrap

Diff for: scripts/check_spell.py

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"""
2+
Script to check the spelling of one, many or all .po files based
3+
on the custom dictionaries under the 'dictionaries/' directory.
4+
"""
5+
6+
from pathlib import Path
7+
import sys
8+
import tempfile
9+
10+
import pospell
11+
12+
# Read custom dictionaries
13+
entries = set()
14+
for filename in Path("dictionaries").glob("*.txt"):
15+
with open(filename, "r") as f:
16+
entries.update(
17+
stripped_line
18+
for stripped_line in (line.strip() for line in f.readlines())
19+
if stripped_line
20+
)
21+
22+
# Write merged dictionary file
23+
output_filename = tempfile.mktemp(suffix="_merged_dict.txt")
24+
with open(output_filename, "w") as f:
25+
for e in entries:
26+
f.write(e)
27+
f.write("\n")
28+
29+
# Run pospell either against all files or the file given on the command line
30+
po_files = sys.argv[1:]
31+
if not po_files:
32+
po_files = Path(".").glob("*/*.po")
33+
34+
errors = pospell.spell_check(po_files, personal_dict=output_filename, language="es_ES")
35+
sys.exit(0 if errors == 0 else -1)

Diff for: scripts/create_dict.py

-33
This file was deleted.

0 commit comments

Comments
 (0)