Module Expr Str ImportFrom alias alias Import alias Import alias Import alias Import alias ImportFrom alias Import alias identifier Assign NameStore Str Assign NameStore Num ClassDef bases NameLoad body Expr Str If UnaryOpNot AttributeLoad NameLoad attr body FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body TryExcept body Assign NameStore SubscriptLoad NameLoad Index Str handlers ExceptHandler type NameLoad body Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad NameLoad FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body TryExcept body Expr AttributeLoad NameLoad attr handlers ExceptHandler type NameLoad body Return Call NameLoad NameLoad NameLoad NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Num For NameStore Call NameLoad AttributeLoad AttributeLoad NameLoad attr attr body If BoolOpAnd Call AttributeLoad NameLoad attr NameLoad CompareEq AttributeLoad NameLoad attr NameLoad body FunctionDef arguments args NameParam NameParam defaults AttributeLoad NameLoad attr body TryExcept body Return Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Return Num decorator_list Break orelse Return Call NameLoad NameLoad NameLoad NameLoad NameLoad Assign NameStore Call NameLoad Call AttributeLoad NameLoad attr keyword Lambda arguments args NameParam defaults Call NameLoad SubscriptLoad NameLoad Index Num For TupleStore NameStore NameStore NameLoad body Assign SubscriptStore NameLoad Index NameLoad NameLoad Return Call NameLoad NameLoad NameLoad NameLoad NameLoad decorator_list Assign SubscriptStore NameLoad Index Str Call Call AttributeLoad NameLoad attr NameLoad NameLoad Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad NameLoad decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Return NameLoad decorator_list Assign NameStore NameLoad decorator_list Assign NameStore Call NameLoad Expr Str FunctionDef arguments args defaults vararg kwarg body Raise Call NameLoad Str decorator_list Assign AttributeStore NameLoad attr Call NameLoad NameLoad Delete NameDel ClassDef bases Call AttributeLoad NameLoad attr NameLoad NameLoad body FunctionDef arguments args NameParam NameParam NameParam defaults body Return Call NameLoad decorator_list NameLoad FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Assign SubscriptStore NameLoad Index Str NameLoad Assign SubscriptStore NameLoad Index Str NameLoad Assign SubscriptStore NameLoad Index Str NameLoad Assign NameStore Dict Assign NameStore Dict Assign NameStore ListLoad For NameStore Call NameLoad NameLoad body If Call NameLoad NameLoad Str body Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr If Call NameLoad NameLoad Str body Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr If Call NameLoad NameLoad Str body Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr NameLoad body Assign NameStore NameLoad If BoolOpAnd UnaryOpNot Call NameLoad NameLoad Str UnaryOpNot Call NameLoad NameLoad Str body Continue If Call NameLoad NameLoad Str body If BoolOpAnd Call NameLoad NameLoad Str CompareIs AttributeLoad NameLoad attr NameLoad body Assign AttributeStore NameLoad attr NameLoad Assign NameStore BoolOpOr AttributeLoad NameLoad attr NameLoad Assign SubscriptStore NameLoad Index NameLoad NameLoad If Call NameLoad NameLoad Str body Assign NameStore BoolOpOr AttributeLoad NameLoad attr NameLoad Assign SubscriptStore NameLoad Index NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Assign SubscriptStore NameLoad Index Str NameLoad Assign SubscriptStore NameLoad Index Str NameLoad Assign SubscriptStore NameLoad Index Str NameLoad Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad kwarg body Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr Str NameLoad If CompareIs NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIs NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Return NameLoad decorator_list decorator_list ClassDef bases Call AttributeLoad NameLoad attr NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam defaults body Return Call NameLoad decorator_list NameLoad FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Assign SubscriptStore NameLoad Index Str NameLoad Assign SubscriptStore NameLoad Index Str NameLoad Assign NameStore ListLoad For NameStore Call NameLoad NameLoad body TryExcept body Assign NameStore Call NameLoad NameLoad Str ListLoad If NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad For NameStore AttributeLoad Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr attr body If BoolOpOr CompareEq NameLoad Str CompareIn NameLoad NameLoad body Continue If CompareEq NameLoad Str body Continue Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Continue Assign SubscriptStore NameLoad Index Str NameLoad Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults vararg kwarg body Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Raise Call NameLoad Str For NameStore Call AttributeLoad NameLoad attr body If CompareEq NameLoad Str body Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr NameLoad Continue If CompareNotIn NameLoad AttributeLoad NameLoad attr body Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad For NameStore Call NameLoad Call AttributeLoad NameLoad attr NameLoad body Assign NameStore Call NameLoad NameLoad Str NameLoad If NameLoad body If CompareIsNot AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr Return NameLoad decorator_list decorator_list ClassDef bases Call AttributeLoad NameLoad attr NameLoad NameLoad body Expr Str Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameStore NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad FunctionDef arguments args NameParam NameParam defaults NameLoad body Assign NameStore Call NameLoad If CompareIsNot NameLoad NameLoad body Assign SubscriptStore NameLoad Index Str Call AttributeLoad Str attr NameLoad NameLoad orelse Assign SubscriptStore NameLoad Index Str Str If CompareIsNot AttributeLoad NameLoad attr NameLoad body Assign SubscriptStore NameLoad Index Str AttributeLoad NameLoad attr If CompareIsNot AttributeLoad NameLoad attr NameLoad body If CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Assign SubscriptStore NameLoad Index Str Call AttributeLoad Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr attr orelse Assign SubscriptStore NameLoad Index Str AttributeLoad NameLoad attr Assign NameStore ListLoad Assign NameStore ListLoad Assign SubscriptStore NameLoad Index Str Str Assign NameStore Call NameLoad Assign AttributeStore NameLoad attr ListLoad For NameStore AttributeLoad NameLoad attr body Assign NameStore NameLoad Assign NameStore NameLoad If CompareIn NameLoad AttributeLoad NameLoad attr body Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Assign NameStore Call AttributeLoad NameLoad attr IfExp CompareIs AttributeLoad NameLoad attr NameLoad NameLoad NameLoad If CompareIs AttributeLoad NameLoad attr NameLoad body Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Str If CompareIn Str NameLoad body Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Str If CompareIn Str NameLoad body Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Str If Call NameLoad NameLoad Str body Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Assign NameStore NameLoad orelse Assign SubscriptStore NameLoad Index NameLoad NameLoad If CompareIn NameLoad AttributeLoad NameLoad attr body Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Assign NameStore BoolOpOr AttributeLoad NameLoad attr NameLoad If CompareIs AttributeLoad NameLoad attr NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign NameStore NameLoad orelse Assign SubscriptStore NameLoad Index NameLoad Call AttributeLoad NameLoad attr If AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr NameLoad If CompareIs NameLoad NameLoad body If CompareIsNot NameLoad NameLoad body If CompareNotIn NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad orelse If CompareNotIn NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign SubscriptStore NameLoad Index Str NameLoad If AttributeLoad NameLoad attr body Assign NameStore Dict For NameStore AttributeLoad NameLoad attr body Assign TupleStore NameStore NameStore Call NameLoad Call AttributeLoad NameLoad attr NameLoad If CompareIn NameLoad NameLoad body Expr Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr NameLoad orelse Assign SubscriptStore NameLoad Index NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign SubscriptStore NameLoad Index Str NameLoad If NameLoad body Assign SubscriptStore NameLoad Index Str NameLoad Assign SubscriptStore NameLoad Index Str AttributeLoad NameLoad attr Return NameLoad decorator_list NameLoad FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Dict For TupleStore NameStore NameStore Call AttributeLoad SubscriptLoad NameLoad Index Str attr body If CompareIn Str NameLoad body Assign SubscriptStore NameLoad Index NameLoad SubscriptLoad NameLoad Index Str Continue If CompareIn Str NameLoad body For TupleStore NameStore NameStore Call AttributeLoad SubscriptLoad NameLoad Index Str attr body If CompareIn Str NameLoad body Assign SubscriptStore Call AttributeLoad NameLoad attr NameLoad Dict Index NameLoad SubscriptLoad NameLoad Index Str Continue Return NameLoad decorator_list NameLoad FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr Str ListLoad For NameStore SubscriptLoad NameLoad Index Str body If CompareNotIn NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Return Call NameLoad keyword NameLoad decorator_list NameLoad decorator_list ClassDef bases Call AttributeLoad NameLoad attr NameLoad NameLoad body Expr Str Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad FunctionDef arguments args NameParam NameParam defaults NameLoad kwarg body Expr Str If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str If CompareNotIn AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad body Raise Call NameLoad Str decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad NameLoad Call AttributeLoad Str attr NameLoad NameLoad If BoolOpAnd CompareIsNot NameLoad NameLoad Call NameLoad NameLoad body Assign NameStore Call NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad Call AttributeLoad Str attr NameLoad NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Raise NameLoad decorator_list decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad NameLoad NameLoad kwarg body Expr Str If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body If CompareIsNot AttributeLoad NameLoad attr NameLoad body If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad NameLoad body Raise Call NameLoad Str If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr NameLoad body Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr If CompareIsNot AttributeLoad NameLoad attr NameLoad body If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad NameLoad body Raise Call NameLoad Str If CompareNotEq Call NameLoad AttributeLoad NameLoad attr Call NameLoad AttributeLoad NameLoad attr body Raise Call NameLoad Str If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr NameLoad body Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Dict Str AttributeLoad NameLoad attr For NameStore AttributeLoad NameLoad attr body If CompareEq NameLoad Str body Continue Assign NameStore Call AttributeLoad NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body If CompareIs NameLoad NameLoad body Assign NameStore NameLoad If BoolOpAnd AttributeLoad NameLoad attr CompareIn NameLoad AttributeLoad NameLoad attr body Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Assign SubscriptStore NameLoad Index NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body If CompareIsNot AttributeLoad NameLoad attr NameLoad body If CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return Call AttributeLoad Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr attr Return AttributeLoad NameLoad attr decorator_list decorator_list ClassDef bases NameLoad body Assign NameStore Str decorator_list ClassDef bases NameLoad body Assign NameStore Str decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore Str Assign NameStore Dict Str Str Str Str Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad NameLoad kwarg body Expr Str If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body If BoolOpAnd CompareIs AttributeLoad NameLoad attr NameLoad CompareIsNot AttributeLoad NameLoad attr NameLoad body Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr decorator_list decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore Str decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore Str decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore Str decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore Str decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore Str decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore Str decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore Str decorator_list ClassDef bases NameLoad body Assign NameStore Str Assign NameStore Dict Str Str Str Str Str Str Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad NameLoad NameLoad kwarg body Expr Str If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr NameLoad decorator_list decorator_list ClassDef bases NameLoad body Assign NameStore Str decorator_list ClassDef bases NameLoad body Assign NameStore Str Assign NameStore Dict Str Str Str Str Str Str Str Str Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad NameLoad NameLoad kwarg body Expr Str If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body If BoolOpAnd UnaryOpNot AttributeLoad NameLoad attr UnaryOpNot AttributeLoad NameLoad attr body Raise Call NameLoad Str If CompareIsNot AttributeLoad NameLoad attr NameLoad body If Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad body For NameStore AttributeLoad NameLoad attr body If UnaryOpNot Call NameLoad NameLoad TupleLoad NameLoad NameLoad body Raise Call NameLoad Call AttributeLoad Str attr Call NameLoad NameLoad orelse If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad body Raise Call NameLoad Call AttributeLoad Str attr Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body If Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad body Return Call AttributeLoad AttributeLoad NameLoad attr attr If Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad body Assign NameStore ListLoad For NameStore AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Return NameLoad decorator_list decorator_list ClassDef bases NameLoad body Assign NameStore Str Assign NameStore Dict Str Str Str Str Str Str Str Str Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad Assign NameStore NameLoad FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad NameLoad NameLoad kwarg body Expr Str If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body If BoolOpAnd UnaryOpNot AttributeLoad NameLoad attr UnaryOpNot AttributeLoad NameLoad attr UnaryOpNot AttributeLoad NameLoad attr body Raise Call NameLoad Str If CompareIsNot AttributeLoad NameLoad attr NameLoad body If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad body Raise Call NameLoad Call AttributeLoad Str attr Call NameLoad AttributeLoad NameLoad attr If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr NameLoad body For TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr body If UnaryOpNot Call NameLoad NameLoad TupleLoad NameLoad NameLoad body Raise Call NameLoad Call AttributeLoad Str attr NameLoad Call NameLoad NameLoad If CompareIsNot AttributeLoad NameLoad attr NameLoad body If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr NameLoad body Raise Call NameLoad Call AttributeLoad Str attr Call NameLoad AttributeLoad NameLoad attr For TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr body If UnaryOpNot Call NameLoad NameLoad TupleLoad NameLoad NameLoad body Raise Call NameLoad Call AttributeLoad Str attr NameLoad Call NameLoad NameLoad If CompareIsNot AttributeLoad NameLoad attr NameLoad body If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad NameLoad body Raise Call NameLoad Call AttributeLoad Str attr Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body If CompareIs AttributeLoad NameLoad attr NameLoad body Return If Call NameLoad AttributeLoad NameLoad attr NameLoad body Return SubscriptLoad Call AttributeLoad AttributeLoad NameLoad attr attr Index Str Assign NameStore Call NameLoad For TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr body Assign SubscriptStore NameLoad Index NameLoad Call AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body If CompareIs AttributeLoad NameLoad attr NameLoad body Return Assign NameStore Call NameLoad For TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr body Assign SubscriptStore NameLoad Index NameLoad Call AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body If CompareIs AttributeLoad NameLoad attr NameLoad body Return If Call NameLoad AttributeLoad NameLoad attr NameLoad body Return AttributeLoad NameLoad attr Return Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Assign AttributeStore NameLoad attr NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad Call NameLoad NameLoad NameLoad attr Assign NameStore ListLoad If CompareIsNot AttributeLoad NameLoad attr NameLoad body If Call NameLoad AttributeLoad NameLoad attr NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr If CompareIn Str NameLoad body Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Str orelse For TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr body If AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign SubscriptStore NameLoad Index Str NameLoad Return NameLoad decorator_list decorator_list ClassDef bases NameLoad body Assign NameStore Str Assign NameStore NameLoad FunctionDef arguments args NameParam NameParam defaults NameLoad body If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body If CompareIs AttributeLoad NameLoad attr NameLoad body Raise Call NameLoad Str If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad NameLoad NameLoad body Raise Call NameLoad Call AttributeLoad Str attr AttributeLoad NameLoad attr If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr NameLoad body If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr NameLoad body Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr For TupleStore NameStore NameStore Call NameLoad AttributeLoad NameLoad attr body If UnaryOpNot Call NameLoad NameLoad TupleLoad AttributeLoad NameLoad attr NameLoad body Raise Call NameLoad Call AttributeLoad Str attr NameLoad Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body If Call NameLoad AttributeLoad NameLoad attr NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore ListLoad For NameStore AttributeLoad NameLoad attr body If Call NameLoad NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Continue Expr Call AttributeLoad NameLoad attr NameLoad Return Dict Str NameLoad decorator_list decorator_list ClassDef bases NameLoad body Assign NameStore Str Assign NameStore NameLoad FunctionDef arguments args NameParam NameParam defaults NameLoad body If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body If UnaryOpNot AttributeLoad NameLoad attr body Raise Call NameLoad Str If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad body Raise Call NameLoad Call AttributeLoad Str attr Call NameLoad AttributeLoad NameLoad attr For TupleStore NameStore NameStore Call NameLoad AttributeLoad NameLoad attr body If UnaryOpNot Call NameLoad NameLoad TupleLoad NameLoad NameLoad body Raise Call NameLoad Call AttributeLoad Str attr NameLoad Call NameLoad NameLoad If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr NameLoad body Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Assign AttributeStore NameLoad attr NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Return Dict AttributeLoad NameLoad attr ListComp Call AttributeLoad NameLoad attr comprehension NameStore AttributeLoad NameLoad attr decorator_list decorator_list ClassDef bases NameLoad body Assign NameStore Str decorator_list ClassDef bases NameLoad body Assign NameStore Str decorator_list ClassDef bases NameLoad body Assign NameStore Str Assign NameStore NameLoad FunctionDef arguments args NameParam NameParam defaults NameLoad body If CompareIsNot NameLoad NameLoad body Assign AttributeStore NameLoad attr NameLoad Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body If UnaryOpNot AttributeLoad NameLoad attr body Raise Call NameLoad Str If UnaryOpNot Call NameLoad AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad body Raise Call NameLoad Call AttributeLoad Str attr Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Return Dict AttributeLoad NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list decorator_list ClassDef bases NameLoad body Assign NameStore Num Assign NameStore Num decorator_list
N/A N/A 
    :codeauthor: :email:`Pedro Algarvio (pedro@algarvio.me)`


    salt.utils.schema
    ~~~~~~~~~~~~~~~~~

    Object Oriented Configuration - JSON Schema compatible generator

    This code was inspired by `jsl`__, "A Python DSL for describing JSON
    schemas".

    .. __: http://jsl.readthedocs.org/


    A configuration document or configuration document section is defined using
    the py:class:`Schema`, the configuration items are defined by any of the
    subclasses of py:class:`BaseSchemaItem` as attributes of a subclass of
    py:class:`Schema` class.

    As an example:

    .. code-block:: python

        class HostConfig(Schema):
            title = 'Host Configuration'
            description = 'This is the host configuration'

            host = StringItem(
                'Host',
                'The looong host description',
                default=None,
                minimum=1
            )

            port = NumberItem(
                description='The port number',
                default=80,
                required=False,
                minimum=0,
                inclusiveMinimum=False,
                maximum=65535
            )

    The serialized version of the above configuration definition is:

    .. code-block:: python

        >>> print(HostConfig.serialize())
        OrderedDict([
            ('$schema', 'http://json-schema.org/draft-04/schema#'),
            ('title', 'Host Configuration'),
            ('description', 'This is the host configuration'),
            ('type', 'object'),
            ('properties', OrderedDict([
                ('host', {'minimum': 1,
                          'type': 'string',
                          'description': 'The looong host description',
                          'title': 'Host'}),
                ('port', {'description': 'The port number',
                          'default': 80,
                          'inclusiveMinimum': False,
                          'maximum': 65535,
                          'minimum': 0,
                          'type': 'number'})
            ])),
            ('required', ['host']),
            ('x-ordering', ['host', 'port']),
            ('additionalProperties', True)]
        )
        >>> print(json.dumps(HostConfig.serialize(), indent=2))
        {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Host Configuration",
            "description": "This is the host configuration",
            "type": "object",
            "properties": {
                "host": {
                    "minimum": 1,
                    "type": "string",
                    "description": "The looong host description",
                    "title": "Host"
                },
                "port": {
                    "description": "The port number",
                    "default": 80,
                    "inclusiveMinimum": false,
                    "maximum": 65535,
                    "minimum": 0,
                    "type": "number"
                }
            },
            "required": [
                "host"
            ],
            "x-ordering": [
                "host",
                "port"
            ],
            "additionalProperties": false
        }


    The serialized version of the configuration block can be used to validate a
    configuration dictionary using the `python jsonschema library`__.

    .. __: https://pypi.python.org/pypi/jsonschema

    .. code-block:: python

        >>> import jsonschema
        >>> jsonschema.validate({'host': 'localhost', 'port': 80}, HostConfig.serialize())
        >>> jsonschema.validate({'host': 'localhost', 'port': -1}, HostConfig.serialize())
        Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "/usr/lib/python2.7/site-packages/jsonschema/validators.py", line 478, in validate
            cls(schema, *args, **kwargs).validate(instance)
        File "/usr/lib/python2.7/site-packages/jsonschema/validators.py", line 123, in validate
            raise error
        jsonschema.exceptions.ValidationError: -1 is less than the minimum of 0

        Failed validating 'minimum' in schema['properties']['port']:
            {'default': 80,
            'description': 'The port number',
            'inclusiveMinimum': False,
            'maximum': 65535,
            'minimum': 0,
            'type': 'number'}

        On instance['port']:
            -1
        >>>


    A configuration document can even be split into configuration sections. Let's reuse the above
    ``HostConfig`` class and include it in a configuration block:

    .. code-block:: python

        class LoggingConfig(Schema):
            title = 'Logging Configuration'
            description = 'This is the logging configuration'

            log_level = StringItem(
                'Logging Level',
                'The logging level',
                default='debug',
                minimum=1
            )

        class MyConfig(Schema):

            title = 'My Config'
            description = 'This my configuration'

            hostconfig = HostConfig()
            logconfig = LoggingConfig()


    The JSON Schema string version of the above is:

    .. code-block:: python

        >>> print json.dumps(MyConfig.serialize(), indent=4)
        {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "My Config",
            "description": "This my configuration",
            "type": "object",
            "properties": {
                "hostconfig": {
                    "id": "https://non-existing.saltstack.com/schemas/hostconfig.json#",
                    "title": "Host Configuration",
                    "description": "This is the host configuration",
                    "type": "object",
                    "properties": {
                        "host": {
                            "minimum": 1,
                            "type": "string",
                            "description": "The looong host description",
                            "title": "Host"
                        },
                        "port": {
                            "description": "The port number",
                            "default": 80,
                            "inclusiveMinimum": false,
                            "maximum": 65535,
                            "minimum": 0,
                            "type": "number"
                        }
                    },
                    "required": [
                        "host"
                    ],
                    "x-ordering": [
                        "host",
                        "port"
                    ],
                    "additionalProperties": false
                },
                "logconfig": {
                    "id": "https://non-existing.saltstack.com/schemas/logconfig.json#",
                    "title": "Logging Configuration",
                    "description": "This is the logging configuration",
                    "type": "object",
                    "properties": {
                        "log_level": {
                            "default": "debug",
                            "minimum": 1,
                            "type": "string",
                            "description": "The logging level",
                            "title": "Logging Level"
                        }
                    },
                    "required": [
                        "log_level"
                    ],
                    "x-ordering": [
                        "log_level"
                    ],
                    "additionalProperties": false
                }
            },
            "additionalProperties": false
        }

        >>> import jsonschema
        >>> jsonschema.validate(
            {'hostconfig': {'host': 'localhost', 'port': 80},
             'logconfig': {'log_level': 'debug'}},
            MyConfig.serialize())
        >>> jsonschema.validate(
            {'hostconfig': {'host': 'localhost', 'port': -1},
             'logconfig': {'log_level': 'debug'}},
            MyConfig.serialize())
        Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "/usr/lib/python2.7/site-packages/jsonschema/validators.py", line 478, in validate
            cls(schema, *args, **kwargs).validate(instance)
        File "/usr/lib/python2.7/site-packages/jsonschema/validators.py", line 123, in validate
            raise error
        jsonschema.exceptions.ValidationError: -1 is less than the minimum of 0

        Failed validating 'minimum' in schema['properties']['hostconfig']['properties']['port']:
            {'default': 80,
            'description': 'The port number',
            'inclusiveMinimum': False,
            'maximum': 65535,
            'minimum': 0,
            'type': 'number'}

        On instance['hostconfig']['port']:
            -1
        >>>

    If however, you just want to use the configuration blocks for readability
    and do not desire the nested dictionaries serialization, you can pass
    ``flatten=True`` when defining a configuration section as a configuration
    subclass attribute:

    .. code-block:: python

        class MyConfig(Schema):

            title = 'My Config'
            description = 'This my configuration'

            hostconfig = HostConfig(flatten=True)
            logconfig = LoggingConfig(flatten=True)


    The JSON Schema string version of the above is:

    .. code-block:: python

        >>> print(json.dumps(MyConfig, indent=4))
        {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "My Config",
            "description": "This my configuration",
            "type": "object",
            "properties": {
                "host": {
                    "minimum": 1,
                    "type": "string",
                    "description": "The looong host description",
                    "title": "Host"
                },
                "port": {
                    "description": "The port number",
                    "default": 80,
                    "inclusiveMinimum": false,
                    "maximum": 65535,
                    "minimum": 0,
                    "type": "number"
                },
                "log_level": {
                    "default": "debug",
                    "minimum": 1,
                    "type": "string",
                    "description": "The logging level",
                    "title": "Logging Level"
                }
            },
            "x-ordering": [
                "host",
                "port",
                "log_level"
            ],
            "additionalProperties": false
        }
 __future__ absolute_import print_function N/A sys N/A inspect N/A textwrap N/A functools salt.utils.odict OrderedDict N/A salt.ext.six six N/A BASE_SCHEMA_URL https://non-existing.saltstack.com/schemas N/A RENDER_COMMENT_YAML_MAX_LINE_LENGTH 80 Prepareable N/A type N/A N/A 
    Preserve attributes order for python 2.x
     N/A N/A N/A six PY3 N/A __new__ N/A N/A mcs name bases attributes N/A N/A N/A N/A N/A constructor N/A attributes N/A __new__ N/A N/A N/A KeyError N/A N/A N/A N/A type __new__ mcs name bases attributes preparing_constructor N/A N/A mcs name bases attributes N/A N/A N/A N/A N/A N/A mcs __prepare__ N/A N/A N/A AttributeError N/A N/A N/A constructor mcs name bases attributes N/A namespace N/A N/A mcs __prepare__ name bases N/A defining_frame N/A N/A sys _getframe 1 N/A constant N/A reversed N/A N/A defining_frame f_code co_consts N/A N/A N/A N/A N/A inspect iscode constant N/A N/A constant co_name name N/A get_index N/A N/A attribute_name _names N/A N/A constant co_names N/A N/A N/A N/A N/A N/A _names index attribute_name N/A N/A N/A ValueError N/A N/A 0 N/A N/A N/A N/A N/A constructor mcs name bases attributes N/A by_appearance N/A sorted N/A N/A attributes items key N/A N/A N/A item N/A N/A get_index N/A item N/A 0 N/A N/A key value by_appearance N/A N/A N/A namespace N/A key value N/A N/A constructor mcs name bases namespace N/A N/A N/A attributes N/A __new__ N/A N/A N/A functools wraps constructor preparing_constructor N/A N/A N/A type __new__ mcs name bases attributes N/A N/A NullSentinel N/A object N/A N/A 
    A class which instance represents a null value.
    Allows specifying fields with a default value of null.
     __bool__ N/A N/A self N/A N/A N/A False N/A N/A __nonzero__ __bool__ N/A N/A Null N/A NullSentinel N/A 
A special value that can be used to set the default value
of a field to null.
 _failing_new N/A N/A N/A args kwargs N/A N/A N/A TypeError Can't create another NullSentinel instance N/A N/A N/A NullSentinel __new__ N/A staticmethod _failing_new N/A _failing_new SchemaMeta N/A N/A N/A six with_metaclass Prepareable type N/A __prepare__ N/A N/A mcs name bases N/A N/A N/A N/A OrderedDict N/A classmethod __new__ N/A N/A mcs name bases attrs N/A N/A N/A N/A attrs N/A __config__ True N/A N/A attrs N/A __flatten__ False N/A N/A attrs N/A __config_name__ None N/A items N/A N/A sections N/A N/A order N/A N/A base N/A reversed bases N/A N/A N/A hasattr base _items N/A N/A N/A N/A items update N/A base _items N/A N/A hasattr base _sections N/A N/A N/A N/A sections update N/A base _sections N/A N/A hasattr base _order N/A N/A N/A N/A order extend N/A base _order N/A N/A key value N/A N/A six iteritems attrs N/A N/A entry_name None N/A N/A N/A N/A hasattr value __item__ N/A N/A hasattr value __config__ N/A N/A N/A N/A hasattr value __item__ N/A N/A N/A N/A hasattr value title N/A N/A value title None N/A N/A N/A value title key N/A entry_name N/A N/A value __item_name__ key N/A N/A items N/A entry_name value N/A N/A hasattr value __config__ N/A N/A entry_name N/A N/A value __config_name__ key N/A N/A sections N/A entry_name value N/A N/A N/A order append entry_name N/A N/A attrs N/A _order order N/A N/A attrs N/A _items items N/A N/A attrs N/A _sections sections N/A N/A N/A type __new__ mcs name bases attrs N/A __call__ N/A N/A cls flatten allow_additional_items N/A False False kwargs N/A N/A instance N/A N/A object __new__ cls N/A N/A instance __config_name__ N/A N/A kwargs pop name None N/A N/A flatten True N/A N/A N/A instance __flatten__ True N/A N/A allow_additional_items True N/A N/A N/A instance __allow_additional_items__ True N/A N/A N/A instance __init__ kwargs N/A instance N/A N/A BaseSchemaItemMeta N/A N/A N/A six with_metaclass Prepareable type N/A N/A 
    Config item metaclass to "tag" the class as a configuration item
     __prepare__ N/A N/A mcs name bases N/A N/A N/A N/A OrderedDict N/A classmethod __new__ N/A N/A mcs name bases attrs N/A N/A N/A N/A attrs N/A __item__ True N/A N/A attrs N/A __item_name__ None N/A attributes N/A N/A base N/A reversed bases N/A N/A N/A N/A base_attributes N/A getattr base _attributes N/A N/A base_attributes N/A N/A N/A N/A attributes extend base_attributes N/A argname N/A N/A N/A inspect getargspec N/A base __init__ args N/A N/A N/A N/A argname self N/A argname attributes N/A N/A N/A N/A argname name N/A N/A N/A N/A N/A attributes append argname N/A N/A N/A TypeError N/A N/A N/A N/A attrs N/A _attributes attributes N/A N/A N/A type __new__ mcs name bases attrs N/A __call__ N/A N/A cls N/A args kwargs N/A N/A instance N/A N/A object __new__ cls N/A args N/A N/A N/A RuntimeError Please pass all arguments as named arguments. Un-named arguments are not supported N/A key N/A N/A kwargs keys N/A N/A N/A key name N/A N/A N/A instance __item_name__ N/A N/A kwargs pop key N/A N/A N/A key N/A instance _attributes N/A N/A N/A N/A N/A instance _attributes append key N/A N/A N/A instance __init__ args kwargs N/A base N/A reversed N/A N/A inspect getmro cls N/A N/A validate_attributes N/A getattr base __validate_attributes__ None N/A validate_attributes N/A N/A N/A N/A N/A N/A instance __validate_attributes__ __func__ __code__ N/A validate_attributes __code__ N/A N/A N/A N/A base __validate_attributes__ instance N/A N/A N/A instance __validate_attributes__ N/A instance N/A N/A Schema N/A N/A N/A six with_metaclass SchemaMeta object N/A N/A 
    Configuration definition class
     N/A title None N/A description None N/A _items _sections _order None N/A __flatten__ False N/A __allow_additional_items__ False serialize N/A N/A cls id_ N/A None N/A N/A serialized N/A OrderedDict N/A N/A id_ None N/A N/A N/A serialized N/A id N/A N/A {0}/{1}.json# format BASE_SCHEMA_URL id_ N/A N/A N/A serialized N/A $schema http://json-schema.org/draft-04/schema# N/A N/A N/A cls title None N/A N/A N/A serialized N/A title N/A cls title N/A N/A N/A cls description None N/A N/A N/A N/A cls description N/A cls __doc__ N/A N/A N/A serialized N/A description N/A N/A N/A N/A textwrap dedent N/A cls description strip N/A N/A N/A serialized N/A description N/A cls description N/A required N/A N/A ordering N/A N/A N/A serialized N/A type object N/A properties N/A OrderedDict N/A N/A cls after_items_update N/A N/A name N/A cls _order N/A N/A skip_order False N/A item_name None N/A N/A name N/A cls _sections N/A N/A section N/A N/A cls _sections N/A name N/A serialized_section N/A N/A section serialize N/A N/A N/A section __flatten__ True None name N/A N/A N/A section __flatten__ True N/A N/A N/A N/A properties update N/A serialized_section N/A properties N/A N/A x-ordering serialized_section N/A N/A N/A N/A ordering extend N/A serialized_section N/A x-ordering N/A N/A required serialized_section N/A N/A N/A N/A required extend N/A serialized_section N/A required N/A N/A hasattr section after_items_update N/A N/A N/A N/A N/A cls after_items_update extend N/A section after_items_update N/A skip_order True N/A N/A N/A properties N/A name serialized_section N/A N/A name N/A cls _items N/A N/A config N/A N/A cls _items N/A name N/A item_name N/A N/A config __item_name__ name N/A N/A N/A config __flatten__ True N/A N/A serialized_config N/A N/A config serialize N/A N/A N/A N/A cls after_items_update append serialized_config N/A skip_order True N/A N/A N/A properties N/A item_name N/A N/A config serialize N/A N/A config required N/A N/A N/A N/A required append item_name N/A N/A skip_order False N/A N/A N/A item_name None N/A N/A N/A item_name ordering N/A N/A N/A N/A ordering append item_name N/A N/A N/A name ordering N/A N/A N/A N/A ordering append name N/A properties N/A N/A N/A serialized N/A properties properties N/A N/A cls after_items_update N/A N/A after_items_update N/A N/A entry N/A cls after_items_update N/A N/A N/A name data N/A next N/A N/A six iteritems entry N/A N/A name after_items_update N/A N/A N/A N/A N/A after_items_update N/A name extend data N/A N/A N/A after_items_update N/A name data N/A N/A N/A serialized update after_items_update N/A required N/A N/A N/A serialized N/A required required N/A ordering N/A N/A N/A serialized N/A x-ordering ordering N/A N/A serialized N/A additionalProperties N/A cls __allow_additional_items__ N/A serialized N/A classmethod defaults N/A N/A cls N/A N/A N/A serialized N/A N/A cls serialize N/A defaults N/A N/A N/A name details N/A N/A N/A serialized N/A properties items N/A N/A N/A default details N/A N/A N/A defaults N/A name N/A details N/A default N/A N/A N/A properties details N/A N/A N/A sname sdetails N/A N/A N/A details N/A properties items N/A N/A N/A default sdetails N/A N/A N/A N/A N/A defaults setdefault name N/A N/A sname N/A sdetails N/A default N/A N/A defaults N/A classmethod as_requirements_item N/A N/A cls N/A N/A N/A serialized_schema N/A N/A cls serialize N/A required N/A N/A serialized_schema get required N/A N/A name N/A serialized_schema N/A properties N/A N/A N/A name required N/A N/A N/A N/A required append name N/A N/A RequirementsItem requirements required N/A classmethod N/A SchemaItem N/A N/A N/A six with_metaclass BaseSchemaItemMeta object N/A N/A 
    Base configuration items class.

    All configurations must subclass it
     N/A __type__ None N/A __format__ None N/A _attributes None N/A __flatten__ False N/A __serialize_attr_aliases__ None N/A required False __init__ N/A N/A self required N/A None extra N/A N/A 
        :param required: If the configuration item is required. Defaults to ``False``.
         N/A N/A required None N/A N/A N/A self required required N/A N/A self extra extra N/A __validate_attributes__ N/A N/A self N/A N/A N/A 
        Run any validation check you need the instance attributes.

        ATTENTION:

        Don't call the parent class when overriding this
        method because it will just duplicate the executions. This class'es
        metaclass will take care of that.
         N/A N/A N/A self required N/A True False N/A N/A N/A RuntimeError 'required' can only be True/False N/A _get_argname_value N/A N/A self argname N/A N/A N/A 
        Return the argname value looking up on all possible attributes
         N/A argvalue N/A getattr self N/A N/A __get_{0}__ format argname None N/A N/A N/A argvalue None N/A callable argvalue N/A N/A argvalue N/A argvalue N/A N/A argvalue None N/A N/A argvalue N/A getattr self argname None N/A N/A argvalue None N/A N/A argvalue N/A getattr self N/A N/A __{0}__ format argname None N/A N/A argvalue None N/A N/A argvalue N/A N/A N/A self extra get argname None N/A argvalue N/A serialize N/A N/A self N/A N/A N/A 
        Return a serializable form of the config instance
         N/A NotImplementedError N/A N/A BaseSchemaItem N/A SchemaItem N/A N/A 
    Base configuration items class.

    All configurations must subclass it
     N/A description None N/A title None N/A default None N/A enum None N/A enumNames None __init__ N/A N/A self title description default enum enumNames N/A None None None None None kwargs N/A N/A 
        :param required:
            If the configuration item is required. Defaults to ``False``.
        :param title:
            A short explanation about the purpose of the data described by this item.
        :param description:
            A detailed explanation about the purpose of the data described by this item.
        :param default:
            The default value for this configuration item. May be :data:`.Null` (a special value
            to set the default value to null).
        :param enum:
            A list(list, tuple, set) of valid choices.
         N/A N/A title None N/A N/A N/A self title title N/A N/A description None N/A N/A N/A self description description N/A N/A default None N/A N/A N/A self default default N/A N/A enum None N/A N/A N/A self enum enum N/A N/A enumNames None N/A N/A N/A self enumNames enumNames N/A N/A N/A N/A super BaseSchemaItem self __init__ kwargs N/A __validate_attributes__ N/A N/A self N/A N/A N/A N/A N/A self enum None N/A N/A N/A N/A isinstance N/A self enum N/A list tuple set N/A N/A N/A RuntimeError Only the 'list', 'tuple' and 'set' python types can be used to define 'enum' N/A N/A N/A isinstance N/A self enum list N/A N/A N/A self enum N/A list N/A self enum N/A N/A N/A self enumNames None N/A N/A N/A N/A isinstance N/A self enumNames N/A list tuple set N/A N/A N/A RuntimeError Only the 'list', 'tuple' and 'set' python types can be used to define 'enumNames' N/A N/A N/A len N/A self enum N/A len N/A self enumNames N/A N/A N/A RuntimeError The size of 'enumNames' must match the size of 'enum' N/A N/A N/A isinstance N/A self enumNames list N/A N/A N/A self enumNames N/A list N/A self enumNames N/A serialize N/A N/A self N/A N/A N/A 
        Return a serializable form of the config instance
         N/A serialized N/A type N/A self __type__ N/A argname N/A self _attributes N/A N/A N/A argname required N/A N/A N/A argvalue N/A N/A self _get_argname_value argname N/A N/A argvalue None N/A N/A N/A argvalue Null N/A N/A argvalue None N/A N/A N/A self __serialize_attr_aliases__ N/A argname N/A self __serialize_attr_aliases__ N/A N/A argname N/A N/A self __serialize_attr_aliases__ N/A argname N/A N/A serialized N/A argname argvalue N/A serialized N/A __get_description__ N/A N/A self N/A N/A N/A N/A N/A self description None N/A N/A N/A N/A self description N/A self __doc__ N/A N/A N/A N/A N/A N/A textwrap dedent N/A self description strip N/A N/A self description N/A N/A NullItem N/A BaseSchemaItem N/A N/A __type__ null N/A BooleanItem N/A BaseSchemaItem N/A N/A __type__ boolean N/A StringItem N/A BaseSchemaItem N/A N/A 
    A string configuration field
     N/A __type__ string N/A __serialize_attr_aliases__ N/A min_length max_length minLength maxLength N/A format None N/A pattern None N/A min_length None N/A max_length None __init__ N/A N/A self format pattern min_length max_length N/A None None None None kwargs N/A N/A 
        :param required:
            If the configuration item is required. Defaults to ``False``.
        :param title:
            A short explanation about the purpose of the data described by this item.
        :param description:
            A detailed explanation about the purpose of the data described by this item.
        :param default:
            The default value for this configuration item. May be :data:`.Null` (a special value
            to set the default value to null).
        :param enum:
            A list(list, tuple, set) of valid choices.
        :param format:
            A semantic format of the string (for example, ``"date-time"``, ``"email"``, or ``"uri"``).
        :param pattern:
            A regular expression (ECMA 262) that a string value must match.
        :param min_length:
            The minimum length
        :param max_length:
            The maximum length
         N/A N/A format None N/A N/A N/A self format format N/A N/A pattern None N/A N/A N/A self pattern pattern N/A N/A min_length None N/A N/A N/A self min_length min_length N/A N/A max_length None N/A N/A N/A self max_length max_length N/A N/A N/A N/A super StringItem self __init__ kwargs N/A __validate_attributes__ N/A N/A self N/A N/A N/A N/A N/A N/A self format None N/A N/A self __format__ None N/A N/A N/A self format N/A self __format__ N/A N/A EMailItem N/A StringItem N/A N/A 
    An internet email address, see `RFC 5322, section 3.4.1`__.

    .. __: http://tools.ietf.org/html/rfc5322
     N/A __format__ email N/A IPv4Item N/A StringItem N/A N/A 
    An IPv4 address configuration field, according to dotted-quad ABNF syntax as defined in
    `RFC 2673, section 3.2`__.

    .. __: http://tools.ietf.org/html/rfc2673
     N/A __format__ ipv4 N/A IPv6Item N/A StringItem N/A N/A 
    An IPv6 address configuration field, as defined in `RFC 2373, section 2.2`__.

    .. __: http://tools.ietf.org/html/rfc2373
     N/A __format__ ipv6 N/A HostnameItem N/A StringItem N/A N/A 
    An Internet host name configuration field, see `RFC 1034, section 3.1`__.

    .. __: http://tools.ietf.org/html/rfc1034
     N/A __format__ hostname N/A DateTimeItem N/A StringItem N/A N/A 
    An ISO 8601 formatted date-time configuration field, as defined by `RFC 3339, section 5.6`__.

    .. __: http://tools.ietf.org/html/rfc3339
     N/A __format__ date-time N/A UriItem N/A StringItem N/A N/A 
    A universal resource identifier (URI) configuration field, according to `RFC3986`__.

    .. __: http://tools.ietf.org/html/rfc3986
     N/A __format__ uri N/A SecretItem N/A StringItem N/A N/A 
    A string configuration field containing a secret, for example, passwords, API keys, etc
     N/A __format__ secret N/A NumberItem N/A BaseSchemaItem N/A N/A __type__ number N/A __serialize_attr_aliases__ N/A multiple_of exclusive_minimum exclusive_maximum multipleOf exclusiveMinimum exclusiveMaximum N/A multiple_of None N/A minimum None N/A exclusive_minimum None N/A maximum None N/A exclusive_maximum None __init__ N/A N/A self multiple_of minimum exclusive_minimum maximum exclusive_maximum N/A None None None None None kwargs N/A N/A 
        :param required:
            If the configuration item is required. Defaults to ``False``.
        :param title:
            A short explanation about the purpose of the data described by this item.
        :param description:
            A detailed explanation about the purpose of the data described by this item.
        :param default:
            The default value for this configuration item. May be :data:`.Null` (a special value
            to set the default value to null).
        :param enum:
            A list(list, tuple, set) of valid choices.
        :param multiple_of:
            A value must be a multiple of this factor.
        :param minimum:
            The minimum allowed value
        :param exclusive_minimum:
            Whether a value is allowed to be exactly equal to the minimum
        :param maximum:
            The maximum allowed value
        :param exclusive_maximum:
            Whether a value is allowed to be exactly equal to the maximum
         N/A N/A multiple_of None N/A N/A N/A self multiple_of multiple_of N/A N/A minimum None N/A N/A N/A self minimum minimum N/A N/A exclusive_minimum None N/A N/A N/A self exclusive_minimum exclusive_minimum N/A N/A maximum None N/A N/A N/A self maximum maximum N/A N/A exclusive_maximum None N/A N/A N/A self exclusive_maximum exclusive_maximum N/A N/A N/A N/A super NumberItem self __init__ kwargs N/A N/A IntegerItem N/A NumberItem N/A N/A __type__ integer N/A ArrayItem N/A BaseSchemaItem N/A N/A __type__ array N/A __serialize_attr_aliases__ N/A min_items max_items unique_items additional_items minItems maxItems uniqueItems additionalItems N/A items None N/A min_items None N/A max_items None N/A unique_items None N/A additional_items None __init__ N/A N/A self items min_items max_items unique_items additional_items N/A None None None None None kwargs N/A N/A 
        :param required:
            If the configuration item is required. Defaults to ``False``.
        :param title:
            A short explanation about the purpose of the data described by this item.
        :param description:
            A detailed explanation about the purpose of the data described by this item.
        :param default:
            The default value for this configuration item. May be :data:`.Null` (a special value
            to set the default value to null).
        :param enum:
            A list(list, tuple, set) of valid choices.
        :param items:
            Either of the following:
                * :class:`BaseSchemaItem` -- all items of the array must match the field schema;
                * a list or a tuple of :class:`fields <.BaseSchemaItem>` -- all items of the array must be
                  valid according to the field schema at the corresponding index (tuple typing);
        :param min_items:
            Minimum length of the array
        :param max_items:
            Maximum length of the array
        :param unique_items:
            Whether all the values in the array must be distinct.
        :param additional_items:
            If the value of ``items`` is a list or a tuple, and the array length is larger than
            the number of fields in ``items``, then the additional items are described
            by the :class:`.BaseField` passed using this argument.
        :type additional_items: bool or :class:`.BaseSchemaItem`
         N/A N/A items None N/A N/A N/A self items items N/A N/A min_items None N/A N/A N/A self min_items min_items N/A N/A max_items None N/A N/A N/A self max_items max_items N/A N/A unique_items None N/A N/A N/A self unique_items unique_items N/A N/A additional_items None N/A N/A N/A self additional_items additional_items N/A N/A N/A N/A super ArrayItem self __init__ kwargs N/A __validate_attributes__ N/A N/A self N/A N/A N/A N/A N/A N/A self items N/A N/A self additional_items N/A N/A N/A RuntimeError One of items or additional_items must be passed. N/A N/A N/A self items None N/A N/A N/A isinstance N/A self items N/A list tuple N/A N/A item N/A self items N/A N/A N/A N/A isinstance item N/A Schema SchemaItem N/A N/A N/A RuntimeError N/A N/A All items passed in the item argument tuple/list must be a subclass of Schema, SchemaItem or BaseSchemaItem, not {0} format N/A type item N/A N/A N/A N/A isinstance N/A self items N/A Schema SchemaItem N/A N/A N/A RuntimeError N/A N/A The items argument passed must be a subclass of Schema, SchemaItem or BaseSchemaItem, not {0} format N/A type N/A self items N/A __get_items__ N/A N/A self N/A N/A N/A N/A isinstance N/A self items N/A Schema SchemaItem N/A N/A N/A N/A N/A self items serialize N/A N/A isinstance N/A self items N/A tuple list N/A N/A items N/A N/A item N/A self items N/A N/A N/A N/A items append N/A N/A item serialize N/A items N/A N/A DictItem N/A BaseSchemaItem N/A N/A __type__ object N/A __serialize_attr_aliases__ N/A min_properties max_properties pattern_properties additional_properties minProperties maxProperties patternProperties additionalProperties N/A properties None N/A pattern_properties None N/A additional_properties None N/A min_properties None N/A max_properties None __init__ N/A N/A self properties pattern_properties additional_properties min_properties max_properties N/A None None None None None kwargs N/A N/A 
        :param required:
            If the configuration item is required. Defaults to ``False``.
        :type required:
            boolean
        :param title:
            A short explanation about the purpose of the data described by this item.
        :type title:
            str
        :param description:
            A detailed explanation about the purpose of the data described by this item.
        :param default:
            The default value for this configuration item. May be :data:`.Null` (a special value
            to set the default value to null).
        :param enum:
            A list(list, tuple, set) of valid choices.
        :param properties:
            A dictionary containing fields
        :param pattern_properties:
            A dictionary whose keys are regular expressions (ECMA 262).
            Properties match against these regular expressions, and for any that match,
            the property is described by the corresponding field schema.
        :type pattern_properties: dict[str -> :class:`.Schema` or
                                       :class:`.SchemaItem` or :class:`.BaseSchemaItem`]
        :param additional_properties:
            Describes properties that are not described by the ``properties`` or ``pattern_properties``.
        :type additional_properties: bool or :class:`.Schema` or :class:`.SchemaItem`
                                     or :class:`.BaseSchemaItem`
        :param min_properties:
            A minimum number of properties.
        :type min_properties: int
        :param max_properties:
            A maximum number of properties
        :type max_properties: int
         N/A N/A properties None N/A N/A N/A self properties properties N/A N/A pattern_properties None N/A N/A N/A self pattern_properties pattern_properties N/A N/A additional_properties None N/A N/A N/A self additional_properties additional_properties N/A N/A min_properties None N/A N/A N/A self min_properties min_properties N/A N/A max_properties None N/A N/A N/A self max_properties max_properties N/A N/A N/A N/A super DictItem self __init__ kwargs N/A __validate_attributes__ N/A N/A self N/A N/A N/A N/A N/A N/A self properties N/A N/A self pattern_properties N/A N/A self additional_properties N/A N/A N/A RuntimeError One of properties, pattern_properties or additional_properties must be passed N/A N/A N/A self properties None N/A N/A N/A N/A isinstance N/A self properties N/A Schema dict N/A N/A N/A RuntimeError N/A N/A The passed properties must be passed as a dict or  a Schema not '{0}' format N/A type N/A self properties N/A N/A N/A isinstance N/A self properties Schema N/A N/A N/A key prop N/A N/A N/A self properties items N/A N/A N/A N/A isinstance prop N/A Schema SchemaItem N/A N/A N/A RuntimeError N/A N/A The passed property who's key is '{0}' must be of type Schema, SchemaItem or BaseSchemaItem, not '{1}' format key N/A type prop N/A N/A N/A self pattern_properties None N/A N/A N/A N/A isinstance N/A self pattern_properties dict N/A N/A N/A RuntimeError N/A N/A The passed pattern_properties must be passed as a dict not '{0}' format N/A type N/A self pattern_properties N/A N/A key prop N/A N/A N/A self pattern_properties items N/A N/A N/A N/A isinstance prop N/A Schema SchemaItem N/A N/A N/A RuntimeError N/A N/A The passed pattern_property who's key is '{0}' must be of type Schema, SchemaItem or BaseSchemaItem, not '{1}' format key N/A type prop N/A N/A N/A self additional_properties None N/A N/A N/A N/A isinstance N/A self additional_properties N/A bool Schema SchemaItem N/A N/A N/A RuntimeError N/A N/A The passed additional_properties must be of type bool, Schema, SchemaItem or BaseSchemaItem, not '{0}' format N/A type N/A self pattern_properties N/A __get_properties__ N/A N/A self N/A N/A N/A N/A N/A self properties None N/A N/A N/A N/A isinstance N/A self properties Schema N/A N/A N/A N/A N/A N/A self properties serialize N/A properties N/A properties N/A OrderedDict N/A N/A key prop N/A N/A N/A self properties items N/A N/A N/A properties N/A key N/A N/A prop serialize N/A properties N/A __get_pattern_properties__ N/A N/A self N/A N/A N/A N/A N/A self pattern_properties None N/A N/A N/A pattern_properties N/A OrderedDict N/A N/A key prop N/A N/A N/A self pattern_properties items N/A N/A N/A pattern_properties N/A key N/A N/A prop serialize N/A pattern_properties N/A __get_additional_properties__ N/A N/A self N/A N/A N/A N/A N/A self additional_properties None N/A N/A N/A N/A isinstance N/A self additional_properties bool N/A N/A N/A self additional_properties N/A N/A N/A N/A self additional_properties serialize N/A __call__ N/A N/A self flatten N/A False N/A N/A N/A self __flatten__ flatten N/A self N/A serialize N/A N/A self N/A N/A N/A result N/A N/A N/A super DictItem self serialize N/A required N/A N/A N/A N/A self properties None N/A N/A N/A isinstance N/A self properties Schema N/A N/A serialized N/A N/A N/A self properties serialize N/A N/A required serialized N/A N/A N/A N/A required extend N/A serialized N/A required N/A N/A N/A key prop N/A N/A N/A self properties items N/A N/A N/A prop required N/A N/A N/A N/A required append key N/A required N/A N/A N/A result N/A required required N/A result N/A N/A RequirementsItem N/A SchemaItem N/A N/A __type__ object N/A requirements None __init__ N/A N/A self requirements N/A None N/A N/A N/A requirements None N/A N/A N/A self requirements requirements N/A N/A N/A N/A super RequirementsItem self __init__ N/A __validate_attributes__ N/A N/A self N/A N/A N/A N/A N/A self requirements None N/A N/A N/A RuntimeError The passed requirements must not be empty N/A N/A N/A isinstance N/A self requirements N/A SchemaItem list tuple set N/A N/A N/A RuntimeError N/A N/A The passed requirements must be passed as a list, tuple, set SchemaItem or BaseSchemaItem, not '{0}' format N/A self requirements N/A N/A N/A isinstance N/A self requirements SchemaItem N/A N/A N/A N/A isinstance N/A self requirements list N/A N/A N/A self requirements N/A list N/A self requirements N/A N/A idx item N/A enumerate N/A self requirements N/A N/A N/A N/A isinstance item N/A N/A six string_types SchemaItem N/A N/A N/A RuntimeError N/A N/A The passed requirement at the {0} index must be of type str or SchemaItem, not '{1}' format idx N/A type item N/A serialize N/A N/A self N/A N/A N/A N/A isinstance N/A self requirements SchemaItem N/A N/A requirements N/A N/A N/A self requirements serialize N/A N/A requirements N/A N/A requirement N/A self requirements N/A N/A N/A isinstance requirement SchemaItem N/A N/A N/A N/A requirements append N/A N/A requirement serialize N/A N/A N/A N/A requirements append requirement N/A N/A required requirements N/A N/A OneOfItem N/A SchemaItem N/A N/A __type__ oneOf N/A items None __init__ N/A N/A self items N/A None N/A N/A N/A items None N/A N/A N/A self items items N/A N/A N/A N/A super OneOfItem self __init__ N/A __validate_attributes__ N/A N/A self N/A N/A N/A N/A N/A self items N/A N/A N/A RuntimeError The passed items must not be empty N/A N/A N/A isinstance N/A self items N/A list tuple N/A N/A N/A RuntimeError N/A N/A The passed items must be passed as a list/tuple not '{0}' format N/A type N/A self items N/A N/A idx item N/A enumerate N/A self items N/A N/A N/A N/A isinstance item N/A Schema SchemaItem N/A N/A N/A RuntimeError N/A N/A The passed item at the {0} index must be of type Schema, SchemaItem or BaseSchemaItem, not '{1}' format idx N/A type item N/A N/A N/A isinstance N/A self items list N/A N/A N/A self items N/A list N/A self items N/A __call__ N/A N/A self flatten N/A False N/A N/A N/A self __flatten__ flatten N/A self N/A serialize N/A N/A self N/A N/A N/A N/A N/A self __type__ N/A N/A N/A i serialize N/A i N/A self items N/A N/A AnyOfItem N/A OneOfItem N/A N/A __type__ anyOf N/A AllOfItem N/A OneOfItem N/A N/A __type__ allOf N/A NotItem N/A SchemaItem N/A N/A __type__ not N/A item None __init__ N/A N/A self item N/A None N/A N/A N/A item None N/A N/A N/A self item item N/A N/A N/A N/A super NotItem self __init__ N/A __validate_attributes__ N/A N/A self N/A N/A N/A N/A N/A self item N/A N/A N/A RuntimeError An item must be passed N/A N/A N/A isinstance N/A self item N/A Schema SchemaItem N/A N/A N/A RuntimeError N/A N/A The passed item be of type Schema, SchemaItem or BaseSchemaItem, not '{1}' format N/A type N/A self item N/A serialize N/A N/A self N/A N/A N/A N/A N/A self __type__ N/A N/A N/A self item serialize N/A N/A PortItem N/A IntegerItem N/A N/A minimum 0 N/A maximum 65535 N/A