Skip to content

[Tooling & Documentation]: Upgrade to python 3.13.5#74

Merged
BethanyG merged 22 commits intoexercism:mainfrom
BethanyG:upgrade-to-python-3.13
Feb 19, 2026
Merged

[Tooling & Documentation]: Upgrade to python 3.13.5#74
BethanyG merged 22 commits intoexercism:mainfrom
BethanyG:upgrade-to-python-3.13

Conversation

@BethanyG
Copy link
Member

@BethanyG BethanyG commented Feb 17, 2026

This will need to be merged all at once with changes to the runner, the analyzer, and the content repo.

Please also note that the number of files here is due to having to add golden test results, exercise config directories, and code/comments from PyLint. Those files need not be reviewed.


  • Moved to python:3.13.5-alpine3.22 as Python container version in Dockerfile.
  • Moved to Python 3.13.5 associated PyTest, PyTest-subtests, Black, and PyLint, in requirements.txt and dev-requirements.txt
  • Modified the core Analyzer files (lib/common/comment.py, lib/common/exercise.py, & lib/common/pylint_comments.py) to use pylint.run_pylint as pylint.epylint has been deprecated.
  • Modified lib/common/pylint_comments.py to look up and include extended PyLint rule details including good/bad code examples, related link info, and other details.
  • Modified lib/common/exercise.py to add a path to /lib/common/generic_analyzer/analyzer.py when no specific or custom analyzer is found for an exercise. This ensures that PyLint is run (and gives feedback on) all exercises, including practice exercises.
  • Added new lib/common/generic_analyzer/analyzer.py. This runs PyLint for a given exercise, and is used when there aren't specific customizations or a specific analyzer.py for an exercise.
  • Added a new test_analyzer.py test file for golden tests. This is in addition to the more specific two_fer_test.py that tests the two-fer analysis.
  • Created new run-tests-in-docker.sh to more easily run tests for the Analyzer in the built docker container.
  • Modified and cleaned up run-in-docker.sh, run.sh, and run.py.
  • Added Analyzer "golden" analysis tests for select exercises. These spot-check that certain solutions result in certain analysis file output. There are now 45 tests for the Analyzer with recorded analysis.json files.
  • Added a exercise-names.txt file to/lib/common/. This is read in by the analyzer and added to the ANALYZERS "allowed" dictionary, pointing to the generic analyzer when no custom analyzer is found.
  • Added PyLint documentation examples of "bad" and "good" code for select linting rules. This is all included in the lib/common/pylint_data/ directory. This addition, along with "details" and "related" files have exploded this PR. However, these filed DO NOT need to be reviewed, as they are copies from PyLints docs.
  • Modified /comments/general/ to add a general_recommendations.md file with 10 tips that is returned when the analyzer has no feedback for a solution. Also modified the files under /comments/pylint/ to include the new details from PyLint. These were needed for testing, but have also been PRd to website-copy in anticipation of this PR being merged.
  • Modified the README.md file to reflect that tests have to be run inside the docker container, and can no longer be called through run.sh without modifying code.

…dded extended PyLint messaging for PyLint comments. Added a generic analyzer for when no custom analyzer is found.
@BethanyG BethanyG added x:size/large Large amount of work x:rep/large Large amount of reputation x:rep/massive Massive amount of reputation and removed x:size/large Large amount of work x:rep/large Large amount of reputation labels Feb 17, 2026
…ames from file instead of using empty directories,
@BethanyG BethanyG merged commit 22e8d14 into exercism:main Feb 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

x:rep/massive Massive amount of reputation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments