upload_files()/upload_files_async() raises httpx.RequestNotRead
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Empieza en glean/api_client/_hooks/init.py, en XGlean.before_request(), luego revisa examples/agent_with_file_upload.py y reproduce la carga que falla con las entradas documentadas. Se considera terminado cuando upload_files() y upload_files_async() funcionan para las variantes de contenido indicadas, mientras los endpoints JSON que no son multipart siguen sin verse afectados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
The official example examples/agent_with_file_upload.py fails with httpx.RequestNotRead when calling glean.client.chat.upload_files().
Steps to reproduce
Run the official example as-is:
from glean.api_client import Glean, models
with Glean(api_token="...", instance="...") as glean:
upload_result = glean.client.chat.upload_files(
files=[models.File(file_name="test.csv", content=b"a,b\n1,2")]
)
All content variants produce the same error: bytes, io.BytesIO, open(..., 'rb'), FileTypedDict.
Error
httpx.RequestNotRead: Attempted to access streaming request content, without having called read().
Root cause
The XGlean BeforeRequestHook always reconstructs the httpx.Request object to add optional headers:
glean/api_client/_hooks/init.py — XGlean.before_request()
return httpx.Request(
method=request.method,
url=request.url,
headers=new_headers,
content=request.content, # <-- raises RequestNotRead
extensions=request.extensions,
)
For multipart requests (file uploads), httpx builds the body as a stream. Accessing request.content before request.read() raises httpx.RequestNotRead. This happens on every upload_files() / upload_files_async() call, regardless of how file content is passed, because the hook runs before the request is sent.
Non-multipart endpoints (JSON body) are unaffected because request.content is available immediately.
- Lenguaje dominante
- Python
- Estrellas
- 20
- Forks
- 10
- Merge medio
- 1 d 6 h
- PR fusionados (30 d)
- 17
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 gleanwork/api-client-python
-
Issue Obtaining Agent Schema Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
gleanwork/api-client-python#137 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
gleanwork/api-client-python#133 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
gleanwork/api-client-python#115 · 4 comentarios ·
-
Model serialization drops keys Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
gleanwork/api-client-python#105 · 2 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
gleanwork/api-client-python#57 · 2 comentarios ·
Todos los issues de gleanwork/api-client-python
Issues similares
-
link-check link-check:sphinx-theme
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
qgis/QGIS-Documentation#11275 ·
-
bug priority:normal ready-for-dev
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
OpenHands/extensions#626 · 1 comentario ·
-
Change observation tooltip text Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
CSCfi/sd-search-api#39 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100