Klokku REST API client
Project description
Klokku Python Client
A Python client for interacting with the Klokku REST API.
Installation
Using pip
pip install klokku-python-client
Using Poetry
poetry add klokku-python-client
Usage
The client provides an asynchronous interface to the Klokku API:
import asyncio
from klokku_python_client import KlokkuApi
async def main():
# Create a client instance
async with KlokkuApi("https://api.klokku.example.com/") as client:
# Authenticate with a username
authenticated = await client.authenticate("your_username")
if not authenticated:
print("Authentication failed")
return
# Get all budgets
budgets = await client.get_all_budgets()
if budgets:
print(f"Found {len(budgets)} budgets:")
for budget in budgets:
print(f"- {budget.name} (ID: {budget.id})")
# Get current event
current_event = await client.get_current_event()
if current_event:
print(f"Current budget: {current_event.budget.name}")
print(f"Started at: {current_event.startTime}")
# Set a different budget
if budgets and len(budgets) > 1:
new_budget_id = budgets[1].id
result = await client.set_current_budget(new_budget_id)
if result:
print(f"Set current budget to ID: {new_budget_id}")
# Run the async function
asyncio.run(main())
Features
- Asynchronous API client using
aiohttp - Authentication with username
- Get list of users
- Get all budgets
- Get current event/budget
- Set current budget
- Context manager support for proper resource cleanup
Development
CI/CD
This project uses GitHub Actions for continuous integration and deployment:
- Build Workflow: Runs on every push to the main branch, executing tests and building the package.
- Publish Workflow: Automatically publishes the package to PyPI when a new GitHub Release is created.
To set up the publishing workflow:
- Generate a PyPI API token at https://pypi.org/manage/account/token/
- Add the token as a GitHub repository secret named
PYPI_API_TOKEN - Create a new GitHub Release to trigger the publishing workflow
Setup
- Clone the repository
- Install dependencies with Poetry:
poetry install
Testing
The project uses pytest for testing with aioresponses for mocking HTTP requests.
To install test dependencies:
pip install -e ".[test]"
Or with Poetry:
poetry install --with test
To run the tests:
pytest
Or with Poetry
poetry run pytest
For more details about testing, see the tests README.
Requirements
- Python 3.13+
- aiohttp 3.12+
License
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 klokku_python_client-0.2.0.tar.gz.
File metadata
- Download URL: klokku_python_client-0.2.0.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.7 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccc6f9a6f45dd4d23bba87584a4b089f21e8b3398e05ae2970b0983a91f731cf
|
|
| MD5 |
0a256a9b05343710f43c4db460b4365f
|
|
| BLAKE2b-256 |
18e2b5dff0eac27cf0b4936c97f8cab0196db85415a37653b39a0cdd5f015e88
|
File details
Details for the file klokku_python_client-0.2.0-py3-none-any.whl.
File metadata
- Download URL: klokku_python_client-0.2.0-py3-none-any.whl
- Upload date:
- Size: 5.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.7 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61a6f666a57b48500f27e5ce08d08fd0d0e2e274d1b630cb900e357364717d05
|
|
| MD5 |
b6cc0ace81c17ff44a8394fc924df022
|
|
| BLAKE2b-256 |
3557a1a10f6577cd57eff2522a395f36c8c97d06b36c89c96cadcb9025cd85f2
|