Pelican is the software I use to publish this blog. But Pelican is more than that if you are just starting in Python or contributing to an open source project. So what makes Pelican a good learning tool? Let's see:
If you thought that a blogging software, especially one that spits out a bunch of static HTML files can't have a solid architecture you've never met Pelican. This becomes all clear when reading about Pelican's design.
Programming and computer work in general is more of a solitary activity. You talk to yourself, to the keyboard, to the program. Learning good practices from the get go is important and there is a ton of stuff a new Pythonista can learn from perusing the Contributing code section. Learn about tips for Python 2 to 3 compatibility, Github best practices or sane Git workflows, testing your code and writing unittests, setting up a development environment and so on.
Love having clear comments when reading code born in somebody else's brain. This just complements the well written documentation.
It's always fun to open up the hood and get to know the internals of the machinery you are using frequently. Especially when you are embarking on the development path.
Wondering about circular definitions in Python Language Reference?
enclosure ::= parenth_form | list_display | dict_display | set_display | generator_expression | yield_atom
parenth_form ::= "(" [starred_expression] ")"
starred_expression ::= expression | ( starred_item "," )* [starred_item]
starred_item ::= expression | "*" or_expr …