スーパーベース Python

王林
王林オリジナル
2024-08-31 06:04:36840ブラウズ

Supabase Python

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

⚡️ 発売週の詳細

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

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

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

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

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

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

以下は、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 サイトで入手できます。

以上がスーパーベース Pythonの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。