Skip to main content

Python Client Library for Supabase Auth

Project description

Auth-py

License: MIT CI Python Version Codecov Last commit GitHub commit activity Github Stars Github Forks Github Watchers GitHub contributors

This is a Python port of the supabase js gotrue client. The current state is that there is a features parity but with small differences that are mentioned in the section Differences to the JS client. As of December 14th, we renamed to repo from gotrue-py to auth-py to mirror the changes in the JavaScript library.

Installation

We are still working on making the gotrue python library more user-friendly. For now here are some sparse notes on how to install the module.

Poetry

poetry add gotrue

Pip

pip install gotrue

Differences to the JS client

It should be noted there are differences to the JS client. If you feel particulaly strongly about them and want to motivate a change, feel free to make a GitHub issue and we can discuss it there.

Firstly, feature pairity is not 100% with the JS client. In most cases we match the methods and attributes of the JS client and api classes, but is some places (e.g for browser specific code) it didn't make sense to port the code line for line.

There is also a divergence in terms of how errors are raised. In the JS client, the errors are returned as part of the object, which the user can choose to process in whatever way they see fit. In this Python client, we raise the errors directly where they originate, as it was felt this was more Pythonic and adhered to the idioms of the language more directly.

In JS we return the error, but in Python we just raise it.

const { data, error } = client.sign_up(...)

The other key difference is we do not use pascalCase to encode variable and method names. Instead we use the snake_case convention adopted in the Python language.

Also, the gotrue library for Python parses the date-time string into datetime Python objects. The JS client keeps the date-time as strings.

Usage (outdated)

Important: This section is outdated, you can be guided by the JS client documentation because this Python client has a lot of parity with the JS client.

To instantiate the client, you'll need the URL and any request headers at a minimum.

from gotrue import SyncGoTrueClient

headers = {
    "apiKey": "my-mega-awesome-api-key",
    # ... any other headers you might need.
}
client: SyncGoTrueClient = SyncGoTrueClient(url="www.genericauthwebsite.com", headers=headers)

To send a magic email link to the user, just provide the email kwarg to the sign_in method:

user: Dict[str, Any] = client.sign_up(email="example@gmail.com")

To login with email and password, provide both to the sign_in method:

user: Dict[str, Any] = client.sign_up(email="example@gmail.com", password="*********")

To sign out of the logged in user, call the sign_out method. We can then assert that the session and user are null values.

client.sign_out()
assert client.user() is None
assert client.session() is None

We can refesh a users session.

# The user should already be signed in at this stage.
user = client.refresh_session()
assert client.user() is not None
assert client.session() is not None

Contributions

We would be immensely grateful for any contributions to this project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gotrue-2.10.0.tar.gz (41.4 kB view details)

Uploaded Source

Built Distribution

gotrue-2.10.0-py3-none-any.whl (48.6 kB view details)

Uploaded Python 3

File details

Details for the file gotrue-2.10.0.tar.gz.

File metadata

  • Download URL: gotrue-2.10.0.tar.gz
  • Upload date:
  • Size: 41.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for gotrue-2.10.0.tar.gz
Algorithm Hash digest
SHA256 4edf4c251da3535f2b044e23deba221e848ca1210c17d0c7a9b19f79a1e3f3c0
MD5 a60436d395cd445b418097b217885e4a
BLAKE2b-256 9a4e52c5e1a360fd0e67e0cc4512cb663613473b198974de6ae9e0aaeabff471

See more details on using hashes here.

Provenance

The following attestation bundles were made for gotrue-2.10.0.tar.gz:

Publisher: ci.yml on supabase/auth-py

Attestations:

File details

Details for the file gotrue-2.10.0-py3-none-any.whl.

File metadata

  • Download URL: gotrue-2.10.0-py3-none-any.whl
  • Upload date:
  • Size: 48.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for gotrue-2.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 768e58207488e5184ffbdc4351b7280d913daf97962f4e9f2cca05c80004b042
MD5 710bbae6365740583378d6b6c6188707
BLAKE2b-256 0306dd3dfbb7722d0d8dfdce6b7c76695dfb4ea968dae4e46655f0d5310e27e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for gotrue-2.10.0-py3-none-any.whl:

Publisher: ci.yml on supabase/auth-py

Attestations:

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page