Skip to main content
v5 は全面的な書き直しです。SDK はデフォルトで同期型になり (await ファサード付き)、依存関係はゼロで、メソッドをリソースごとにグループ化し、プレーンな dict (TypedDict) を返し、単一の例外型を送出します。Square Cloud API の全 67 操作をカバーしています。

概要

初期化とオプション

メソッドごとの対応

Application のメソッドは、ID を渡す同じ呼び出しに対応します: app.logs() → client.apps.logs(app.id)、app.files_list(path) → client.apps.files.list(app.id, path) など。

型

レスポンスは squarecloud.types にある TypedDict で、JS と Go の SDK と同じ名前が付いています: 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。これらは v4 の data/* の dataclass (UserData、StatusData、AppData など) を置き換えます。squarecloud.Response はトランスポートのレスポンスのプロトコルになりました (カスタムトランスポートを参照)。変更系が返していた v4 の Response はなくなり、変更系は None を返します。

エラー

str(e) は '<METHOD> <path>: HTTP <status> <CODE>: <message>' です。ステータスが 0 の場合は HTTP <status> が、メッセージが空の場合は : <message> が省かれます。サーバーがコードしか送らなかった場合、e.message は '' です。

動作の変更

  • 省略可能な修飾引数はキーワード専用です: 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=)、apps.network.analytics(...) のフィルター、databases.update(id, name=, ram=)、databases.create(name, type=, version=, memory=)。apps.files.list の省略可能な path は位置引数のままです。
  • 2xx の {"status": "error"} ボディは例外を送出します。アプリとデータベースの起動・停止の拒否は、コードのみを持つ 409 です (CONTAINER_ALREADY_STARTED、ACTION_FAILED など)。202 SNAPSHOT_PROCESSING は例外を送出せずに {'pending': True} を返します: list をポーリングし、create を再度呼び出さないでください。
  • 設定されていない省略可能なクエリ値 (および '') は、送信されずに省かれます。
  • 文字列の結果が None になることはありません: reset_credentials(id, 'certificate') と削除された webhook は '' を返します。
  • apps.files.write は str をテキストとして、bytes を base64 エンコードで送信します。空の内容は空のファイルを作成し、1 MiB を超える内容はタイムアウトなしで送信されます。apps.files.read は常に base64 を要求し、デコードされた bytes を返します。
  • 存在しないディレクトリに対する apps.files.list は 404 FILE_NOT_FOUND を送出します。
  • 503 DATABASE_UNAVAILABLE は変更が適用された後に発生することがあるため、GET でのみリトライされます。冪等な変更をリトライするかどうかは呼び出し側に委ねられます。
  • リアルタイムのストリームは {'event', 'data', 'id', ...} のイベントを返し、5.5 秒に 1 回のオープンで連続最大 3 回まで再オープンし、オープンに失敗すると例外を送出します。

非同期

v4 は非同期のみでした。v5 では SquareCloud が同期型で、AsyncSquareCloud が await ファサードです。グループとメソッドは同じで、各呼び出しは asyncio.to_thread で実行されるため、イベントループがブロックされることはありません。リアルタイムのストリームは async for になり (読み取りスレッドがループにデータを渡します)、async with または close() で閉じます。 v4:
v5: