`iter_lines(decode_unicode=True, delimiter=<str>)` raises `TypeError` when `Response.encoding` is `None`
Nadie ha tomado este issue todavía.
- #1 de @draarivpatel-ui — cerrado sin fusionar
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 62/100
Línea de trabajo
El fallo está en iter_lines en src/requests/models.py, donde chunk.split(delimiter) recibe un delimitador de tipo str mientras el chunk es bytes porque Response.encoding es None. Ejecuta el fragmento de reproducción del issue para confirmar el TypeError y luego revisa cómo iter_lines decodifica los chunks cuando decode_unicode=True. Está terminado cuando la llamada devuelve líneas str o lanza un error claro, y se añade un test junto a los tests existentes de iter_lines. El pull request vinculado, cerrado y no fusionado, puede mostrar un intento anterior que conviene leer primero.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Expected Result
Either return lines, or raise a clear error message
I spotted this while investigating whether Pyrefly could run on the Requests source code. (happy to make a PR to add Pyrefly if you'd be interested in it by the way, it may avert future issues like this one? looks like only collaboratos can make PRs, so maybe not)
Actual Result
Unexpected error message:
[b'line one', b'line two', b'line three']
Traceback (most recent call last):
File "/home/mgorelli/scratch/t.py", line 15, in <module>
print(list(make_response().iter_lines(decode_unicode=True, delimiter="\n")))
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mgorelli/scratch/.venv/lib/python3.14/site-packages/requests/models.py", line 1016, in iter_lines
lines = chunk.split(delimiter) # type: ignore[arg-type]
TypeError: a bytes-like object is required, not 'str'
Reproduction Steps
import io
import requests
def make_response():
r = requests.models.Response()
r.status_code = 200
r.raw = io.BytesIO(b"line one\nline two\nline three")
r.encoding = None # e.g. a Content-Type with no charset
return r
print(list(make_response().iter_lines(decode_unicode=True)))
print(list(make_response().iter_lines(decode_unicode=True, delimiter="\n")))
System Information
$ python -m requests.help
{
"chardet": {
"version": null
},
"charset_normalizer": {
"version": "3.5.2"
},
"cryptography": {
"version": ""
},
"idna": {
"version": "3.20"
},
"implementation": {
"name": "CPython",
"version": "3.14.4"
},
"platform": {
"release": "6.6.87.2-microsoft-standard-WSL2",
"system": "Linux"
},
"pyOpenSSL": {
"openssl_version": "",
"version": null
},
"requests": {
"version": "2.34.2"
},
"system_ssl": {
"version": "30500060"
},
"urllib3": {
"version": "2.8.0"
},
"using_charset_normalizer": true,
"using_pyopenssl": false
}
- Lenguaje dominante
- Python
- Estrellas
- 54.7k
- Forks
- 10.8k
- Merge medio
- 18 min
- PR fusionados (30 d)
- 1
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 psf/requests
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
get_encoding_from_headers treats any content type containing 'text' as text/* (ISO-8859-1)Posiblemente ocupada @suyashgitt la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Invalid `params` type (e.g. int) raises misleading "TypeError: Cannot mix str and non-str arguments"Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Todos los issues de psf/requests
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
OCA/account-invoicing#2529 ·
Los mantenedores suelen responder en 1 día
-
area/ci
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
ImageGen generate-batch aborts valid JSONL jobs containing a Unicode line separator in poster textAbiertobug imagen skills
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Email validation accepts a trailing newlinePosiblemente ocupada @marcello-pichini la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día