  We review the GPAW open-source Python package for electronic structure
calculations. GPAW is based on the projector-augmented wave method and can
solve the self-consistent density functional theory (DFT) equations using three
different wave-function representations, namely real-space grids, plane waves,
and numerical atomic orbitals. The three representations are complementary and
mutually independent and can be connected by transformations via the real-space
grid. This multi-basis feature renders GPAW highly versatile and unique among
similar codes. By virtue of its modular structure, the GPAW code constitutes an
ideal platform for implementation of new features and methodologies. Moreover,
it is well integrated with the Atomic Simulation Environment (ASE) providing a
flexible and dynamic user interface. In addition to ground-state DFT
calculations, GPAW supports many-body GW band structures, optical excitations
from the Bethe-Salpeter Equation (BSE), variational calculations of excited
states in molecules and solids via direct optimization, and real-time
propagation of the Kohn-Sham equations within time-dependent DFT. A range of
more advanced methods to describe magnetic excitations and non-collinear
magnetism in solids are also now available. In addition, GPAW can calculate
non-linear optical tensors of solids, charged crystal point defects, and much
more. Recently, support of GPU acceleration has been achieved with minor
modifications of the GPAW code thanks to the CuPy library. We end the review
with an outlook describing some future plans for GPAW.
