Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 3 additions & 8 deletions .github/workflows/ci-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ name: Exercises check
on:
push:
branches:
- master
- main
pull_request:

Expand All @@ -19,7 +18,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548
with:
python-version: 3.11.2
python-version: 3.13.5

- name: Download & Install dependencies
run: |
Expand Down Expand Up @@ -53,20 +52,16 @@ jobs:
needs: housekeeping
strategy:
matrix:
python-version: [3.7, 3.8, 3.9, 3.10.6, 3.11.2]
python-version: [3.10.6, 3.11.2, 3.12, 3.13.5]
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8

- uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548
with:
python-version: ${{ matrix.python-version }}

- name: Install dataclasses package
if: ${{ matrix.python-version == '3.6' }}
run: pip install dataclasses

- name: Install pytest
run: pip install pytest~=7.2.2
run: pip install pytest~=8.4.0

- name: Check exercises
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-runner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

jobs:
test-runner:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
- name: Run test-runner
Expand Down
23 changes: 11 additions & 12 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ Hi.  👋🏽  👋  **We are happy you are here.**  🎉&nb
**`exercism/Python`** is one of many programming language tracks on [exercism(dot)org][exercism-website].
This repo holds all the instructions, tests, code, & support files for Python _exercises_ currently under development or implemented & available for students.

🌟   Track exercises support Python `3.7` - `3.11.5`.
🌟   Track exercises support Python `3.10` - `3.13.5`.
Exceptions to this support are noted where they occur.
🌟   Track tooling (_test-runner, representer, analyzer, and Continuous Integration_) runs on Python `3.11.2`.
🌟   Track tooling (_test-runner, representer, analyzer, and Continuous Integration_) runs on Python `3.13.5`.

Exercises are grouped into **concept** exercises which teach the [Python syllabus][python-syllabus], and **practice** exercises, which are unlocked by progressing in the syllabus tree  🌴 .
Concept exercises are constrained to a small set of language or syntax features.
Expand Down Expand Up @@ -71,15 +71,14 @@ We're leaving the track contributing docs below for our long-term collaborators
<p vertical-align="middle"><h2 id="in-general">In General</h2></p>
<br>

- Maintainers are happy to review your work and help troubleshoot with you.&nbsp;💛&nbsp;💙&nbsp;
- Maintainers are happy to review your work and help troubleshoot with you.&nbsp;💛&nbsp;💙&nbsp; If you need help, comment in the Pull Request/issue.&nbsp; 🙋🏽‍♀️ &nbsp;
- **Please wait at least 72 hours before pinging or `@`ing reviewers directly.**
- Requests are reviewed as soon as is practical/possible.
- (❗&nbsp;) Reviewers may be in a different timezone&nbsp;⌚&nbsp;, or tied up &nbsp;🧶&nbsp; with other tasks.
- **Please wait at least 72 hours before pinging.**
- If you need help, comment in the Pull Request/issue.&nbsp; 🙋🏽‍♀️ &nbsp;
- (❗&nbsp;) Keep in mind that reviewers may be in a different timezone&nbsp;⌚&nbsp;, or tied up &nbsp;🧶&nbsp; with other tasks.
- If you would like in-progress feedback/discussion, please mark your Pull Request as a **`[draft]`**
- Pull Requests should be focused around a single exercise, issue, or change.
- Pull Request titles and descriptions should make clear **what** has changed and **why**.
- Please link &nbsp;🔗&nbsp; to any related issues the PR addresses.
- Please link &nbsp;🔗&nbsp; to any related forum discussions or issues the PR addresses.
- 📛&nbsp;[ Open an issue ][open-an-issue]📛&nbsp; and discuss it with &nbsp;🧰 &nbsp;maintainers _**before**_:
- creating a Pull Request making significant or breaking changes.
- for changes across multiple exercises, even if they are typos or small.
Expand Down Expand Up @@ -204,13 +203,13 @@ _We know it, and trust us, we are working on fixing it._ But if you see &nbsp;

<br>

This track officially supports Python `3.7 - 3.11.2` for students completing exercises.
The track `test runner`, `analyzer`, and `representer` run in docker on `python:3.11.2-slim`.
This track officially supports Python `3.10 - 3.13.5` for students completing exercises.
The track `test runner`, `analyzer`, and `representer` run in docker on `python:3.13.5-alpine3.22`.

Although the majority of test cases are written using `unittest.TestCase`,

- All exercises should be written for compatibility with Python `3.7` - `3.11.2`.
- Version backward _incompatibility_ (_e.g_ an exercise using features introduced in `3.8`, `3.9`, or `3.10`) should be clearly noted in any exercise hints, links, introductions or other notes.
- All exercises should be written for compatibility with Python `3.10` - `3.13.5`.
- Version backward _incompatibility_ (_e.g_ an exercise using features introduced in Python `3.10`+ that would not work in Python `3.10`) should be clearly noted in any exercise hints, links, introductions or other notes.

- Here is an example of how the Python documentation handles [version-tagged &nbsp;🏷&nbsp;][version-tagged-language-features] feature introduction.

Expand All @@ -231,7 +230,7 @@ Although the majority of test cases are written using `unittest.TestCase`,

- For specifications, refer to [Concept Exercise Anatomy][concept-exercise-anatomy], or [Practice Exercise Anatomy][practice-exercise-anatomy] depending on which type of exercise you are contributing to.

- **Practice exercise**, descriptions and instructions come from a centralized, cross-track [problem specifications][problem-specifications] repository.
- **Practice exercise** descriptions and instructions come from a centralized, cross-track [problem specifications][problem-specifications] repository.

- Any updates or changes need to be proposed/approved in `problem-specifications` first.
- If Python-specific changes become necessary, they need to be appended to the canonical instructions by creating a `instructions.append.md` file in this (`exercism/Python`) repository.
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ Hi. &nbsp;👋🏽 &nbsp;👋 &nbsp;**We are happy you are here.**&nbsp; 🎉&nb
**`exercism/Python`** is one of many programming language tracks on [exercism(dot)org][exercism-website].
This repo holds all the instructions, tests, code, & support files for Python _exercises_ currently under development or implemented & available for students.

🌟 &nbsp;&nbsp;Track exercises support Python `3.7` - `3.11.5`.
🌟 &nbsp;&nbsp;Track exercises support Python `3.10` - `3.13.5`.
Exceptions to this support are noted where they occur.
🌟 &nbsp;&nbsp;Track tooling (_test-runner, representer, analyzer, and Continuous Integration_) runs on Python `3.11.5`.
🌟 &nbsp;&nbsp;Track tooling (_test-runner, representer, analyzer, and Continuous Integration_) runs on Python `3.13.5`.

Exercises are grouped into **concept** exercises which teach the [Python syllabus][python-syllabus], and **practice** exercises, which are unlocked by progressing in the syllabus tree &nbsp;🌴&nbsp;.
Concept exercises are constrained to a small set of language or syntax features.
Expand Down Expand Up @@ -84,7 +84,7 @@ _Thoughtful suggestions will likely result in faster & more enthusiastic respons

## Python Software and Documentation

**Copyright © 2001-2025 Python Software Foundation. All rights reserved.**
**Copyright © 2001-2026 Python Software Foundation. All rights reserved.**

Python software and documentation are licensed under the [PSF License Agreement][psf-license].

Expand Down
24 changes: 12 additions & 12 deletions docs/ABOUT.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@ Code can be written and executed from the command line, in an interactive interp
The [zen of Python (PEP 20)][the zen of python] and [What is Pythonic?][what is pythonic] lay out additional philosophies and perspectives on the language.


Tests and tooling for this track currently support `3.7` - `3.11.2` (_tests_) and [`Python 3.11.2`][311-new-features] (_tooling_).
It is highly recommended that students upgrade to at least `Python 3.8`, as some features used by this track may not be supported in earlier versions.
Tests and tooling for this track currently support `3.10` - `3.13.5` (_tests_) and [`Python 3.13.5`][313-new-features] (_tooling_).
It is highly recommended that students upgrade to at least `Python 3.10`, as some features used by this track may not be supported in earlier versions.
That being said, most of the exercises will work with `Python 3.6+`, or even earlier versions.
But we don't guarantee support for versions not listed under [Active Python Releases][active-python-releases].
We will try to note when a feature is only available in a certain version.


Complete documentation for the current release of Python (3.11.x) can be found at [docs.python.org][python docs].
Complete documentation for the current release of Python (3.13.x) can be found at [docs.python.org][python docs].

- [Python Tutorial][python tutorial]
- [Python Library Reference][python library reference]
Expand All @@ -37,8 +37,8 @@ Complete documentation for the current release of Python (3.11.x) can be found a
- [Python Glossary of Terms][python glossary of terms]


[311-new-features]: https://docs.python.org/3/whatsnew/3.11.html
[active-python-releases]: https://www.python.org/downloads/
[313-new-features]: https://docs.python.org/3/whatsnew/3.13.html
[active-python-releases]: https://devguide.python.org/versions/#full-chart
[duck typing]: https://en.wikipedia.org/wiki/Duck_typing
[dynamic typing in python]: https://stackoverflow.com/questions/11328920/is-python-strongly-typed
[editors for python]: https://djangostars.com/blog/python-ide/
Expand All @@ -49,16 +49,16 @@ Complete documentation for the current release of Python (3.11.x) can be found a
[peps]: https://www.python.org/dev/peps/
[psf membership]: https://www.python.org/psf/membership/
[psf]: https://www.python.org/psf/
[python docs]: https://docs.python.org/3/
[python faqs]: https://docs.python.org/3/faq/index.html
[python docs]: https://docs.python.org/3.13/
[python faqs]: https://docs.python.org/3.13/faq/index.html
[python for beginners]: https://www.python.org/about/gettingstarted/
[python glossary of terms]: https://docs.python.org/3/glossary.html
[python how tos]: https://docs.python.org/3/howto/index.html
[python how tos]: https://docs.python.org/3.13/howto/index.html
[python is used extensively]: https://www.python.org/about/apps/
[python language reference]: https://docs.python.org/3/reference/index.html
[python library reference]: https://docs.python.org/3/library/index.html
[python tutorial]: https://docs.python.org/3/tutorial/index.html
[significant indentation]: https://docs.python.org/3/reference/lexical_analysis.html#indentation
[python language reference]: https://docs.python.org/3.13/reference/index.html
[python library reference]: https://docs.python.org/3.13/library/index.html
[python tutorial]: https://docs.python.org/3.13/tutorial/index.html
[significant indentation]: https://docs.python.org/3.13/reference/lexical_analysis.html#indentation
[the zen of python]: https://www.python.org/dev/peps/pep-0020/
[type hints]: https://docs.python.org/3/library/typing.html
[what is pythonic]: https://blog.startifact.com/posts/older/what-is-pythonic.html
15 changes: 8 additions & 7 deletions docs/INSTALLATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,24 +14,25 @@ Some quick links into the documentation by operating system:

- [Windows][windows] Additionally, this Microsoft article on [installing Python on windows][python-on-windows] is helpful.
- [Unix & Linux Systems][unix-and-linux] (_these largely work for MacOS as well_)
- [MacOS][macos] : **This is outdated.**
We recommend reviewing some of the methods outlined in the Real Python article [Installing Python][installing-python] or the articles by Brett Cannon linked above.
- [MacOS][macos]

We also recommend reviewing some of the methods outlined in the Real Python article [Installing Python][installing-python] or the articles by Brett Cannon linked above.

Exercism tests and tooling currently support `3.7` - `3.11.5` (_tests_) and [`Python 3.11.5`][311-new-features] (_tooling_).

Exercism tests and tooling currently support `3.10` - `3.13.5` (_tests_) and [`Python 3.13.5`][313-new-features] (_tooling_).
Exceptions to this support are noted where they occur.
Most of the exercises will work with `Python 3.6+`, or even earlier versions.
But we don't guarantee support for versions not listed under [Active Python Releases][active-python-releases].


Please refer to the [Python 3.11.x documentation][3.11 docs] for what is currently supported.
Please refer to the [Python 3.13.x documentation][3.13 docs] for what is currently supported.

[3.11 docs]: https://docs.python.org/3.11/
[311-new-features]: https://docs.python.org/3/whatsnew/3.11.html
[3.13 docs]: https://docs.python.org/3.13/
[313-new-features]: https://docs.python.org/3/whatsnew/3.13.html
[Python-three downloads]: https://www.python.org/downloads/
[active-python-releases]: https://www.python.org/downloads/
[helpful guide]: https://realpython.com/installing-python/
[installing-python]: https://realpython.com/installing-python/#what-your-options-are_1
[installing-python]: https://realpython.com/installing-python/
[macos]: https://docs.python.org/3/using/mac.html
[python-m-pip]: https://snarky.ca/why-you-should-use-python-m-pip/
[python-on-windows]: https://docs.microsoft.com/en-us/windows/python/beginners
Expand Down
30 changes: 20 additions & 10 deletions docs/LEARNING.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,19 @@ Below you will find some additional jumping-off places to start your learning jo


- [Python Documentation Tutorial][Python Documentation Tutorial]
- [Stanford Code in Place Course][code in place]
- [Stanford Code in Place Self-Guided][cip self guided]
- [Automate the Boring Stuff with Python (_book_)][automate the boring stuff]
- [Automate the Boring Stuff Videos (_covers first 15 book chapters_)][automate the videos]
- [Automate the Boring Stuff with Python Workbook (_exercises_)][automate the boring stuff workbook]
- [Think Python][Think Python]
- [Beyond the Basic Stuff with Python][beyond the basics]
- [Beyond the Basic Stuff with Python Video][beyond the basics video]
- [Python Programming Exercises, Gently Explained][PPEG]
- [Python for Non-Programmers][python-for-non-programmers]
- [Learn X in Y minutes (where X = Python3)][Learn X in Y minutes]
- [Python at Free Code Camp][python at free code camp]
- [Python at Khan Academy][python at kahn academy]
- [Intro to Python (_python-course.eu_)][python-course.eu]
- [Think Python][Think Python]
- [Python for Non-Programmers][python-for-non-programmers]
- [Python 4 Everyone][python4everyone]
- [Googles Python Class][googles python class]
- [Microsoft's Python Learning Path][MS Python]
- [Introduction to Computer Science and Programming in Python (MIT)][mitocw600]
Expand All @@ -30,14 +35,19 @@ Below you will find some additional jumping-off places to start your learning jo
[CS50P]: https://pll.harvard.edu/course/cs50s-introduction-programming-python?delta=0
[Learn X in Y minutes]: https://learnxinyminutes.com/docs/python3/
[MS Python]: https://docs.microsoft.com/en-us/learn/paths/python-language/
[PPEG]: https://inventwithpython.com/pythongently/
[Python Documentation Tutorial]: https://docs.python.org/3/tutorial/index.html
[Python at Free Code Camp]: https://www.freecodecamp.org/learn/scientific-computing-with-python/
[Think Python]: http://www.greenteapress.com/thinkpython/html/index.html
[automate the boring stuff]: https://automatetheboringstuff.com/2e/
[automate the videos]: https://www.youtube.com/watch?v=1F_OgqRuSdI&list=PL0-84-yl1fUnRuXGFe_F7qSH1LEnn9LkW
[googles python class]: https://developers.google.com/edu/python/introduction
[Python at Free Code Camp]: https://www.freecodecamp.org/learn/python-v9/
[Think Python]: https://allendowney.github.io/ThinkPython/
[automate the boring stuff workbook]: https://automatetheboringstuff.com/#toc
[automate the boring stuff]: https://automatetheboringstuff.com/#toc
[beyond the basics video]: https://www.youtube.com/watch?v=kSrnLbioN6w
[beyond the basics]: https://inventwithpython.com/beyond/
[cip self guided]: https://codeinplace.stanford.edu/public/studenthome
[code in place]: https://codeinplace.stanford.edu/
[googles python class]: https://developers.google.com/edu/python
[mitocw600]: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/
[python at kahn academy]: https://www.khanacademy.org/computing/intro-to-python-fundamentals
[python-course.eu]: https://python-course.eu/python-tutorial/
[python-for-non-programmers]: https://store.lerner.co.il/python-for-non-programmers-live
[python4everyone]: https://www.py4e.com/
[wikipython]: https://en.wikipedia.org/wiki/Python_(programming_language)
8 changes: 4 additions & 4 deletions docs/PROBLEM-SOLVING.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ Below are some community-sourced articles, videos, and books that can help you d


- Free Code Camp offers a good overview article on [How to Think Like a Programmer - Lessons in Problem-Solving][free-code-camp-think-like-a-programmer].
- Kurtis Pykes writing for Towards Data Science has a nice [hands-on tutorial for problem-solving][Kurtis Pykes: Hands-on Tutorial - How to Improve Your Problem-Solving Skills as A Programmer].
- UC Berkeley has a nice PDF summary of [G. Polya's Problem Solving Techniques][g-polya-how-to-solve-it-summary].
- Jeremy Howard, founder of fast.ai has a nice summary of [G. Polya's Problem Solving Techniques][g-polya-how-to-solve-it-summary].
- Originally written in 1945 as guidance for tackling complicated math problems,[G. Polya's How To Solve It][g-polya-how-to-solve-it] (full book) is still _excellent_ advice for problem-solving in general.
- Kurtis Pykes writing for Towards Data Science has a nice [hands-on tutorial for problem-solving][Kurtis Pykes: Hands-on Tutorial - How to Improve Your Problem-Solving Skills as A Programmer].
- Mentioned in the Free Code Camp Article, V. Anton Spraul's [Think Like a Programmer: An Introduction to Creative Problem Solving][v-anton-spraul-think-like-a-programmer] is a more modern and programming-focused take on the same general methods Polya outlines for mathematics.
- [Felienne Hermans][felienne-hermans] is more focused on _how_ people learn the art of coding and how that maps to learning in general.
She has written [The Programmers Brian][programmers-brain-free-online], with strategies for reading code better, thinking about code clearly, writing better code, and becoming a better code collaborator.
Expand All @@ -32,8 +32,8 @@ Membership (paid) information is available at [acm(dot)org][association-for-comp
[felienne-hermans-programming-is-writing-is-programming]: https://www.youtube.com/watch?v=uO3a4HIBDU4
[felienne-hermans]: https://www.felienne.com/
[free-code-camp-think-like-a-programmer]: https://www.freecodecamp.org/news/how-to-think-like-a-programmer-lessons-in-problem-solving-d1d8bf1de7d2/
[g-polya-how-to-solve-it-summary]: https://math.berkeley.edu/~gmelvin/polya.pdf
[g-polya-how-to-solve-it]: https://press.princeton.edu/books/paperback/9780691164076/how-to-solve-it
[g-polya-how-to-solve-it-summary]: https://gist.github.com/jph00/d60301884c56fe063101a7cc6193b3af
[g-polya-how-to-solve-it]: https://archive.org/details/howtosolveit0000gpol_c0p2/page/n9/mode/2up
[paul-vickers-how-to-think-like-a-programmer]: https://www.researchgate.net/publication/236270907_How_to_Think_like_a_Programmer_Problem_Solving_for_the_Bewildered
[programmers-brain-free-online]: https://www.manning.com/books/the-programmers-brain#toc
[programmers-brain-manning]: https://www.manning.com/books/the-programmers-brain
Expand Down
Loading
Loading