  In this article, we present Gammapy, an open-source Python package for the
analysis of astronomical $\gamma$-ray data, and illustrate the functionalities
of its first long-term-support release, version 1.0. Built on the modern Python
scientific ecosystem, Gammapy provides a uniform platform for reducing and
modeling data from different $\gamma$-ray instruments for many analysis
scenarios. Gammapy complies with several well-established data conventions in
high-energy astrophysics, providing serialized data products that are
interoperable with other software packages. Starting from event lists and
instrument response functions, Gammapy provides functionalities to reduce these
data by binning them in energy and sky coordinates. Several techniques for
background estimation are implemented in the package to handle the residual
hadronic background affecting $\gamma$-ray instruments. After the data are
binned, the flux and morphology of one or more $\gamma$-ray sources can be
estimated using Poisson maximum likelihood fitting and assuming a variety of
spectral, temporal, and spatial models. Estimation of flux points, likelihood
profiles, and light curves is also supported. After describing the structure of
the package, we show, using publicly available $\gamma$-ray data, the
capabilities of Gammapy in multiple traditional and novel $\gamma$-ray analysis
scenarios, such as spectral and spectro-morphological modeling and estimations
of a spectral energy distribution and a light curve. Its flexibility and power
are displayed in a final multi-instrument example, where datasets from
different instruments, at different stages of data reduction, are
simultaneously fitted with an astrophysical flux model.
