  In this paper we present the Python framework pySDC for solving collocation
problems with spectral deferred correction methods (SDC) and their
time-parallel variant PFASST, the parallel full approximation scheme in space
and time. pySDC features many implementations of SDC and PFASST, from simple
implicit time-stepping to high-order implicit-explicit or multi-implicit
splitting and multi-level spectral deferred corrections. It comes with many
different, pre-implemented examples and has seven tutorials to help new users
with their first steps. Time-parallelism is implemented either in an emulated
way for debugging and prototyping as well as using MPI for benchmarking. The
code is fully documented and tested using continuous integration, including
most results of previous publications. Here, we describe the structure of the
code by taking two different perspectives: the user's and the developer's
perspective. While the first sheds light on the front-end, the examples and the
tutorials, the second is used to describe the underlying implementation and the
data structures. We show three different examples to highlight various aspects
of the implementation, the capabilities and the usage of pySDC. Also, couplings
to the FEniCS framework and PETSc, the latter including spatial parallelism
with MPI, are described.
