IOU CLI client
Project description
IOU CLI
As in I o(we) (yo)u 5€.
Shared expenses management tool that does not spy on you - the CLI interface.
Features
- transactions
- git-like creation and editing of transactions
- split types
equal,unequal,share,percentage,adjustment - transaction description
- setting the date on transactions
- multi-deposits
- listing and inspecting transactions
- deletion
- groups
- creation
- adding users
- adding system users
- payday transaction for settling up
- balance inspection
- instance/session switching
Upcoming
- transactions
- search by text, date and amount
- groups
- deletion
- import
- splitwise CSV format
- system users
- invites
- notifications
- notification client creation, deletion, inspection
- notification retrieval and read-receipt
Contributing
git clone ssh://git.notourserver.de:2222/iou/cli.git
cd cli
python -m venv --upgrade-deps .venv
source .venv/bin/activate{.fish} # omit depending on shell used
pip install -r requirements-uv.txt # install alternative package manager
uv sync --extra dev
iou --help
pre-commit install # sets up static type checking, linting, etc.
Run linting and tests:
pytest --cov-report term --cov-report html --cov-report=xml:pytest-cobertura.xml --cov=iou test
pre-commit run --all
You may want to build a python package and upload it using twine:
python -m build
twine upload --verbose --skip-existing dist/*
Examples
Login using an OIDC IdP used by the IOU server.
$ iou login http://localhost:8000
Not logged in!
Please visit https://auth.221b.uk/realms/221b/device, login and enter the following code.
User code: HLWB-SPOW
Request expires in 600s
Device code authorized.
Loading user profile...
Login successful!
$ iou session
Logged in as 37e282fa-5761-443c-bbde-f8f13bbb8084 at 'http://localhost:8000'
Session expires on '2025-06-15 10:54:06.859556' (in 13 days)
Retrieve the list of groups to get a group UUID.
$ iou groups list
Groups
------
90269a57-7c92-446e-b00a-ed6425a37430: test1
user2 (user2@example.de)
user1 (user1@example.de)
Alternatively create a new group.
$ iou groups create somegroup
Then begin to craft a new transaction, in a git-like style.
$ iou begin 90269a57-7c92-446e-b00a-ed6425a37430
Transaction started. Type 'iou t(ransaction) deposit' to add a deposit.
$ iou add sherlock
$ iou add moriarty
$ iou status
Per group balance
test-group (sherlock, moriarty): you are good
Total balance: you are good
---
Uncommitted transaction between sherlock, moriarty
Group: 90269a57-7c92-446e-b00a-ed6425a37430
Split type: None
Description:
Date: 2026-03-07 14:31:12
Users:
sherlock (e675c6ff-1a94-4751-bc6b-d64a165c8750)
moriarty (05025003-aa13-4d54-8904-fe7337ca25e2)
Deposits:
No deposits yet.
Adjustments:
No adjustments yet.
Split: you are good
$ iou split equal
$ iou deposit e675 20
$ iou describe "I owe you, sherlock"
$ iou status
Uncommitted transaction between sherlock, moriarty
Group: 90269a57-7c92-446e-b00a-ed6425a37430
Split type: equal
Description: I owe you, sherlock
Date: 2026-03-07 14:31:12
Users:
sherlock (e675c6ff-1a94-4751-bc6b-d64a165c8750)
moriarty (05025003-aa13-4d54-8904-fe7337ca25e2)
Deposits:
No deposits yet.
Adjustments:
No adjustments yet.
Split: you are owed 10€
$ iou commit # transaction is now closed and pushed to the server
$ iou status
Per group balance
test-group (sherlock, moriarty): you are owed 10€
Total balance: you are owed 10€
No transaction in progress.
Open an existing transaction for edit (find a transaction to edit via iou transactions list).
$ iou edit 9026 f825d150-51cb-4283-887e-86ad69f85965 # partial UUID is also allowed
Transaction opened for edit.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
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 iou_cli-0.3.8-py3-none-any.whl.
File metadata
- Download URL: iou_cli-0.3.8-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0d5fe3aff18085ec89593d144e807a8dfd20106cbdf4728e5620cfa0368357b
|
|
| MD5 |
06ceabcbb4884a29b622d2be12e643fa
|
|
| BLAKE2b-256 |
99d46d2001935a23881370233366bfeb83a6240195f778555925e1b26cb49427
|