Source code for plainbox.impl.unit

# This file is part of Checkbox.
# Copyright 2012-2014 Canonical Ltd.
# Written by:
#   Zygmunt Krynicki <>
# Checkbox is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3,
# as published by the Free Software Foundation.
# Checkbox is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with Checkbox.  If not, see <>.

:mod:`plainbox.impl.unit` -- package with all of the units

import string

from import PkgResourcesPlugInCollection

from jinja2 import Environment, meta

__all__ = ['get_accessed_parameters', 'all_unit']

[docs]def get_accessed_parameters(text, template_engine='default'): """ Parse a new-style python string template and return parameter names :param text: Text string to parse :returns: A frozenset() with a list of names (or indices) of accessed parameters """ if template_engine == 'jinja2': env = Environment() return frozenset(meta.find_undeclared_variables(env.parse(text))) else: # # # info[1] is the field_name (name of the referenced # formatting field) it _may_ be None if there are no format # parameters used return frozenset( info[1] for info in string.Formatter().parse(text) if info[1] is not None)
# Collection of all unit classes all_units = PkgResourcesPlugInCollection('plainbox.unit')
comments powered by Disqus