diecutter Package

diecutter Package

Diecutter provides API to manage and render templates.

contextextractors Module

Utilities to extract context dictionary from request.

diecutter.contextextractors.CONTEXT_EXTRACTORS = {'': <function extract_post_context at 0x20beaa0>, 'application/json': <function extract_json_context at 0x20beb90>, 'text/plain': <function extract_ini_context at 0x20bec08>, 'application/x-www-form-urlencoded': <function extract_post_context at 0x20beaa0>}

Default context extractors configuration.

This configuration is used as fallback value if EXTRACTORS_SETTINGS is not in Pyramid’s registry.

This is a dictionary where:

  • keys are (lowercase) content-types.
  • values are callables which accept one request argument and return a dictionary (or dictionary-like object).
diecutter.contextextractors.EXTRACTORS_SETTING = 'diecutter.context_extractors'

Key in Pyramid registry where context extractors configuration lives.

diecutter.contextextractors.extract_context(request)

Extract context dictionary from request and return it.

Raise NotImplementedError if request input (content-type) is not supported.

diecutter.contextextractors.extract_ini_context(request)

Extract and return context from a text/ini (ConfigParser) request.

diecutter.contextextractors.extract_json_context(request)

Extract and return context from a application/json request.

diecutter.contextextractors.extract_post_context(request)

Extract and return context from a standard POST request.

diecutter.contextextractors.get_context_extractors(request)

Return context extractors configuration from request.

exceptions Module

exception diecutter.exceptions.DataParsingError

Bases: exceptions.Exception

Input data failed to be parsed.

exception diecutter.exceptions.TemplateError

Bases: exceptions.Exception

A template failed to be rendered.

github Module

local Module

Service implementation for local files.

class diecutter.local.LocalService

Bases: diecutter.service.Service

A service that loads templates on local filesystem.

get(request)
get_resource(request)

Return the resource matching request.

Return value is a FileResource or :py:class`DirResource`.

get_resource_path(request)

Return validated (absolute) resource path from request.

Checks that resource path is inside request’s template_dir.

get_template_dir(request)

Return validated template directory configuration for request.

post(request)
put(request)

resources Module

Resources exposed on APIs.

class diecutter.resources.DirResource(path='', engine=None, filename_engine=None)

Bases: diecutter.resources.Resource

Container for other files and directories resources.

content_type
exists
get_file_resource(path)

Factory for internal FileResources.

get_tree_template()

Return FileResource that holds directory tree.

has_tree_template()

Return True if .diecutter-tree file exists.

is_file = False
read()

Return directory tree as a list of paths of file resources.

read_tree()

Generate list of paths to contained resources.

relative_filename(filename, with_prefix=True)

Return filename relative to path.

>>> from diecutter.resources import DirResource
>>> resource = DirResource(path='abs/path/no-trailing')
>>> resource.relative_filename('abs/path/no-trailing/name')
'no-trailing/name'
>>> resource.relative_filename('abs/path/no-trailing/nested/name')
'no-trailing/nested/name'

Trailing slash in path affects returned value.

>>> resource = DirResource(path='abs/path/trailing/')
>>> resource.relative_filename('abs/path/trailing/name')
'name'
>>> resource.relative_filename('abs/path/trailing/nested/name')
'nested/name'
render(context)

Return archive of files in tree rendered against context.

render_file(template, context)

Render a file with context.

render_tree(context)

Generate list of (resource_path, filename, context).

Included resources may depend on context, i.e. some resources may be used several times, or skipped.

Rendered filenames may depend on context, i.e. variables may be used to render filenames.

Context may change for each resource.

render_tree_from_template(template, context)

Generate directory tree from a template file resource.

class diecutter.resources.FileResource(path='', engine=None, filename_engine=None)

Bases: diecutter.resources.Resource

content_type
exists
is_file = True
read()

Return the template source file.

render(context)

Return the template rendered against context.

class diecutter.resources.Resource(path='', engine=None, filename_engine=None)

Bases: object

content_type
exists
is_dir

Return True if resource is a collection of files.

is_file

Return True if resource is a single file.

read()

Return resource content.

render(context)

Return resource rendered against context.

render_filename(path, context)

Return rendered filename against context using FilenameEngine.

service Module

Services expose diecutter API.

class diecutter.service.Service

Bases: object

Base class for diecutter services.

get(request)
get_dispatcher(request, resource, context, writers)

Return simple dispatcher (later, would read configuration).

get_engine(request)

Return configured template engine to render templates.

get_filename_engine(request)

Return configured template engine to render filenames.

This is not used for dynamic trees.

get_resource(request)

Return the resource object (instance) matching request.

get_writers(request, resource, context)

Return iterable of writers.

hello(request)

Returns Hello and API version in JSON.

is_readonly(request)

Return “readonly” flag status (boolean) for request.

As an example, PUT operations should be forbidden if readonly flag is On.

post(request)
put(request)
diecutter.service.register_service(config, name, service, path)

Register a diecutter service in Pyramid routing.

settings Module

Parse settings, set defaults.

diecutter.settings.defaults = {'diecutter.filename_template_engine': 'diecutter.engines.filename:FilenameEngine', 'diecutter.template_engine': 'diecutter.engines.jinja:Jinja2Engine', 'diecutter.service': 'diecutter.local:LocalService'}

Default values for settings.

diecutter.settings.normalize(settings={})

Return a copy of settings dictionary with normalized values.

Sets default values if necessary.

validators Module

diecutter.validators.token_validator(request)

writers Module

Writers: utilities that write template output as response, files...

diecutter.writers.file_response(request, resource, context)

Render file resource against context, return plain text response.

diecutter.writers.targz_directory(directory_content)

Return a tar.gz file built from iterable directory_content.

directory_content has the same format as diecutter.resources.DirResource.render() output.

diecutter.writers.targz_directory_response(request, resource, context)

Render dir resource against context, return result as tar.gz response.

diecutter.writers.zip_directory(directory_content)

Return a zip file built from iterable directory_contents.

directory_content has the same format as diecutter.resources.DirResource.render() output.

diecutter.writers.zip_directory_response(request, resource, context)

Render dir resource against context, return result as zip response.

wsgi Module

WSGI integration.

diecutter.wsgi.for_file(settings_file)

Return WSGI application using settings file.

diecutter.wsgi.for_modwsgi(settings_file, virtualenv_dir)

Return WSGI application for use with mod_wsgi.

diecutter.wsgi.for_paste(global_config, **settings)

Return WSGI application using global_config and settings.