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