Purpose and content - cma-open/cmatools GitHub Wiki

The purpose of the cmatools repo

  • illustrate interdependence between core and dependency repos
  • begin to develop common used code for sharing amongst science projects

These have been created for TRAINING USE ONLY (but could be developed further for more practical use)

cmatools and cmascince repos are intended to work as follows

  • Both repos

    • Can be used as examples of the layout and content of a typical, basic, python package
    • Can be used as a "template" from which the user can create a new repo with this existing content and files - acting as a quick start content on which to base the development of a new project
  • cmatools

    • Illustrates how a repo can be created to hold commonly used tools, functions, or scripts that can be useful across a wide range of other projects
    • The cmatools is not science or project focused, its purpose is to support other more project focused repos
  • cmascience

    • Illustrates a basic functional python project that could be used as a base for development of a science based project repo
    • Examples include the creation of a new command line science analysis tool
    • Illustrates how dependencies can be automatically available from other repos, such as cma-tools
  • Use and Workflows

In this scenario, using the two repos, it would be expected that as a science project develops, such as cmascience, that any tools, scripts or functions that are considered generic, would be ported to the cmatools repo, and called from there. The cmatools would therefore increase and develop over time and hold a range of tools likely to be useful for other cma scientists

  • Learning content and template coverage

    Across the two repos, examples and initial template structure are provided for:

    • layout of the python package directory and subdirectory structure
    • naming of directories/packages/scripts
    • use of config files
    • test structure and subdivisions
    • documentation pages
    • mermaid diagrams (flowcharts)
    • use of GitHub Actions/Workflows
    • helper shell scripts
    • setup and use of conda environments