Module Import alias ClassDef bases NameLoad body FunctionDef arguments args NameParam defaults body Return NameLoad decorator_list NameLoad FunctionDef arguments args NameParam defaults body Return NameLoad decorator_list NameLoad FunctionDef arguments args NameParam defaults body Expr Str Return BinOpMod Str TupleLoad AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad If Call NameLoad NameLoad NameLoad body Assign NameStore Call Call AttributeLoad NameLoad attr NameLoad orelse If Call NameLoad NameLoad TupleLoad NameLoad NameLoad body Assign NameStore Call Call AttributeLoad NameLoad attr NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If Call NameLoad NameLoad NameLoad body Assign NameStore AttributeLoad NameLoad attr Return CompareEq AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Return UnaryOpNot Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad If Call NameLoad NameLoad NameLoad body Return Call Call AttributeLoad NameLoad attr NameLoad orelse If Call NameLoad NameLoad TupleLoad NameLoad NameLoad body Return Call Call AttributeLoad NameLoad attr NameLoad Raise Call NameLoad BinOpMod Str AttributeLoad Call NameLoad NameLoad attr decorator_list NameLoad FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad NameLoad If Call NameLoad NameLoad NameLoad body Return Call Call AttributeLoad NameLoad attr NameLoad If Call NameLoad NameLoad TupleLoad NameLoad NameLoad body Return Call Call AttributeLoad NameLoad attr NameLoad Return NameLoad decorator_list NameLoad decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore ListLoad orelse If Call NameLoad NameLoad NameLoad body Assign NameStore AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign AttributeStore NameLoad attr ListLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str ImportFrom alias If NameLoad body Expr Call AttributeLoad NameLoad attr For NameStore NameLoad body If Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr orelse If Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Call NameLoad NameLoad decorator_list decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore Call NameLoad TupleLoad Str Str Str Str Str Str Str Str Str Str Str FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Dict orelse If Call NameLoad NameLoad Call AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad NameLoad attr orelse For NameStore NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body If UnaryOpNot Call NameLoad NameLoad NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad Call NameLoad NameLoad attr NameLoad If BoolOpOr CompareIn NameLoad AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Str body Raise Call NameLoad BinOpMod Str TupleLoad AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad Call NameLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign AttributeStore NameLoad attr Dict decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str ImportFrom alias If NameLoad body Expr Call AttributeLoad NameLoad attr For NameStore NameLoad body Assign NameStore SubscriptLoad NameLoad Index NameLoad If Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr orelse If Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Assign SubscriptStore NameLoad Index NameLoad Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Return NameLoad decorator_list NameLoad FunctionDef arguments args NameParam NameParam defaults body Expr Str Return Call NameLoad NameLoad decorator_list NameLoad FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Dict For NameStore Call AttributeLoad AttributeLoad NameLoad attr attr body Assign SubscriptStore NameLoad Index NameLoad SubscriptLoad NameLoad Index NameLoad Return Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore ListLoad For NameStore Call AttributeLoad AttributeLoad NameLoad attr attr body Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str TryExcept body Return SubscriptLoad NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Return Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad If Call NameLoad NameLoad NameLoad body Assign NameStore Call Call AttributeLoad NameLoad attr NameLoad orelse If Call NameLoad NameLoad TupleLoad NameLoad NameLoad body Assign NameStore Call Call AttributeLoad NameLoad attr NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr NameLoad If Call NameLoad NameLoad AttributeLoad NameLoad attr body Assign NameStore AttributeLoad NameLoad attr orelse If Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Return SubscriptLoad NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str If Call AttributeLoad NameLoad attr Str body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad NameLoad orelse Expr Call AttributeLoad NameLoad attr NameLoad If Call NameLoad NameLoad NameLoad body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad AttributeLoad NameLoad attr orelse Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Delete SubscriptDel AttributeLoad NameLoad attr Index NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad Call NameLoad NameLoad decorator_list decorator_list FunctionDef arguments args defaults body Expr Str decorator_list FunctionDef arguments args defaults body Import alias Import alias Return Call AttributeLoad NameLoad attr AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr decorator_list If CompareEq NameLoad Str body Expr Call NameLoad
N/A N/A plistlib A N/A object N/A _getListClass N/A N/A cls N/A N/A N/A AList N/A classmethod _getDictClass N/A N/A cls N/A N/A N/A ADict N/A classmethod __repr__ N/A N/A self N/A N/A N/A 
            >>> td = ADict(dict(a=1, b=2))
            >>> td
            <ADict:{'a': 1, 'b': 2}>
            >>> tl = AList([2, 3, 4])
            >>> tl
            <AList:[2, 3, 4]>
         N/A N/A <%s:%s> N/A N/A N/A self __class__ __name__ N/A self _data_ N/A __len__ N/A N/A self N/A N/A N/A 
            >>> td = ADict(dict(a=1, b=2))
            >>> len(td)
            2
            >>> tl = AList([2, 3, 4])
            >>> len(tl)
            3
         N/A N/A len N/A self _data_ N/A __setitem__ N/A N/A self indexOrKey value N/A N/A N/A 
            >>> tl = AList([2, 3, 4])
            >>> tl[1] = 33
            >>> tl[1]
            33
            >>> tl[-1] = 44
            >>> tl[-1]
            44
            >>> tl[4] = 123
            Traceback (most recent call last):
                ...
            IndexError: list assignment index out of range
         N/A N/A N/A self _data_ N/A indexOrKey value N/A __getitem__ N/A N/A self indexOrKey N/A N/A N/A 
            >>> tl = AList([2, 3, 4])
            >>> tl[1]
            3
            >>> tl[-1]
            4
            >>> tl[4]
            Traceback (most recent call last):
                ...
            IndexError: list index out of range
         N/A value N/A N/A self _data_ N/A indexOrKey N/A N/A isinstance value dict N/A N/A value N/A N/A N/A self _getDictClass value N/A N/A N/A isinstance value N/A list tuple N/A N/A value N/A N/A N/A self _getListClass value N/A value N/A __eq__ N/A N/A self other N/A N/A N/A Answer whether self is equal to other.

            >>> td1 = ADict(dict(a=12))
            >>> td2 = ADict(dict(a=12))
            >>> td1 == td2
            True
            >>> td1 != td2
            False
            >>> td2 = ADict(dict(a=13))
            >>> td1 == td2
            False
            >>> td1 != td2
            True
            >>> tl1 = AList([1, 2, 3])
            >>> tl2 = AList([1, 2, 3])
            >>> tl1 == tl2
            True
            >>> tl1 != tl2
            False
            >>> tl2 = AList([1, 2, 4])
            >>> tl1 == tl2
            False
            >>> tl1 != tl2
            True
            >>> td1 = ADict(dict(a=13, b=dict(c=12, d=[1, 2, dict(e=14)])))
            >>> td2 = ADict(dict(a=13, b=dict(c=12, d=[1, 2, dict(e=14)])))
            >>> td1 == td2
            True
            >>> td1 != td2
            False
            >>> td2.b.d[2].e = 15
            >>> td1 == td2
            False
            >>> td1 != td2
            True
            >>> td2 = ADict(dict(a=13, b=dict(c=12, d=[1, 2, ADict(dict(e=14))])))
            >>> td1 == td2
            True
            >>> td2 = ADict(dict(a=13, b=dict(c=12, d=AList([1, 2, ADict(dict(e=14))]))))
            >>> td1 == td2
            True
            >>> td2 = ADict(dict(a=13, b=dict(c=12, d=AList([1, 2, ADict(dict(e=17))]))))
            >>> td1 == td2
            False
         N/A N/A isinstance other A N/A N/A other N/A other _data_ N/A N/A N/A self _data_ other N/A __ne__ N/A N/A self other N/A N/A N/A Answer whether self is not equal to other. N/A N/A N/A N/A self __eq__ other N/A asPList N/A N/A self N/A N/A N/A 
            >>> tl = AList([2, 3, 4])
            >>> print tl.asPList().strip().replace("	", "    ")
            <?xml version="1.0" encoding="UTF-8"?>
            <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
            <plist version="1.0">
            <array>
                <integer>2</integer>
                <integer>3</integer>
                <integer>4</integer>
            </array>
            </plist>
            >>> tl._data_
            [2, 3, 4]
         N/A N/A N/A plistlib writePlistToString N/A self _data_ N/A fromPList N/A N/A cls s N/A N/A N/A 
            >>> tl = AList([2, 3, 4])
            >>> pl = tl.asPList()
            >>> tl2 = A.fromPList(pl)
            >>> tl2
            <AList:[2, 3, 4]>
            >>> td = ADict(dict(a=1, b=2))
            >>> pl = td.asPList()
            >>> td2 = A.fromPList(pl)
            >>> td2
            <ADict:{'a': 1, 'b': 2}>
            >>> x = A.fromPList("<integer>4</integer>")
            Traceback (most recent call last):
                ...
            TypeError: Top level plist object must be list or dict, not int
         N/A obj N/A N/A plistlib readPlistFromString s N/A N/A isinstance obj dict N/A N/A N/A N/A N/A cls _getDictClass obj N/A N/A N/A isinstance obj N/A list tuple N/A N/A N/A N/A N/A cls _getListClass obj N/A N/A TypeError N/A Top level plist object must be list or dict, not %s N/A N/A type obj __name__ N/A classmethod asSource N/A N/A self N/A N/A N/A 
            >>> tl = AList([2, 3, 4])
            >>> tl.asSource()
            '[2, 3, 4]'
         N/A N/A repr N/A self _data_ N/A fromSource N/A N/A cls s N/A N/A N/A 
            >>> tl = A.fromSource('[2, 3, 4]')
            >>> tl
            <AList:[2, 3, 4]>
            >>> td = A.fromSource('{"a": 2, "b": 3}')
            >>> td
            <ADict:{'a': 2, 'b': 3}>
         N/A compiled N/A eval s N/A N/A isinstance compiled dict N/A N/A N/A N/A N/A cls _getDictClass compiled N/A N/A isinstance compiled N/A list tuple N/A N/A N/A N/A N/A cls _getListClass compiled N/A compiled N/A classmethod N/A AList N/A A N/A N/A The AList (AttributeList) is the replacement of any list, to make sure that the
    replacement of dicts by ADicts (AttributeDicts) keeps working down the line of
    cascading attribute names. __init__ N/A N/A self data N/A None N/A N/A 
            >>> tl = AList([1, 2, 3])
            >>> tl
            <AList:[1, 2, 3]>
            >>> tl = AList(tl)
            >>> tl
            <AList:[1, 2, 3]>
         N/A N/A data None N/A N/A data N/A N/A N/A N/A isinstance data AList N/A N/A data N/A data _data_ N/A N/A self _data_ data N/A clear N/A N/A self N/A N/A N/A 
            >>> t1 = AList([1, 2, 3])
            >>> t1.clear()
            >>> len(t1)
            0
         N/A N/A self _data_ N/A N/A asList N/A N/A self N/A N/A N/A Return the contents as a list.

            >>> tl = AList([1, 2, 3])
            >>> tl.asList()
            [1, 2, 3]
         N/A N/A self _data_ N/A append N/A N/A self o N/A N/A N/A 
            >>> tl = AList([1, 2, 3])
            >>> tl.append(900)
            >>> tl
            <AList:[1, 2, 3, 900]>
         N/A N/A N/A N/A self _data_ append o N/A readFrom N/A N/A self o clear N/A True N/A N/A 
            >>> t1 = AList([1, 2, 3, ['a', 'b', 'c']])
            >>> t2 = AList()
            >>> t2.readFrom(t1)
            >>> t1[0] = 100
            >>> t2[0] # Original list changed, t2 should not.
            1
         copy deepcopy N/A clear N/A N/A N/A N/A self clear N/A e o N/A N/A N/A isinstance e ADict N/A N/A e N/A N/A e asDict N/A N/A N/A isinstance e AList N/A N/A e N/A N/A e asList N/A N/A N/A self append N/A deepcopy e N/A N/A ADict N/A A N/A N/A The ADict (AttributeDict) is an improved version of State.  The main
    problem with the State class is that it needs to be recursively converted from
    and to a dictionary. This can be a time consuming conversion, e.g. when storing
    data in font.lib, glyph.lib or a database.

    Note: all attribute names are allowed, as long as they don't start with an
    underscore and are not in the set _RESERVEDNAMES.
     N/A _RESERVEDNAMES N/A set N/A _data_ asDict fromDict asSource fromSource get has_key keys items values _RESERVEDNAMES __init__ N/A N/A self d N/A None N/A N/A Set the internal dict to *d*. This is assumed to be an instance with dictionary behavior.
        If *d* is omitted, then create an empty dictionary. If *d* is an instance of @ADict@, then
        take that @d.asDict()@ as attribute.

            >>> td = ADict({'a': 2})
            >>> td
            <ADict:{'a': 2}>
            >>> td = ADict({"asDict": 2})
            Traceback (most recent call last):
                ...
            ValueError: [ADict] "str" (asDict) not allowed as key.
            >>> td = ADict({"_someName": 2})
            Traceback (most recent call last):
                ...
            ValueError: [ADict] "str" (_someName) not allowed as key.
            >>> td = ADict({1: 2})
            Traceback (most recent call last):
                ...
            TypeError: [ADict] "int" (1) not allowed as key.
         N/A N/A d None N/A N/A d N/A N/A N/A N/A isinstance d N/A N/A self _getDictClass N/A N/A d N/A N/A d asDict N/A N/A k d N/A N/A N/A N/A self _assertValidName k N/A N/A self _data_ d N/A _assertValidName N/A N/A self name N/A N/A N/A N/A N/A isinstance name basestring N/A N/A N/A TypeError N/A [%s] "%s" (%s) not allowed as key. N/A N/A N/A self __class__ __name__ N/A N/A type name __name__ name N/A N/A N/A name N/A self _RESERVEDNAMES N/A N/A name startswith _ N/A N/A N/A ValueError N/A [%s] "%s" (%s) not allowed as key. N/A N/A N/A self __class__ __name__ N/A N/A type name __name__ name N/A asDict N/A N/A self N/A N/A N/A Answer the internal dictionary.
            >>> td = ADict(dict(a=1, b=[2, 3]))
            >>> td.asDict()
            {'a': 1, 'b': [2, 3]}
         N/A N/A self _data_ N/A clear N/A N/A self N/A N/A N/A 
            >>> t1 = ADict(dict(a=1, b=2, c=3))
            >>> t1.clear()
            >>> len(t1)
            0
         N/A N/A self _data_ N/A N/A readFrom N/A N/A self o clear N/A False N/A N/A 
            >>> t1 = ADict(dict(a=1, b=2, c=3, d=['a', 'b', 'c']))
            >>> t2 = ADict()
            >>> t2.readFrom(t1)
            >>> t1.a = 100
            >>> t2.a # Original dictionary should not change.
            1
         copy deepcopy N/A clear N/A N/A N/A N/A self clear N/A key o N/A N/A e N/A o N/A key N/A N/A isinstance e ADict N/A N/A e N/A N/A e asDict N/A N/A N/A isinstance e AList N/A N/A e N/A N/A e asList N/A N/A self N/A key N/A deepcopy e N/A fromCopy N/A N/A cls d N/A N/A N/A 
            >>> td = dict(a=1, b=2, c=dict(x=10, y=20, z=30))
            >>> ad = ADict.fromCopy(td)
            >>> td['a'] = 100
            >>> td['c']['x'] = 200 # Make change to original nested dict.
            >>> ad.a
            1
            >>> ad.c.x
            10
         N/A td N/A cls N/A N/A N/A td readFrom d N/A td N/A classmethod fromDict N/A N/A cls d N/A N/A N/A Constructor from dictionary *d*. N/A N/A cls d N/A classmethod __iter__ N/A N/A self N/A N/A N/A 
            >>> td = ADict(dict(a=1, b=2))
            >>> for k in td:
            ...   k
            'a'
            'b'
            >>>
         N/A N/A iter N/A self _data_ N/A keys N/A N/A self N/A N/A N/A Answer the keys of the internal dictionary.

            >>> td = ADict(dict(a=1, b=2))
            >>> td.keys()
            ['a', 'b']
         N/A N/A N/A N/A self _data_ keys N/A items N/A N/A self N/A N/A N/A Answer the items of the internal dictionary, where dict and list values are wrapped.

            >>> td = ADict(dict(a=1, b=[2, 3]))
            >>> td.items()
            [('a', 1), ('b', <AList:[2, 3]>)]
         N/A wrapped N/A N/A key N/A N/A N/A self _data_ keys N/A N/A N/A wrapped N/A key N/A self N/A key N/A N/A N/A wrapped items N/A values N/A N/A self N/A N/A N/A Answer the values of the internal dictionary, where dict and list values are wrapped.

            >>> td = ADict(dict(a=1, b=[2, 3]))
            >>> td.values()
            [1, <AList:[2, 3]>]
         N/A values N/A N/A key N/A N/A N/A self _data_ keys N/A N/A N/A N/A values append N/A self N/A key N/A values N/A get N/A N/A self name default N/A None N/A N/A Answer the value of *name*. Answer *default* of the key does not exist. Dict and list values are wrapped.

            >>> td = ADict()
            >>> print td.get("123")
            None
            >>> print td.get("123", 456)
            456
            >>> td["a"] = [1, 2, 3]
            >>> td["a"]
            <AList:[1, 2, 3]>
         N/A N/A N/A N/A self N/A name N/A N/A N/A KeyError N/A N/A default N/A __contains__ N/A N/A self name N/A N/A N/A Answer the has_key of the internal dictionary.

            >>> td = ADict(dict(a=12))
            >>> "a" in td
            True
            >>> "b" in td
            False
         N/A N/A N/A N/A self _data_ has_key name N/A has_key N/A N/A self name N/A N/A N/A Answer the has_key of the internal dictionary.

            >>> td = ADict(dict(a=12))
            >>> td.has_key("a")
            True
            >>> td.has_key("b")
            False
         N/A N/A N/A self __contains__ name N/A __getitem__ N/A N/A self name N/A N/A N/A Answer the named value. Internal dict, tuple and list instances get translated to
        *ADict* and *AList* respectively.

            >>> td = ADict(dict(a=12))
            >>> td["a"]
            12
            >>> td[12]
            Traceback (most recent call last):
                ...
            KeyError: 12
         N/A value N/A N/A self _data_ N/A name N/A N/A isinstance value dict N/A N/A value N/A N/A N/A self _getDictClass value N/A N/A N/A isinstance value N/A tuple list N/A N/A value N/A N/A N/A self _getListClass value N/A value N/A __setitem__ N/A N/A self name value N/A N/A N/A Set the named value in the internal dictionary. If the (external) value
        is an *ADict* or *AList*, then store the enclosed data instead.

            >>> td = ADict()
            >>> td["a"] = 14
            >>> td["a"]
            14
            >>> td[12] = 14
            Traceback (most recent call last):
                ...
            TypeError: [ADict] "int" (12) not allowed as key.
         N/A N/A N/A self _assertValidName name N/A N/A isinstance value N/A self __class__ N/A N/A value N/A value _data_ N/A N/A N/A isinstance value AList N/A N/A value N/A N/A value asList N/A N/A N/A self _data_ N/A name value N/A __getattr__ N/A N/A self name N/A N/A N/A Answer the named attribute. If the answered value is a dictionary,
        then create a new ADict (AttributeDict) as wrapper around that dictionary.
        This allows a chained attribute query. Otherwise answer the plain value.

            >>> td = ADict()
            >>> td["a"] = 123
            >>> td.a
            123
            >>> td.b = 125
            >>> td.b
            125
            >>> td["b"]
            125
            >>> td.c
            Traceback (most recent call last):
                ...
            AttributeError: 'c'
         N/A N/A N/A N/A self N/A name N/A N/A N/A KeyError N/A N/A N/A AttributeError N/A repr name N/A __setattr__ N/A N/A self name value N/A N/A N/A Set the named attribute. If the value is an ADict, then copy the value by name.
        Otherwise set the plain value. Actively check if keys are strings, which is necessary
        to convert the internal dict into JSON or PLIST.

            >>> td = ADict()
            >>> td.a = 12
            >>> td.a
            12
            >>> td._a = 12
            >>> td.items = 13
            Traceback (most recent call last):
                ...
            ValueError: [ADict] "str" (items) not allowed as key.
         N/A N/A N/A name startswith _ N/A N/A N/A N/A self __dict__ N/A name value N/A N/A N/A N/A self _assertValidName name N/A N/A isinstance value A N/A N/A N/A N/A self _data_ N/A name N/A value _data_ N/A N/A N/A N/A self _data_ N/A name value N/A __delitem__ N/A N/A self key N/A N/A N/A 
            >>> td = ADict(dict(a=12))
            >>> del td["a"]
            >>> td
            <ADict:{}>
            >>> del td["aaaa"]
            Traceback (most recent call last):
                ...
            KeyError: 'aaaa'
         N/A N/A N/A self _data_ N/A key N/A __delattr__ N/A N/A self key N/A N/A N/A 
            >>> td = ADict(dict(a=12))
            >>> del td.a
            >>> td
            <ADict:{}>
            >>> del td.aaaa
            Traceback (most recent call last):
                ...
            AttributeError: 'aaaa'
         N/A N/A N/A N/A N/A self __delitem__ key N/A N/A N/A KeyError N/A N/A N/A AttributeError N/A repr key N/A N/A _test N/A N/A N/A N/A N/A 
        >>> td = ADict(dict(aa=123, bb=[234, dict(yy=2, zz=4)], cc=dict(ddd=456, eee=dict(ffff=3333))))
        >>> td
        <ADict:{'cc': {'eee': {'ffff': 3333}, 'ddd': 456}, 'aa': 123, 'bb': [234, {'yy': 2, 'zz': 4}]}>
        >>> td.asDict()
        {'cc': {'eee': {'ffff': 3333}, 'ddd': 456}, 'aa': 123, 'bb': [234, {'yy': 2, 'zz': 4}]}
        >>> ADict.fromSource(td.asSource())
        <ADict:{'cc': {'eee': {'ffff': 3333}, 'ddd': 456}, 'aa': 123, 'bb': [234, {'yy': 2, 'zz': 4}]}>
        >>> td.aa, td.bb, td.cc.ddd, td.cc.eee.ffff
        (123, <AList:[234, {'yy': 2, 'zz': 4}]>, 456, 3333)
        >>> td.bb
        <AList:[234, {'yy': 2, 'zz': 4}]>
        >>> td.bb[1]
        <ADict:{'yy': 2, 'zz': 4}>
        >>> td.bb[1].yy
        2
        >>> td.cc.eee.ffff = 12345
        >>> td.cc.eee.ffff
        12345
        >>> td.cc.eee.ffff = dict(QQQQ=111, RRRR=222)
        >>> td.cc.eee.ffff.QQQQ
        111
        >>> td.asDict()
        {'cc': {'eee': {'ffff': {'QQQQ': 111, 'RRRR': 222}}, 'ddd': 456}, 'aa': 123, 'bb': [234, {'yy': 2, 'zz': 4}]}
        >>> td.cc['zzz'] = 888
        >>> td.asDict()
        {'cc': {'eee': {'ffff': {'QQQQ': 111, 'RRRR': 222}}, 'zzz': 888, 'ddd': 456}, 'aa': 123, 'bb': [234, {'yy': 2, 'zz': 4}]}
        >>> td.cc.zzz
        888
        >>> print td.cc.sss
        Traceback (most recent call last):
            ...
        AttributeError: 'sss'
        >>> td.aa = (1,2,3,4,5,6,7,8)
        >>> td.aa
        <AList:(1, 2, 3, 4, 5, 6, 7, 8)>
        >>> td
        <ADict:{'cc': {'eee': {'ffff': {'QQQQ': 111, 'RRRR': 222}}, 'zzz': 888, 'ddd': 456}, 'aa': (1, 2, 3, 4, 5, 6, 7, 8), 'bb': [234, {'yy': 2, 'zz': 4}]}>
        >>> td = ADict()
        >>> td.aa = 123
        >>> td
        <ADict:{'aa': 123}>
        >>> print td["unknownkey"]
        Traceback (most recent call last):
            ...
        KeyError: 'unknownkey'
        >>> tl  = AList([2, 3, 4])
        >>> tl
        <AList:[2, 3, 4]>
        >>> len(tl)
        3
        >>> tl[1]
        3
        >>> tl[-1]
        4
        >>> tl[4]
        Traceback (most recent call last):
            ...
        IndexError: list index out of range
        >>> print tl.asPList().strip().replace("\t", "    ")
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
        <plist version="1.0">
        <array>
            <integer>2</integer>
            <integer>3</integer>
            <integer>4</integer>
        </array>
        </plist>
        >>> tl._data_
        [2, 3, 4]
     N/A _runDocTests N/A N/A N/A N/A N/A doctest N/A fbits.toolbox.storage.adict N/A N/A N/A doctest testmod N/A N/A N/A fbits toolbox storage adict N/A N/A N/A __name__ __main__ N/A N/A N/A _runDocTests