Metadata-Version: 2.4
Name: pyrig-containers-pypi
Version: 0.1.3
Summary: A pyrig plugin that combines the pyrig-containers and pyrig-pypi plugins.
Keywords: pyrig
Author: Winipedia
License-Expression: MIT
License-File: LICENSE
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: OS Independent
Classifier: Typing :: Typed
Requires-Dist: pyrig>=12.4.0
Requires-Dist: pyrig-containers>=0.1.0
Requires-Dist: pyrig-pypi>=1.2.0
Maintainer: Winipedia
Requires-Python: >=3.12
Project-URL: Homepage, https://github.com/Winipedia/pyrig-containers-pypi
Project-URL: Documentation, https://Winipedia.github.io/pyrig-containers-pypi
Project-URL: Source, https://github.com/Winipedia/pyrig-containers-pypi
Project-URL: Issues, https://github.com/Winipedia/pyrig-containers-pypi/issues
Project-URL: Changelog, https://github.com/Winipedia/pyrig-containers-pypi/releases
Description-Content-Type: text/markdown

# pyrig-containers-pypi

<!-- security -->
[![DependencyAuditor](https://img.shields.io/badge/security-pip--audit-blue?logo=python)](https://github.com/pypa/pip-audit)
[![SecurityChecker](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
<!-- ci/cd -->
[![CI](https://img.shields.io/github/actions/workflow/status/Winipedia/pyrig-containers-pypi/health_check.yml?label=CI&logo=github)](https://github.com/Winipedia/pyrig-containers-pypi/actions/workflows/health_check.yml)
[![CD](https://img.shields.io/github/actions/workflow/status/Winipedia/pyrig-containers-pypi/deploy.yml?label=CD&logo=github)](https://github.com/Winipedia/pyrig-containers-pypi/actions/workflows/deploy.yml)
<!-- code-quality -->
[![MarkdownLinter](https://img.shields.io/badge/markdown-rumdl-darkgreen)](https://github.com/rvben/rumdl)
[![PythonLinter](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![TypeChecker](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ty/main/assets/badge/v0.json)](https://github.com/astral-sh/ty)
[![VersionControlHookManager](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/j178/prek/master/docs/assets/badge-v0.json)](https://github.com/j178/prek)
<!-- testing -->
[![CoverageTester](https://codecov.io/gh/Winipedia/pyrig-containers-pypi/branch/main/graph/badge.svg)](https://codecov.io/gh/Winipedia/pyrig-containers-pypi)
[![ProjectTester](https://img.shields.io/badge/tested%20with-pytest-46a2f1.svg?logo=pytest)](https://pytest.org)
<!-- tooling -->
[![ContainerEngine](https://img.shields.io/badge/Container-Podman-A23CD6?logo=podman&logoColor=grey&colorA=0D1F3F&colorB=A23CD6)](https://podman.io)
[![PackageManager](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
[![Pyrigger](https://img.shields.io/badge/built%20with-pyrig-3776AB?logo=buildkite&logoColor=black)](https://github.com/Winipedia/pyrig)
[![RemoteVersionController](https://img.shields.io/github/stars/Winipedia/pyrig-containers-pypi?style=social)](https://github.com/Winipedia/pyrig-containers-pypi)
[![VersionController](https://img.shields.io/badge/Git-F05032?logo=git&logoColor=white)](https://git-scm.com)
<!-- documentation -->
[![DocsBuilder](https://img.shields.io/badge/MkDocs-Documentation-326CE5?logo=mkdocs&logoColor=white)](https://www.mkdocs.org)
[![Documentation](https://img.shields.io/badge/Docs-GitHub%20Pages-black?style=for-the-badge&logo=github&logoColor=white)](https://Winipedia.github.io/pyrig-containers-pypi)
<!-- project-info -->
[![PackageIndex](https://img.shields.io/pypi/v/pyrig-containers-pypi?logo=pypi&logoColor=white)](https://pypi.org/project/pyrig-containers-pypi)
[![ProgrammingLanguage](https://img.shields.io/pypi/pyversions/pyrig-containers-pypi)](https://www.python.org)
[![License](https://img.shields.io/github/license/Winipedia/pyrig-containers-pypi)](https://github.com/Winipedia/pyrig-containers-pypi/blob/main/LICENSE)

---

> A pyrig plugin that combines the pyrig-containers and pyrig-pypi plugins.

---

## What it does

[pyrig](https://github.com/Winipedia/pyrig) discovers each class's behaviour by
finding the single most-derived (leaf) subclass across all installed packages.
When [pyrig-containers](https://github.com/Winipedia/pyrig-containers) and
[pyrig-pypi](https://github.com/Winipedia/pyrig-pypi) both extend the same pyrig
class, installing them together leaves pyrig with two competing leaves and
raises an error because of the ambiguity.

This plugin resolves those clashes. For every class the two plugins both extend,
it provides a subclass that inherits from both, making it the one unambiguous
leaf and giving a project the combined capabilities of both plugins. Any future
collisions between the two plugins are resolved here as well.

## Installation

```bash
uv add pyrig-containers-pypi --dev
```

Installing this package pulls in `pyrig`, `pyrig-containers`, and `pyrig-pypi`.
With it present, pyrig runs cleanly with both plugins enabled — no further
configuration required.
