simpl is a collection of useful, common python libraries, primarily for building web services and APIs


Keywords
common, resuable, suitable, fruitful
License
Apache-2.0
Install
pip install simpl==1.1.0

Documentation

simpl

Build Status Coverage Status

Common Python libraries for:

Config

Supports argparse-like configuration options with support for the following configuration methods:

  • command-line arguments
  • environment variables
  • keychain (OSX) and keyring (Linux)
  • ini/config files

Logging (simpl.log)

Encapsulates logging boilerplate code to initialize logging using the config module.

Sensitive Value Helpers

Helpers for managing sensitive values.

Python Utilities

Code we wished was built in to python (or was simpler to use):

  • dictionary and list merging
  • dictionary get/set/in by path

Running a web service

  • Perform standard webserver configuration (address, port, server adapter, etc.) using the config module
  • Run the bottle-based webservice using this configuration

WSGI middleware

Includes sample middleware for use with WSGI apps including bottle.

Middleware included:

  • CORS: handles CORS requests
  • Context: handles setting a threadlocal context and adds a transaction ID.
  • Errors: handles catching and formatting errors

REST API Tooling

Helper code for handling RESTful APIs using bottle.

Code included:

  • body: a decorator that parses a call body and passes it to a route as an argument. The decorator can apply a schema (any callable including a voluptuous.Schema), return a default, and enforce that a body is required.
  • paginated: a decorator that returns paginated data with correct limit/offset validation and HTTP responses.
  • process_params: parses query parameters from bottle request

Date/Time Utilites

Provides functions that consistently format date/time and timestamp data for use in APIs.

MongoDB Backend Wrapper

Implements an opinionated wrapper for MongoDB databases and collections that works with the [rest][#rest] module and supports query param filtering (including text search) and pagination of backend collections.

release

latest

builds

Branch Status
master Build Status