  We present a new open-source Python package for exact diagonalization and
quantum dynamics of spin(-photon) chains, called QuSpin, supporting the use of
various symmetries in 1-dimension and (imaginary) time evolution for chains up
to 32 sites in length. The package is well-suited to study, among others,
quantum quenches at finite and infinite times, the Eigenstate Thermalisation
hypothesis, many-body localisation and other dynamical phase transitions,
periodically-driven (Floquet) systems, adiabatic and counter-diabatic ramps,
and spin-photon interactions. Moreover, QuSpin's user-friendly interface can
easily be used in combination with other Python packages which makes it
amenable to a high-level customisation. We explain how to use QuSpin using four
detailed examples: (i) Standard exact diagonalisation of XXZ chain (ii)
adiabatic ramping of parameters in the many-body localised XXZ model, (iii)
heating in the periodically-driven transverse-field Ising model in a parallel
field, and (iv) quantised light-atom interactions: recovering the
periodically-driven atom in the semi-classical limit of a static Hamiltonian.
