Skip to main content

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 pip install -e .[dev]
iouctl --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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

iou_cli-0.3.0-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file iou_cli-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: iou_cli-0.3.0-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

Hashes for iou_cli-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3f8b5dd5802f0ba75f9cc4d58801f8a9b51ad92f361313b8526e56c57d17c617
MD5 ef9cacad33afb064b52d20010baca696
BLAKE2b-256 728754cb6761855515973cbb860d469bb6cb5d294ea90c1d00e010cd4881a105

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page