"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Supabase Python

Supabase Python

Publié le 2024-10-31
Parcourir:996

Supabase Python

À mesure que la communauté Supabase s'est développée, la demande pour une collection diversifiée de bibliothèques client et de SDK spécifiques au framework a également augmenté. Cette demande a été en grande partie satisfaite par la communauté open source elle-même, qui gère actuellement des dizaines de bibliothèques.

⚡️ En savoir plus sur la semaine de lancement

Lorsque des personnes font des demandes au service hébergé Supabase, nous sommes en mesure d'avoir une bonne idée de la manière dont certaines de ces bibliothèques sont largement utilisées, et lorsqu'une bibliothèque particulière est largement adoptée, il est logique pour nous d'ajouter un support officiel pour il. Des exemples de bibliothèques qui ont fait le saut du support communautaire au support officiel incluent supabase-flutter et supabase-swift.

La communauté a toujours bénéficié d'un soutien incroyable pour les bibliothèques clientes Python au cours de la dernière année et demie, mais nous avons constaté une énorme augmentation de leur adoption. Cela a été motivé par l'adoption généralisée de Supabase par la communauté de l'IA et du ML, dont beaucoup sont de fervents Pythonistas.

Aujourd'hui, nous annonçons que les bibliothèques clientes Python suivantes sont désormais officiellement prises en charge sur la plateforme Supabase :

  • supabase-py
  • auth-py
  • stockage-py
  • fonctions-py
  • temps réel-py

supabase-py a été initialement lancé par le responsable lqmanh en septembre 2020, et a été rejoint peu de temps après par fedden et J0 (qui sont ensuite devenus membres à plein temps de l'équipe Supabase). Ces dernières années, le développement a été piloté par Silentworks et Juancarlospaco, qui ont tous deux joué un rôle déterminant dans l'atteinte de la parité des fonctionnalités avec supabase-js.

Merci beaucoup à tous ceux qui ont contribué aux bibliothèques client jusqu'à présent et j'espère que nous verrons davantage de bibliothèques communautaires faire pression pour un support officiel à l'avenir.

Vous trouverez ci-dessous un aperçu de certaines fonctionnalités récentes ajoutées à la collection de bibliothèques Python.

HTTP2 activé par défaut

Les clients Supabase utiliseront automatiquement HTTP 2.0 lorsqu'il est disponible par défaut, offrant ainsi une amélioration transparente des performances de vos applications existantes.

Cette amélioration est mise en œuvre de manière totalement transparente et ne nécessite aucune modification de votre code existant, tout en offrant potentiellement une réduction significative de la latence et des améliorations de performances.

Voir aussi :

  • 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

Suivre les redirections par défaut

Les clients Supabase suivent désormais automatiquement toutes les redirections HTTP par défaut, ce qui s'aligne sur le comportement des clients Supabase dans d'autres langages de programmation.

Cette amélioration améliore la cohérence dans l'ensemble de l'écosystème et simplifie la gestion des redirections, réduisant ainsi le besoin d'intervention manuelle dans des scénarios courants tels que les modifications d'URL ou l'équilibrage de charge.

Voir aussi :

  • 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

Keep-alive activé par défaut

Les clients Supabase incluent désormais automatiquement par défaut un en-tête HTTP keep-alive, qui manquait parfois, corrigeant cette incohérence dans les versions précédentes.

Cette amélioration optimise la gestion des connexions, réduisant potentiellement la latence et améliorant les performances en maintenant des connexions persistantes avec le serveur, ce qui est particulièrement avantageux pour les applications effectuant des appels API très fréquents.

Régions des fonctions Edge

Ajout de la prise en charge de la spécification de la région sur laquelle la fonction Edge s'exécutera (une région est essentiellement un emplacement physique dans le monde).

Voir aussi :

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

Temps réel V2

Realtime a été mis à niveau vers la version 2.0 avec de nombreuses améliorations et correctifs, y compris des exemples mis à jour et les nouvelles fonctionnalités liées à la présence (diffusion, abonnement, suivi, etc.).

Voir aussi :

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

Améliorations de l'authentification

Des connexions anonymes ont été ajoutées au client Auth, y compris une nouvelle propriété booléenne is_anonymous qui a été ajoutée à la classe User, ainsi que des méthodes sign_in_with_id_token() et sign_in_with_sso() ont été ajoutées au client Auth, entre autres. corrections de bugs.

Voir aussi :

  • 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 citant/échappant dans les requêtes

Supabase a amélioré la sécurité des requêtes PostgreSQL en implémentant sanitize_param() pour la vérification des paramètres dans les requêtes SQL internes côté client, garantissant ainsi une gestion des données et une exécution des requêtes plus sécurisées dans toutes les opérations.

Exécution avec SSL non vérifié

Certains utilisateurs doivent exécuter les clients Supabase avec un SSL invalide ou non vérifié pour une raison quelconque (débogueurs/traceurs/profileurs SSL/etc dans les environnements de développement), un nouvel argument booléen facultatif a été ajouté aux constructeurs des clients, puis en passant la vérification =False lui permet de s'exécuter avec SSL non vérifié sans avertissement.

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"

Voir aussi :

  • 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

Fermer le socket en temps réel

La bibliothèque Supabase Realtime inclut désormais une nouvelle méthode close() pour fermer les connexions socket.

Cet ajout offre aux développeurs un contrôle plus précis sur le cycle de vie des connexions, permettant la fermeture explicite des connexions socket en cas de besoin.

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()

Voir aussi :

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

Délais d’expiration des fonctions Edge

Les délais d'attente pour les fonctions Edge sont désormais corrigés et les fonctions de longue durée se terminent correctement, il n'y a plus de délai d'attente interne côté client de bibliothèque coupant les fonctions.

Les utilisateurs peuvent désormais mettre en œuvre en toute confiance des opérations plus complexes dans 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"))

Voir aussi :

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

Nouvel outil Vec2pg pour migrer les données vers Supabase

Un nouvel outil CLI simple et extensible pour migrer les données vectorielles d'autres services et SASS vers Supabase a été créé. Il peut migrer les données vectorielles de Pinecone et Qdrant vers Supabase avec une seule commande, rationalisant les flux de travail et améliorant la portabilité des données à travers l'IA et le ML. projets.

Vous pouvez voter pour que d'autres fournisseurs de bases de données vectorielles soient ajoutés à l'avenir !

Voir aussi :

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

CI mis à jour

Les versions d'intégration continue pour toutes les bibliothèques ont été mises à niveau et rendues plus strictes (linters, etc.).

Voir aussi :

  • 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

Divers

  • La couverture des tests unitaires a été améliorée dans tous les référentiels de code.
  • La complexité cyclomatique a été analysée et améliorée dans toutes les bibliothèques (mccabe, prospector).
  • Plusieurs correctifs pour le style de code, la dénomination des symboles, la documentation, les commentaires et les docstrings.

Contribuer

Si vous souhaitez participer à la contribution à nos bibliothèques clientes Python, consultez ici pour obtenir des informations sur la manière de contribuer, et consultez la liste des problèmes ouverts pour vous inspirer sur les sujets sur lesquels travailler.

Commencer

Une documentation complète est disponible pour les bibliothèques Supabase Python Client sur le site Supabase Docs.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/supabase/supabase-python-50j?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3