A Python client library for the [ineep](https://codeberg.org/cmts/ineep) lakehouse API.
Project description
ineepy
A Python client library for the ineep lakehouse API.
Links
- Repository: codeberg.org/Ineep/ineepy
- Documentation: ineep.codeberg.page/ineepy/
- Changelog: CHANGELOG.md
Requirements
- Python 3.14+
uv
Installation
uv add ineepy
Or for development:
git clone https://codeberg.org/Ineep/ineepy
cd ineepy
uv sync
Usage
Authentication
Obtain a JWT token before creating a client:
from ineepy import get_token, async_get_token
# Synchronous
token = get_token(email='user@example.com', password='secret')
# Async
token = await async_get_token(email='user@example.com', password='secret')
The scope parameter defaults to 'user'. Use 'admin' for administrative operations.
Synchronous client
from ineepy import Ineepy, get_token
token = get_token(email='user@example.com', password='secret')
with Ineepy(token=token) as client:
user, etag = client.users.me()
namespaces = client.namespaces.list()
tables = client.tables.list(namespace_id='my-namespace')
Async client
from ineepy import AsyncIneepy, async_get_token
token = await async_get_token(email='user@example.com', password='secret')
async with AsyncIneepy(token=token) as client:
user, etag = await client.users.me()
namespaces = await client.namespaces.list()
Configuration
The base URL defaults to http://localhost:8000 and can be overridden via environment variable or constructor argument:
export INEEPY_BASE_URL=https://my-server.example.com
export INEEPY_API_VERSION=v0 # default
client = Ineepy(base_url='https://my-server.example.com', token=token)
Resources
| Resource | Access | Description |
|---|---|---|
users |
client.users |
User management (list, get, create, update, delete) |
api_keys |
client.api_keys |
API key management (create, list, revoke) |
namespaces |
client.namespaces |
Namespace management (list, create, update, delete); list() with no arg returns root namespaces |
tables |
client.tables |
Table schema management within namespaces |
data |
client.data |
Upload, query, and explicit write modes: append, overwrite, upsert |
Development
make format # format code
make lint # lint code
make test # run unit tests with coverage
make test-e2e # run end-to-end tests against a live server
E2E tests
E2E tests require a running ineep server and admin credentials:
cp .env.example .env
# edit .env with your credentials
make test-e2e
The .env file is gitignored. See .env.example for the available variables.
Project structure
src/ineepy/ Main package
_auth.py Token acquisition (sync + async)
_client.py Ineepy and AsyncIneepy clients
_config.py Pydantic settings (env vars)
_exceptions.py Exception hierarchy
_models.py Pydantic response models
exceptions.py Public exceptions re-export
helpers.py Public helper utilities
models.py Public models re-export
_resources/ Per-resource implementations
api_keys.py
data.py
namespaces.py
tables.py
users.py
tests/
resources/ Unit tests per resource
e2e/ End-to-end workflow tests
scripts/ Shell scripts called by make
pyproject.toml Project metadata and tool config
License
This project is licensed under the GNU General Public License v3.0.
You are free to use, modify, and distribute this software under the terms of the GPL v3. Any derivative work must also be distributed under the same license. See the LICENSE file for the full license text.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ineepy-0.3.0.tar.gz.
File metadata
- Download URL: ineepy-0.3.0.tar.gz
- Upload date:
- Size: 17.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
061ed0a60c49ec6d2ed906e05028b6295a60ed5d1a50c62dfb29c076e79af013
|
|
| MD5 |
8aca7b26156948afea2cdec9fed7ba04
|
|
| BLAKE2b-256 |
1eb2ef6b04639345128a80318e7b23ef9cb37f352fe61b03adb4733ec2390e3c
|
File details
Details for the file ineepy-0.3.0-py3-none-any.whl.
File metadata
- Download URL: ineepy-0.3.0-py3-none-any.whl
- Upload date:
- Size: 25.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d8642aabee4021ac03ae6e846242c90517a2e5679a61286e9c17b017a9da428
|
|
| MD5 |
a32da33518b13d9870c5d482d2a01d9b
|
|
| BLAKE2b-256 |
89367f9aacb20ba0b9c4feac99c3b939827e8556369baf08cbb94ec150ceef2f
|