Clarify which parameters are accepted by Traversable.open
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Documentation
The docs for the open method of the importlib.resources.abc.Traversable protocol state:
When opening as text, accepts encoding parameters such as those accepted by io.TextIOWrapper.
It would be helpful to clarify exactly which parameters are accepted here. In particular, is the newline parameter covered by this? That parameter is accepted by io.TextIOWrapper, but is arguably not an "encoding parameter", so it's unclear whether it's supported.
An aside: typeshed does not seem to think that newline is supported here, but I'm wondering whether that might be a defect in typeshed. If the consensus here is that newline is supported, I'll open a typeshed issue.
The precise case I ran into was reading CSV data from a package resource. For portable CSV file reading, using newline="" is recommended, so I'm doing:
with csv_data.open(newline="") as f:
reader = csv.DictReader(f)
for row in reader:
... # do something with row
where csv_data implements importlib.resources.abc.Traversable. The open call is flagged as invalid by mypy and pyright, but the code appears to work correctly (including in the case where the resource is zipfile-based).
If newline is not intended to be accepted here, then I guess I instead have to do:
with importlib.resources.as_file(csv_data) as csv_file:
with csv_file.open(newline="") as f:
reader = csv.DictReader(f)
for row in reader:
... # do something with row
That's fine, but it would be cleaner to be able to stream data straight from the resource without having to materialise the resource as a file first.
Linked PRs
- gh-137076
- gh-157294
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.
Línea de trabajo
Comienza con la documentación de Traversable.open en la página enlazada de importlib.resources.abc y, después, revisa los parámetros documentados y reales del método open, especialmente encoding y newline. Comprueba la discusión y los PRs enlazados gh-137076 y gh-157294 antes de decidir si la documentación debería describir explícitamente newline; el trabajo estará terminado cuando los parámetros aceptados y el uso previsto de CSV sean inequívocos.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- documentation
- Tipo de issue
- Documentación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 25/100