Metadata-Version: 2.4
Name: pyplines-cli-common
Version: 2026.9.6a1
Summary: Shared Pyplines CLI presentation, Distribution verification and OCI transport
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: typer<1,>=0.24
Requires-Dist: rich<15,>=13
Requires-Dist: PyYAML<7,>=6
Requires-Dist: requests<3,>=2.32
Requires-Dist: cryptography>=44
Requires-Dist: jsonschema>=4.23
Requires-Dist: referencing>=0.36

# Pyplines CLI standard

Shared [inspection services and views](../docs/inspection.md) derive Distribution
and Action descriptions from canonical content, with explicit verification states.

`pyplines-cli-common` provides the shared Typer application boundary, safe
errors, and presentation used by the CLI and Builder. It has no Server dependency.

Human output is the default. `AUTOMATION_MODE=enabled` or `--json` selects
automation output: one JSON result on stdout, JSON errors and progress on stderr,
and no interactive prompts. Log-stream commands emit newline-delimited JSON.
Empty invocation and help show readable help and exit zero without credentials.
Redirecting stdout does not change the output format.

Exit codes: 0 success, 1 operation failure, 2 invalid usage, 130 interruption.
Unexpected exceptions never print arbitrary exception values; optional diagnostics
identify their type without leaking tokens or signed URLs.

The shared package follows the release's CalVer version and is published before
CLI and Builder. Configure its PyPI Trusted Publisher for repository
`pyplines/pyplines`, workflow `publish-release.yml`, environment `pypi`.
## Distribution tooling

Both operator CLI and builder import the same bounded archive reader, canonical
writer, signature verifier, offline schema snapshot, and OCI registry transport.
The signing source URI identifies publisher authority without requiring an Index.
Registry transport is independent of publisher verification and never uses a
Docker daemon. Dependencies and schemas ship in the common wheel.

The manual `qualify-distribution-oci.yml` workflow tests real registry transfer,
ORAS copying, and installed wheels. Its optional GHCR job publishes unique test
packages under the repository owner's qualification namespace and leaves them
for inspection; it does not run on pushes or releases automatically.
