"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Supabase Python

Supabase Python

Publicado em 31/10/2024
Navegar:763

Supabase Python

À medida que a comunidade Supabase cresceu, também cresceu a demanda por uma coleção diversificada de bibliotecas de clientes e SDKs específicos de estrutura. Essa demanda em grande parte tem sido atendida pela própria comunidade de código aberto, que atualmente mantém dezenas de bibliotecas.

⚡️ Mais sobre a semana de lançamento

Quando as pessoas fazem solicitações ao serviço hospedado Supabase, somos capazes de construir uma boa imagem de quão amplamente algumas dessas bibliotecas são usadas, e quando uma biblioteca específica alcança ampla adoção, faz sentido adicionarmos suporte oficial para isto. Exemplos de bibliotecas que deram o salto de suporte comunitário para suporte oficial incluem supabase-flutter e supabase-swift.

Sempre houve um suporte incrível da comunidade para as bibliotecas cliente Python, durante o último ano e meio, no entanto, vimos um grande aumento na adoção. Isso foi impulsionado pela ampla adoção do Supabase na comunidade de IA e ML, muitos dos quais são Pythonistas entusiasmados.

Então, hoje estamos anunciando que as seguintes bibliotecas de cliente Python agora são oficialmente suportadas na plataforma Supabase:

  • supabase-py
  • auth-py
  • armazenamento-py
  • funções-py
  • py em tempo real

supabase-py foi originalmente iniciado pelo mantenedor lqmanh em setembro de 2020, e logo depois se juntaram a fedden e J0 (que se tornou membro em tempo integral da equipe Supabase). Nos últimos anos, o desenvolvimento tem sido impulsionado por Silentworks e Juancarlospaco, que têm sido fundamentais no esforço para alcançar a paridade de recursos com supabase-js.

Muito obrigado a todos que contribuíram com as bibliotecas de cliente até agora e esperamos ver mais bibliotecas de comunidade pressionando por suporte oficial no futuro.

Abaixo está uma visão geral de alguns recursos recentes adicionados à coleção de bibliotecas Python.

HTTP2 ativado por padrão

Os clientes Supabase usarão automaticamente HTTP 2.0 quando disponível por padrão, oferecendo um aumento de desempenho contínuo para seus aplicativos existentes.

Essa melhoria é implementada de maneira totalmente transparente e não requer alterações no código existente, ao mesmo tempo em que proporciona redução significativa de latência e melhorias de desempenho.

Veja também:

  • 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

Siga redirecionamentos por padrão

Os clientes Supabase agora seguem automaticamente todos os redirecionamentos HTTP por padrão, alinhando-se com o comportamento dos clientes Supabase em outras linguagens de programação.

Essa melhoria melhora a consistência em todo o ecossistema e simplifica o tratamento de redirecionamentos, reduzindo a necessidade de intervenção manual em cenários comuns, como alterações de URL ou balanceamento de carga.

Veja também:

  • 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 habilitado por padrão

Os clientes Supabase agora incluem automaticamente um cabeçalho HTTP keep-alive por padrão, que às vezes estava ausente, resolvendo essa inconsistência nas versões anteriores.

Esse aprimoramento otimiza o gerenciamento de conexões, reduzindo potencialmente a latência e melhorando o desempenho, mantendo conexões persistentes com o servidor, especialmente benéfico para aplicativos que fazem chamadas de API muito frequentes.

Regiões de funções de borda

Adicionado suporte para especificar a região em que a função de borda será executada (uma região é basicamente um local físico no mundo).

Veja também:

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

V2 em tempo real

O Realtime foi atualizado para a versão 2.0 com muitas melhorias e correções, incluindo exemplos atualizados e os novos recursos relacionados à presença (transmissão, assinatura, rastreamento, etc.).

Veja também:

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

Melhorias de autenticação

Logins anônimos foram adicionados ao cliente Auth, incluindo uma nova propriedade booleana is_anonymous que foi adicionada à classe User, também os métodos sign_in_with_id_token() e sign_in_with_sso() foram adicionados ao cliente Auth, entre muitos outros correções de bugs.

Veja também:

  • 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

Citação/escape do Postgrest em consultas

Supabase melhorou a segurança de consultas PostgreSQL implementando sanitize_param() para limpeza de parâmetros em consultas SQL internas no lado do cliente, garantindo manipulação de dados e execução de consultas mais seguras em todas as operações.

Executando com SSL não verificado

Alguns usuários precisam executar os clientes Supabase com SSL inválido ou não verificado por qualquer motivo (depuradores/tracers/profilers SSL/etc em ambientes de desenvolvimento), um novo argumento booleano opcional foi adicionado aos construtores dos clientes, passando então a verificação =False permite que ele seja executado com SSL não verificado sem avisos.

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"

Veja também:

  • 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

Fechar soquete em tempo real

A biblioteca Supabase Realtime agora inclui um novo método close() para fechar as conexões de soquete.

Esta adição fornece aos desenvolvedores um controle mais preciso sobre o ciclo de vida da conexão, permitindo o fechamento explícito das conexões de soquete quando necessário.

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

Veja também:

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

Tempo limite do Edge Functions

Os tempos limite para Edge Functions agora foram corrigidos e as funções de longa execução terminam corretamente, não há mais um tempo limite interno da biblioteca do lado do cliente que interrompe as funções.

Os usuários agora podem implementar operações mais complexas com segurança no 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"))

Veja também:

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

Nova ferramenta Vec2pg para migração de dados para Supabase

Uma nova ferramenta CLI simples e extensível para migrar dados vetoriais de outros serviços e SASS para Supabase foi criada, ela pode migrar dados vetoriais de Pinecone e Qdrant para Supabase com um único comando, agilizando fluxos de trabalho e melhorando a portabilidade de dados em IA e ML projetos.

Você pode votar em outros provedores de banco de dados vetoriais para serem adicionados no futuro!

Veja também:

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

CI atualizado

As compilações de integração contínua para todas as bibliotecas foram atualizadas e tornaram-se mais rigorosas (linters, etc).

Veja também:

  • 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

Variado

  • A cobertura do Unittests foi melhorada em todos os repositórios de código.
  • A complexidade ciclomática foi analisada e melhorada em todas as bibliotecas (mccabe, prospector).
  • Várias correções para estilo de código, nomenclatura de símbolos, documentação, comentários e docstrings.

Contribuindo

Se você gostaria de se envolver na contribuição para nossas bibliotecas cliente Python, veja aqui algumas informações sobre como contribuir e verifique a lista de problemas em aberto para obter inspiração sobre o que trabalhar.

Começando

A documentação completa está disponível para as bibliotecas do cliente Supabase Python no site Supabase Docs.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/supabase/supabase-python-50j?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3