🧰 Modernize project tooling, CI, and documentation#1768
Merged
Conversation
Pylint has first-class support for stdlib @DataClass and counts each field annotation as an instance attribute. The earlier attr.dataclass decorator was opaque to pylint, so the 9-attribute TwenteMilieu class never tripped the max-attributes = 8 limit. Bump the limit to 9 to match reality. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The build-shield URL pointed at a non-existent "Continuous Integration" workflow, rendering as a broken image. Point it at the Testing workflow using the modern actions/workflows/<file>/badge.svg form. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed Changes
Modernizes the project's tooling, CI, and documentation.
The
pyproject.tomlhas been migrated to the PEP 621[project]table with Poetry v2, usingpoetry-core>=2.0,dynamic = ["dependencies"], andrequires-poetry = '>=2.0'. Type checking has moved frommypytoty, with the configuration, dev dependency, pre-commit hook, and CI workflow all updated accordingly. The pre-commit runner is nowprekinstead of
pre-commit, and a newzizmorhook and CI job have been added to audit GitHub Actions workflows for common security issues.Python 3.14 is now a first-class target: it has been added to the classifiers, the CI test matrix, and the devcontainer. The devcontainer itself has been switched to a
base:ubuntuimage with the Python 3.14 feature, and itsupdateContentCommandnow runsprek install.All CI workflows have been SHA-pinned for third-party actions, madecredential-less via
persist-credentials: false, and given job-scoped permissions. Newdependency-reviewandscorecardworkflows have been introduced alongside a workflow-levelrequirements.txt. The sigstore signing step has been dropped from release, the SonarCloud step has been dropped from tests, and thestale.yamlandcodeql.yamlworkflows have been removed in favor of the scorecard-based approach.Community files have been refreshed: a
SECURITY.mdhas been added, the oldISSUE_TEMPLATE.mdhas been converted into a properISSUE_TEMPLATE/directory, the Code of Conduct has been bumped to Contributor Covenant v3.0,dependabot.ymlhas been removed in favor of Renovate-only, and Renovate itself now extendshelpers:pinGitHubActionDigests. As part of the cleanup,sonar-project.propertiesand a duplicate.github/LICENSE.mdhavebeen removed,
.gitignorehas been updated to drop.mypy_cacheand.ruff_cacheand add.ty/, and copyright years have been bumped to 2026.On the source side,
from attr import dataclasshas been replaced with stdlibdataclasses.dataclass, removing reliance on an undeclared transitiveattrsdependency, and a ruffUP041finding has been fixed (asyncio.TimeoutError→TimeoutError). The README has also received some overdue love: a typo in the usage example has been corrected (pickup→pickups),pre-commitreferences have been replaced withprek, the stale SonarCloud badge has been removed, and the minimum NodeJS version has been bumped to 24+.