Skip to main content

Gwenlake Python Library

The Gwenlake Python library provides convenient access to the Gwenlake API from applications written in Python. A single Gwenlake client gives you access to your catalog — projects, datasets, files and SQL.

Installation

pip install -U git+https://github.com/gwenlake/gwenlake-python

Authentication

The client authenticates with a Bearer token, resolved in this order:

  1. an explicit api_key / credentials passed to the client,
  2. a named profile,
  3. the GWENLAKE_API_KEY environment variable,
  4. the default profile in ~/.gwenlake/credentials.
export GWENLAKE_API_KEY='sk-...'
import gwenlake

# uses GWENLAKE_API_KEY, or the default ~/.gwenlake/credentials profile
client = gwenlake.Gwenlake()

# or pass the key explicitly
client = gwenlake.Gwenlake(api_key="sk-...")

# or pick a profile from ~/.gwenlake/credentials
client = gwenlake.Gwenlake(profile="myteam")

The ~/.gwenlake/credentials file is an INI file with one section per profile, holding either a static token (API key) or OAuth2 client_id / client_secret.

Projects

projects = client.projects.list()
for p in projects:
    print(p["alias"], p["id"])

project = client.projects.get("res.project.…")

Datasets

datasets = client.datasets.list()
for d in datasets:
    print(d["alias"], d["id"])

dataset = client.datasets.get("res.dataset.…")

Files

Files live inside a dataset.

dataset_id = "res.dataset.…"

# list files
for f in client.files.list(dataset_id):
    print(f["filename"], f["file_size"])

# upload a local file (optionally into a subdirectory with path=...)
client.files.upload(dataset_id, "report.pdf")
client.files.upload(dataset_id, "report.pdf", path="docs")

# download a file
content = client.files.download(dataset_id, "report.pdf")

# presigned URL / delete
url = client.files.presigned_url(dataset_id, "report.pdf")
client.files.delete(dataset_id, "report.pdf")

SQL

Run SQL against a dataset (DuckDB), referencing it as '<project_alias>.<dataset_alias>'. With format="json" the rows are returned under data:

result = client.statements.create(
    statement="SELECT * FROM 'flights.flight-data' LIMIT 10",
    format="json",
)
for row in result["data"]:
    print(row)

Pass a connection_id to run the statement against a connection's native engine (PostgreSQL, S3, …) instead of a dataset.

Async

Every resource is also available on AsyncGwenlake:

import asyncio
import gwenlake

async def main():
    client = gwenlake.AsyncGwenlake()
    print(await client.projects.list())

asyncio.run(main())

See examples/ for runnable scripts.

Download files

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

Source Distribution

gwenlake-0.6.0.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gwenlake-0.6.0-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file gwenlake-0.6.0.tar.gz.

File metadata

  • Download URL: gwenlake-0.6.0.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gwenlake-0.6.0.tar.gz
Algorithm Hash digest
SHA256 a5b1f4e7dd31db35de48df52cdc5426b2ad9ea57cc178621684f618231cf34db
MD5 1b93d798ed240fbb909accf699ac586d
BLAKE2b-256 eaca3adeb950b9486f996c55bef10968594bba5f308fdc88198f511c7267bd94

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwenlake-0.6.0.tar.gz:

Publisher: python-publish.yml on gwenlake/gwenlake-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwenlake-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: gwenlake-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 16.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gwenlake-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f7946c64719b720facd0f7ecdd88cea7129eff2e1d8a64662d861d39810edc8e
MD5 b53290aa52dd1685d693ac247d1c9c5c
BLAKE2b-256 d71ed21212d8769e2cb55d7685c108c018eabc01ebf69f9049aa6d9faadb82a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwenlake-0.6.0-py3-none-any.whl:

Publisher: python-publish.yml on gwenlake/gwenlake-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.9.7

2 files

0.9.6

2 files

0.9.4

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.4

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

This release

0.6.0 This release

2 files

0.4.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page