Module Expr Str Assign NameStore Str Import alias Import alias Import alias ImportFrom alias alias Assign NameStore ListLoad AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore TupleLoad NameLoad NameLoad FunctionDef arguments args defaults vararg body Global identifier Assign NameStore ListComp NameLoad comprehension NameStore NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore BinOpMod Str TupleLoad NameLoad NameLoad NameLoad If NameLoad body Raise Call AttributeLoad AttributeLoad NameLoad attr attr SubscriptLoad NameLoad Index Num NameLoad orelse Raise Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Return Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Return Num decorator_list FunctionDef arguments args NameParam NameParam defaults body If UnaryOpNot Call NameLoad NameLoad NameLoad body Return NameLoad Return CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Return UnaryOpNot Call AttributeLoad NameLoad attr NameLoad decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Assign AttributeStore NameLoad attr NameLoad If NameLoad body Assign AttributeStore NameLoad attr NameLoad orelse Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Return Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Return Num decorator_list decorator_list FunctionDef arguments args NameParam defaults body Expr Str If BoolOpOr CompareIn Str NameLoad CompareIn Str NameLoad body Return BinOpMod Str NameLoad orelse Return Call NameLoad NameLoad decorator_list ClassDef bases AttributeLoad NameLoad attr body Expr Str FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad NameLoad Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str If Call AttributeLoad NameLoad attr body Return Call NameLoad AttributeLoad NameLoad attr orelse If BoolOpOr CompareIn Str AttributeLoad NameLoad attr CompareIn Str AttributeLoad NameLoad attr body Return Call NameLoad AttributeLoad NameLoad attr orelse Return AttributeLoad NameLoad attr decorator_list decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str FunctionDef arguments args NameParam NameParam defaults NameLoad body TryExcept body Assign NameStore AttributeLoad NameLoad attr handlers ExceptHandler type NameLoad body Return NameLoad orelse Return Call NameLoad NameLoad decorator_list Return Call NameLoad Call NameLoad NameLoad NameLoad decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam defaults body Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore AttributeLoad NameLoad attr If CompareIs NameLoad NameLoad body Assign NameStore ListLoad orelse If UnaryOpNot Call NameLoad NameLoad body Assign NameStore ListLoad NameLoad Assign AttributeStore NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Call NameLoad Call NameLoad AttributeLoad NameLoad attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return AttributeLoad NameLoad attr decorator_list Assign NameStore NameLoad decorator_list ClassDef bases AttributeLoad NameLoad attr body Expr Str FunctionDef arguments args NameParam NameParam defaults body Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Return Call NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Return SubscriptLoad NameLoad Index NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Call NameLoad NameLoad Num Assign NameStore Call NameLoad NameLoad Num Return SubscriptLoad NameLoad Slice NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Return Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Return Call NameLoad NameLoad decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr TryExcept body Assign NameStore SubscriptLoad NameLoad Index Num handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str NameLoad Return Call NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr If NameLoad body Return Call NameLoad SubscriptLoad NameLoad Index Num Return Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr If NameLoad body Return Call NameLoad SubscriptLoad NameLoad Index Num Return Str decorator_list decorator_list ClassDef bases AttributeLoad AttributeLoad NameLoad attr attr body FunctionDef arguments args NameParam defaults vararg kwarg body Return Str decorator_list FunctionDef arguments args NameParam defaults body Return Str decorator_list decorator_list Assign NameStore Call NameLoad FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Dict If NameLoad body FunctionDef arguments args NameParam defaults body TryExcept body Assign NameStore Call AttributeLoad NameLoad attr handlers ExceptHandler type NameLoad body Assign NameStore NameLoad Return NameLoad decorator_list Assign NameStore Call NameLoad NameLoad NameLoad Assign SubscriptStore NameLoad Index Str Call NameLoad NameLoad Assign SubscriptStore NameLoad Index Str Call NameLoad NameLoad Assign SubscriptStore NameLoad Index Str Str Assign SubscriptStore NameLoad Index Str Str orelse Assign SubscriptStore NameLoad Index Str NameLoad Assign SubscriptStore NameLoad Index Str NameLoad If NameLoad body FunctionDef arguments args NameParam defaults body TryExcept body Assign NameStore AttributeLoad NameLoad attr handlers ExceptHandler type NameLoad body Pass orelse Assign NameStore Call NameLoad TryExcept body Return Call AttributeLoad NameLoad attr handlers ExceptHandler type NameLoad body Return NameLoad decorator_list Assign NameStore Call NameLoad NameLoad NameLoad Assign SubscriptStore NameLoad Index Str Call NameLoad NameLoad Assign SubscriptStore NameLoad Index Str Call NameLoad NameLoad Assign SubscriptStore NameLoad Index Str Str Assign SubscriptStore NameLoad Index Str Str orelse Assign SubscriptStore NameLoad Index Str NameLoad Assign SubscriptStore NameLoad Index Str NameLoad Return NameLoad decorator_list Assign NameStore Num Assign NameStore Num Assign NameStore Num Assign NameStore Call AttributeLoad NameLoad attr Str Assign NameStore Call AttributeLoad NameLoad attr Str Assign NameStore ListLoad NameLoad NameLoad NameLoad FunctionDef arguments args NameParam defaults body Return ListComp NameLoad comprehension NameStore NameLoad UnaryOpNot CompareIn NameLoad TupleLoad Str Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore ListLoad Assign NameStore AttributeLoad NameLoad attr For NameStore NameLoad body If CompareEq NameLoad Str body Assign NameStore Lambda arguments args NameParam defaults NameLoad orelse If CompareEq NameLoad Str body Assign NameStore AttributeLoad NameLoad attr orelse Expr Call NameLoad NameLoad Return NameLoad decorator_list Assign NameStore ListLoad NameLoad NameLoad NameLoad Assign NameStore Str Assign NameStore Call AttributeLoad NameLoad attr BinOpMod Str NameLoad Assign NameStore Call AttributeLoad NameLoad attr BinOpMod Str NameLoad Assign NameStore Call AttributeLoad NameLoad attr Str FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad Dict Dict NameLoad body Expr Str If BoolOpAnd Call NameLoad NameLoad NameLoad CompareLt Call AttributeLoad NameLoad attr Str Num body Return NameLoad ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults body Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str If Call NameLoad NameLoad body TryExcept body Assign TupleStore NameStore NameStore SubscriptLoad NameLoad Slice Num handlers ExceptHandler type TupleLoad NameLoad NameLoad body Return NameLoad If CompareNotEq NameLoad Str body Return NameLoad If CompareEq NameLoad Str body Return Str orelse If CompareIn NameLoad Str body Return NameLoad orelse Assign NameStore SubscriptLoad NameLoad Slice Num If BoolOpOr CompareEq SubscriptLoad NameLoad Index Num Str CompareGtE Call AttributeLoad NameLoad attr Str Num body If CompareEq SubscriptLoad NameLoad Index Num Str body Assign NameStore SubscriptLoad NameLoad Slice Num Num TryExcept body Assign NameStore Call NameLoad NameLoad AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Raise ExceptHandler type NameLoad name NameStore body If CompareIn AttributeLoad NameLoad attr NameLoad body Return Str Expr Call NameLoad NameLoad SubscriptLoad NameLoad Index Str NameLoad orelse If CompareIn NameLoad NameLoad body Assign NameStore SubscriptLoad NameLoad Index NameLoad orelse If CompareIn NameLoad AttributeLoad NameLoad attr body Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad orelse If UnaryOpNot CompareIn NameLoad NameLoad body Expr Call NameLoad Call NameLoad NameLoad SubscriptLoad NameLoad Index Str NameLoad orelse Return Str Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore SubscriptLoad Call AttributeLoad NameLoad attr Str Index Num Assign SubscriptStore NameLoad Index NameLoad Str Return Call AttributeLoad NameLoad attr NameLoad NameLoad orelse If Call NameLoad NameLoad body FunctionDef arguments args NameParam NameParam NameParam NameParam defaults AttributeLoad NameLoad attr AttributeLoad NameLoad attr NameLoad body Return Call NameLoad Call NameLoad NameLoad NameLoad decorator_list Return Call NameLoad Call NameLoad NameLoad NameLoad orelse If Call NameLoad NameLoad body TryExcept body Assign NameStore Call NameLoad keyword SubscriptLoad NameLoad Index Str keyword SubscriptLoad NameLoad Index Str keyword AttributeLoad NameLoad attr keyword CompareNotEq AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body If CompareEq AttributeLoad NameLoad attr NameLoad body Return NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr NameLoad NameLoad orelse If CompareIs NameLoad NameLoad body Return Str orelse Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str If BoolOpAnd Call NameLoad NameLoad UnaryOpNot Call NameLoad NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad TryExcept body FunctionDef arguments args NameParam defaults body Return Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Num NameLoad decorator_list Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad handlers ExceptHandler type NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore ListLoad For NameStore NameLoad body Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad NameLoad If CompareEq Call NameLoad NameLoad Num body Assign NameStore SubscriptLoad NameLoad Index Num orelse Assign NameStore Call AttributeLoad Str attr Call NameLoad NameLoad NameLoad Return NameLoad orelse Return Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list decorator_list If CompareIs NameLoad NameLoad body Assign NameStore SubscriptLoad NameLoad Index NameLoad If CompareNotIn Str NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Assign SubscriptStore NameLoad Index Str NameLoad Assign NameStore Call NameLoad NameLoad NameLoad NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad TryExcept body Delete SubscriptDel NameLoad Index Str handlers ExceptHandler type NameLoad body Pass If Call NameLoad NameLoad body Assign NameStore SubscriptLoad NameLoad Index NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Str NameLoad If CompareNotEq NameLoad NameLoad body Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr Str NameLoad attr orelse If Call NameLoad NameLoad body Assign NameStore SubscriptLoad NameLoad Index NameLoad If NameLoad body Assign NameStore Call NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad Dict Dict NameLoad body Expr Str ClassDef bases AttributeLoad NameLoad attr body Expr Str FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults body Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad ListLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad If CompareEq AttributeLoad NameLoad attr NameLoad body Assign AttributeStore NameLoad attr Lambda arguments args NameParam defaults Call AttributeLoad NameLoad attr NameLoad orelse Assign AttributeStore NameLoad attr Lambda arguments args NameParam defaults NameLoad Assign AttributeStore NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Expr Str If Call NameLoad NameLoad body TryExcept body Assign TupleStore NameStore NameStore SubscriptLoad NameLoad Slice Num handlers ExceptHandler type TupleLoad NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Return If CompareNotEq NameLoad Str body Expr Call AttributeLoad NameLoad attr NameLoad Return If CompareEq NameLoad Str body Expr Call AttributeLoad NameLoad attr Str orelse If CompareEq NameLoad Str body Expr Call AttributeLoad NameLoad attr Str orelse If CompareEq NameLoad Str body Expr Call AttributeLoad NameLoad attr Str orelse Assign NameStore SubscriptLoad NameLoad Slice Num If BoolOpOr CompareEq SubscriptLoad NameLoad Index Num Str CompareGtE Call AttributeLoad NameLoad attr Str Num body If CompareEq SubscriptLoad NameLoad Index Num Str body Assign NameStore SubscriptLoad NameLoad Slice Num Num TryExcept body Assign NameStore Call NameLoad NameLoad AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Raise ExceptHandler type NameLoad name NameStore body If CompareIn AttributeLoad NameLoad attr NameLoad body Return Expr Call NameLoad NameLoad SubscriptLoad NameLoad Index Str NameLoad orelse If CompareIn NameLoad NameLoad body Assign NameStore SubscriptLoad NameLoad Index NameLoad orelse If CompareIn NameLoad AttributeLoad NameLoad attr body Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad orelse If UnaryOpNot CompareIn NameLoad NameLoad body Expr Call NameLoad Call NameLoad SubscriptLoad NameLoad Index Str NameLoad orelse Return Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore SubscriptLoad Call AttributeLoad NameLoad attr Str Index Num Assign SubscriptStore NameLoad Index NameLoad Str Expr Call AttributeLoad NameLoad attr NameLoad NameLoad Num Expr Call AttributeLoad NameLoad attr orelse If Call NameLoad NameLoad body For NameStore NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad NameLoad Num Expr Call AttributeLoad NameLoad attr orelse If Call NameLoad NameLoad body TryExcept body Assign NameStore Call NameLoad keyword SubscriptLoad NameLoad Index Str keyword SubscriptLoad NameLoad Index Str keyword AttributeLoad NameLoad attr keyword CompareNotEq AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body If CompareEq AttributeLoad NameLoad attr NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Return Assign NameStore Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad orelse If CompareIs NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr orelse Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Expr Str If BoolOpAnd Call NameLoad NameLoad UnaryOpNot Call NameLoad NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad For NameStore NameLoad body If CompareIn SubscriptLoad NameLoad Index Num Str body If CompareIn Str NameLoad body Expr Call AttributeLoad NameLoad attr orelse If NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad orelse Expr Call AttributeLoad NameLoad attr orelse Expr Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad orelse Expr Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad ListLoad Expr Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If BoolOpOr UnaryOpNot AttributeLoad NameLoad attr CompareNotEq AttributeLoad NameLoad attr NameLoad body TryExcept body Assign NameStore SubscriptLoad SubscriptLoad NameLoad Index Num Index Num handlers ExceptHandler type NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad orelse TryExcept body Assign NameStore SubscriptLoad Call NameLoad NameLoad Index Num handlers ExceptHandler type NameLoad body Assign NameStore Str If CompareIn NameLoad Str body Expr Call AttributeLoad NameLoad attr NameLoad orelse Assign NameStore BinOpAdd NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If Call NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad Assign SubscriptStore SubscriptLoad NameLoad Index Num Index Num NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body If BoolOpOr UnaryOpNot AttributeLoad NameLoad attr CompareNotEq AttributeLoad NameLoad attr NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If Call NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad Expr Call AttributeLoad SubscriptLoad NameLoad Index Num attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body TryExcept body Assign NameStore AttributeLoad NameLoad attr handlers ExceptHandler type NameLoad body Return NameLoad orelse Return Call NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr NameLoad Assign AttributeStore NameLoad attr Num decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad decorator_list decorator_list If CompareIs NameLoad NameLoad body Assign NameStore SubscriptLoad NameLoad Index NameLoad If CompareNotIn Str NameLoad body Assign NameStore Call NameLoad NameLoad NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Assign SubscriptStore NameLoad Index Str NameLoad Assign NameStore Call NameLoad NameLoad NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad Num TryExcept body Delete SubscriptDel NameLoad Index Str handlers ExceptHandler type NameLoad body Pass Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str If BoolOpAnd Call NameLoad NameLoad NameLoad CompareLt Call AttributeLoad NameLoad attr Str Num body Return NameLoad Assign NameStore ListLoad BinOpAdd Str NameLoad BinOpAdd BinOpAdd Str NameLoad Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Str FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Num If CompareIn NameLoad NameLoad body Assign NameStore NameLoad If Call NameLoad NameLoad body Return Call AttributeLoad Str attr Call NameLoad NameLoad NameLoad orelse Return Call NameLoad NameLoad decorator_list If Call NameLoad NameLoad body Assign NameStore ListLoad For NameStore NameLoad body If Call NameLoad NameLoad body If CompareIn NameLoad NameLoad body Assign NameStore NameLoad If Call NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad orelse Expr Call AttributeLoad NameLoad attr NameLoad orelse Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad NameLoad orelse Expr Call AttributeLoad NameLoad attr NameLoad Return NameLoad orelse If Call NameLoad NameLoad body Return Call AttributeLoad NameLoad attr NameLoad NameLoad orelse Return NameLoad decorator_list
N/A N/A SCons.Subst

SCons string substitution.

 N/A __revision__ src/engine/SCons/Subst.py  2014/07/05 09:42:21 garyo N/A collections N/A re N/A SCons.Errors SCons.Util is_String is_Sequence N/A _strconv N/A N/A N/A SCons Util to_String_for_subst N/A N/A SCons Util to_String_for_subst N/A N/A SCons Util to_String_for_signature N/A AllowableExceptions N/A IndexError NameError SetAllowableExceptions N/A N/A N/A excepts N/A N/A AllowableExceptions N/A AllowableExceptions N/A _f N/A _f excepts _f N/A raise_exception N/A N/A exception target s N/A N/A N/A name N/A N/A exception __class__ __name__ N/A msg N/A %s `%s' trying to evaluate `%s' N/A name exception s N/A target N/A N/A N/A N/A N/A SCons Errors BuildError N/A target N/A 0 msg N/A N/A N/A N/A N/A SCons Errors UserError msg N/A Literal N/A object N/A N/A A wrapper for a string.  If you use this object wrapped
    around a string, then it will be interpreted as literal.
    When passed to the command interpreter, all special
    characters will be escaped. __init__ N/A N/A self lstr N/A N/A N/A N/A self lstr lstr N/A __str__ N/A N/A self N/A N/A N/A N/A self lstr N/A escape N/A N/A self escape_func N/A N/A N/A N/A escape_func N/A self lstr N/A for_signature N/A N/A self N/A N/A N/A N/A self lstr N/A is_literal N/A N/A self N/A N/A N/A 1 N/A __eq__ N/A N/A self other N/A N/A N/A N/A N/A isinstance other Literal N/A N/A False N/A N/A N/A self lstr N/A other lstr N/A __neq__ N/A N/A self other N/A N/A N/A N/A N/A N/A self __eq__ other N/A N/A SpecialAttrWrapper N/A object N/A N/A This is a wrapper for what we call a 'Node special attribute.'
    This is any of the attributes of a Node that we can reference from
    Environment variable substitution, such as $TARGET.abspath or
    $SOURCES[1].filebase.  We implement the same methods as Literal
    so we can handle special characters, plus a for_signature method,
    such that we can return some canonical string during signature
    calculation to avoid unnecessary rebuilds. __init__ N/A N/A self lstr for_signature N/A None N/A N/A The for_signature parameter, if supplied, will be the
        canonical string we return from for_signature().  Else
        we will simply return lstr. N/A N/A self lstr lstr N/A for_signature N/A N/A N/A self forsig for_signature N/A N/A N/A self forsig lstr N/A __str__ N/A N/A self N/A N/A N/A N/A self lstr N/A escape N/A N/A self escape_func N/A N/A N/A N/A escape_func N/A self lstr N/A for_signature N/A N/A self N/A N/A N/A N/A self forsig N/A is_literal N/A N/A self N/A N/A N/A 1 N/A N/A quote_spaces N/A N/A arg N/A N/A N/A Generic function for putting double quotes around any string that
    has white space in it. N/A N/A N/A arg N/A arg N/A N/A N/A "%s" arg N/A N/A N/A str arg N/A CmdStringHolder N/A N/A collections UserString N/A N/A This is a special class used to hold strings generated by
    scons_subst() and scons_subst_list().  It defines a special method
    escape().  When passed a function with an escape algorithm for a
    particular platform, it will return the contained string with the
    proper escape sequences inserted.
     __init__ N/A N/A self cmd literal N/A None N/A N/A N/A N/A N/A collections UserString __init__ self cmd N/A N/A self literal literal N/A is_literal N/A N/A self N/A N/A N/A N/A self literal N/A escape N/A N/A self escape_func quote_func N/A quote_spaces N/A N/A Escape the string with the supplied function.  The
        function is expected to take an arbitrary string, then
        return it with all special characters escaped and ready
        for passing to the command interpreter.

        After calling this function, the next call to str() will
        return the escaped string.
         N/A N/A N/A self is_literal N/A N/A N/A escape_func N/A self data N/A N/A N/A N/A N/A self data N/A N/A self data N/A N/A N/A quote_func N/A self data N/A N/A N/A self data N/A N/A escape_list N/A N/A mylist escape_func N/A N/A N/A Escape a list of arguments by running the specified escape_func
    on every object in the list that has an escape() method. escape N/A N/A obj escape_func N/A escape_func N/A N/A N/A N/A e N/A obj escape N/A N/A N/A AttributeError N/A N/A obj N/A N/A N/A e escape_func N/A N/A N/A list N/A map escape mylist N/A NLWrapper N/A object N/A N/A A wrapper class that delays turning a list of sources or targets
    into a NodeList until it's needed.  The specified function supplied
    when the object is initialized is responsible for turning raw nodes
    into proxies that implement the special attributes like .abspath,
    .source, etc.  This way, we avoid creating those proxies just
    "in case" someone is going to use $TARGET or the like, and only
    go through the trouble if we really have to.

    In practice, this might be a wash performance-wise, but it's a little
    cleaner conceptually...
     __init__ N/A N/A self list func N/A N/A N/A N/A self list list N/A N/A self func func N/A _return_nodelist N/A N/A self N/A N/A N/A N/A self nodelist N/A _gen_nodelist N/A N/A self N/A N/A N/A mylist N/A self list N/A N/A mylist None N/A N/A mylist N/A N/A N/A N/A N/A is_Sequence mylist N/A N/A mylist N/A mylist N/A N/A self nodelist N/A N/A N/A SCons Util NodeList N/A list N/A map N/A self func mylist N/A N/A self _create_nodelist N/A self _return_nodelist N/A N/A self nodelist N/A N/A _create_nodelist _gen_nodelist N/A Targets_or_Sources N/A N/A collections UserList N/A N/A A class that implements $TARGETS or $SOURCES expansions by in turn
    wrapping a NLWrapper.  This class handles the different methods used
    to access the list, calling the NLWrapper to create proxies on demand.

    Note that we subclass collections.UserList purely so that the
    is_Sequence() function will identify an object of this class as
    a list during variable expansion.  We're not really using any
    collections.UserList methods in practice.
     __init__ N/A N/A self nl N/A N/A N/A N/A self nl nl N/A __getattr__ N/A N/A self attr N/A N/A N/A nl N/A N/A N/A self nl _create_nodelist N/A N/A getattr nl attr N/A __getitem__ N/A N/A self i N/A N/A N/A nl N/A N/A N/A self nl _create_nodelist N/A N/A nl N/A i N/A __getslice__ N/A N/A self i j N/A N/A N/A nl N/A N/A N/A self nl _create_nodelist N/A i N/A max i 0 N/A j N/A max j 0 N/A N/A nl N/A i j N/A __str__ N/A N/A self N/A N/A N/A nl N/A N/A N/A self nl _create_nodelist N/A N/A str nl N/A __repr__ N/A N/A self N/A N/A N/A nl N/A N/A N/A self nl _create_nodelist N/A N/A repr nl N/A N/A Target_or_Source N/A object N/A N/A A class that implements $TARGET or $SOURCE expansions by in turn
    wrapping a NLWrapper.  This class handles the different methods used
    to access an individual proxy Node, calling the NLWrapper to create
    a proxy on demand.
     __init__ N/A N/A self nl N/A N/A N/A N/A self nl nl N/A __getattr__ N/A N/A self attr N/A N/A N/A nl N/A N/A N/A self nl _create_nodelist N/A N/A N/A nl0 N/A nl N/A 0 N/A N/A N/A IndexError N/A N/A N/A AttributeError N/A NodeList has no attribute: %s attr N/A N/A getattr nl0 attr N/A __str__ N/A N/A self N/A N/A N/A nl N/A N/A N/A self nl _create_nodelist N/A nl N/A N/A N/A str N/A nl N/A 0 N/A N/A __repr__ N/A N/A self N/A N/A N/A nl N/A N/A N/A self nl _create_nodelist N/A nl N/A N/A N/A repr N/A nl N/A 0 N/A N/A N/A NullNodeList N/A N/A N/A SCons Util NullSeq N/A __call__ N/A N/A self N/A args kwargs N/A N/A N/A __str__ N/A N/A self N/A N/A N/A N/A N/A N/A NullNodesList N/A NullNodeList subst_dict N/A N/A target source N/A N/A N/A Create a dictionary for substitution of special
    construction variables.

    This translates the following special arguments:

    target - the target (object or array of objects),
             used to generate the TARGET and TARGETS
             construction variables

    source - the source (object or array of objects),
             used to generate the SOURCES and SOURCE
             construction variables
     N/A dict N/A N/A target N/A get_tgt_subst_proxy N/A N/A thing N/A N/A N/A N/A N/A subst_proxy N/A N/A thing get_subst_proxy N/A N/A N/A AttributeError N/A N/A subst_proxy thing N/A subst_proxy N/A N/A tnl N/A NLWrapper target get_tgt_subst_proxy N/A N/A dict N/A TARGETS N/A Targets_or_Sources tnl N/A N/A dict N/A TARGET N/A Target_or_Source tnl N/A N/A dict N/A CHANGED_TARGETS $TARGETS N/A N/A dict N/A UNCHANGED_TARGETS $TARGETS N/A N/A N/A dict N/A TARGETS NullNodesList N/A N/A dict N/A TARGET NullNodesList N/A source N/A get_src_subst_proxy N/A N/A node N/A N/A N/A N/A N/A rfile N/A node rfile N/A N/A N/A AttributeError N/A N/A N/A N/A node N/A rfile N/A N/A N/A N/A N/A node get_subst_proxy N/A N/A N/A AttributeError N/A N/A node N/A N/A snl N/A NLWrapper source get_src_subst_proxy N/A N/A dict N/A SOURCES N/A Targets_or_Sources snl N/A N/A dict N/A SOURCE N/A Target_or_Source snl N/A N/A dict N/A CHANGED_SOURCES $SOURCES N/A N/A dict N/A UNCHANGED_SOURCES $SOURCES N/A N/A N/A dict N/A SOURCES NullNodesList N/A N/A dict N/A SOURCE NullNodesList N/A dict N/A N/A SUBST_CMD 0 N/A SUBST_RAW 1 N/A SUBST_SIG 2 N/A _rm N/A N/A re compile \$[()] N/A _remove N/A N/A re compile \$\([^\$]*(\$[^\)][^\$]*)*\$\) N/A _regex_remove N/A _rm None _remove _rm_list N/A N/A list N/A N/A N/A N/A l N/A l list N/A N/A l N/A $( $) N/A _remove_list N/A N/A list N/A N/A N/A result N/A N/A do_append N/A result append N/A l list N/A N/A N/A l $( N/A N/A do_append N/A N/A N/A x N/A None N/A N/A N/A l $) N/A N/A do_append N/A result append N/A N/A N/A do_append l N/A result N/A N/A _list_remove N/A _rm_list None _remove_list N/A _dollar_exps_str \$[\$\(\)]|\$[_a-zA-Z][\.\w]*|\${[^}]*} N/A _dollar_exps N/A N/A re compile N/A (%s) _dollar_exps_str N/A _separate_args N/A N/A re compile N/A (%s|\s+|[^\s\$]+|\$) _dollar_exps_str N/A _space_sep N/A N/A re compile [\t ]+(?![^{]*}) scons_subst N/A N/A strSubst env mode target source gvars lvars conv N/A SUBST_RAW None None N/A N/A None N/A N/A Expand a string or list containing construction variable
    substitutions.

    This is the work-horse function for substitutions in file names
    and the like.  The companion scons_subst_list() function (below)
    handles separating command lines into lists of arguments, so see
    that function if that's what you're looking for.
     N/A N/A N/A isinstance strSubst str N/A N/A N/A strSubst find $ 0 N/A N/A strSubst StringSubber N/A object N/A N/A A class to construct the results of a scons_subst() call.

        This binds a specific construction environment, mode, target and
        source with two methods (substitute() and expand()) that handle
        the expansion.
         __init__ N/A N/A self env mode conv gvars N/A N/A N/A N/A self env env N/A N/A self mode mode N/A N/A self conv conv N/A N/A self gvars gvars N/A expand N/A N/A self s lvars N/A N/A N/A Expand a single "token" as necessary, returning an
            appropriate string containing the expansion.

            This handles expanding different types of things (strings,
            lists, callables) appropriately.  It calls the wrapper
            substitute() method to re-expand things as necessary, so that
            the results of expansions of side-by-side strings still get
            re-evaluated separately, not smushed together.
             N/A N/A is_String s N/A N/A N/A N/A N/A s0 s1 N/A s N/A 2 N/A N/A N/A N/A IndexError ValueError N/A N/A s N/A N/A s0 $ N/A N/A s N/A N/A s1 $ N/A N/A $ N/A N/A N/A s1 () N/A N/A s N/A N/A key N/A s N/A 1 N/A N/A N/A N/A key N/A 0 { N/A N/A N/A key find . 0 N/A N/A N/A N/A key N/A 0 { N/A N/A key N/A key N/A 1 -1 N/A N/A N/A s N/A eval key N/A self gvars lvars N/A N/A N/A KeyboardInterrupt N/A N/A N/A N/A Exception N/A e N/A N/A N/A N/A e __class__ AllowableExceptions N/A N/A N/A N/A raise_exception e N/A lvars N/A TARGETS s N/A N/A N/A key lvars N/A N/A s N/A lvars N/A key N/A N/A N/A key N/A self gvars N/A N/A s N/A N/A self gvars N/A key N/A N/A N/A N/A NameError AllowableExceptions N/A N/A N/A raise_exception N/A NameError key N/A lvars N/A TARGETS s N/A N/A N/A lv N/A N/A lvars copy N/A var N/A N/A N/A key split . N/A 0 N/A N/A lv N/A var N/A N/A N/A self substitute s lv N/A N/A N/A is_Sequence s N/A func N/A N/A l conv substitute lvars N/A N/A self conv N/A self substitute lvars N/A N/A N/A conv N/A substitute l lvars N/A N/A N/A list N/A map func s N/A N/A N/A callable s N/A N/A N/A N/A s N/A s target N/A lvars N/A TARGETS source N/A lvars N/A SOURCES env N/A self env for_signature N/A N/A self mode SUBST_CMD N/A N/A N/A TypeError N/A N/A N/A N/A self mode SUBST_RAW N/A N/A s N/A s N/A N/A self conv s N/A N/A N/A self substitute s lvars N/A N/A N/A s None N/A N/A N/A N/A s N/A substitute N/A N/A self args lvars N/A N/A N/A Substitute expansions in an argument or list of arguments.

            This serves as a wrapper for splitting up a string into
            separate tokens.
             N/A N/A N/A is_String args N/A N/A isinstance args CmdStringHolder N/A N/A args N/A str args N/A N/A sub_match N/A N/A match N/A N/A N/A N/A N/A self conv N/A N/A self expand N/A N/A match group 1 lvars N/A N/A result N/A N/A _dollar_exps sub sub_match args N/A N/A N/A TypeError N/A N/A args N/A N/A _separate_args findall args N/A result N/A N/A a args N/A N/A N/A N/A result append N/A N/A self conv N/A N/A self expand a lvars N/A N/A N/A len result 1 N/A N/A result N/A result N/A 0 N/A N/A result N/A N/A join N/A map str result N/A result N/A N/A N/A N/A self expand args lvars N/A N/A N/A N/A conv None N/A N/A conv N/A _strconv N/A mode N/A N/A TARGET lvars N/A N/A d N/A subst_dict target source N/A d N/A N/A lvars N/A N/A lvars copy N/A N/A N/A lvars update d N/A N/A gvars N/A __builtins__ __builtins__ N/A ss N/A StringSubber env mode conv gvars N/A result N/A N/A ss substitute strSubst lvars N/A N/A N/A N/A gvars N/A __builtins__ N/A N/A N/A KeyError N/A N/A N/A N/A is_String result N/A N/A remove N/A _regex_remove N/A mode N/A remove N/A N/A result N/A N/A remove sub result N/A N/A mode SUBST_RAW N/A N/A result N/A N/A N/A N/A _space_sep sub result strip N/A N/A N/A is_Sequence result N/A N/A remove N/A _list_remove N/A mode N/A remove N/A N/A result N/A remove result N/A result N/A scons_subst_list N/A N/A strSubst env mode target source gvars lvars conv N/A SUBST_RAW None None N/A N/A None N/A N/A Substitute construction variables in a string (or list or other
    object) and separate the arguments into a command list.

    The companion scons_subst() function (above) handles basic
    substitutions within strings, so see that function instead
    if that's what you're looking for.
     ListSubber N/A N/A collections UserList N/A N/A A class to construct the results of a scons_subst_list() call.

        Like StringSubber, this class binds a specific construction
        environment, mode, target and source with two methods
        (substitute() and expand()) that handle the expansion.

        In addition, however, this class is used to track the state of
        the result(s) we're gathering so we can do the appropriate thing
        whenever we have to append another word to the result--start a new
        line, start a new word, append to the current word, etc.  We do
        this by setting the "append" attribute to the right method so
        that our wrapper methods only need ever call ListSubber.append(),
        and the rest of the object takes care of doing the right thing
        internally.
         __init__ N/A N/A self env mode conv gvars N/A N/A N/A N/A N/A N/A collections UserList __init__ self N/A N/A N/A self env env N/A N/A self mode mode N/A N/A self conv conv N/A N/A self gvars gvars N/A N/A N/A self mode SUBST_RAW N/A N/A N/A self add_strip N/A N/A N/A x N/A N/A N/A self append x N/A N/A N/A self add_strip N/A N/A N/A x N/A None N/A N/A self in_strip None N/A N/A N/A self next_line N/A expand N/A N/A self s lvars within_list N/A N/A N/A Expand a single "token" as necessary, appending the
            expansion to the current result.

            This handles expanding different types of things (strings,
            lists, callables) appropriately.  It calls the wrapper
            substitute() method to re-expand things as necessary, so that
            the results of expansions of side-by-side strings still get
            re-evaluated separately, not smushed together.
             N/A N/A is_String s N/A N/A N/A N/A N/A s0 s1 N/A s N/A 2 N/A N/A N/A N/A IndexError ValueError N/A N/A N/A N/A self append s N/A N/A N/A s0 $ N/A N/A N/A N/A self append s N/A N/A N/A s1 $ N/A N/A N/A N/A self append $ N/A N/A N/A s1 ( N/A N/A N/A N/A self open_strip $( N/A N/A N/A s1 ) N/A N/A N/A N/A self close_strip $) N/A N/A key N/A s N/A 1 N/A N/A N/A N/A key N/A 0 { N/A N/A N/A key find . 0 N/A N/A N/A N/A key N/A 0 { N/A N/A key N/A key N/A 1 -1 N/A N/A N/A s N/A eval key N/A self gvars lvars N/A N/A N/A KeyboardInterrupt N/A N/A N/A N/A Exception N/A e N/A N/A N/A N/A e __class__ AllowableExceptions N/A N/A N/A N/A raise_exception e N/A lvars N/A TARGETS s N/A N/A N/A key lvars N/A N/A s N/A lvars N/A key N/A N/A N/A key N/A self gvars N/A N/A s N/A N/A self gvars N/A key N/A N/A N/A N/A NameError AllowableExceptions N/A N/A N/A raise_exception N/A NameError N/A lvars N/A TARGETS s N/A N/A N/A lv N/A N/A lvars copy N/A var N/A N/A N/A key split . N/A 0 N/A N/A lv N/A var N/A N/A N/A self substitute s lv 0 N/A N/A N/A self this_word N/A N/A N/A is_Sequence s N/A N/A a s N/A N/A N/A N/A self substitute a lvars 1 N/A N/A N/A self next_word N/A N/A N/A callable s N/A N/A N/A N/A s N/A s target N/A lvars N/A TARGETS source N/A lvars N/A SOURCES env N/A self env for_signature N/A N/A self mode SUBST_CMD N/A N/A N/A TypeError N/A N/A N/A N/A self mode SUBST_RAW N/A N/A N/A N/A self append s N/A N/A s N/A N/A self conv s N/A N/A N/A self substitute s lvars within_list N/A N/A N/A s None N/A N/A N/A N/A self this_word N/A N/A N/A N/A self append s N/A substitute N/A N/A self args lvars within_list N/A N/A N/A Substitute expansions in an argument or list of arguments.

            This serves as a wrapper for splitting up a string into
            separate tokens.
             N/A N/A N/A is_String args N/A N/A isinstance args CmdStringHolder N/A N/A args N/A str args N/A args N/A N/A _separate_args findall args N/A a args N/A N/A N/A N/A a N/A 0 N/A N/A N/A a N/A N/A N/A N/A self next_line N/A N/A within_list N/A N/A N/A N/A self append a N/A N/A N/A N/A self next_word N/A N/A N/A N/A self expand a lvars within_list N/A N/A N/A N/A self expand args lvars within_list N/A next_line N/A N/A self N/A N/A N/A Arrange for the next word to start a new line.  This
            is like starting a new word, except that we have to append
            another line to the result. N/A N/A N/A N/A collections UserList append self N/A N/A N/A N/A self next_word N/A this_word N/A N/A self N/A N/A N/A Arrange for the next word to append to the end of the
            current last word in the result. N/A N/A self append N/A self add_to_current_word N/A next_word N/A N/A self N/A N/A N/A Arrange for the next word to start a new word. N/A N/A self append N/A self add_new_word N/A add_to_current_word N/A N/A self x N/A N/A N/A Append the string x to the end of the current last word
            in the result.  If that is not possible, then just add
            it as a new word.  Make sure the entire concatenated string
            inherits the object attributes of x (in particular, the
            escape function) by wrapping it as CmdStringHolder. N/A N/A N/A N/A self in_strip N/A N/A self mode SUBST_SIG N/A N/A N/A N/A current_word N/A N/A self N/A -1 N/A -1 N/A N/A N/A IndexError N/A N/A N/A N/A self add_new_word x N/A N/A N/A N/A last_char N/A N/A str current_word N/A -1 N/A N/A N/A IndexError N/A N/A last_char N/A N/A last_char <>| N/A N/A N/A N/A self add_new_word x N/A N/A y N/A current_word x N/A y N/A N/A self conv y N/A N/A is_String y N/A N/A y N/A CmdStringHolder y None N/A N/A N/A self N/A -1 N/A -1 y N/A add_new_word N/A N/A self x N/A N/A N/A N/A N/A N/A self in_strip N/A N/A self mode SUBST_SIG N/A N/A literal N/A N/A self literal x N/A x N/A N/A self conv x N/A N/A is_String x N/A N/A x N/A CmdStringHolder x literal N/A N/A N/A N/A self N/A -1 append x N/A N/A self append N/A self add_to_current_word N/A literal N/A N/A self x N/A N/A N/A N/A N/A l N/A x is_literal N/A N/A N/A AttributeError N/A N/A None N/A N/A N/A l N/A open_strip N/A N/A self x N/A N/A N/A Handle the "open strip" $( token. N/A N/A N/A self add_strip x N/A N/A self in_strip 1 N/A close_strip N/A N/A self x N/A N/A N/A Handle the "close strip" $) token. N/A N/A N/A self add_strip x N/A N/A self in_strip None N/A N/A N/A N/A conv None N/A N/A conv N/A _strconv N/A mode N/A N/A TARGET lvars N/A N/A d N/A subst_dict target source N/A d N/A N/A lvars N/A N/A lvars copy N/A N/A N/A lvars update d N/A N/A gvars N/A __builtins__ __builtins__ N/A ls N/A ListSubber env mode conv gvars N/A N/A N/A ls substitute strSubst lvars 0 N/A N/A N/A N/A gvars N/A __builtins__ N/A N/A N/A KeyError N/A N/A N/A N/A ls data N/A scons_subst_once N/A N/A strSubst env key N/A N/A N/A Perform single (non-recursive) substitution of a single
    construction variable keyword.

    This is used when setting a variable when copying or overriding values
    in an Environment.  We want to capture (expand) the old value before
    we override it, so people can do things like:

        env2 = env.Clone(CCFLAGS = '$CCFLAGS -g')

    We do this with some straightforward, brute-force code here...
     N/A N/A N/A isinstance strSubst str N/A N/A N/A strSubst find $ 0 N/A N/A strSubst N/A matchlist N/A N/A $ key N/A N/A ${ key } N/A val N/A N/A env get key sub_match N/A N/A match val matchlist N/A val matchlist N/A N/A a N/A N/A match group 1 N/A N/A a matchlist N/A N/A a val N/A N/A is_Sequence a N/A N/A N/A N/A join N/A map str a N/A N/A N/A str a N/A N/A N/A is_Sequence strSubst N/A N/A result N/A N/A arg strSubst N/A N/A N/A is_String arg N/A N/A N/A arg matchlist N/A N/A arg val N/A N/A is_Sequence arg N/A N/A N/A N/A result extend arg N/A N/A N/A N/A result append arg N/A N/A N/A N/A result append N/A N/A _dollar_exps sub sub_match arg N/A N/A N/A N/A result append arg N/A result N/A N/A N/A is_String strSubst N/A N/A N/A N/A _dollar_exps sub sub_match strSubst N/A N/A strSubst N/A