Metadata-Version: 2.4
Name: buvis-gems
Version: 0.5.2
Summary: BUVIS Python toolkit and CLI tools
Project-URL: Repository, https://github.com/buvis/gems
Project-URL: Documentation, https://buvis.github.io/gems/
Author-email: Tomas Bouska <tomas@buvis.net>
License-Expression: MIT
License-File: LICENSE
Requires-Python: <4.0,>=3.10
Requires-Dist: click==8.3.1
Requires-Dist: inflection==0.5.1
Requires-Dist: pydantic-settings==2.13.1
Requires-Dist: pydantic==2.12.5
Requires-Dist: pywin32==311; sys_platform == 'win32'
Requires-Dist: pyyaml==6.0.3
Requires-Dist: rich==14.3.3
Requires-Dist: tomli==2.4.1; python_version < '3.11'
Requires-Dist: tzlocal==5.3.1
Requires-Dist: xattr==1.3.0; sys_platform != 'win32'
Provides-Extra: all
Requires-Dist: fastapi==0.135.2; extra == 'all'
Requires-Dist: ffmpeg-python==0.2.0; extra == 'all'
Requires-Dist: fpdf2==2.8.7; extra == 'all'
Requires-Dist: jira==3.10.5; extra == 'all'
Requires-Dist: markdownify==1.2.2; extra == 'all'
Requires-Dist: ping3==5.1.5; extra == 'all'
Requires-Dist: pyfiglet==1.0.4; extra == 'all'
Requires-Dist: python-slugify==8.0.4; extra == 'all'
Requires-Dist: requests==2.33.1; extra == 'all'
Requires-Dist: textual==8.2.1; extra == 'all'
Requires-Dist: unidecode==1.4.0; extra == 'all'
Requires-Dist: uvicorn[standard]<1,>=0.34; extra == 'all'
Requires-Dist: watchfiles<2,>=1.0; extra == 'all'
Requires-Dist: watchfiles==1.1.1; extra == 'all'
Provides-Extra: bim
Requires-Dist: fpdf2==2.8.7; extra == 'bim'
Requires-Dist: jira==3.10.5; extra == 'bim'
Requires-Dist: textual==8.2.1; extra == 'bim'
Provides-Extra: bim-web
Requires-Dist: fastapi==0.135.2; extra == 'bim-web'
Requires-Dist: uvicorn[standard]<1,>=0.34; extra == 'bim-web'
Requires-Dist: watchfiles<2,>=1.0; extra == 'bim-web'
Provides-Extra: dot
Requires-Dist: textual==8.2.1; extra == 'dot'
Provides-Extra: fren
Requires-Dist: python-slugify==8.0.4; extra == 'fren'
Requires-Dist: unidecode==1.4.0; extra == 'fren'
Provides-Extra: hello-world
Requires-Dist: pyfiglet==1.0.4; extra == 'hello-world'
Provides-Extra: morph
Requires-Dist: markdownify==1.2.2; extra == 'morph'
Provides-Extra: muc
Requires-Dist: ffmpeg-python==0.2.0; extra == 'muc'
Provides-Extra: pidash
Requires-Dist: textual==8.2.1; extra == 'pidash'
Requires-Dist: watchfiles==1.1.1; extra == 'pidash'
Provides-Extra: pinger
Requires-Dist: ping3==5.1.5; extra == 'pinger'
Provides-Extra: readerctl
Requires-Dist: requests==2.33.1; extra == 'readerctl'
Description-Content-Type: text/markdown

# buvis-gems

BUVIS Python toolkit and CLI tools, shipped as a single PyPI package.

[Documentation](https://buvis.github.io/gems/)

## Install

Pre-built wheels for Linux (x64, ARM), macOS (ARM), and Windows (x64). Python 3.10+.

### uv

```bash
uv tool install buvis-gems              # all 15 CLIs, no optional deps
uv tool install buvis-gems[bim]         # + jira & textual deps for bim
uv tool install buvis-gems[bim,muc]     # combine extras
uv tool install buvis-gems[all]         # all optional deps
```

### pipx

```bash
pipx install buvis-gems                 # all 15 CLIs, no optional deps
pipx install 'buvis-gems[all]'          # all optional deps
```

### mise

mise's experimental `uvtool` backend doesn't support extras. Use the `pipx` backend instead.

In `~/.config/mise/config.toml`:

```toml
[tools]
"pipx:buvis-gems" = { version = "latest", extras = "all" }
```

Then run `mise install`.

## Update

### uv

```bash
uv tool upgrade buvis-gems
```

### pipx

```bash
pipx upgrade buvis-gems
```

### mise

```bash
mise upgrade pipx:buvis-gems
```

All 16 CLIs (`bim`, `dot`, `fctracker`, `fren`, `hello-world`, `morph`, `muc`, `netscan`, `outlookctl`, `pidash`, `pinger`, `puc`, `readerctl`, `sysup`, `vuc`, `zseq`) are always installed. Extras add optional dependencies some tools need:

| Extra | Dep | Tool |
|-------|-----|------|
| `bim` | jira, textual, fpdf2 | bim |
| `bim-web` | fastapi, uvicorn, watchfiles | bim (web UI) |
| `dot` | textual | dot (TUI) |
| `fren` | python-slugify, Unidecode | fren |
| `hello-world` | pyfiglet | hello-world |
| `morph` | markdownify | morph |
| `muc` | ffmpeg-python | muc |
| `pidash` | textual, watchfiles | pidash |
| `pinger` | ping3 | pinger |
| `readerctl` | requests | readerctl |
| `all` | all of the above | — |

## What's inside

**Library** (`src/lib/buvis/pybase/`) — shared adapters, CLI scaffolding, configuration, filesystem and formatting utilities, plus the zettel subsystem (domain logic, Jira integration, and a Rust extension via PyO3 for performance-critical parsing).

**Tools** (`src/tools/`) — 16 Click-based CLIs built on the library:

| Tool | Purpose |
|------|---------|
| bim | BUVIS InfoMesh (zettel integration) |
| dot | Dotfiles manager |
| fctracker | Foreign currency account tracker |
| fren | File renamer toolkit |
| hello_world | Sample script template |
| morph | File conversion toolkit |
| muc | Music collection tools |
| netscan | Network scanning tools |
| outlookctl | Outlook CLI |
| pidash | Autopilot PRD cycle dashboard |
| pinger | ICMP ping utilities |
| puc | Photo utility collection |
| readerctl | Readwise Reader CLI |
| sysup | System update tools |
| vuc | Video utility collection |
| zseq | Zettelsequence utilities |

