semvec/pypi-packages huggingface dataset:
gage-cli 0.2.1
Gage command line tools
Requires Python: >=3.10

# Gage CLI

Gage CLI is a command line tool used with [Gage Inspect][gage-inspect]
and [Inspect AI][inspect-ai] to build and evaluate AI applications.

Gage Inspect is available as open source software under the [MIT]
license.

Visit [Gage documentation][docs] for a more complete guide to using
Gage.

## Contributing

See our [contribution policy][contributing].

<!-- Links -->

[contributing]: ./CONTRIBUTING.md
[docs]: https://gage.io/docs
[gage-inspect]: https://github.com/gageml/gage-inspect
[inspect-ai]: https://inspect.aisi.org.uk/
[MIT]: ./LICENSE
BudgetBuddy 0.0.1
A personal finance management system
Requires Python: >=3.8

# BudgetBuddy
A simple command-line budget tracking package for managing income, expenses, and multiple user profiles.  
BudgetBuddy provides yearly and monthly summaries, transaction editing, and persistent data storage using JSON.

---

## Features

- **Multiple profiles**
  - Create, rename, delete, and open profiles
  - Each profile stores independent transactions

- **Record transactions**
  - Income or Expense
  - Includes date, amount, category, and optional description

- **Yearly transaction view**
  - View all transactions for a selected year
  - Edit or delete transactions through a submenu

- **Monthly summaries**
  - For each month of the chosen year:
    - total income  
    - total expenses

- **Guide file**
  - External `guide.txt` stored in `ui/`
  - Loaded safely using a relative path

- **Persistent storage**
  - All data saved in `budgetbuddy_data.json`

---

## Package Structure

budgetbuddy/
    __init__.py          # exposes budgetbuddy.run()
    
    core/
        __init__.py
        models.py        # UserProfile, Transaction, Income, Expense
        budget.py        # Month totals, calculations, helpers
    
    data/
        __init__.py
        repository.py    # load/save JSON, manage profile storage
        csvio.py         # (optional) CSV import/export
    
    ui/
        __init__.py
        main.py          # CLI menus and program controller
        summary.py       # pretty-printed text summaries and listings
        guide.txt        # help/guide text displayed in the menu



The main data file (`budgetbuddy_data.json`) is created in the **same directory where the program is run**.

---

## Running the Program

Create a runner python file (eg. test.py) that contains:

```
import budgetbuddy
budgetbuddy.run()
```
and run:
`python test.py`

notes: the test file should be in the same directory as the package!

## Profile Menu Example
```
Profile menu for 'janet':
1) Record income
2) Record expense
3) View all transactions this year (2025)
4) Change year
5) View monthly summaries for this year (2025)
6) Back to Saved profiles

Yearly view submenu:
[0] 2025-03-12 | Expense | 12.50 | Food | Lunch
[1] 2025-03-15 | Income  | 100.00 | Gift | Birthday

Options: e = edit, d = delete, b = back
```

## Data Storage

BudgetBuddy reads/writes profiles through:  
`budgetbuddy/data/repository.py`


JSON file:  

`budgetbuddy_data.json`
is automatically generated on first run.

## Requirements
Built on Python 3.8+ and uses only the Python standard library:
- json
- os
- pathlib
No external installation needed.

## Purpose
This project demonstrates:
- Python package design
- Separation of logic (core), storage (data), and UI (command-line interface)
- JSON-based persistence
- Clean class-based modeling for profiles and transactions
- Multi-file architecture for medium-size programs
Created for a graduate-level software development course.
oldout 1.1.0
Get the output from previous shell commands, if you use tmux
Requires Python: >=3.8
Keywords: command, history, output, shell, terminal, tmux

# old-stdout
**@readwithai** - [X](https://x.com/readwithai) - [blog](https://readwithai.substack.com/) - [machine-aided reading](https://www.reddit.com/r/machineAidedReading/) - [📖](https://readwithai.substack.com/p/what-is-reading-broadly-defined
)[⚡️](https://readwithai.substack.com/s/technical-miscellany)[🖋️](https://readwithai.substack.com/p/note-taking-with-obsidian-much-of)

Get the old output from shell commands, if you use tmux.

This is vibe-coded but will become less so over time.

## Motivation
It is quite natural to want to do thigns with the output of a command that you just run without having to rerun. If you have programmatic access to your shell scrollback, by using tmux this allows you to get output.

## Alternatives and prior work
You could collect the outputs of previous commands into files using `tee`.

You could use something like jupyter which matains history.

## Usage
Use tmux.

* `oldout` will show the output of the previous command.
* `oldout 2` shows you the output from the penultimate command (etc).
* `outdiff` shows the difference between the last two outputs

You can use `--command` with oldout to include the command.


## Nonstandard prompts
I use a two line prompt. I therefore provide quite general features ot change the prompt parsing.
### Multi-line Prompts

For prompts that span multiple lines, set `PROMPT_LENGTH` in `~/.config/oldout.py`.

```python
# Example two-line prompt:
# ┌─[user@host]─[/current/path]
# └─$ command here

PROMPT_RE = r"^┌─"  # Match the first line of the prompt
PROMPT_LENGTH = 2   # Skip both prompt lines when extracting output
```

### Complex Prompt Patterns

The `PROMPT_RE` (in `~/.config/oldout.py`.) regex can handle unusual prompt formats

```python
# Powerline/fancy prompts with symbols
PROMPT_RE = r"➜\s+\w+"

# Prompts with timestamps
PROMPT_RE = r"^\[\d{2}:\d{2}:\d{2}\]"

# Conditional prompts (different in different directories)
PROMPT_RE = r"(prod|dev|staging)>"

# Prompts with color codes (matches after ANSI sequences)
PROMPT_RE = r"\x1b\[[0-9;]*m.*\$"
```

## About me
I am **@readwithai**. I create tools for reading, research and agency sometimes using the markdown editor [Obsidian](https://readwithai.substack.com/p/what-exactly-is-obsidian).

I also create a [stream of tools](https://readwithai.substack.com/p/my-productivity-tools) that are related to carrying out my work.

I write about lots of things - including tools like this - on [X](https://x.com/readwithai).
My [blog](https://readwithai.substack.com/) is more about reading and research and agency.