modify-repos
Clone, modify, and create pull requests across multiple repositories at once.
[!WARNING] This is under development, and how it's used may change at any time.
Documentation: https://modify-repos.readthedocs.io/
Example Use
Use uv to create a script that depends on this library.
$ uv init --script mod.py
$ uv add --script mod.py modify-repos
Subclass modify_repos.GitHubScript to define the repositories to change and
what changes to make. This uses the gh GitHub CLI, which must already be
installed and logged in.
from modify_repos import GitHubScript, GitHubRepo
class MyScript(GitHubScript):
# title used in commit and PR
title = "..."
# description used in commit and PR
body = "..."
# branch to merge into, defaults to main
target = "main"
# branch to create and PR
branch = "my-changes"
# one or more users/orgs to clone repos from
orgs = ["username"]
def select_for_clone(self, repo: GitHubRepo) -> bool:
# filter to only clone some of the available repos
return repo.name in {"a", "b", "d"}
def modify(self, repo: GitHubRepo) -> None:
# make any changes, such as add/remove files, here
...
if __name__ == "__main__":
MyScript().run()
Call uv run mod.py, and it will clone and modify all the selected repos. PRs
will not be created unless you use MyScript(submit=True) instead, so you can
develop and preview your changes first.
Develop
This project uses uv to manage the development environment and tox to define different tests and management scripts.
# set up env
$ uv sync
$ uv run pre-commit install --install-hooks
# run tests and checks
$ uv run tox p
# develop docs with auto build and serve
$ uv run tox r -e docs-auto
# update dependencies
$ uv run tox r -m update
Metadata
Release files for modify-repos 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| modify_repos-0.2.0.tar.gz | 9.9 kB | With provenance | Details for modify_repos-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| modify_repos-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for modify_repos-0.2.0-py3-none-any.whl |
Total release size: 22.3 kB
Release files / modify_repos-0.2.0.tar.gz
| Download URL | modify_repos-0.2.0.tar.gz |
|---|---|
| Size | 9.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3fe0425aee76a1ef5999edd9dda834b1b2fb9dc20d1f01b4b6cc5b68fd32d3bf
|
|
BLAKE2b-256 checksum How to use checksums |
f1b5478c6e29b687337ee814aaf9af2b6abb0c761cd9be68bacd8d9da1f7c5ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 14, 2025.
Transparency logRelease files / modify_repos-0.2.0-py3-none-any.whl
| Download URL | modify_repos-0.2.0-py3-none-any.whl |
|---|---|
| Size | 12.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ace7cbb3a1cb3119f109a76d09b13842890c35345039bcb43a6aef6b97d39e13
|
|
BLAKE2b-256 checksum How to use checksums |
9b2336acc29f5670f566cd0321ff97976fca538e3f2158bd7411cc17b89a6c88
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 14, 2025.
Transparency logSecurity for modify-repos 0.2.0
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.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for modify_repos-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 14, 2025.
Transparency logA 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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.