Fallback to utf-8 or iso-8859-1 if decoding using chardet-detected encoding fails
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 25/100
Línea de trabajo
Start in codespell_lib/_codespell.py, especially open_with_chardet and get_lines, which appear in the traceback. Check the existing tests for hard encoding detection and run the relevant tests. Done means a decoding failure with the detected encoding falls back to utf-8 or iso-8859-1 instead of crashing; an open pull request is already linked.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Consider file gdb/testsuite/gdb.ada/non-ascii-utf-8/pack.adb from the binutils-gdb repo.
This works without problems:
$ codespell gdb/testsuite/gdb.ada/non-ascii-utf-8/pack.adb
$
which means utf-8 decoding is used.
However, with --hard-encoding-detection we get:
$ codespell --hard-encoding-detection gdb/testsuite/gdb.ada/non-ascii-utf-8/pack.adb
Traceback (most recent call last):
File "/home/vries/codespell/python-3.9-venv/bin/codespell", line 6, in <module>
sys.exit(_script_main())
File "/home/vries/codespell/codespell.git/codespell_lib/_codespell.py", line 1294, in _script_main
return main(*sys.argv[1:])
File "/home/vries/codespell/codespell.git/codespell_lib/_codespell.py", line 1534, in main
bad_count += parse_file(
File "/home/vries/codespell/codespell.git/codespell_lib/_codespell.py", line 1217, in parse_file
fragments, encoding = file_opener.open(filename)
File "/home/vries/codespell/codespell.git/codespell_lib/_codespell.py", line 250, in open
return self.open_with_chardet(filename)
File "/home/vries/codespell/codespell.git/codespell_lib/_codespell.py", line 277, in open_with_chardet
lines = self.get_lines(f)
File "/home/vries/codespell/codespell.git/codespell_lib/_codespell.py", line 328, in get_lines
fragments.append((False, line_number, f.readlines()))
File "/usr/lib64/python3.9/encodings/cp1254.py", line 23, in decode
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 943: character maps to <undefined>
What happens is that chardet detects CP1254 (aka Windows-1254) encoding, but decoding using that encoding fails.
When not using --hard-encoding-detection, we first try utf-8, and if that doesn't work, warn and try iso-8859-1.
It seems logical to extend the fallback handling to --hard-encoding-detection:
$ codespell --hard-encoding-detection gdb/testsuite/gdb.ada/non-ascii-utf-8/pack.adb
WARNING: Cannot decode file using encoding "Windows-1254": gdb/testsuite/gdb.ada/non-ascii-utf-8/pack.adb
WARNING: Trying next encoding "utf-8"
$
- Lenguaje dominante
- Python
- Estrellas
- 2.4k
- Forks
- 531
- Merge medio
- 15 h 5 min
- PR fusionados (30 d)
- 18
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de codespell-project/codespell
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
codespell-project/codespell#3997 ·
Los mantenedores suelen responder en 1 día
-
No error when beginning with 'Abiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
codespell-project/codespell#3965 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Add "marcos"Posiblemente ocupada @ekanshul la tomó hace 19 días. Abiertodictionary
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
codespell-project/codespell#3920 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
question
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
codespell-project/codespell#4005 ·
Los mantenedores suelen responder en 1 día
-
duplicate question
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
codespell-project/codespell#3998 ·
Los mantenedores suelen responder en 1 día
Todos los issues de codespell-project/codespell
Issues similares
-
area/profiles comp/cli P3 type/feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
NousResearch/hermes-agent#146372 ·
Los mantenedores suelen responder en 1 día
-
[BUG] OpenAI-compatible embedding model alias breaks embedder constructionPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
[oblt-aw][autodoc] Document obs-aw-automerge contract and fix automerge doc inconsistenciesPosiblemente ocupada @github-actions la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
GeoSeries scale and skew tests fail with pytest 9.2.0Posiblemente ocupada @jiayuasu la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
admission-deferred priority: medium status: ready work-class: scoped
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
melodic-software/claude-code-plugins#10887 · 4 comentarios ·
Los mantenedores suelen responder en 1 día