repomatic 6.31.0__tar.gz → 7.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {repomatic-6.31.0 → repomatic-7.1.0}/PKG-INFO +7 -7
- {repomatic-6.31.0 → repomatic-7.1.0}/pyproject.toml +37 -22
- {repomatic-6.31.0 → repomatic-7.1.0}/readme.md +3 -2
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/__init__.py +2 -2
- repomatic-7.1.0/repomatic/binaries_page.py +448 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/binary.py +7 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/cache.py +6 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/changelog.py +14 -1
- repomatic-7.1.0/repomatic/checksums.py +132 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/cli.py +832 -345
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/config.py +97 -131
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/_release-engine.yaml +52 -30
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/action-publish-pypi.yaml +4 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/agent-sphinx-docs.md +24 -27
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/autofix.yaml +217 -67
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/changelog.yaml +24 -18
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/debug.yaml +3 -3
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/docs.yaml +7 -7
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/labeller-content-based.yaml +0 -1
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/labeller-file-based.yaml +0 -1
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/labels.yaml +11 -11
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/lint.yaml +29 -23
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/lychee.toml +3 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/release.yaml +1 -1
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/ruff.toml +7 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-av-false-positive.md +7 -4
- repomatic-7.1.0/repomatic/data/skill-babysit-ci.md +258 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-repomatic-audit.md +2 -3
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-repomatic-changelog.md +1 -1
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-repomatic-deps.md +2 -2
- repomatic-7.1.0/repomatic/data/skill-repomatic-ship.md +151 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/tests.yaml +3 -3
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/unsubscribe.yaml +22 -2
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/zizmor.yaml +1 -1
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/deps_graph.py +226 -77
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/git_ops.py +244 -8
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/issue.py +17 -1
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/matrix.py +1 -1
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/pr_body.py +94 -1
- repomatic-7.1.0/repomatic/github/releases.py +502 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/token.py +12 -47
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/workflow_sync.py +30 -11
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/init_project.py +2 -102
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/lint_repo.py +94 -15
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/metadata.py +86 -108
- repomatic-7.1.0/repomatic/npm.py +89 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/pypi.py +1 -1
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/registry.py +10 -10
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/release_prep.py +25 -75
- repomatic-7.1.0/repomatic/sync_ops.py +984 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/fix-changelog.md +1 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/setup-guide-dependabot.md +2 -2
- repomatic-7.1.0/repomatic/templates/setup-guide-notifications-pat.md +21 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/setup-guide-token.md +4 -5
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/setup-guide.md +3 -1
- repomatic-7.1.0/repomatic/templates/sync-action-pins.md +18 -0
- repomatic-7.1.0/repomatic/templates/sync-tool-versions.md +18 -0
- repomatic-7.1.0/repomatic/templates/sync-workflow-pins.md +18 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/tool_runner.py +655 -28
- repomatic-7.1.0/repomatic/tool_runner_page.py +217 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/uv.py +363 -145
- repomatic-7.1.0/repomatic/version_sync.py +501 -0
- repomatic-7.1.0/repomatic/virustotal.py +467 -0
- repomatic-6.31.0/repomatic/checksums.py +0 -197
- repomatic-6.31.0/repomatic/data/renovate.json5 +0 -204
- repomatic-6.31.0/repomatic/data/renovate.yaml +0 -138
- repomatic-6.31.0/repomatic/data/skill-babysit-ci.md +0 -246
- repomatic-6.31.0/repomatic/data/skill-repomatic-ship.md +0 -147
- repomatic-6.31.0/repomatic/github/releases.py +0 -141
- repomatic-6.31.0/repomatic/renovate.py +0 -358
- repomatic-6.31.0/repomatic/templates/renovate-migration.md +0 -13
- repomatic-6.31.0/repomatic/tool_checksums.py +0 -223
- repomatic-6.31.0/repomatic/virustotal.py +0 -417
- {repomatic-6.31.0 → repomatic-7.1.0}/license +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/__main__.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/broken_links.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/__init__.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/agent-grunt-qa.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/agent-qa-engineer.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/autolock.yaml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/awesome_template/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/awesome_template/.github/ISSUE_TEMPLATE/new-link.yaml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/awesome_template/.github/code-of-conduct.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/awesome_template/.github/contributing.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/awesome_template/.github/contributing.zh.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/awesome_template/.github/funding.yml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/awesome_template/.github/pull_request_template.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/awesome_template/__init__.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/awesome_template/license +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/bumpversion.toml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/cancel-runs.yaml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/codecov.yaml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/labels.toml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/mdformat.toml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/mypy.toml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/pytest.toml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-awesome-triage.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-benchmark-update.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-brand-assets.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-file-bug-report.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-repomatic-init.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-repomatic-topics.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-sphinx-docs-sync.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-translation-sync.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/skill-upstream-audit.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/typos.toml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/uv.toml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/data/yamllint.yaml +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/__init__.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/actions.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/advisories.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/dev_release.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/gh.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/pr.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/release_sync.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/status.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/github/unsubscribe.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/images.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/mailmap.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/myst_converter.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/myst_docstrings.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/py.typed +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/pyproject.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/rst_to_myst.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/sponsor.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/__init__.py +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/available-admonition.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/broken-links-issue.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/bump-version.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/detect-squash-merge.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/development-warning.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/fix-typos.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/fix-vulnerable-deps.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/format-images.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/format-json.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/format-markdown.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/format-pyproject.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/format-python.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/format-shell.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/generated-footer.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/github-releases.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/immutable-releases.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/pr-metadata.md.noformat +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/prepare-release.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/refresh-tip.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/release-notes.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/release-sync-report.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/setup-guide-branch-ruleset.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/setup-guide-fork-pr-approval.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/setup-guide-pages-source.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/setup-guide-pypi-trusted-publisher.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/setup-guide-verify.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/setup-guide-virustotal.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/sync-bumpversion.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/sync-gitignore.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/sync-mailmap.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/sync-repomatic.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/sync-uv-lock.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/unavailable-admonition.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/unsubscribe-phase1.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/unsubscribe-phase2.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/update-deps-graph.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/update-docs.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/templates/yanked-admonition.md +0 -0
- {repomatic-6.31.0 → repomatic-7.1.0}/repomatic/test_matrix.py +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: repomatic
|
|
3
|
-
Version:
|
|
3
|
+
Version: 7.1.0
|
|
4
4
|
Summary: 🏭 Automate repository maintenance, releases, and CI/CD workflows
|
|
5
|
-
Keywords: changelog-formatter,dependabot-alternative,github-actions,github-labels,github-workflow,gitignore,mailmap,mypy,nuitka,python-automation,release-automation,
|
|
5
|
+
Keywords: changelog-formatter,dependabot-alternative,github-actions,github-labels,github-workflow,gitignore,mailmap,mypy,nuitka,python-automation,release-automation,repository-automation,repository-management,reusable-workflows,software-factory,sphinx-doc,typo,uv,workflow-reusable
|
|
6
6
|
Author: Kevin Deldycke
|
|
7
7
|
Author-email: Kevin Deldycke <kevin@deldycke.com>
|
|
8
8
|
License-Expression: GPL-2.0-or-later
|
|
@@ -46,11 +46,10 @@ Classifier: Typing :: Typed
|
|
|
46
46
|
Requires-Dist: arrow>=1.3
|
|
47
47
|
Requires-Dist: backports-strenum>=1 ; python_full_version < '3.11'
|
|
48
48
|
Requires-Dist: boltons>=25
|
|
49
|
-
Requires-Dist: click-extra>=8.
|
|
49
|
+
Requires-Dist: click-extra>=8.3
|
|
50
50
|
Requires-Dist: extra-platforms>=12.0.2
|
|
51
51
|
Requires-Dist: packaging>=17
|
|
52
52
|
Requires-Dist: py-walk>=0.3.1
|
|
53
|
-
Requires-Dist: pydriller>=2
|
|
54
53
|
Requires-Dist: pyproject-metadata>=0.9
|
|
55
54
|
Requires-Dist: pyyaml>=6.0.3
|
|
56
55
|
Requires-Dist: tomlrt>=1.7.6
|
|
@@ -59,7 +58,7 @@ Requires-Dist: wcmatch>=10
|
|
|
59
58
|
Requires-Python: >=3.10
|
|
60
59
|
Project-URL: Changelog, https://github.com/kdeldycke/repomatic/blob/main/changelog.md
|
|
61
60
|
Project-URL: Documentation, https://kdeldycke.github.io/repomatic
|
|
62
|
-
Project-URL: Download, https://github.com/kdeldycke/repomatic/releases/tag/
|
|
61
|
+
Project-URL: Download, https://github.com/kdeldycke/repomatic/releases/tag/v7.1.0
|
|
63
62
|
Project-URL: Funding, https://github.com/sponsors/kdeldycke
|
|
64
63
|
Project-URL: Homepage, https://github.com/kdeldycke/repomatic
|
|
65
64
|
Project-URL: Issues, https://github.com/kdeldycke/repomatic/issues
|
|
@@ -89,7 +88,8 @@ A Python CLI and `pyproject.toml` configuration that let you **release Python pa
|
|
|
89
88
|
- Cross-platform binary compilation (Linux / macOS / Windows, x86_64 / arm64)
|
|
90
89
|
- Formatting autofix for Python, Markdown, JSON, Shell, and typos
|
|
91
90
|
- Linting: Python types with mypy, YAML, GitHub Actions, workflow security, URLs, secrets, and Awesome lists
|
|
92
|
-
- Synchronization of `uv.lock`,
|
|
91
|
+
- Synchronization of `uv.lock`, GitHub Action pins, workflow version literals, and `repomatic run` tool versions with configurable stabilization cooldowns
|
|
92
|
+
- Synchronization of `.gitignore`, `.mailmap`, and Mermaid dependency graph
|
|
93
93
|
- Label management with file-based and content-based rules
|
|
94
94
|
- Inactive issue locking
|
|
95
95
|
- Static image optimization
|
|
@@ -101,7 +101,7 @@ A Python CLI and `pyproject.toml` configuration that let you **release Python pa
|
|
|
101
101
|
- [18 third-party GitHub Actions replaced](https://kdeldycke.github.io/repomatic/security.html#third-party-action-minimization) by internal CLI commands and SHA-256-verified binary downloads, keeping the supply chain attack surface minimal
|
|
102
102
|
- [8 Python linters and formatters](https://kdeldycke.github.io/repomatic/security.html#ruff-consolidation) (pylint, black, isort, pyupgrade, pydocstyle, pycln, docformatter, blacken-docs) consolidated into ruff
|
|
103
103
|
- [5 packaging and install tools](https://kdeldycke.github.io/repomatic/security.html#uv-consolidation) (poetry, build, twine, check-wheel-contents, pip-audit) consolidated into uv
|
|
104
|
-
- All `uses:` references [pinned to full commit SHAs](https://kdeldycke.github.io/repomatic/security.html#supply-chain-security)
|
|
104
|
+
- All `uses:` references [pinned to full commit SHAs](https://kdeldycke.github.io/repomatic/security.html#supply-chain-security) with stabilization windows before adopting new versions, managed entirely by self-hosted sync jobs
|
|
105
105
|
- [SLSA provenance attestations](https://kdeldycke.github.io/repomatic/security.html#supply-chain-security) on every release artifact (wheels and compiled binaries)
|
|
106
106
|
- [VirusTotal scanning](https://kdeldycke.github.io/repomatic/security.html#av-false-positive-submissions) of compiled binaries to seed AV vendor databases and reduce false positives
|
|
107
107
|
- [Trusted Publishing](https://kdeldycke.github.io/repomatic/workflows.html#github-workflows-release-yaml-jobs) for PyPI uploads: no long-lived tokens stored as secrets
|
|
@@ -5,7 +5,7 @@ requires = [ "uv-build>=0.9" ]
|
|
|
5
5
|
[project]
|
|
6
6
|
# Docs: https://packaging.python.org/en/latest/guides/writing-pyproject-toml/
|
|
7
7
|
name = "repomatic"
|
|
8
|
-
version = "
|
|
8
|
+
version = "7.1.0"
|
|
9
9
|
description = "🏭 Automate repository maintenance, releases, and CI/CD workflows"
|
|
10
10
|
readme = "readme.md"
|
|
11
11
|
keywords = [
|
|
@@ -20,7 +20,6 @@ keywords = [
|
|
|
20
20
|
"nuitka",
|
|
21
21
|
"python-automation",
|
|
22
22
|
"release-automation",
|
|
23
|
-
"renovate",
|
|
24
23
|
"repository-automation",
|
|
25
24
|
"repository-management",
|
|
26
25
|
"reusable-workflows",
|
|
@@ -85,11 +84,10 @@ dependencies = [
|
|
|
85
84
|
"backports-strenum>=1; python_version<'3.11'",
|
|
86
85
|
# boltons 25.0.0 dropped Python 3.9, matching our requires-python >= 3.10.
|
|
87
86
|
"boltons>=25",
|
|
88
|
-
# 8.
|
|
89
|
-
#
|
|
90
|
-
# `
|
|
91
|
-
|
|
92
|
-
"click-extra>=8.1",
|
|
87
|
+
# click-extra 8.3 adds the `click:config` Sphinx directive and the
|
|
88
|
+
# `schema_field_infos()` introspection API that `configuration.md` and
|
|
89
|
+
# `show-config` are built on.
|
|
90
|
+
"click-extra>=8.3",
|
|
93
91
|
# extra-platforms 12.0.2 reimplemented is_macos() with sys.platform, avoiding
|
|
94
92
|
# the platform.platform() shell-out to ``cmd /c ver`` on Windows that broke
|
|
95
93
|
# under patched subprocess in tests and triggered a CPython 3.10.x bug.
|
|
@@ -101,8 +99,6 @@ dependencies = [
|
|
|
101
99
|
# XXX Replace py-walk with wcmatch once the latter supports gitignore files:
|
|
102
100
|
# https://github.com/facelessuser/wcmatch/issues/226
|
|
103
101
|
"py-walk>=0.3.1",
|
|
104
|
-
# pydriller 2.0 redesigned the API; Git, Commit, and Repository are core 2.x classes.
|
|
105
|
-
"pydriller>=2",
|
|
106
102
|
# pyproject-metadata 0.9 added PEP 639 (license expressions) and PEP 685 (extras
|
|
107
103
|
# normalization); our StandardMetadata.from_pyproject() call benefits from these.
|
|
108
104
|
"pyproject-metadata>=0.9",
|
|
@@ -126,7 +122,7 @@ dependencies = [
|
|
|
126
122
|
]
|
|
127
123
|
urls.Changelog = "https://github.com/kdeldycke/repomatic/blob/main/changelog.md"
|
|
128
124
|
urls.Documentation = "https://kdeldycke.github.io/repomatic"
|
|
129
|
-
urls.Download = "https://github.com/kdeldycke/repomatic/releases/tag/
|
|
125
|
+
urls.Download = "https://github.com/kdeldycke/repomatic/releases/tag/v7.1.0"
|
|
130
126
|
urls.Funding = "https://github.com/sponsors/kdeldycke"
|
|
131
127
|
urls.Homepage = "https://github.com/kdeldycke/repomatic"
|
|
132
128
|
urls.Issues = "https://github.com/kdeldycke/repomatic/issues"
|
|
@@ -166,6 +162,9 @@ docs = [
|
|
|
166
162
|
"sphinx-autodoc-typehints>=2.4",
|
|
167
163
|
# sphinx-copybutton 0.5.2 stabilized the copy button behavior for code blocks.
|
|
168
164
|
"sphinx-copybutton>=0.5.2",
|
|
165
|
+
# sphinx-datatables 1.0.0 is the first stable release; makes the binaries
|
|
166
|
+
# catalog table searchable and sortable client-side (pulls sphinxcontrib-jquery).
|
|
167
|
+
"sphinx-datatables>=1",
|
|
169
168
|
# sphinx-design 0.6 introduced the current directive syntax for cards, grids, and tabs.
|
|
170
169
|
"sphinx-design>=0.6",
|
|
171
170
|
# sphinxcontrib-mermaid 1.2.3 fixed mermaid_d3_zoom configuration support.
|
|
@@ -174,12 +173,14 @@ docs = [
|
|
|
174
173
|
"sphinxext-opengraph>=0.13",
|
|
175
174
|
]
|
|
176
175
|
# types-boltons: first stub release covering boltons 25.0 API (FrozenDict, unique, flatten,
|
|
177
|
-
# strip_ansi). types-
|
|
176
|
+
# strip_ansi). types-docutils: covers the docutils.nodes imports in docs/conf.py.
|
|
177
|
+
# types-pyyaml: stub release covering PyYAML 6.0 (safe_load, safe_dump, full_load).
|
|
178
178
|
typing = [
|
|
179
179
|
# backports-strenum: provides StrEnum stubs for mypy --python-version 3.10 analysis;
|
|
180
180
|
# not in main deps (version-gated to Python<3.11 there), so added here unconditionally.
|
|
181
181
|
"backports-strenum>=1",
|
|
182
182
|
"types-boltons>=25.0.0.20250822",
|
|
183
|
+
"types-docutils>=0.22.3.20251115",
|
|
183
184
|
"types-pyyaml>=6.0.12.9",
|
|
184
185
|
]
|
|
185
186
|
|
|
@@ -204,10 +205,8 @@ exclude-newer = "1 week"
|
|
|
204
205
|
# bypasses at that date and prunes each entry once its held version ages past
|
|
205
206
|
# `exclude-newer`, returning the package to the normal cooldown. repomatic is
|
|
206
207
|
# pinned to git main (no PyPI release to freeze), so it keeps a permanent
|
|
207
|
-
# "0 day" span.
|
|
208
|
-
|
|
209
|
-
# 8.1.0 ages past `exclude-newer`.
|
|
210
|
-
exclude-newer-package = { click-extra = "2026-06-25T00:00:00Z", repomatic = "0 day" }
|
|
208
|
+
# "0 day" span.
|
|
209
|
+
exclude-newer-package = { click-extra = "2026-07-10T00:00:00Z", repomatic = "0 day" }
|
|
211
210
|
# Package is at root level, not in "./src/".
|
|
212
211
|
build-backend.module-root = ""
|
|
213
212
|
|
|
@@ -220,7 +219,7 @@ copyright = "Kevin Deldycke <kevin@deldycke.com> and contributors. Distributed u
|
|
|
220
219
|
file-description = "🏭 Automate repository maintenance, releases, and CI/CD workflows"
|
|
221
220
|
# Numeric only: Nuitka rejects PEP 440 .devN suffixes. Kept in sync with the
|
|
222
221
|
# package version by the dedicated [tool.bumpversion] rule that strips the suffix.
|
|
223
|
-
file-version = "
|
|
222
|
+
file-version = "7.1.0"
|
|
224
223
|
include-data-dir = [
|
|
225
224
|
"repomatic/data/awesome_template=repomatic/data/awesome_template",
|
|
226
225
|
]
|
|
@@ -238,7 +237,7 @@ include-package-data = [ "click_extra" ]
|
|
|
238
237
|
linux-icon = "docs/assets/icon.png"
|
|
239
238
|
macos-app-icon = "docs/assets/icon.icns"
|
|
240
239
|
product-name = "Repomatic"
|
|
241
|
-
product-version = "
|
|
240
|
+
product-version = "7.1.0"
|
|
242
241
|
windows-icon-from-ico = "docs/assets/icon.ico"
|
|
243
242
|
|
|
244
243
|
[tool.ruff]
|
|
@@ -249,6 +248,13 @@ show-fixes = true
|
|
|
249
248
|
# Enable reformatting of code snippets in docstrings.
|
|
250
249
|
# https://docs.astral.sh/ruff/formatter/#docstring-formatting
|
|
251
250
|
format.docstring-code-format = true
|
|
251
|
+
# PLW1514: `open` and friends called without an explicit `encoding` argument.
|
|
252
|
+
# Windows defaults text I/O to cp1252, so a bare `open()`, `read_text()` or
|
|
253
|
+
# `write_text()` breaks on non-ASCII content, and only on Windows runners.
|
|
254
|
+
# Preview rule; its type inference misses unannotated `Path` locals, so
|
|
255
|
+
# PEP 597's `PYTHONWARNDEFAULTENCODING=1` remains the complete runtime net.
|
|
256
|
+
# See: https://docs.astral.sh/ruff/rules/unspecified-encoding/
|
|
257
|
+
lint.extend-select = [ "PLW1514" ]
|
|
252
258
|
# D400: First line should end with a period.
|
|
253
259
|
# Allows docstrings to end up with any punctuation, not just a period.
|
|
254
260
|
# See: https://github.com/astral-sh/ruff/issues/1858#issuecomment-1382640623
|
|
@@ -311,10 +317,8 @@ pretty = true
|
|
|
311
317
|
warn_unused_configs = true
|
|
312
318
|
overrides = [
|
|
313
319
|
{ module = [
|
|
314
|
-
"bumpversion.*",
|
|
315
|
-
"gitdb.*",
|
|
316
320
|
"py_walk.*",
|
|
317
|
-
"
|
|
321
|
+
"sphinxcontrib.mermaid",
|
|
318
322
|
"vt",
|
|
319
323
|
], ignore_missing_imports = true },
|
|
320
324
|
]
|
|
@@ -325,7 +329,6 @@ addopts = [
|
|
|
325
329
|
"--cov",
|
|
326
330
|
"--cov-report=term",
|
|
327
331
|
"--numprocesses=auto",
|
|
328
|
-
"--dist=loadgroup",
|
|
329
332
|
]
|
|
330
333
|
# https://docs.pytest.org/en/latest/customize.html#pyproject-toml
|
|
331
334
|
markers = [
|
|
@@ -341,7 +344,7 @@ run.source = [ "repomatic" ]
|
|
|
341
344
|
report.precision = 2
|
|
342
345
|
|
|
343
346
|
[tool.bumpversion]
|
|
344
|
-
current_version = "
|
|
347
|
+
current_version = "7.1.0"
|
|
345
348
|
# Parse versions with an optional .devN suffix (PEP 440).
|
|
346
349
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)(\\.dev(?P<dev>\\d+))?"
|
|
347
350
|
serialize = [
|
|
@@ -423,8 +426,19 @@ exclude = [
|
|
|
423
426
|
"archive\\.ph",
|
|
424
427
|
# npmjs.com returns 403 to bots.
|
|
425
428
|
"^https://www\\.npmjs\\.com/package/.*$",
|
|
429
|
+
# VirusTotal analysis pages are a JS app that rate-limits bots, and the
|
|
430
|
+
# binaries page links one per released binary.
|
|
431
|
+
"^https://www\\.virustotal\\.com/gui/.*$",
|
|
426
432
|
# star-history.com fragments are JS-rendered and invisible to lychee.
|
|
427
433
|
"^https://star-history\\.com/.*$",
|
|
434
|
+
# githubstatus.com returns 405 to HEAD requests from bots.
|
|
435
|
+
"githubstatus\\.com",
|
|
436
|
+
# Local intra-docs heading fragments are Sphinx cross-references, validated
|
|
437
|
+
# at doc build time via `myst_heading_anchors`. Lychee's GitHub-style slugger
|
|
438
|
+
# strips dots (`cache.dir` → `cachedir`) and cannot see MyST `(target)=`
|
|
439
|
+
# anchors, so it would false-positive links that resolve fine in the rendered
|
|
440
|
+
# docs. Anchored to `file://` so external `.../docs/*.md#` URLs stay checked.
|
|
441
|
+
"^file://.*/docs/[\\w.-]+\\.md#",
|
|
428
442
|
]
|
|
429
443
|
exclude_path = [
|
|
430
444
|
# Template files contain $variable placeholders that are not real URLs.
|
|
@@ -441,5 +455,6 @@ abandoned-versions = [
|
|
|
441
455
|
"6.0.0",
|
|
442
456
|
"6.18.0",
|
|
443
457
|
]
|
|
458
|
+
changelog.archive-location = "./docs/changelog-archive.md"
|
|
444
459
|
exclude = [ "workflows" ]
|
|
445
460
|
pypi-package-history = [ "gha-utils", "repokit" ]
|
|
@@ -21,7 +21,8 @@ A Python CLI and `pyproject.toml` configuration that let you **release Python pa
|
|
|
21
21
|
- Cross-platform binary compilation (Linux / macOS / Windows, x86_64 / arm64)
|
|
22
22
|
- Formatting autofix for Python, Markdown, JSON, Shell, and typos
|
|
23
23
|
- Linting: Python types with mypy, YAML, GitHub Actions, workflow security, URLs, secrets, and Awesome lists
|
|
24
|
-
- Synchronization of `uv.lock`,
|
|
24
|
+
- Synchronization of `uv.lock`, GitHub Action pins, workflow version literals, and `repomatic run` tool versions with configurable stabilization cooldowns
|
|
25
|
+
- Synchronization of `.gitignore`, `.mailmap`, and Mermaid dependency graph
|
|
25
26
|
- Label management with file-based and content-based rules
|
|
26
27
|
- Inactive issue locking
|
|
27
28
|
- Static image optimization
|
|
@@ -33,7 +34,7 @@ A Python CLI and `pyproject.toml` configuration that let you **release Python pa
|
|
|
33
34
|
- [18 third-party GitHub Actions replaced](https://kdeldycke.github.io/repomatic/security.html#third-party-action-minimization) by internal CLI commands and SHA-256-verified binary downloads, keeping the supply chain attack surface minimal
|
|
34
35
|
- [8 Python linters and formatters](https://kdeldycke.github.io/repomatic/security.html#ruff-consolidation) (pylint, black, isort, pyupgrade, pydocstyle, pycln, docformatter, blacken-docs) consolidated into ruff
|
|
35
36
|
- [5 packaging and install tools](https://kdeldycke.github.io/repomatic/security.html#uv-consolidation) (poetry, build, twine, check-wheel-contents, pip-audit) consolidated into uv
|
|
36
|
-
- All `uses:` references [pinned to full commit SHAs](https://kdeldycke.github.io/repomatic/security.html#supply-chain-security)
|
|
37
|
+
- All `uses:` references [pinned to full commit SHAs](https://kdeldycke.github.io/repomatic/security.html#supply-chain-security) with stabilization windows before adopting new versions, managed entirely by self-hosted sync jobs
|
|
37
38
|
- [SLSA provenance attestations](https://kdeldycke.github.io/repomatic/security.html#supply-chain-security) on every release artifact (wheels and compiled binaries)
|
|
38
39
|
- [VirusTotal scanning](https://kdeldycke.github.io/repomatic/security.html#av-false-positive-submissions) of compiled binaries to seed AV vendor databases and reduce false positives
|
|
39
40
|
- [Trusted Publishing](https://kdeldycke.github.io/repomatic/workflows.html#github-workflows-release-yaml-jobs) for PyPI uploads: no long-lived tokens stored as secrets
|