Mass-driver

Latest version: v0.18.0

Safety actively analyzes 693883 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 5

0.16.1

Fixed

- Formatting of the % of PR per status back to 2 digits precision not 11.

0.16.0

Breaking interface of `Forge` to facilitate new `view-pr` feature.

Added

- New `view-pr` feature for bulk reviewing the status of PRs that already exist.

Changed

- **BREAKING**: New `Forge.get_pr_status()`, required from derived classes,
returning a string status, used as key to group PRs together for summary
purposes.
- **BREAKING**: New `Forge.pr_statuses` property, required from derived classes,
returning a list of all possible string statuses of `Forge.get_pr_status()`,
sorted from most complete (e.g. merged) to least complete (e.g. not merged,
has merge-conflicts).

Removed

- **BREAKING**: Removed `Forge.get_pr()`, which had unclear return type anyway.

0.15.0

Changed

Major break of interface: Rework of the cloning system, merges migration/scan
codepaths, enabling use of Source-discovered information in `PatchDriver.run`.

- **BREAKING**: `PatchDriver.run()` passes `ClonedRepo` obj, not `pathlib.Path`.
- Any use of `repo` in your `PatchDriver.run()` should use `repo.cloned_path`.
- See `ClonedRepo` docs, contains information derived from `Source`, such as
`patch_data` field, arbitrary source-issued information dict.
- **BREAKING**: `tests.fixtures.massdrive()` now returns 3-item-tuple, not 2.
- Returned tuple: `PatchResult`, `ForgeResult`, `ScanResult` (or `None`)
- Any tests using `fixtures.massdrive` should now set `mig, forge, scan =`...
- Swap `fixtures.massdrive_scan` with `fixtures.massdrive` accepting 2 junk arg
- **BREAKING**: `mass-driver scan` CLI removed, now part of `mass-driver run`.
Activity flow for `run` command is now:
- Source discovery phase (if any, or from CLI), generating `Repo` list
- Main phase, iterating over each Repo, first to clone them =`ClonedRepo` list
- Inside main phase, scan (if any), generating `ScanResult`
- Inside main phase, migrate (if any), generating `MigrationResult`
- After main phase, interactively pause for review if requested
- Forge activity, iterating over each repo again, creating `ForgeResult`
- **BREAKING**: `models.source` module renamed to `models.repository`.

Added

- Scan+Migration+Forge can now ALL happen in one run command:
- Clones one repo, then scanning it, then migrating it, then next repo
- Can thus do all of Source -> [Clone] -> Scan -> Migrate -> Forge
- New `csv-filelist` Source for importing repos in CSV file format
- New `tests.fixture.massdrive_runlocal()` func to enable source testing

Fixed

- Secret tokens for Github plugins no longer leak on config dump
(`--json-outfile` flag), by replacing `str` with `pydantic.SecretStr`.
- Docs updated to warn downstream devs about this risk.
- Pin `pydantic` to `1.*`, as breaking version `2.0` was just released.

0.14.0

Added

- New `source` feature for discovering what repos to patch/scan.
- `Source`s are plugins with `discover()` method, returning `Repo`s by ID.
- Alternative `sources` subcommand to list and detail them
- New TOML file entry `[mass-driver.source]`, with subkey `source_name` used
to select which source plugin to enable.
- Simple sources provided:
- `repo-list` for in-activity-file repository list
- `repo-filelist` to point to a separate file listing repos
- `template-filelist` to expand a template against a file listing repos
- `github-search` and `github-app-search` Sources for Github Repository search
- CLI args `--repo-path` and `--repo-filelist` still available, overriding any
source, so that `massdriver.source` is only required if lacking CLI args
- CI (pytest, pre-commit) set up via Github Actions: [PR 1](https://github.com/OverkillGuy/mass-driver/pull/1)

0.13.2

Added

- New `file_ownership` parameter for `stamper`, defaulting to `0664`.

Fixed

- Exit codes harmonized:
- `0` for success
- `1` for failures during the main function
- `2` for argument parsing errors
- `stamper` driver now creates any missing parent folder to the target
- Remove test depending on `git clone` from Github: Faster, offline tests now

0.13.1

Fixed

- `scan` command now uses `--json-outfile` as expected

Page 2 of 5

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.