supabase 2.28.3


pip install supabase

  Latest version

Released: Mar 20, 2026


Meta
Author: Joel Lee, Leon Fedden, Daniel Reinón García, Leynier Gutiérrez González, Anand, Andrew Smith
Maintainer: Leonardo Santiago
Requires Python: >=3.9

Classifiers

Programming Language
  • Python :: 3

Operating System
  • OS Independent

supabase-py

Python client for Supabase

PyPI installation

Install the package (for Python >= 3.9):

# with pip
pip install supabase

# with uv
uv add supabase

# with conda
conda install -c conda-forge supabase

Usage

Set your Supabase environment variables in a dotenv file, or using the shell:

export SUPABASE_URL="my-url-to-my-awesome-supabase-instance"
export SUPABASE_KEY="my-supa-dupa-secret-supabase-api-key"

Init client:

import os
from supabase import create_client, Client

url: str = os.environ.get("SUPABASE_URL")
key: str = os.environ.get("SUPABASE_KEY")
supabase: Client = create_client(url, key)

Use the supabase client to interface with your database.

Sign-up

user = supabase.auth.sign_up({ "email": users_email, "password": users_password })

Sign-in

user = supabase.auth.sign_in_with_password({ "email": users_email, "password": users_password })

Insert Data

data = supabase.table("countries").insert({"name":"Germany"}).execute()

# Assert we pulled real data.
assert len(data.data) > 0

Select Data

data = supabase.table("countries").select("*").eq("country", "IL").execute()

# Assert we pulled real data.
assert len(data.data) > 0

Update Data

data = supabase.table("countries").update({"country": "Indonesia", "capital_city": "Jakarta"}).eq("id", 1).execute()

Update data with duplicate keys

country = {
  "country": "United Kingdom",
  "capital_city": "London" # This was missing when it was added
}

data = supabase.table("countries").upsert(country).execute()
assert len(data.data) > 0

Delete Data

data = supabase.table("countries").delete().eq("id", 1).execute()

Call Edge Functions

def test_func():
  try:
    resp = supabase.functions.invoke("hello-world", invoke_options={'body':{}})
    return resp
  except (FunctionsRelayError, FunctionsHttpError) as exception:
    err = exception.to_dict()
    print(err.get("message"))

Download a file from Storage

bucket_name: str = "photos"

data = supabase.storage.from_(bucket_name).download("photo1.png")

Upload a file

bucket_name: str = "photos"
new_file = getUserFile()

data = supabase.storage.from_(bucket_name).upload("/user1/profile.png", new_file)

Remove a file

bucket_name: str = "photos"

data = supabase.storage.from_(bucket_name).remove(["old_photo.png", "image5.jpg"])

List all files

bucket_name: str = "charts"

data = supabase.storage.from_(bucket_name).list()

Move and rename files

bucket_name: str = "charts"
old_file_path: str = "generic/graph1.png"
new_file_path: str = "important/revenue.png"

data = supabase.storage.from_(bucket_name).move(old_file_path, new_file_path)

Important: Proper Client Shutdown

To ensure the Supabase client terminates correctly and to prevent resource leaks, you must explicitly call:

client.auth.sign_out()
2.28.3 Mar 20, 2026
2.28.2 Mar 13, 2026
2.28.1 Mar 13, 2026
2.28.0 Feb 10, 2026
2.27.3 Feb 03, 2026
2.27.2 Jan 14, 2026
2.27.1 Jan 06, 2026
2.27.0 Dec 16, 2025
2.26.0 Dec 15, 2025
2.25.1 Dec 10, 2025
2.25.0 Dec 03, 2025
2.24.0 Nov 07, 2025
2.23.3 Nov 06, 2025
2.23.2 Nov 03, 2025
2.23.1 Nov 03, 2025
2.23.0 Oct 31, 2025
2.22.4 Oct 30, 2025
2.22.3 Oct 28, 2025
2.22.2 Oct 24, 2025
2.22.1 Oct 21, 2025
2.22.0 Oct 08, 2025
2.21.1 Oct 03, 2025
2.21.0 Oct 03, 2025
2.20.0 Sep 22, 2025
2.19.0 Sep 17, 2025
2.18.1 Aug 12, 2025
2.18.0 Aug 05, 2025
2.17.0 Jul 17, 2025
2.16.0 Jun 23, 2025
2.15.3 Jun 10, 2025
2.15.2 May 25, 2025
2.15.1 Apr 28, 2025
2.15.0 Mar 26, 2025
2.14.0 Mar 21, 2025
2.13.0 Feb 04, 2025
2.12.0 Jan 24, 2025
2.11.0 Dec 30, 2024
2.10.0 Nov 05, 2024
2.9.1 Oct 18, 2024
2.9.0 Oct 06, 2024
2.8.1 Sep 30, 2024
2.8.0 Sep 29, 2024
2.7.4 Sep 02, 2024
2.7.3 Aug 22, 2024
2.7.2 Aug 19, 2024
2.7.1 Aug 16, 2024
2.7.0 Aug 16, 2024
2.6.0 Jul 24, 2024
2.5.3 Jul 16, 2024
2.5.2 Jul 16, 2024
2.5.1 Jun 11, 2024
2.5.0 May 28, 2024
2.4.6 May 22, 2024
2.4.5 May 01, 2024
2.4.4 May 01, 2024
2.4.3 Apr 17, 2024
2.4.2 Apr 14, 2024
2.4.1 Mar 26, 2024
2.4.0 Feb 28, 2024
2.3.8 Feb 28, 2024
2.3.7 Feb 26, 2024
2.3.6 Feb 22, 2024
2.3.5 Feb 15, 2024
2.3.4 Jan 15, 2024
2.3.3 Jan 11, 2024
2.3.2 Jan 10, 2024
2.3.1 Jan 05, 2024
2.3.0 Dec 15, 2023
2.2.1 Dec 10, 2023
2.2.0 Dec 01, 2023
2.1.1 Nov 30, 2023
2.1.0 Nov 23, 2023
2.0.3 Nov 01, 2023
2.0.2 Nov 01, 2023
2.0.1 Oct 31, 2023
2.0.0 Oct 29, 2023
1.2.0 Oct 04, 2023
1.1.1 Oct 02, 2023
1.1.0 Sep 29, 2023
1.0.6 Sep 28, 2023
1.0.5 Sep 28, 2023
1.0.4 Aug 04, 2023
1.0.3 Apr 03, 2023
1.0.2 Mar 09, 2023
1.0.1 Feb 26, 2023
1.0.0 Feb 05, 2023
0.7.1 Oct 11, 2022
0.6.0 Oct 07, 2022
0.5.8 Jun 27, 2022
0.5.7 Jun 08, 2022
0.5.6 May 06, 2022
0.5.5 May 01, 2022
0.5.4 Apr 30, 2022
0.5.3 Mar 08, 2022
0.5.2 Mar 08, 2022
0.5.1 Feb 25, 2022
0.5.0 Feb 24, 2022
0.4.0 Feb 04, 2022
0.3.2 Jan 22, 2022
0.3.1 Jan 22, 2022
0.3.0 Jan 17, 2022
0.2.0 Jan 03, 2022
0.1.1 Jan 01, 2022
0.0.3 Oct 04, 2021

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras: None
Dependencies:
realtime (==2.28.3)
supabase-functions (==2.28.3)
storage3 (==2.28.3)
supabase-auth (==2.28.3)
postgrest (==2.28.3)
httpx (<0.29,>=0.26)
yarl (>=1.22.0)