Files API upload does not accept BytesIO or in-memory bytes
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Parti dall’implementazione di files_api.upload() e segui come vengono gestiti gli argomenti file e opzioni. Aggiungi una copertura mirata per byte grezzi, BytesIO, Django InMemoryUploadedFile e opzioni come dict, quindi verifica che i caricamenti non richiedano più file temporanei e che il comportamento esistente dei nomi dei file rimanga invariato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
In hubspot-api-client version 12.0.0, the files_api.upload() method fails when passing a file from memory, such as a BytesIO object, bytes, or a Django InMemoryUploadedFile. The SDK attempts to call open() on the object, leading to errors like:
TypeError: expected str, bytes or os.PathLike object, not _io.BytesIO
UnicodeDecodeError: 'utf-8' codec can't decode byte ...
TypeError: a bytes-like object is required, not 'dict'
To Reproduce
from io import BytesIO
import json
file_bytes = b"test content"
response = client.files.files_api.upload(
file=BytesIO(file_bytes),
file_name="test.txt",
folder_path="test",
options=json.dumps{"access": "PUBLIC_NOT_INDEXABLE"}
)
Expected behavior
The SDK should accept file-like objects or raw bytes and upload them to HubSpot.
Users should not be forced to write temporary files to disk.
Actual behavior
The SDK treats the object as a filename string, attempts open(), and raises a TypeError or UnicodeDecodeError.
Suggested fix
Update files_api.upload() to properly detect file-like objects (bytes, BytesIO, Django UploadedFile) and avoid always calling open().
Ensure options can be passed as a dict and converted to JSON internally, rather than requiring json.dumps
- Lingua principale
- Python
- Stelle
- 435
- Fork
- 127
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di HubSpot/hubspot-api-python
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
HubSpot/hubspot-api-python#497 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
HubSpot/hubspot-api-python#500 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
HubSpot/hubspot-api-python#498 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
HubSpot/hubspot-api-python#496 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
HubSpot/hubspot-api-python#495 · 1 commento · 2 reazioni ·
Tutte le issue di HubSpot/hubspot-api-python
Issue simili
-
comp/tools duplicate P2 sweeper:risk-compatibility tool/mcp type/bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
NousResearch/hermes-agent#132042 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
deepset-ai/haystack#13092 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
EverMind-AI/Raven#845 ·
I maintainer di solito rispondono entro 1 giorno
-
[Feature] 移除「切换到旧版知识库」入口Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
AstrBotDevs/AstrBot#10340 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
BasedHardware/omi#20401 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno