Cement Developer Guide

Last updated last month

What is Cement?

Cement is an advanced application framework for Python, with a primary focus on Command Line Interfaces (CLI). Its goal is to introduce a standard, and feature-full platform for both simple and complex command line applications as well as support rapid development needs without sacrificing quality. Cement is flexible, and its use cases span from the simplicity of a micro-framework to the complexity of a mega-framework. Whether its a single file script, or a multi-tier application, Cement is the foundation you've been looking for.

The first commit to Git was on Dec 4, 2009. Since then, the framework has seen several iterations in design, and has continued to grow and improve since its inception. Cement is the most stable, and complete framework for command line and backend application development.

Core Features

Cement core features include (but are not limited to):

  • Core pieces of the framework are customizable via handlers/interfaces

  • Extension handler to easily extend framework functionality

  • Config handler merges defaults, multiple files, and environment variables into one config

  • Argument handler parses command line arguments and options

  • Log handler supports logging to console and file

  • Plugin handler provides the ability to easily extend your application

  • Output handler renders data to the end-user (often via template handler backends)

  • Template handler renders content and file templates

  • Cache handler adds caching support for improved performance or key/value storage

  • Controller handler supports sub-commands, and nested/embedded controllers

  • Hook support adds a bit of magic to apps and also ties into framework

  • Zero external dependencies* (not including optional extensions)

  • 100% test coverage using pytest and coverage

  • 100% PEP8 and style compliant using flake8

  • Extensive Developer Guide and API Reference Documentation

  • Tested on Python 3.5+

  • Does not support Python 2.x

Some optional extensions that are shipped with the mainline Cement sources do require external dependencies. It is the responsibility of the application developer to include these dependencies along with their application, as Cement explicitly does not include them.

License

The Cement Framework is Open Source and is distributed under the BSD License (three clause). Copyright (c) 2009-2018 Data Folk Labs, LLC. All rights reserved.

Projects Built on Cement™

The following are some notable projects that are Built on Cement™:

A more complete list of projects that depend on Cement can be found at Librario.io. If you are building a project on the Cement Framework and would like to see your company or project listed here please create an issue and/or pull request on GitHub.