rows_from_file() splits a single-column CSV file on a letter, or raises csv.Error
Los mantenedores suelen responder en 3 días
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 84/100
Línea de trabajo
Localiza rows_from_file() y reproduce los casos de archivos CSV de una sola columna con los comandos sqlite-utils memory que se muestran en el issue. Comprueba cómo se realiza la detección del delimitador y luego ejecuta las pruebas existentes relevantes y añade cobertura para entradas CSV de una sola columna con encabezados y URLs. El trabajo estará terminado cuando los archivos sin un delimitador reconocido se importen como una sola columna, mientras que el comportamiento de insert --sniff permanezca sin cambios.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
When rows_from_file() detects the format of a single-column CSV file, it either fails or splits the column on a letter. That affects sqlite-utils memory file.csv and any Python call that leaves format= unset.
$ printf 'name\nAnn\nBob\n' > names.csv
$ sqlite-utils memory names.csv "select * from names"
...
_csv.Error: Could not determine delimiter
$ printf 'url\nhttps://example.com/a\nhttps://example.org/b\n' > urls.csv
$ sqlite-utils memory urls.csv "select * from urls"
[{"ur": "https://examp", "": "e.com/a"},
{"ur": "https://examp", "": "e.org/b"}]
(sqlite-utils 4.2.1)
The detection calls csv.Sniffer().sniff() on the first 2048 bytes without a delimiters= list. The sniffer then treats any character as a candidate, so a file with a single column either has no consistent candidate (csv.Error) or has a letter that happens to repeat the same number of times on every line (l above).
A fix could sniff only for the delimiters a CSV file is realistically written with (,, ;, tab, |) and read the file as one column when none of them is found. insert --sniff calls the sniffer the same way, but that is an explicit request to detect the dialect, so I would leave it unchanged.
- Lenguaje dominante
- Python
- Estrellas
- 2.2k
- Forks
- 215
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la 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 simonw/sqlite-utils
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
simonw/sqlite-utils#928 ·
Los mantenedores suelen responder en 3 días
-
Tests use CliRunner.isolated_filesystem(), which is deprecated and will be removed in Click 9.0Posiblemente ocupada @devpryan7792 la tomó hace 11 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
simonw/sqlite-utils#916 ·
Los mantenedores suelen responder en 3 días
-
enable_fts() exhausts iterator columns before populating the indexPosiblemente ocupada @syahra712 la tomó hace 25 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
simonw/sqlite-utils#902 ·
Los mantenedores suelen responder en 3 días
-
rows_from_file() ignores ignore_extras= and extras_key= for anything that isn't Format.CSVPosiblemente ocupada @feiiiiii5 la tomó hace 37 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
simonw/sqlite-utils#892 ·
Los mantenedores suelen responder en 3 días
-
Raw numpy scalar values get silently stored as corrupted BLOBs instead of being convertedPosiblemente ocupada @TanbirRamim la tomó hace 44 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
simonw/sqlite-utils#876 ·
Los mantenedores suelen responder en 3 días
Todos los issues de simonw/sqlite-utils
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
FinanceFlash/unvibecode#577 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
area/test type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Clodmony/starship-coop#70 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
punitarani/fli#270 ·
-
🐛 Bug 🔔 Pending processing
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
jumpserver/jumpserver#17980 ·
Los mantenedores suelen responder en 1 día
-
community enhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día