  Programmable arrays of hundreds of Rydberg atoms have recently enabled the
exploration of remarkable phenomena in many-body quantum physics. In addition,
the development of high-fidelity quantum gates are making them promising
architectures for the implementation of quantum circuits.
  We present here \textit{Pulser}, an open-source Python library for
programming neutral-atom devices at the pulse level. The low-level nature of
Pulser makes it a versatile framework for quantum control both in the digital
and analog settings. The library also contains simulation routines for studying
and exploring the outcome of pulse sequences for small systems.
