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.18

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.18
File Size Uploaded Provenance
reporemedy-0.1.18.tar.gz 68.3 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 156.9 kB

Release files / reporemedy-0.1.18.tar.gz

Download URL reporemedy-0.1.18.tar.gz
Size 68.3 kB
Tags Source
SHA-256 checksum
How to use checksums
d3a5256f316d203e5a99639aa7554e034ec5f8fbd472927f7737d32d0dab54ec
BLAKE2b-256 checksum
How to use checksums
dde7573fa0cd2e5da5795d10c3bda763402b44dd99590fe995eb3fb8e417f039
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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.18-py3-none-any.whl

Download URL reporemedy-0.1.18-py3-none-any.whl
Size 88.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0df474eb6d6fd242cca7c733cb71ed6dbedfe8a6b3d7104d66ba58dc8c905b3d
BLAKE2b-256 checksum
How to use checksums
a37c6aa524fa4ee79b192eb7071c0638a879aaee4e9e134ad73fff0c896e1140
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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.18

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