Skip to main content

Project: License

Package: PyPI - Python Version PyPI - Version PyPI - Downloads

Development: uv ruff ty pytest CI Code Coverage GitHub commit activity

Contents

Overview

RepoRemedy aims to lower the barrier to applying software engineering best practices in open-source software (OSS) repositories.

Who is the target audience?

RepoRemedy is targeted towards two main audiences:

  1. OSS maintainers who are interested to have an interactive and batched approach to fixing best practices issues in their repos. RepoRemedy allows for interactive exploration of common improvements as well as automated issue and PR generation to apply common "remedies" to a repository.
  2. OSS auditors who are interested in investigating and potentially applying fixes to multiple repositories. This audience might be an organizational or academic Open Source Program Office (OSPO) or a maintainer who manages a larger number of repositories. RepoRemedy allows for easier management and potentially replication of common fixes across repositories.

How to use RepoRemedy

RepoRemedy has three steps where each step is a separate command. Only the last step makes changes to a GitHub repository.

Step Command What it does Changes GitHub?
1. Inspect inspect Reads a RepoAuditor or Scorecard report and lists the findings it can fix No
2. Propose propose Reads the repository and drafts a concrete issue or PR for each finding No
3. Publish publish Creates the issues and PRs you reviewed and approved Yes, after --confirm

Reports come from RepoAuditor and Scorecard; see generating input reports. Use --interactive to run all three steps in one terminal session for a single repository.

1. Inspect

inspect reads an existing report and writes normalized findings and source provenance as JSON.

RepoRemedy inspect scorecard_report.json --report-type ossf-scorecard --repo gt-csse/reporemedy-live-fixture
RepoRemedy inspect report.txt --report-type repoauditor --repo https://github.com/gt-csse/reporemedy-live-fixture

Use RepoRemedy inspect --help for inspection options and RepoRemedy --version for the installed version. For GitHub Enterprise, use an HTTPS URL or HOST/OWNER/REPO.

2. Propose

propose gathers context and creates concrete remedy proposals from an audit report:

RepoRemedy propose report.json --report-type ossf-scorecard --repo gt-csse/reporemedy-live-fixture > proposals.json

propose will read the audited commit and branch used for a input report but can also use main. Use --ref main or a full commit SHA to select a revision explicitly. It resolves catalog inputs and renders an issue or an eligible draft PR, including file contents and diffs. Missing inputs and blocked proposals remain visible. propose makes no GitHub changes.

See repository context for authentication, collected context, maintainer inputs, PR guards and the saved proposal contract.

3. Publish

Publish only reviewed selections, with explicit confirmation:

RepoRemedy publish proposals.json --repo gt-csse/reporemedy-live-fixture --select security-policy \
  --receipts publication-receipts.json --confirm

See publishing remedies for permissions, stale-content checks, duplicate prevention and receipt recovery.

Interactive mode

To select and review remedies interactively for one repository, add --interactive. The session saves your selections to a plan file:

RepoRemedy inspect report.txt --report-type repoauditor --repo gt-csse/reporemedy-live-fixture --interactive
RepoRemedy inspect --resume remedy-plan.json
RepoRemedy publish --plan remedy-plan.json

publish --plan takes the plan file saved by an interactive session whereas publish proposals.json takes the output of propose run without an interactive session or other flags.

The interactive workflow supports bulk selection, input forms, issue/PR previews, save/resume and confirmed publication. Without --interactive, inspect prints findings as JSON to stdout and writes no file.

Several repositories

Generate proposals for several repositories using report-path templates:

RepoRemedy propose-batch demo/batch.json --output batch-results

The batch workflow uses the same remediation behavior as propose, preserves each repository's bundles and summary, and continues after input failures. Exit code 3 identifies partial failure; output directories must be new.

Installation

Installation Method Command
Via uv uv add RepoRemedy
Via pip pip install RepoRemedy

Verifying Signed Artifacts

Artifacts are signed and verified using py-minisign and the public key in the file ./minisign_key.pub.

To verify that an artifact is valid, visit the latest release and download the .minisign signature file that corresponds to the artifact, then run the following command, replacing <filename> with the name of the artifact to be verified:

uv run --with py-minisign python -c "import minisign; minisign.PublicKey.from_file('minisign_key.pub').verify_file('<filename>'); print('The file has been verified.')"

Development

Please visit Contributing and Development for information on contributing to this project.

Additional Information

Additional information can be found at these locations.

Title Document Description
Code of Conduct CODE_OF_CONDUCT.md Information about the norms, rules, and responsibilities we adhere to when participating in this open source community.
Contributing CONTRIBUTING.md Information about contributing to this project.
Development DEVELOPMENT.md Information about development activities involved in making changes to this project.
Governance GOVERNANCE.md Information about how this project is governed.
Maintainers MAINTAINERS.md Information about individuals who maintain this project.
Security SECURITY.md Information about how to privately report security issues associated with this project.

License

RepoRemedy is licensed under the MIT license.

Metadata

Release files for reporemedy 0.1.19

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for reporemedy 0.1.19
File Size Uploaded Provenance
reporemedy-0.1.19.tar.gz 71.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for reporemedy 0.1.19
File Interpreter ABI Platform
reporemedy-0.1.19-py3-none-any.whl Python 3 none any Details

Total release size: 160.3 kB

Release files / reporemedy-0.1.19.tar.gz

Download URL reporemedy-0.1.19.tar.gz
Size 71.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c31e656d92ba781a8f0f521fbf0b90101a0fdc3f4dc45cbdb0b1707ba3aa8c7d
BLAKE2b-256 checksum
How to use checksums
7d27677438fe372dbd7e42c4c9771a0c318c799c7e6c3f0182d013b17f7a0d58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / reporemedy-0.1.19-py3-none-any.whl

Download URL reporemedy-0.1.19-py3-none-any.whl
Size 88.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
70ee45837e83530f204cad1dd33480d7d8b7fe00afa34aeb1f1ed1c70164b3c2
BLAKE2b-256 checksum
How to use checksums
76de83a7af7e71c8a7e5a2913d8c94546c37f14c2b237aaa921f6dc1da491a71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for reporemedy 0.1.19

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page