Metadata-Version: 2.4
Name: verifaied
Version: 0.1.0.dev18
Summary: Upload local pytest coverage to verifAIed for instant feedback
Project-URL: Homepage, https://pypi.org/project/verifaied/
Author: Kyle Richards
License: MIT
Keywords: ai,coverage,llm,pytest,testing
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27.0
Requires-Dist: rich>=13.7.0
Requires-Dist: typer>=0.12.0
Description-Content-Type: text/markdown

# verifaied

CLI for uploading local pytest coverage to verifAIed so an LLM (or you) can see what's untested without waiting for CI.

## Install

```bash
uv tool install verifaied        # or
pipx install verifaied
```

## Configure

Set the API token (mint one from the verifAIed app) and, for self-hosted
or local backends, the API URL:

```bash
export VERIFAIED_API_TOKEN=vr_live_...
export VERIFAIED_API_URL=http://localhost:8000   # default
```

## Use

From inside any git repo you've connected to verifAIed:

```bash
pytest --cov --cov-report=json --junitxml=junit.xml
verifaied upload
```

That's it — `--repo` is optional. The CLI parses `git remote get-url origin`,
looks the repo up under your account via `/installations/me`, and uses the
resulting UUID. You can also be explicit:

```bash
verifaied upload --repo kyle/verifaied        # owner/name slug
verifaied upload --repo <UUID>                # raw UUID, no lookup
```

The CLI reads `coverage.json`, pulls the source for every file it
references from your working tree, and posts everything to
`/repositories/<id>/local-coverage`. The response prints a summary of
untested / partial / failing functions so you (or your LLM) can fix
them on the next iteration.

### What gets uploaded

The CLI only sends files that appear in `coverage.json`'s `"files"`
map — i.e. exactly the files `pytest --cov` instrumented. There is no
directory walk and no glob:

- `.env`, build artefacts, vendored libraries, and anything outside
  your coverage scope are never read.
- Test files themselves are only uploaded if your coverage config
  includes them (e.g. `--cov=tests`).

To audit the exact file list (and total bytes) before anything leaves
your machine, run with `--dry-run`:

```bash
verifaied upload --dry-run
```

This prints the resolved branch / commit / file table and exits without
contacting the backend. Useful when you're about to upload from an
unfamiliar repo, or when narrowing down where an unexpected file is
coming from.

If a sensitive value did make it into a covered source file (a baked-in
API key in a fixture, etc.), open the repo in the verifAIed web UI,
expand **Recently deleted** under the branches grid, and use
**Permanently delete**. That hard-deletes the analysis row and cascades
to the uploaded source — the per-card **Delete** is a soft-delete that
keeps the data around for accidental-deletion recovery.

### Flags

- `--repo / -r <UUID|owner/name>` — repository to upload to. If omitted,
  the CLI auto-detects from the GitHub `origin` remote.
- `--branch / -b <name>` — branch to attach the upload to (default:
  `git branch --show-current`, then `local`)
- `--coverage <path>` — path to coverage.json (default: `./coverage.json`)
- `--junit <path>` — optional JUnit XML for failing-test detail
- `--commit-sha <sha>` — commit sha for display (default: `git rev-parse HEAD`)
- `--root <path>` — root the coverage paths are relative to (default: cwd)
- `--api-url <url>` — backend base URL (overrides `VERIFAIED_API_URL`)
- `--token <token>` — API token (overrides `VERIFAIED_API_TOKEN`)
- `--dry-run` — print the file list and total bytes that would be
  uploaded, then exit without contacting the backend. Skips the token
  requirement so you can audit without configuring auth.
