  PyLlama is a handy Python toolkit to compute the electromagnetic reflection
and transmission properties of arbitrary multilayered linear media, including
the case of anisotropy. Relying on a $4 \times 4$-matrix formalism, PyLlama
implements not only the transfer matrix method, that is the most popular choice
in existing codes, but also the scattering matrix method, which is numerically
stable in all situations (e.g., thick, highly birefringent cholesteric
structures at grazing incident angles). PyLlama is also designed to suit the
practical needs by allowing the user to create, edit and assemble layers or
multilayered domains with great ease. In this article, we present the
electromagnetic theory underlying the transfer matrix and scattering matrix
methods and outline the architecture and main features of PyLlama. Finally, we
validate the code by comparison with available analytical solutions and
demonstrate its versatility and numerical stability by modelling cholesteric
media of varying complexity. A detailed documentation and tutorial are provided
in a separate user manual. Applications of PyLlama range from the design of
optical components to the study of structurally coloured materials in the
living world.
