diff options
Diffstat (limited to '.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info')
6 files changed, 380 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/INSTALLER b/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/LICENSE b/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/LICENSE new file mode 100644 index 00000000..ddeba6a0 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Supabase + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/METADATA b/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/METADATA new file mode 100644 index 00000000..8e00a9e3 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/METADATA @@ -0,0 +1,319 @@ +Metadata-Version: 2.1 +Name: supabase +Version: 2.14.0 +Summary: Supabase client for Python. +Home-page: https://github.com/supabase/supabase-py +License: MIT +Author: Joel Lee +Author-email: joel@joellee.org +Requires-Python: >=3.9,<4.0 +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Requires-Dist: gotrue (>=2.11.0,<3.0.0) +Requires-Dist: httpx (>=0.26,<0.29) +Requires-Dist: postgrest (>=0.19,<0.20) +Requires-Dist: realtime (>=2.4.0,<2.5.0) +Requires-Dist: storage3 (>=0.10,<0.12) +Requires-Dist: supafunc (>=0.9,<0.10) +Project-URL: Documentation, https://github.com/supabase/supabase-py +Project-URL: Repository, https://github.com/supabase/supabase-py +Description-Content-Type: text/markdown + +# `supabase-py` + +Python client for [Supabase](https://supabase.com) + +- Documentation: [supabase.com/docs](https://supabase.com/docs/reference/python/introduction) +- Usage: + - [GitHub OAuth in your Python Flask app](https://supabase.com/blog/oauth2-login-python-flask-apps) + - [Python data loading with Supabase](https://supabase.com/blog/loading-data-supabase-python) + +> [!NOTE] +> Do you want to help us shape the future of this library? [We're hiring](https://jobs.ashbyhq.com/supabase/85d07345-47c6-4980-82e2-57782f83ab4e). + +## Set up a Local Development Environment + +### Clone the Repository + +```bash +git clone https://github.com/supabase/supabase-py.git +cd supabase-py +``` + +### Create and Activate a Virtual Environment + +We recommend activating your virtual environment. For example, we like `poetry` and `conda`! Click [here](https://docs.python.org/3/library/venv.html) for more about Python virtual environments and working with [conda](https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#activating-an-environment) and [poetry](https://python-poetry.org/docs/basic-usage/). + +Using venv (Python 3 built-in): + +```bash +python3 -m venv env +source env/bin/activate # On Windows, use .\env\Scripts\activate +``` + +Using conda: + +```bash +conda create --name supabase-py +conda activate supabase-py +``` + +### PyPi installation + +Install the package (for Python >= 3.9): + +```bash +# with pip +pip install supabase + +# with conda +conda install -c conda-forge supabase +``` + +### Local installation + +You can also install locally after cloning this repo. Install Development mode with `pip install -e`, which makes it editable, so when you edit the source code the changes will be reflected in your python module. + +## Usage + +Set your Supabase environment variables in a dotenv file, or using the shell: + +```bash +export SUPABASE_URL="my-url-to-my-awesome-supabase-instance" +export SUPABASE_KEY="my-supa-dupa-secret-supabase-api-key" +``` + +Init client: + +```python +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 + +```python +user = supabase.auth.sign_up({ "email": users_email, "password": users_password }) +``` + +### Sign-in + +```python +user = supabase.auth.sign_in_with_password({ "email": users_email, "password": users_password }) +``` + +### Insert Data + +```python +data = supabase.table("countries").insert({"name":"Germany"}).execute() + +# Assert we pulled real data. +assert len(data.data) > 0 +``` + +### Select Data + +```python +data = supabase.table("countries").select("*").eq("country", "IL").execute() + +# Assert we pulled real data. +assert len(data.data) > 0 +``` + +### Update Data + +```python +data = supabase.table("countries").update({"country": "Indonesia", "capital_city": "Jakarta"}).eq("id", 1).execute() +``` + +### Update data with duplicate keys + +```python +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 + +```python +data = supabase.table("countries").delete().eq("id", 1).execute() +``` + +### Call Edge Functions + +```python +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 + +```python +bucket_name: str = "photos" + +data = supabase.storage.from_(bucket_name).download("photo1.png") +``` + +### Upload a file + +```python +bucket_name: str = "photos" +new_file = getUserFile() + +data = supabase.storage.from_(bucket_name).upload("/user1/profile.png", new_file) +``` + +### Remove a file + +```python +bucket_name: str = "photos" + +data = supabase.storage.from_(bucket_name).remove(["old_photo.png", "image5.jpg"]) +``` + +### List all files + +```python +bucket_name: str = "charts" + +data = supabase.storage.from_(bucket_name).list() +``` + +### Move and rename files + +```python +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) +``` + + +## Roadmap + +- [x] Wrap [Postgrest-py](https://github.com/supabase/postgrest-py/) + - [x] Add remaining filters + - [x] Add support for EXPLAIN + - [ ] Add proper error handling + - [x] Use `sanitize_param()` to sanitize inputs. + - [x] Fix client-side timeouts for long running queries. + - [x] Enable HTTP2 by default. + - [x] Enable follow redirects by default. + - [x] Enable keep-alive by default. + - [x] Enable running with unverified SSL via `verify=False`. + - [x] Add Stalebot. + - [x] Update CI (linters, etc). + - [x] Check cyclomatic complexity and fix if needed (mccabe, prospector). + +- [ ] Wrap [Realtime-py](https://github.com/supabase/realtime-py) + - [ ] Integrate with Supabase-py + - [ ] Support WALRUS + - [ ] Support broadcast (to check if already supported) + - [x] Add `close()` method to close a socket. + - [x] Add Stalebot. + - [x] Update CI (linters, etc). + - [x] Check cyclomatic complexity and fix if needed (mccabe, prospector). + +- [x] Wrap [auth-py](https://github.com/supabase/auth-py) + - [x] Remove references to GoTrue-js v1 and do a proper release + - [ ] Test and document common flows (e.g. sign in with OAuth, sign in with OTP) + - [ ] Add MFA methods + - [x] Add SSO methods + - [x] Add Proof Key for Code Exchange (PKCE) methods. Unlike the JS library, we do not currently plan to support Magic Link (PKCE). Please use the [token hash](https://supabase.com/docs/guides/auth/server-side/email-based-auth-with-pkce-flow-for-ssr#create-api-endpoint-for-handling-tokenhash) in tandem with `verifyOTP` instead. + - [x] Add `is_anonymous` boolean property. + - [x] Add `sign_in_with_id_token()` method. + - [x] Add `sign_in_with_sso()` method. + - [x] Enable HTTP2 by default. + - [x] Enable follow redirects by default. + - [x] Enable keep-alive by default. + - [x] Enable running with unverified SSL via `verify=False`. + - [x] Add Stalebot. + - [x] Update CI (linters, etc). + - [x] Check cyclomatic complexity and fix if needed (mccabe, prospector). + +- [x] Wrap [storage-py](https://github.com/supabase/storage-py) + - [ ] Support resumable uploads + - [x] Setup testing environment + - [x] Fix client-side timeouts for long running operations. + - [x] Enable HTTP2 by default. + - [x] Enable follow redirects by default. + - [x] Enable keep-alive by default. + - [x] Enable running with unverified SSL via `verify=False`. + - [x] Add Stalebot. + - [x] Update CI (linters, etc). + - [x] Check cyclomatic complexity and fix if needed (mccabe, prospector). + - [x] Document how to properly upload different file types (e.g. jpeg/png and download it) + +- [x] Wrap [functions-py](https://github.com/supabase/functions-py) + - [x] Fix client-side timeouts for long running functions. + - [x] Enable HTTP2 by default. + - [x] Enable follow redirects by default. + - [x] Enable keep-alive by default. + - [x] Enable running with unverified SSL via `verify=False`. + - [x] Add Regions support. + - [x] Add Stalebot. + - [x] Update CI (linters, etc). + - [x] Check cyclomatic complexity and fix if needed (mccabe, prospector). + + +### Overall Tasks + +- [x] Add async support across the entire library +- [ ] Add FastAPI helper library (external to supabase-py) +- [ ] Add `django-supabase-postgrest` (external to supabase-py) + +## Contributing + +Contributing to the Python libraries are a great way to get involved with the Supabase community. Reach out to us on [Discord](https://discord.supabase.com) or on our [Github Discussions](https://github.com/orgs/supabase/discussions) page if you want to get involved. + +### Running Tests + +Currently, the test suites are in a state of flux. We are expanding our clients' tests to ensure things are working, and for now can connect to this test instance, which is populated with the following table: + +<p align="center"> + <img width="720" height="481" src="https://i.ibb.co/Bq7Kdty/db.png"> +</p> + +The above test database is a blank supabase instance that has populated the `countries` table with the built-in countries script that can be found in the supabase UI. You can launch the test scripts and point to the above test database by running + +```bash +./test.sh +``` + +## Badges + +[](https://opensource.org/licenses/MIT) +[](https://github.com/supabase/supabase-py/actions/workflows/ci.yml) +[](https://pypi.org/project/supabase) +[](https://pypi.org/project/supabase) +[](https://codecov.io/gh/supabase/supabase-py) +[](https://github.com/supabase/supabase-py/commits) +[](https://github.com/supabase/supabase-py/commits) +[](https://github.com/supabase/supabase-py/stargazers) +[](https://github.com/supabase/supabase-py/network/members) +[](https://github.com/supabase/supabase-py) +[](https://github.com/supabase/supabase-py/graphs/contributors) + diff --git a/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/RECORD b/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/RECORD new file mode 100644 index 00000000..34481b5c --- /dev/null +++ b/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/RECORD @@ -0,0 +1,32 @@ +../../../bin/tests,sha256=dycGg6-2j85zl0vp_2taWsPhH_Y4l2PC0MzuemgMLRY,259
+supabase-2.14.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
+supabase-2.14.0.dist-info/LICENSE,sha256=M03Wgg4urqsgZOfFkAG4EFZnKKKKQafB2_abvuF9CTY,1065
+supabase-2.14.0.dist-info/METADATA,sha256=qX9R8X9xrB-8Tx4tpf3-v8s5RKXPEUORKNIyfYW2y7U,11064
+supabase-2.14.0.dist-info/RECORD,,
+supabase-2.14.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
+supabase-2.14.0.dist-info/entry_points.txt,sha256=F4onP9kSP0FoU2sCoOxrYbU-c60KwlZ_0quCskleaKg,50
+supabase/__init__.py,sha256=OtLvn1Z0ddJZH3qSeT0LvbfD8wbiydcwD62vwF36V9o,2313
+supabase/__pycache__/__init__.cpython-312.pyc,,
+supabase/__pycache__/client.cpython-312.pyc,,
+supabase/__pycache__/types.cpython-312.pyc,,
+supabase/__pycache__/version.cpython-312.pyc,,
+supabase/_async/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
+supabase/_async/__pycache__/__init__.cpython-312.pyc,,
+supabase/_async/__pycache__/auth_client.cpython-312.pyc,,
+supabase/_async/__pycache__/client.cpython-312.pyc,,
+supabase/_async/auth_client.py,sha256=MSjAgot_BUstxKP_GRkwDkwEG_cdX9DA5OfRDauHfgE,2129
+supabase/_async/client.py,sha256=qF0DY-CU0iSXUN9UoVLiEUxZxOU7j6fbs564cfro7xI,11544
+supabase/_sync/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
+supabase/_sync/__pycache__/__init__.cpython-312.pyc,,
+supabase/_sync/__pycache__/auth_client.cpython-312.pyc,,
+supabase/_sync/__pycache__/client.cpython-312.pyc,,
+supabase/_sync/auth_client.py,sha256=ZVMonayQJVUatWxcY20QX1Ke9KBYngd4KyWGoSH0KcU,2116
+supabase/_sync/client.py,sha256=SU_SOZ-7u6NG--ErymN8ErQxaTRy4SXqMdYukdg9xwg,11385
+supabase/client.py,sha256=NciJGgxVMZHIrGCrN-_iCDEjw_C2s2eYYaLUvkskOGE,2075
+supabase/lib/__init__.py,sha256=hBGVFLg5RVk6liHGIUuak1crNBiz5m-mPvvdxv8nmNU,67
+supabase/lib/__pycache__/__init__.cpython-312.pyc,,
+supabase/lib/__pycache__/client_options.cpython-312.pyc,,
+supabase/lib/client_options.py,sha256=e4zdfZLEHclLc0Vw_bABZYDoTY0E4G6uzDxPDiwuQBI,6798
+supabase/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
+supabase/types.py,sha256=dvqNhqMQiGUjHJ8geOngvXlJ5wntGapM_pGnMBjwVrM,178
+supabase/version.py,sha256=9CNrFT_i1ILgvgZG4QEECk8s78FxmgKQj0S6Ll6qnVU,53
diff --git a/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/WHEEL b/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/WHEEL new file mode 100644 index 00000000..8b9b3a1b --- /dev/null +++ b/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: poetry-core 1.9.1 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/entry_points.txt b/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/entry_points.txt new file mode 100644 index 00000000..f8736288 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/supabase-2.14.0.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +tests=poetry_scripts:run_tests + |