Starting your project
Python versions
Project layout
Version numbering
Coding style & automated checks
Modules and libraries
The import system
Standard libraries
External libraries
Frameworks
Interview with Doug Hellmann
Managing API changes
Interview with Christophe de Vienne
Documentation
Getting started with Sphinx and reST
Sphinx modules
Extending Sphinx
Distribution
A bit of history
Packaging with pbr
The Wheel format
Package installation
Sharing your work with the world
Interview with Nick Coghlan
Entry points
Visualising entry points
Using console scripts
Using plugins and drivers
Virtual environments
Unit testing
The basics
Fixtures
Mocking
Scenarios
Test streaming and parallelism
Coverage
Using virtualenv with tox
Testing policy
Interview with Robert Collins
Methods and decorators
Creating decorators
How methods work in Python
Static methods
Class method
Abstract methods
Mixing static, class, and abstract methods
The truth about super
Functional programming
Generators
List comprehensions
Functional functions functioning
The AST
Hy
Interview with Paul Tagliamonte
Performances and optimizations
Data structures
Profiling
Ordered list and bisect
Namedtuple and slots
Memoization
PyPy
Achieving zero copy with the buffer protocol
Interview with Victor Stinner
Scaling and architecture
A note on multi-threading
Multiprocessing vs multithreading
Asynchronous and event-driven architecture
Service-oriented architecture
RDBMS and ORM
Streaming data with Flask and PostgreSQL
Interview with Dimitri Fontaine
Python 3 support strategies
Language and standard library
External libraries
Using six
Write less, code more
Single dispatcher
Context managers