Metadata-Version: 2.4
Name: pup-check
Version: 0.1.0
Summary: Command-line tool for the opinionated guide to professional python projects; check repo for self-consistency.
Project-URL: Homepage, https://github.com/denisecase/pup-check
Project-URL: Repository, https://github.com/denisecase/pup-check
Project-URL: Documentation, https://denisecase.github.io/pup-check/
Project-URL: Issues, https://github.com/denisecase/pup-check/issues
Project-URL: Changelog, https://github.com/denisecase/pup-check/blob/main/CHANGELOG.md
Author: Denise Case
License-Expression: MIT
License-File: LICENSE
Keywords: automation,command-line-tool,developer-tooling,project-validation,python,python-projects,repository-consistency,software-architecture,software-quality,uvx
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.15
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Requires-Python: >=3.15
Requires-Dist: pup-core>=0.1.0
Description-Content-Type: text/markdown

# pup-check: Professional Python Project: Repo Self Consistency Checker

[![PyPI](https://img.shields.io/pypi/v/pup-check?logo=pypi&label=pypi)](https://pypi.org/project/pup-check/)
[![Docs Site](https://img.shields.io/badge/docs-site-blue?logo=github)](https://denisecase.github.io/pup-check/)
[![Repo](https://img.shields.io/badge/repo-GitHub-black?logo=github)](https://github.com/denisecase/pup-check)
[![Python 3.15](https://img.shields.io/badge/python-3.15%2B-blue?logo=python)](./pyproject.toml)
[![License](https://img.shields.io/badge/license-MIT-yellow.svg)](./LICENSE)

[![CI](https://github.com/denisecase/pup-check/actions/workflows/ci-python-zensical.yml/badge.svg?branch=main)](https://github.com/denisecase/pup-check/actions/workflows/ci-python-zensical.yml)
[![Docs-Deploy](https://github.com/denisecase/pup-check/actions/workflows/deploy-zensical.yml/badge.svg?branch=main)](https://github.com/denisecase/pup-check/actions/workflows/deploy-zensical.yml)
[![Pre-Release](https://github.com/denisecase/pup-check/actions/workflows/pre-release.yml/badge.svg?branch=main)](https://github.com/denisecase/pup-check/actions/workflows/pre-release.yml)
[![Release](https://github.com/denisecase/pup-check/actions/workflows/release-pypi.yml/badge.svg)](https://github.com/denisecase/pup-check/actions/workflows/release-pypi.yml)
[![Links](https://github.com/denisecase/pup-check/actions/workflows/links.yml/badge.svg?branch=main)](https://github.com/denisecase/pup-check/actions/workflows/links.yml)
[![Dependabot](https://img.shields.io/badge/Dependabot-enabled-brightgreen.svg)](https://github.com/denisecase/pup-check/security)

<img
src="https://raw.githubusercontent.com/denisecase/pup-check/main/docs/images/pup.png"
alt="pup logo"
width="110">

> Opinionated professional Python repository self-consistency checker

## Purpose

Professional Python repositories contain many declarations that should agree
with one another.

Examples include:

- project and package names
- `src/` package structure
- `pyproject.toml` metadata
- command-line entry points
- Python module paths
- dependency declarations
- Python version declarations
- repository-relative file paths
- workflow and tooling configuration

Small inconsistencies can remain unnoticed until a command, build, test,
documentation workflow, or release fails.

`pup-check` performs deterministic checks for internal repository consistency
and reports problems that should be reviewed.

## Check a Repository

```shell
# check the current repository
uvx pup-check

# check using the latest published version
uvx pup-check@latest
```

A successful check returns exit code `0`.

A failed consistency check returns a nonzero exit code and reports the
detected problem.

## Checks

This release checks:

- `pyproject.toml` exists
- `pyproject.toml` can be read and identifies the project
- a Python package can be detected when a `src/` layout is present
- modules referenced by `[project.scripts]` entry points exist

## Developer Command Reference

<details>
<summary>Show command reference</summary>

### In a machine terminal

Open a machine terminal where you want the project:

```shell
git clone https://github.com/denisecase/pup-check

cd pup-check
code .
```

### In a VS Code terminal

```shell
uv self update
uv python pin 3.15
uv lock --upgrade
uv sync --upgrade
# if concurrent dev:
uv pip install -e ../pup-core

uv run pre-commit install
uv run pre-commit autoupdate

git add -A
uv run pre-commit run --all-files
# repeat if changes were made
uv run pre-commit run --all-files

# run locally to test
uv run pup-check
uv run pup-check --diff
uv run pup-check --write
uv run pup-check --write .gitattributes .github/.yamllint.yml .github/workflows/links.yml

# types, tests, docs
uv run python -m pyright
uv run python -m pytest
uv run python -m zensical build

# save progress
git add -A
git commit -m "update"
git push -u origin main
```

</details>

## Documentation

- [Documentation](https://denisecase.github.io/pup-check/)

## Annotations

[.annotations/annotations.md](./.annotations/annotations.md)

## Citation

[CITATION.cff](./CITATION.cff)

## License

[MIT](./LICENSE)
