await), non ha dipendenze, raggruppa i metodi per risorsa, restituisce dict semplici (TypedDict) e solleva un unico tipo di eccezione. Copre tutte le 67 operazioni dell’API di Square Cloud.
In sintesi
Costruzione e opzioni
Metodo per metodo
I metodi di
Application corrispondono alle stesse chiamate con l’id: app.logs() → client.apps.logs(app.id), app.files_list(path) → client.apps.files.list(app.id, path), e così via.
Tipi
Le risposte sonoTypedDict in squarecloud.types, con gli stessi nomi degli SDK JS e Go: Account, User, Plan, AppSummary, DatabaseSummary, App, AppCreated, StatusListItem, RuntimeStats, MetricPoint, AppDomain, LoadBalancers, DeployEvent, DeployCurrent, DeployRepository, LinkedRepository, EnvVars, FileEntry, Snapshot, SnapshotCreated, SnapshotScope, AnalyticsFilters, NetworkAnalytics, NetworkErrors, NetworkLog, NetworkPerformance, DNSRecord, Database, DatabaseCreated, DatabaseType, Workspace, WorkspaceCreated, WorkspaceGroup, ServiceStatus, ServiceEntry, ChatRequest, ChatMessage, ChatCompletion, RealtimeEvent, RealtimeStatus. Sostituiscono le dataclass data/* della v4 (UserData, StatusData, AppData, …). squarecloud.Response ora è il protocollo della risposta del transport (vedi Transport personalizzato); la Response della v4 restituita dalle mutazioni non esiste più, e ora queste restituiscono None.
Errori
str(e) è '<METHOD> <path>: HTTP <status> <CODE>: <message>', senza HTTP <status> quando lo status è 0 e senza : <message> quando è vuoto. e.message è '' quando il server ha inviato solo un codice.
Cambiamenti di comportamento
- I modificatori facoltativi sono solo keyword:
account.snapshots(scope=),apps.status_all(workspace_id=),apps.status(id, raw=),databases.status(id, raw=),apps.commit(id, file, path=, filename=),apps.network.errors(..., include_4xx=), i filtri diapps.network.analytics(...),databases.update(id, name=, ram=)edatabases.create(name, type=, version=, memory=). Ilpathfacoltativo diapps.files.listresta posizionale. - Un body 2xx
{"status": "error"}solleva un’eccezione. I rifiuti di avvio/arresto di app e database sono 409 con solo un codice (CONTAINER_ALREADY_STARTED,ACTION_FAILED, …). Un 202SNAPSHOT_PROCESSINGrestituisce{'pending': True}invece di sollevare un’eccezione: interrogalist, non chiamare mai di nuovocreate. - I valori di query facoltativi non impostati (e
'') vengono omessi invece di essere inviati. - I risultati stringa non sono mai
None:reset_credentials(id, 'certificate')e un webhook rimosso restituiscono''. apps.files.writeinvia unastrcome testo e ibytescodificati in base64; un contenuto vuoto crea un file vuoto; un contenuto oltre 1 MiB viene inviato senza timeout.apps.files.readrichiede sempre il base64 e restituisce ibytesdecodificati.apps.files.listdi una directory mancante solleva 404FILE_NOT_FOUND.- 503
DATABASE_UNAVAILABLEviene ripetuto solo suGET, perché può verificarsi dopo che una mutazione è stata applicata; ripetere una mutazione idempotente spetta al chiamante. - Il flusso realtime produce eventi
{'event', 'data', 'id', ...}, si riapre al massimo 3 volte di fila con un’apertura ogni 5,5 s e solleva un’eccezione quando un’apertura fallisce.
Async
La v4 era solo asincrona. Nella v5,SquareCloud è sincrono e AsyncSquareCloud è la facciata await: gli stessi gruppi e metodi, con ogni chiamata eseguita in asyncio.to_thread, quindi l’event loop non viene mai bloccato. Il flusso realtime diventa async for (un thread lettore alimenta il loop); chiudilo con async with o close().
v4:

