pwshub.com

Supabase Python

Supabase Python

As the Supabase community has grown, so has demand for a diverse collection of client libraries and framework specific SDKs. This demand for the most part has been serviced by the open source community itself, which currently maintains dozens of libraries.

When folks make requests to the hosted Supabase service we're able to build up a good picture of how broadly some of these libraries are used, and when a particular library achieves broad adoption it makes sense for us to add official support for it. Examples of libraries that have made the leap from community supported to officially supported include supabase-flutter and supabase-swift.

There has always been incredible community support for the Python client libraries, over the last year and a half however we've seen a huge surge in adoption. This has been driven by the broad adoption of Supabase in the AI and ML community, many of whom are keen Pythonistas.

So today, we're announcing that the following Python Client Libraries are now officially supported on the Supabase platform:

supabase-py was originally started by maintainer lqmanh in September of 2020, and was shortly after joined by fedden and J0 (who went on to become a full time member of the Supabase Team). In recent years development has been driven by silentworks and juancarlospaco who have both been instrumental in the push to reaching feature parity with supabase-js.

Thank you so much to everyone who has contributed to the client libs so far and hopefully we'll see more community libs making the push for official support in the future.

Below is an overview of some recent features added to the collection of Python libs.

Supabase clients will automatically use HTTP 2.0 when available by default, offering a seamless performance boost to your existing applications.

This improvement is implemented in a completely transparent way, and requires no changes to your existing code, while potentially delivering significant latency reduction and performance enhancements.

See also:

Supabase clients now automatically follow all HTTP redirects by default, aligning with the behavior of Supabase clients in other programming languages.

This enhancement improves consistency across the ecosystem and simplifies the handling of redirects, reducing the need for manual intervention in common scenarios like URL changes or load balancing.

See also:

Supabase clients now automatically include a keep-alive HTTP header by default, that was sometimes missing, addressing this inconsistency in previous versions.

This enhancement optimizes connection management, potentially reducing latency, and improving performance by maintaining persistent connections with the server, especially beneficial for applications making very frequent API calls.

Added support for specifying the region that the edge function will run on (a region is basically a physical location in the world).

See also:

Realtime has been upgraded to version 2.0 with lots of improvements and fixes, including updated examples and the new Presence-related features (broadcast, subscribe, track, etc).

See also:

Anonymous logins have been added to the Auth client, including a new is_anonymous boolean property that has been added to the class User, also sign_in_with_id_token() and sign_in_with_sso() methods have been added to the Auth Client, among a lot of other bug fixes.

See also:

Postgrest quoting/escaping in queries

Supabase improved PostgreSQL query safety by implementing sanitize_param() for parameter sanitization in internal SQL queries on the client-side, ensuring more secure data handling and query execution across all operations.

Some users need to run the Supabase clients with invalid or unverified SSL for whatever reason (SSL debuggers/tracers/profilers/etc in development environments), a new optional boolean argument was added to the constructors of the clients, then passing verify=False enables it to run with unverified SSL without warnings.


_10

from postgrest import SyncPostgrestClient

_10

_10

url: str = "https://example.com"

_10

h: dict = {"Custom-Header": "value"}

_10

_10

with SyncPostgrestClient(url, schema="pub", headers=h, verify = False) as client:

_10

session = client.session

_10

assert session.base_url == "https://example.com"


See also:

The Supabase Realtime library now includes a new close() method for closing the socket connections.

This addition provides developers with finer control over the connection lifecycle, allowing explicit closing of the socket connections when needed.


_19

import os

_19

from realtime import AsyncRealtimeClient

_19

_19

def callback1(payload):

_19

print("Callback 1: ", payload)

_19

_19

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

_19

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

_19

_19

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

_19

_19

client = AsyncRealtimeClient(URL, API_KEY)

_19

await client.connect()

_19

_19

channel_1 = s.channel("realtime:public:sample")

_19

channel_1.subscribe().on_postgres_changes("INSERT", callback1)

_19

_19

await client.listen()

_19

await client.close()


See also:

Timeouts for Edge Functions are now fixed and long-running functions finish correctly, there is no longer a library client-side internal timeout cutting off the functions.

Users can now confidently implement more complex operations in Edge Functions.


_12

import os

_12

from supabase import create_client

_12

from supabase.lib.client_options import ClientOptions

_12

_12

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

_12

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

_12

_12

options = ClientOptions(function_client_timeout = 15)

_12

client = create_client(url, key, options)

_12

_12

client.functions.url = "http://127.0.0.1:54321/functions/v1/hello-world"

_12

print(client.functions.invoke("hello"))


See also:

A new simple and extensible CLI tool to migrate vector data from other services and SASS into Supabase was created, it can migrate vector data from Pinecone and Qdrant into Supabase with a single command, streamlining workflows and enhancing data portability across AI and ML projects.

You can vote for other vector database providers to be added in the future!

See also:

Continuous Integration builds for all the libraries have been upgraded and made more strict (linters, etc).

See also:

  • Unittests coverage was improved across all code repositories.
  • Cyclomatic complexity has been analyzed and improved in all the libraries (mccabe, prospector).
  • Multiple fixes for code style, symbol naming, documentation, comments, and docstrings.

If you'd like to get involved in contributing to our Python client libraries see here for some information on how to contribute, and check the list of open issues for some inspiration on what to work on.

Full documentation is available for the Supabase Python Client libraries on the Supabase Docs site.

Source: supabase.com

Related stories
1 month ago - Supabase offers comprehensive features that make it easy for frontend devs to build complex backends and focus on crafting exceptional UIs. The post Supabase adoption guide: Overview, examples, and alternatives appeared first on LogRocket...
1 month ago - There's always a lot to cover in Launch Weeks. Here are the top 10, ranked by my own statistical reasoning. #10 Snaplet is now open source Snaplet...
2 weeks ago - Vercel just added official First-Party Integrations. We're one of them. This makes it a lot easier to launch Postgres databases from Vercel with...
1 month ago - Today we're releasing Authorization for Realtime's Broadcast and Presence. For context, Supabase includes three useful extensions for building...
1 month ago - Use Firebase Auth, Auth0 or AWS Cognito (Amplify) with your Supabase project, secure your users with SMS based MFA, and use send hooks.
Other stories
1 hour ago - Hello, everyone! It’s been an interesting week full of AWS news as usual, but also full of vibrant faces filling up the rooms in a variety of events happening this month. Let’s start by covering some of the releases that have caught my...
2 hours ago - Nitro.js is a solution in the server-side JavaScript landscape that offers features like universal deployment, auto-imports, and file-based routing. The post Nitro.js: Revolutionizing server-side JavaScript appeared first on LogRocket Blog.
2 hours ago - Information architecture isn’t just organizing content. It's about reducing clicks, creating intuitive pathways, and never making your users search for what they need. The post Information architecture: A guide for UX designers appeared...
2 hours ago - Enablement refers to the process of providing others with the means to do something that they otherwise weren’t able to do. The post The importance of enablement for business success appeared first on LogRocket Blog.
3 hours ago - Learn how to detect when a Bluetooth RFCOMM serial port is available with Web Serial.