Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Real Python Materials

Bonus materials, exercises, and example projects for Real Python's Python tutorials.

Build Status: GitHub Actions

Got a Question?

The best way to get support for Real Python courses, articles, and code in this repository is to join one of our weekly Office Hours calls or to ask your question in the RP Community Chat.

Due to time constraints, we cannot provide 1:1 support via GitHub. See you on Slack or on the next Office Hours call 🙂

Adding Source Code & Sample Projects to This Repo (RP Contributors)

Running Code Style Checks

We use flake8 and black to ensure a consistent code style for all of our sample code in this repository.

Run the following commands to validate your code against the linters:

$ flake8
$ black --check .

Running Python Code Formatter

We're using a tool called black on this repo to ensure consistent formatting. On CI it runs in "check" mode to ensure any new files added to the repo follow PEP 8. If you see linter warnings that say something like "would reformat" it means that black disagrees with your formatting.

The easiest way to resolve these errors is to run Black locally on the code and then commit those changes, as explained below.

To automatically re-format your code to be consistent with our code style guidelines, run black in the repository root folder:

$ black .


Bonus materials, exercises, and example projects for our Python tutorials







No releases published


No packages published