LogoLogo
Official SiteAPI Reference
stable/3.0
stable/3.0
  • Cement Developer Guide
  • Release Information
    • What's New!
    • Upgrading
    • ChangeLog
    • Deprecations
  • Getting Started
    • Installation
    • Developer Tools
    • Framework Overview
    • Beginner Tutorial
      • Part 1: Creating Your First Project
      • Part 2: Adding Features
      • Part 3: Extending a Project
      • Part 4: Making Everything Legit
  • Core Foundation
    • Interfaces and Handlers
    • Hooks
    • Configuration Settings
    • Arguments
    • Logging
    • Controllers
    • Output Rendering
    • Caching
    • Mail Messaging
    • Framework Extensions
    • Application Plugins
    • Templating
  • Utilities
    • Filesystem
    • Shell
    • Miscellaneous
  • Extensions
    • Alarm
    • Argparse
    • Colorlog
    • ConfigParser
    • Daemon
    • Dummy
    • Generate
    • Jinja2
    • Json
    • Logging
    • Memcached
    • Mustache
    • Plugin
    • Print
    • Redis
    • Scrub
    • SMTP
    • Tabulate
    • Yaml
    • Watchdog
  • Additional Topics
    • Extending The App Object
    • Unit Testing
    • Cleanup
    • Signal Handling
    • Pipenv
    • Autocomplete
    • Profiling with cProfile
    • Debugging with VSCode
  • Environment Variables
  • Terminology
  • Contributing
  • Privacy Policy
Powered by GitBook
On this page
  • What is Cement?
  • Core Features
  • License
  • Projects Built on Cement™

Cement Developer Guide

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.7+

  • 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

Projects Built on Cement™

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

NextRelease Information

Last updated 2 years ago

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

()

()

()

A more complete list of projects that depend on Cement can be found at . If you are building a project on the Cement Framework and would like to see your company or project listed here .

BSD License (three clause)
Amazon Elastic Beanstalk CLI
PYPI
Easy Engine
GitHub
SentientHome
Pubkey
HCE Project
QLDS Manager
GitHub
Librario.io
please create an issue and/or pull request on GitHub