Abstract. sympl (System for Modelling Planets) and climt (Climate Modelling and diagnostics Toolkit) represent an attempt to rethink climate modelling frameworks from the ground up. The aim is to use expressive data structures available in the scientific Python ecosystem along with best practices in software design to build models that are self-documenting, highly inter-operable and that provide fine grained control over model components and behaviour. We believe that such an approach towards building models is essential to allow scientists to easily and reliably combine model components to represent the 5 climate system at a desired level of complexity, and to enable users to fully understand what the model is doing.sympl is a framework which formulates the model in terms of a "state" which gets evolved forward in time by TimeStepper and Implicit components, and which can be modified by Diagnostic components. TimeStepper components in turn rely on Prognostic components to compute tendencies. Components contain all the information about the kinds of inputs they expect and outputs that they provide. Components can be used interchangeably, even when they rely on different units or array 10 configurations. sympl provides basic functions and objects which could be used by any type of Earth system model.climt is an Earth system modelling toolkit that contains scientific components built over the sympl base objects. Components can be written in any language accessible from Python, and Fortran/C libraries are accessed via Cython. climt aims to provide different user APIs which trade-off simplicity of use against flexibility of model building, thus appealing to a wide audience.
15Model building, configuration and execution is through a Python script (or Jupyter Notebook), enabling researchers to build an end-to-end Python based pipeline along with popular Python based data analysis tools. Because of the modularity of the individual components, using online data analysis, visualisation or assimilation algorithms and tools with sympl/climt components is extremely simple.