「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > スーパーベース Python

スーパーベース Python

2024 年 10 月 31 日公開
ブラウズ:563

Supabase Python

Supabase コミュニティが成長するにつれて、クライアント ライブラリやフレームワーク固有の SDK の多様なコレクションに対する需要も増加しました。この需要の大部分は、現在数十のライブラリを管理しているオープンソース コミュニティ自体によって対応されています。

⚡️ 発売週の詳細

人々がホストされている Supabase サービスにリクエストを行うと、これらのライブラリの一部がどの程度広く使用されているかについての適切な全体像を構築することができ、特定のライブラリが広く採用されるようになったら、次の公式サポートを追加するのが理にかなっています。それ。コミュニティサポートから公式サポートに飛躍したライブラリの例には、supabase-flutter や supabase-swift などがあります。

Python クライアント ライブラリに対するコミュニティのサポートは常に素晴らしいものでしたが、ここ 1 年半で採用が大幅に増加しました。これは、AI および ML コミュニティでの Supabase の広範な採用によって推進されており、その多くは熱心な Pythonista です。

そこで本日、次の Python クライアント ライブラリが Supabase プラットフォームで正式にサポートされるようになった事を発表します:

  • スーパーベース-py
  • 認証-py
  • ストレージパイ
  • 関数-py
  • リアルタイムパイ

supabase-py はもともと 2020 年 9 月にメンテナー lqmanh によって開始され、その直後に fedden と J0 (後に Supabase チームのフルタイム メンバーになりました) が加わりました。近年の開発は、supabase-js と同等の機能を達成するための推進に貢献した Silentworks と juancarlospaco によって推進されてきました。

これまでクライアント ライブラリに貢献してくださった皆様に心より感謝いたします。将来的にはさらに多くのコミュニティ ライブラリが公式サポートを推進することを願っています。

以下は、Python ライブラリのコレクションに追加された最近の機能の概要です。

デフォルトでHTTP2を有効にしました

Supabase クライアントは、デフォルトで利用可能な場合は HTTP 2.0 を自動的に使用し、既存のアプリケーションにシームレスなパフォーマンスの向上を提供します。

この改善は完全に透過的な方法で実装されており、既存のコードを変更する必要はありませんが、大幅なレイテンシーの削減とパフォーマンスの向上が実現する可能性があります。

以下も参照:

  • https://github.com/supabase/functions-py/pull/115
  • https://github.com/supabase/auth-py/pull/534
  • https://github.com/supabase/postgrest-py/pull/462
  • https://github.com/supabase/storage-py/pull/271

デフォルトでリダイレクトに従います

Supabase クライアントは、他のプログラミング言語での Supabase クライアントの動作に合わせて、デフォルトですべての HTTP リダイレクトに自動的に従うようになりました。

この機能強化により、エコシステム全体の一貫性が向上し、リダイレクトの処理が簡素化され、URL の変更や負荷分散などの一般的なシナリオでの手動介入の必要性が減ります。

以下も参照:

  • https://github.com/supabase/postgrest-py/pull/449
  • https://github.com/supabase/functions-py/pull/107
  • https://github.com/supabase/storage-py/pull/257
  • https://github.com/supabase/auth-py/pull/511

キープアライブはデフォルトで有効になっています

Supabase クライアントには、デフォルトでキープアライブ HTTP ヘッダーが自動的に含まれるようになりましたが、このヘッダーは欠落している場合があり、以前のバージョンでのこの不一致に対処しました。

この機能強化により、接続管理が最適化され、サーバーとの永続的な接続を維持することでレイテンシが削減され、パフォーマンスが向上する可能性があり、非常に頻繁に API 呼び出しを行うアプリケーションにとって特に有益です。

エッジ機能領域

エッジ機能が実行されるリージョンを指定するためのサポートが追加されました (リージョンは基本的に世界の物理的な場所です)。

以下も参照:

  • https://github.com/supabase/functions-py/pull/126

リアルタイム V2

Realtime はバージョン 2.0 にアップグレードされ、更新されたサンプルや新しいプレゼンス関連機能 (ブロードキャスト、サブスクライブ、トラックなど) など、多くの改善と修正が加えられました。

以下も参照:

  • https://github.com/supabase/realtime-py/pull/139
  • https://github.com/supabase/realtime-py/pull/178

認証の改善

クラス User に追加された新しい is_anonymous ブール値プロパティを含む匿名ログインが認証クライアントに追加されました。また、sign_in_with_id_token() メソッドとsign_in_with_sso() メソッドも認証クライアントに追加されました。バグ修正。

以下も参照:

  • https://github.com/supabase/auth-py/pull/528
  • https://github.com/supabase/auth-py/pull/548
  • https://github.com/supabase/auth-py/pull/553
  • https://github.com/supabase/auth-py/pull/506

クエリでの Postgrest の引用/エスケープ

Supabase は、クライアント側の内部 SQL クエリでパラメータをサニタイズするための sanitize_param() を実装することで、PostgreSQL クエリの安全性を向上させ、すべての操作にわたってより安全なデータ処理とクエリ実行を保証しました。

未検証の SSL で実行する

一部のユーザーは、何らかの理由で無効または未検証の SSL を使用して Supabase クライアントを実行する必要があります (開発環境の SSL デバッガー/トレーサー/プロファイラーなど)。クライアントのコンストラクターに新しいオプションのブール引数が追加され、verify が渡されました。 =False を指定すると、警告なしで未検証の SSL を使用して実行できます。

from postgrest import SyncPostgrestClient

url: str = "https://example.com"
h: dict = {"Custom-Header": "value"}

with SyncPostgrestClient(url, schema="pub", headers=h, verify = False) as client:
    session = client.session
    assert session.base_url == "https://example.com"

以下も参照:

  • https://github.com/supabase/functions-py/pull/106
  • https://github.com/supabase/storage-py/pull/256
  • https://github.com/supabase/auth-py/pull/506
  • https://github.com/supabase/postgrest-py/pull/448
  • https://github.com/supabase/supabase-py/pull/813

リアルタイムでソケットを閉じる

Supabase Realtime ライブラリには、ソケット接続を閉じるための新しい close() メソッドが含まれるようになりました。

この追加により、開発者は接続ライフサイクルをより細かく制御できるようになり、必要に応じてソケット接続を明示的に閉じることができるようになります。

import os
from realtime import AsyncRealtimeClient

def callback1(payload):
    print("Callback 1: ", payload)

SUPABASE_ID: str = os.environ.get("SUPABASE_ID")
API_KEY: str = os.environ.get("SUPABASE_KEY")

URL: str = f"wss://{SUPABASE_ID}.supabase.co/realtime/v1/websocket"

client = AsyncRealtimeClient(URL, API_KEY)
await client.connect()

channel_1 = s.channel("realtime:public:sample")
channel_1.subscribe().on_postgres_changes("INSERT", callback1)

await client.listen()
await client.close()

以下も参照:

  • https://github.com/supabase-community/realtime-py/pull/142

エッジ機能のタイムアウト

エッジ関数のタイムアウトが修正され、長時間実行される関数が正しく終了するようになりました。ライブラリのクライアント側の内部タイムアウトによって関数が切断されることはなくなりました。

ユーザーは、Edge Functions でより複雑な操作を自信を持って実装できるようになりました。

import os
from supabase import create_client
from supabase.lib.client_options import ClientOptions

url: str = os.environ.get("SUPABASE_URL")
key: str = os.environ.get("SUPABASE_KEY")

options = ClientOptions(function_client_timeout = 15)
client = create_client(url, key, options)

client.functions.url = "http://127.0.0.1:54321/functions/v1/hello-world"
print(client.functions.invoke("hello"))

以下も参照:

  • https://github.com/supabase/functions-py/pull/120
  • https://github.com/supabase/supabase-py/pull/846

データを Supabase に移行するための新しいツール Vec2pg

他のサービスやSASSからベクトルデータをSupabaseに移行するための新しいシンプルで拡張可能なCLIツールが作成されました。単一のコマンドでPineconeとQdrantからベクトルデータをSupabaseに移行でき、ワークフローを合理化し、AIとML全体でのデータの移植性を強化できます。プロジェクト。

今後追加される他のベクター データベース プロバイダーに投票できます!

以下も参照:

  • https://github.com/supabase-community/vec2pg
  • https://github.com/supabase-community/vec2pg/pull/5
  • https://github.com/supabase-community/vec2pg/issues/6

更新されたCI

すべてのライブラリの継続的インテグレーション ビルドがアップグレードされ、より厳密になりました (リンターなど)。

以下も参照:

  • https://github.com/supabase/supabase-py/pull/772
  • https://github.com/supabase/supabase-py/pull/774
  • https://github.com/supabase/functions-py/pull/93
  • https://github.com/supabase/functions-py/pull/92
  • https://github.com/supabase/storage-py/pull/240
  • https://github.com/supabase/storage-py/pull/237
  • https://github.com/supabase/realtime-py/pull/132
  • https://github.com/supabase/realtime-py/pull/131
  • https://github.com/supabase/postgrest-py/pull/424
  • https://github.com/supabase/postgrest-py/pull/422
  • https://github.com/supabase/functions-py/pull/139
  • https://github.com/supabase/storage-py/pull/287
  • https://github.com/supabase/auth-py/pull/572
  • https://github.com/supabase/postgrest-py/pull/484
  • https://github.com/supabase/supabase-py/pull/887
  • https://github.com/supabase/realtime-py/pull/182

その他

  • すべてのコード リポジトリにわたって単体テストのカバレッジが向上しました。
  • すべてのライブラリ (mccabe、prospector) で循環的複雑性が分析され、改善されました。
  • コード スタイル、シンボルの命名、ドキュメント、コメント、ドキュメント文字列に関する複数の修正。

貢献する

Python クライアント ライブラリへのコントリビュートに参加したい場合は、ここでコントリビュート方法に関する情報を参照し、未解決の問題のリストを確認して、何に取り組むかについてのインスピレーションを得ることができます。

はじめる

Supabase Python クライアント ライブラリの完全なドキュメントは、Supabase Docs サイトで入手できます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/supabase/supabase-python-50j?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3