Metadata-Version: 2.5
Name: repolish
Version: 1.18.1
Summary: Maintain consistency across repositories
Author: hotdog-werx
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: cyclopts>=4.8.0
Requires-Dist: hotlog>=0.2.0
Requires-Dist: jinja2==3.1.6
Requires-Dist: pydantic>=2.0.0
Requires-Dist: typing-extensions>=4.0; python_version < '3.12'
Description-Content-Type: text/markdown

<p align="center">
  <img
    alt="repolish"
    src="https://raw.githubusercontent.com/hotdog-werx/repolish/master/docs/assets/logo.svg"
    width="120"
    height="120"
  >
</p>

<p align="center">
  <strong>Package your standards. Own your edits.</strong>
</p>

<p align="center">
  <a href="https://github.com/hotdog-werx/repolish/actions"><img
    src="https://github.com/hotdog-werx/repolish/actions/workflows/ci-checks.yaml/badge.svg"
    alt="CI"
  /></a>
  <a href="https://pypi.org/project/repolish"><img
    src="https://img.shields.io/pypi/v/repolish?logo=python&logoColor=white&label=PyPI"
    alt="Python Package Index"
  /></a>
  <a href="https://pypistats.org/packages/repolish"><img
    src="https://img.shields.io/pypi/dm/repolish.svg"
    alt="Downloads"
  /></a>
</p>

<p align="center">
  <a href="https://hotdog-werx.github.io/repolish/"><strong>Home</strong></a>
  &middot;
  <a href="https://hotdog-werx.github.io/repolish/getting-started/installation/"><strong>Get started</strong></a>
  &middot;
  <a href="https://hotdog-werx.github.io/repolish/tutorial/"><strong>Tutorial</strong></a>
  &middot;
  <a href="https://hotdog-werx.github.io/repolish/concepts/overview/"><strong>Concepts</strong></a>
  &middot;
  <a href="https://hotdog-werx.github.io/repolish/provider-development/overview/"><strong>Provider Development</strong></a>
  &middot;
  <a href="https://hotdog-werx.github.io/repolish/llms/"><strong>AI Agent Reference</strong></a>
</p>

---

Repolish lets a team publish their repository conventions as **providers** and
apply them consistently across every project that opts in — without overwriting
the local changes that developers own.

Run `repolish --check` in CI to catch drift. Run `repolish apply` to pull in
updates.

```bash
uv add repolish
```

## Development

Dev tasks are declared in `mise-tasks/`; run any of them with `mise run <task>`.

<!-- repolish:on:mise dev-tasks -->

**repo**

| Task                       | Description                                                                               |
| -------------------------- | ----------------------------------------------------------------------------------------- |
| `build`                    | build the package (requires VERSION env var)                                              |
| `build-docs`               | build the static documentation site                                                       |
| `check-coverage`           | run repolish and internal coverage suites                                                 |
| `check-dprint`             | check dprint-managed formatting                                                           |
| `ci-checks`                | run all checks for CI                                                                     |
| `clean-docs`               | clean docs build artifacts                                                                |
| `cov-contexts`             | record per-test coverage contexts for the whole suite into .coverage                      |
| `cov-redundant`            | report tests whose product-code coverage is duplicated elsewhere (run cov-contexts first) |
| `cov-reporting`            | coverage of repolish.reporting from tests/reporting alone                                 |
| `cov-summaries`            | coverage of repolish.summaries from tests/summaries alone                                 |
| `dev-docs`                 | start the docs development server                                                         |
| `format`                   | run all formatters                                                                        |
| `format-dprint`            | format dprint-managed files                                                               |
| `format-python`            | format python code                                                                        |
| `install-devkit-providers` | install all example providers in editable mode                                            |
| `publish`                  | publish the package to PyPI (requires VERSION, PYPI_TOKEN, IS_RELEASE env vars)           |
| `regen-changelog`          | regenerate the changelog with releez                                                      |
| `setup`                    | sync the uv env, install the uv-toolbox envs, refresh ty.toml                             |
| `start-releez`             | release start with releez                                                                 |

**check-coverage**

| Task                      | Description                               |
| ------------------------- | ----------------------------------------- |
| `check-coverage:internal` | run internal tests with internal coverage |
| `check-coverage:repolish` | run repolish tests with repolish coverage |

**python**

| Task                          | Description                                                  |
| ----------------------------- | ------------------------------------------------------------ |
| `python:check:complexity`     | complexity gate (fails above 20 on the complexipy 8.x scale) |
| `python:check:ruff`           | ruff lint and format check (tools-env 0.17.1)                |
| `python:check:types`          | type check repolish source and root tests                    |
| `python:check:types:internal` | type check internal tools tree with repolish venv ty         |

**workspace**

| Task                       | Description                                               |
| -------------------------- | --------------------------------------------------------- |
| `workspace:repolish`       | apply repolish (local provider via the uvtb repolish env) |
| `workspace:repolish:check` | verify the repo matches repolish output (fails on drift)  |

<!-- repolish:off:mise -->
