Module Expr Str ImportFrom alias ImportFrom alias ImportFrom alias alias ImportFrom alias alias ImportFrom alias ImportFrom alias alias ImportFrom alias alias alias alias alias ImportFrom alias Import alias ImportFrom alias ImportFrom alias ImportFrom alias alias alias alias alias ImportFrom alias ImportFrom alias alias alias ImportFrom alias alias alias alias alias alias alias alias alias alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias alias alias alias alias alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias alias ImportFrom alias alias alias alias alias alias alias alias ImportFrom alias ImportFrom alias alias alias alias alias ImportFrom alias alias alias alias alias ImportFrom alias alias alias alias alias ImportFrom alias alias alias alias alias alias alias alias alias alias alias ImportFrom alias ImportFrom alias ImportFrom alias alias ImportFrom alias ImportFrom alias alias alias alias alias alias alias alias alias alias Assign NameStore Call NameLoad keyword Call NameLoad keyword Str Assign NameStore Str Assign NameStore Str Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad Call NameLoad NameLoad Dict Str Str Str Str Str Call NameLoad Call NameLoad keyword Num Call NameLoad NameLoad Call NameLoad ListLoad Str Str Call NameLoad Str Call NameLoad NameLoad Call NameLoad ListLoad Str Str attr Lambda arguments args NameParam defaults Call AttributeLoad NameLoad attr keyword Call NameLoad AttributeLoad NameLoad attr Assign NameStore Call NameLoad keyword Num keyword Num keyword Str Assign NameStore Dict Str Str Str Str Call NameLoad Call AttributeLoad Call NameLoad keyword Num attr Lambda arguments args NameParam defaults BinOpAdd NameLoad BinOpMult NameLoad NameLoad Call NameLoad keyword NameLoad keyword NameLoad Call NameLoad NameLoad Call NameLoad ListLoad Str Str Assign NameStore Call NameLoad NameLoad NameLoad Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad NameLoad attr Lambda arguments args NameParam defaults Call NameLoad Call NameLoad NameLoad Call NameLoad NameLoad Call NameLoad NameLoad DictComp NameLoad Call NameLoad Call NameLoad NameLoad NameLoad comprehension NameStore NameLoad CompareIsNot Call NameLoad NameLoad NameLoad NameLoad NameLoad FunctionDef arguments args NameParam defaults body Expr Str Return DictComp AttributeLoad NameLoad attr NameLoad comprehension NameStore NameLoad decorator_list If UnaryOpNot Call AttributeLoad NameLoad attr body Assign NameStore Str ClassDef bases NameLoad body Expr Str Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Assign NameStore BinOpMult AttributeLoad AttributeLoad NameLoad attr attr Num Assign NameStore Call AttributeLoad NameLoad attr Return Call NameLoad keyword NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore ListLoad If BoolOpAnd NameLoad UnaryOpNot Call AttributeLoad NameLoad attr body Raise Call NameLoad Call AttributeLoad Str attr AttributeLoad NameLoad attr orelse If BoolOpAnd Call AttributeLoad NameLoad attr UnaryOpNot NameLoad body Raise Call NameLoad Call AttributeLoad Str attr AttributeLoad NameLoad attr If UnaryOpNot NameLoad body Expr Call AttributeLoad NameLoad attr ListLoad Str Assign NameStore BinOpAdd BinOpAdd ListLoad Str NameLoad ListLoad Str Str AttributeLoad NameLoad attr Expr Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call NameLoad ListLoad Str AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults Str Call NameLoad NameLoad body Expr Str Assign NameStore Call NameLoad NameLoad If NameLoad body Assign NameStore Call NameLoad NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword Call NameLoad keyword Call NameLoad Return Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Call AttributeLoad NameLoad attr ListLoad Str NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr ListLoad Str NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr ListLoad Str Call NameLoad NameLoad NameLoad Return NameLoad decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad Assign AttributeStore NameLoad attr Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Dict Expr Call AttributeLoad NameLoad attr Call NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Dict Assign NameStore TupleLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Dict keyword Dict keyword Dict keyword NameLoad Call NameLoad keyword Dict Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword Call NameLoad Str If UnaryOpNot NameLoad body Delete SubscriptDel NameLoad Index Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Dict NameLoad Call NameLoad NameLoad Assign NameStore Dict If NameLoad body Assign SubscriptStore NameLoad Index NameLoad Call NameLoad Str Assign NameStore TupleLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Dict keyword Dict keyword NameLoad keyword NameLoad Call NameLoad keyword Dict Call NameLoad NameLoad Call NameLoad keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad Str Assign NameStore Call NameLoad Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Dict NameLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword NameLoad Assign NameStore TupleLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Dict Call NameLoad NameLoad Call NameLoad keyword Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword Dict Call NameLoad NameLoad NameLoad keyword Dict NameLoad NameLoad keyword NameLoad Call NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad decorator_list decorator_list ClassDef bases Call NameLoad NameLoad body Expr Str Assign NameStore NameLoad decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call NameLoad Assign NameStore Call NameLoad keyword Str keyword Call NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad keyword Call NameLoad keyword Call NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword Str keyword Call NameLoad keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr NameLoad AttributeLoad NameLoad attr decorator_list decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults Call NameLoad body Expr Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call AttributeLoad NameLoad attr Call NameLoad keyword Set NameLoad keyword NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad NameLoad decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr Assign AttributeStore NameLoad attr Str Assign AttributeStore NameLoad attr Call NameLoad Assign AttributeStore NameLoad attr Call NameLoad NameLoad Assign AttributeStore NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr ListLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword Call NameLoad keyword NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword Call NameLoad keyword NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Expr Call NameLoad NameLoad NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword Call NameLoad keyword NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Assign NameStore AttributeLoad Call AttributeLoad AttributeLoad NameLoad attr attr attr Expr Call AttributeLoad NameLoad attr Call NameLoad keyword CompareIn NameLoad NameLoad keyword CompareIn NameLoad NameLoad Call NameLoad keyword NameLoad keyword NameLoad decorator_list Call NameLoad NameLoad NameLoad decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr Assign AttributeStore NameLoad attr Str Assign AttributeStore NameLoad attr Call NameLoad Assign AttributeStore NameLoad attr Call NameLoad NameLoad Assign AttributeStore NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call NameLoad NameLoad AttributeLoad NameLoad attr ListLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword Call NameLoad keyword Dict NameLoad AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Expr Call NameLoad NameLoad keyword NameLoad Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword Call NameLoad keyword Dict NameLoad AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Call NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Expr Call NameLoad NameLoad keyword NameLoad Expr Call NameLoad NameLoad NameLoad Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword Call NameLoad keyword Dict NameLoad AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Expr Call NameLoad NameLoad keyword NameLoad Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Str Expr Call AttributeLoad NameLoad attr Expr Call NameLoad NameLoad NameLoad Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword Call NameLoad keyword Dict NameLoad AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Str Lambda arguments args NameParam defaults NameLoad Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword Call NameLoad keyword Dict NameLoad AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr NameLoad Str NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad Str decorator_list Call NameLoad NameLoad NameLoad Dict Str Call NameLoad Str FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr NameLoad Str NameLoad Expr Call AttributeLoad NameLoad attr NameLoad decorator_list Call NameLoad NameLoad NameLoad Dict Str NameLoad FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr keyword Str Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword Call NameLoad keyword Dict NameLoad AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Str Assign NameStore Str Assign NameStore Call NameLoad AttributeLoad NameLoad attr ListLoad NameLoad Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr keyword NameLoad Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr keyword NameLoad Expr Call NameLoad NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr keyword Call NameLoad NameLoad keyword NameLoad keyword Call NameLoad keyword Dict NameLoad NameLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Call AttributeLoad NameLoad attr With Call AttributeLoad NameLoad attr Str NameStore body Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Call NameLoad AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr Expr Call NameLoad NameLoad keyword NameLoad Expr Call NameLoad NameLoad NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword Call NameLoad keyword Dict NameLoad AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword Call NameLoad keyword Dict NameLoad AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword Call NameLoad keyword Dict NameLoad Str keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword NameLoad keyword Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword Call NameLoad keyword Dict NameLoad Str keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword NameLoad keyword Str decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr NameLoad Str NameLoad Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword Call NameLoad keyword Dict NameLoad Str keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword NameLoad keyword Str decorator_list Call NameLoad NameLoad NameLoad decorator_list ClassDef bases NameLoad body Expr Str decorator_list Call NameLoad NameLoad 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 NameParam defaults body Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Return AttributeLoad NameLoad attr decorator_list decorator_list Call NameLoad NameLoad FunctionDef arguments args NameParam defaults body Expr Str ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Expr Call NameLoad NameLoad Call NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad decorator_list Call NameLoad keyword Call NameLoad NameLoad Call NameLoad NameLoad keyword Call NameLoad NameLoad Call NameLoad NameLoad decorator_list Return NameLoad decorator_list ClassDef bases Call NameLoad NameLoad body Expr Str decorator_list ClassDef bases Call NameLoad Lambda arguments args defaults Call NameLoad NameLoad body Expr Str decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If CompareIs NameLoad NameLoad body Return BoolOpOr CompareIs NameLoad NameLoad CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr If CompareIs NameLoad NameLoad body Return CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr If BoolOpAnd CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return NameLoad If CompareNotEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return NameLoad If CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr orelse If CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return NameLoad orelse If CompareEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return NameLoad orelse Raise Call NameLoad Call AttributeLoad Str attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str For NameStore BinOpBitOr Call NameLoad NameLoad Call NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If UnaryOpNot Call NameLoad keyword NameLoad keyword NameLoad body Return NameLoad Return NameLoad decorator_list ClassDef bases NameLoad body Expr Str decorator_list Call NameLoad ListLoad Str ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call NameLoad AttributeLoad AttributeLoad NameLoad attr attr Expr Call NameLoad AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return AttributeLoad Call AttributeLoad NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Call NameLoad keyword Set Call NameLoad keyword AttributeLoad AttributeLoad NameLoad attr attr keyword AttributeLoad AttributeLoad NameLoad attr attr keyword Call AttributeLoad AttributeLoad NameLoad attr attr attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr keyword NameLoad keyword NameLoad Expr Call NameLoad Call AttributeLoad Str attr keyword NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults Num body Expr Str For NameStore Call NameLoad NameLoad body TryExcept body Expr Call AttributeLoad NameLoad attr Call NameLoad NameLoad If Call NameLoad Call AttributeLoad NameLoad attr Call NameLoad NameLoad body Break handlers ExceptHandler type NameLoad name NameStore body Expr Call NameLoad Call AttributeLoad Str attr keyword NameLoad orelse Raise Call NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign AttributeStore NameLoad attr Call NameLoad NameLoad keyword NameLoad Assign AttributeStore NameLoad attr Call NameLoad Assign TupleStore NameStore NameStore NameLoad Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Call NameLoad NameLoad If CompareIsNot Call NameLoad NameLoad Str NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad If CompareIsNot Call NameLoad NameLoad Str NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad TryExcept body Expr Call AttributeLoad NameLoad attr ListLoad NameLoad handlers ExceptHandler type NameLoad name NameStore body Expr Call AttributeLoad NameLoad attr BinOpMod Str AttributeLoad NameLoad attr TryExcept body Expr Call AttributeLoad NameLoad attr ListLoad NameLoad handlers ExceptHandler type NameLoad name NameStore body Expr Call AttributeLoad NameLoad attr BinOpMod Str AttributeLoad NameLoad attr decorator_list Call NameLoad keyword NameLoad keyword Call NameLoad decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Expr Call NameLoad CompareNotEq NameLoad NameLoad Expr Call NameLoad NameLoad SubscriptLoad SubscriptLoad NameLoad Index NameLoad Index NameLoad decorator_list Call NameLoad keyword Call NameLoad Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr keyword Call NameLoad BinOpAdd Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr ListLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam NameParam NameParam defaults TupleLoad TupleLoad TupleLoad Call NameLoad TupleLoad Call NameLoad body Expr Str Assign NameStore Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad Assign NameStore Call NameLoad keyword BinOpBitOr Set Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword DictComp AttributeLoad AttributeLoad NameLoad attr attr NameLoad comprehension NameStore NameLoad NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword DictComp AttributeLoad NameLoad attr NameLoad comprehension NameStore NameLoad Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Assign NameStore Call NameLoad keyword Set Call AttributeLoad NameLoad attr keyword NameLoad keyword AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr DictComp AttributeLoad NameLoad attr NameLoad comprehension NameStore NameLoad AttributeLoad NameLoad attr decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad Assign AttributeStore NameLoad attr Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword ListLoad keyword ListLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword ListLoad AttributeLoad NameLoad attr keyword ListLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword ListLoad Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str Str AttributeLoad NameLoad attr keyword ListLoad Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad AttributeLoad NameLoad attr Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword ListLoad Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str Str Lambda arguments args NameParam defaults NameLoad keyword ListLoad Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword ListLoad Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str Str NameLoad ListLoad Str Str AttributeLoad NameLoad attr keyword ListLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword ListLoad keyword ListLoad Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str NameLoad keyword ListLoad Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str NameLoad keyword Call AttributeLoad Call NameLoad attr keyword Call AttributeLoad NameLoad attr keyword NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad AttributeLoad NameLoad attr attr decorator_list Call NameLoad keyword Call NameLoad keyword Num FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword ListLoad keyword ListLoad NameLoad keyword ListLoad keyword Call AttributeLoad Call NameLoad attr keyword Call AttributeLoad NameLoad attr keyword NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad AttributeLoad NameLoad attr attr decorator_list Call NameLoad keyword Call AttributeLoad NameLoad attr Lambda arguments args NameParam defaults CompareNotEq AttributeLoad NameLoad attr AttributeLoad NameLoad attr FunctionDef arguments args NameParam defaults body Expr Str Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword ListLoad AttributeLoad NameLoad attr keyword ListLoad keyword Call AttributeLoad Call NameLoad attr keyword Call AttributeLoad NameLoad attr keyword NameLoad keyword AttributeLoad NameLoad attr keyword Call NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword ListLoad keyword ListLoad AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword Str keyword Call AttributeLoad NameLoad attr Str keyword Call NameLoad keyword AttributeLoad NameLoad attr keyword Call NameLoad Str keyword ListLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword ListLoad AttributeLoad NameLoad attr keyword ListLoad Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str NameLoad keyword ListLoad Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str NameLoad keyword Call AttributeLoad Call NameLoad attr keyword Call AttributeLoad NameLoad attr keyword NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad AttributeLoad NameLoad attr attr decorator_list Call NameLoad keyword Call NameLoad keyword Num FunctionDef arguments args NameParam defaults body Expr Str Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword ListLoad Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str Lambda arguments args NameParam defaults Call AttributeLoad NameLoad attr keyword NameLoad keyword ListLoad AttributeLoad NameLoad attr keyword ListLoad AttributeLoad NameLoad attr keyword Call AttributeLoad Call NameLoad attr keyword Call AttributeLoad NameLoad attr keyword NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad AttributeLoad NameLoad attr attr decorator_list decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam NameParam NameParam defaults Call NameLoad Call NameLoad NameLoad body Expr Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad Assign NameStore Call NameLoad NameLoad NameLoad NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad keyword NameLoad keyword AttributeLoad NameLoad attr orelse Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr TupleLoad Call AttributeLoad NameLoad attr Str NameLoad Call NameLoad keyword AttributeLoad NameLoad attr Str Return Call NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad Call NameLoad NameLoad NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return BinOpAdd Str Call NameLoad NameLoad decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad NameLoad Assign NameStore Str Assign NameStore Call NameLoad Assign NameStore Dict Str Str Assign NameStore Call NameLoad keyword Call NameLoad keyword Call NameLoad NameLoad keyword Call NameLoad Call AttributeLoad NameLoad attr keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword Dict Call NameLoad NameLoad NameLoad keyword Dict Call NameLoad NameLoad Call AttributeLoad Call NameLoad Str attr Call NameLoad NameLoad keyword Dict NameLoad Call NameLoad Str keyword NameLoad Assign NameStore Call NameLoad Str Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword AttributeLoad NameLoad attr keyword Call NameLoad AttributeLoad NameLoad attr keyword Call NameLoad Str keyword NameLoad Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword NameLoad keyword Call NameLoad AttributeLoad NameLoad attr keyword Call AttributeLoad NameLoad attr Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore SubscriptLoad Call NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr Index Num Return Call AttributeLoad NameLoad attr Str Set Call NameLoad keyword Str keyword Call AttributeLoad NameLoad attr Str keyword Call NameLoad keyword NameLoad keyword Call NameLoad Str decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Return Call NameLoad keyword Call NameLoad NameLoad keyword Call NameLoad Call AttributeLoad NameLoad attr keyword NameLoad keyword Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Dict For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body Assign NameStore Call NameLoad NameLoad If CompareIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore NameLoad Index NameLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword NameLoad keyword BoolOpOr AttributeLoad NameLoad attr Num keyword SubscriptLoad AttributeLoad NameLoad attr Index NameLoad keyword Call NameLoad NameLoad orelse Assign SubscriptStore NameLoad Index NameLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword NameLoad keyword BoolOpOr AttributeLoad NameLoad attr Num keyword Call NameLoad NameLoad If CompareIsNot AttributeLoad NameLoad attr NameLoad body For TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr body Assign NameStore Call NameLoad NameLoad Assign SubscriptStore NameLoad Index NameLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword NameLoad keyword BoolOpOr AttributeLoad AttributeLoad NameLoad attr attr Num keyword SubscriptLoad AttributeLoad NameLoad attr Index NameLoad keyword Call NameLoad NameLoad keyword SubscriptLoad AttributeLoad NameLoad attr Index Call NameLoad NameLoad Return Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad decorator_list Call NameLoad NameLoad ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Assign NameStore Call NameLoad keyword NameLoad keyword AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr decorator_list Call NameLoad keyword Call NameLoad NameLoad keyword Call NameLoad keyword Call NameLoad keyword Call AttributeLoad Call NameLoad NameLoad attr NameLoad decorator_list ClassDef bases NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call NameLoad NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr NameLoad ListLoad Str AttributeLoad NameLoad attr NameLoad ListLoad Str Call NameLoad AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad Call NameLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr Str Lambda arguments args NameParam defaults Call AttributeLoad NameLoad attr keyword NameLoad keyword BinOpMult AttributeLoad NameLoad attr Num keyword Dict Str Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr Assign NameStore Call NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword Call NameLoad NameLoad keyword AttributeLoad NameLoad attr Expr Call NameLoad NameLoad NameLoad NameLoad keyword Dict keyword Call NameLoad keyword ListLoad keyword ListLoad NameLoad NameLoad decorator_list decorator_list ClassDef bases NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call NameLoad NameLoad attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr Str Str NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Call NameLoad Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr Call NameLoad ListLoad Call NameLoad keyword Str keyword Call NameLoad decorator_list decorator_list ClassDef bases NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call NameLoad NameLoad attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr Str Str NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Call NameLoad Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad Call AttributeLoad NameLoad attr keyword Call NameLoad Str keyword Call AttributeLoad Call NameLoad Str attr Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr NameLoad ListLoad Str Dict ListLoad Str Dict Assign NameStore Call AttributeLoad Call NameLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr Str Str NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad keyword ListLoad AttributeLoad AttributeLoad NameLoad attr attr keyword Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call NameLoad keyword Set NameLoad Assign NameStore Call AttributeLoad Call NameLoad NameLoad attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr Str Str NameLoad Assign NameStore Call NameLoad keyword Set NameLoad Assign NameStore Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore Call NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword Call AttributeLoad NameLoad attr NameLoad keyword NameLoad keyword Dict Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad keyword ListLoad NameLoad Call AttributeLoad Str attr NameLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call NameLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr Str Str NameLoad Assign NameStore Call NameLoad NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Call NameLoad Call NameLoad keyword ListLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call NameLoad attr Call AttributeLoad NameLoad attr keyword NameLoad AttributeLoad NameLoad attr AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Call AttributeLoad Call NameLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr Str Str NameLoad Assign NameStore Call NameLoad NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Call NameLoad Call NameLoad keyword ListLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call NameLoad NameLoad attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr Str Str NameLoad Assign NameStore Call AttributeLoad NameLoad attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr ListLoad AttributeLoad NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword ListLoad AttributeLoad AttributeLoad NameLoad attr attr keyword Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad AttributeLoad NameLoad attr keyword Call NameLoad Call AttributeLoad NameLoad attr keyword Call NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call NameLoad NameLoad attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr Str Str NameLoad Assign NameStore Call AttributeLoad NameLoad attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr NameLoad Assign NameStore Call NameLoad Str Expr Call AttributeLoad NameLoad attr ListLoad AttributeLoad NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword ListLoad AttributeLoad AttributeLoad NameLoad attr attr keyword Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad AttributeLoad NameLoad attr keyword Call NameLoad Call AttributeLoad NameLoad attr keyword NameLoad decorator_list decorator_list ClassDef bases NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr Assign NameStore Call NameLoad AttributeLoad NameLoad attr Assign NameStore Call NameLoad keyword Set NameLoad Assign NameStore Call AttributeLoad Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr NameLoad attr ListLoad Str AttributeLoad NameLoad attr NameLoad Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index Call NameLoad AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr Assign NameStore Dict Call NameLoad AttributeLoad NameLoad attr NameLoad Assign NameStore Call NameLoad keyword Set NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad keyword ListLoad Call NameLoad keyword Call NameLoad AttributeLoad NameLoad attr keyword Call NameLoad AttributeLoad NameLoad attr NameLoad decorator_list decorator_list ClassDef bases NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword Dict keyword Dict keyword Dict AttributeLoad NameLoad attr NameLoad Assign NameStore Call NameLoad AttributeLoad NameLoad attr Expr Call NameLoad NameLoad NameLoad NameLoad Set Call NameLoad keyword Call NameLoad AttributeLoad NameLoad attr keyword NameLoad Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword NameLoad keyword Call AttributeLoad Call NameLoad Str attr Call NameLoad AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad decorator_list decorator_list ClassDef bases NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword Dict keyword Dict keyword Dict AttributeLoad NameLoad attr NameLoad Assign NameStore Call NameLoad AttributeLoad NameLoad attr Expr Call NameLoad NameLoad NameLoad NameLoad Set Call NameLoad keyword Call NameLoad AttributeLoad NameLoad attr keyword NameLoad Call NameLoad keyword ListLoad Call NameLoad keyword NameLoad keyword Str keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad decorator_list decorator_list ClassDef bases NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call NameLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Call NameLoad Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call NameLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr Str Str NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Call NameLoad Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call NameLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Call NameLoad Call NameLoad keyword ListLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call NameLoad attr Call AttributeLoad NameLoad attr keyword NameLoad AttributeLoad NameLoad attr AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Call AttributeLoad Call NameLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Call NameLoad Call NameLoad keyword ListLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call NameLoad attr Call AttributeLoad NameLoad attr keyword NameLoad AttributeLoad NameLoad attr Call NameLoad Assign NameStore Call AttributeLoad Call NameLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Call NameLoad Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad decorator_list decorator_list ClassDef bases NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Call NameLoad Assign NameStore Call NameLoad keyword Call NameLoad keyword NameLoad keyword NameLoad Assign NameStore Str Assign NameStore Call NameLoad Assign NameStore Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad keyword Set Call NameLoad keyword NameLoad keyword NameLoad keyword Dict NameLoad NameLoad Assign NameStore Call NameLoad keyword ListLoad Assign NameStore Call NameLoad NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword Call AttributeLoad NameLoad attr NameLoad keyword NameLoad keyword Dict Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad keyword ListLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad Call NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword Call NameLoad AttributeLoad Call AttributeLoad Call NameLoad Num attr attr Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad Assign NameStore Str Assign NameStore Call NameLoad keyword Set Call NameLoad keyword NameLoad keyword Dict NameLoad NameLoad Assign NameStore Call NameLoad keyword ListLoad Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword Dict keyword Dict keyword Dict Assign NameStore Call NameLoad NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword Call AttributeLoad NameLoad attr NameLoad keyword Dict Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad keyword ListLoad Call NameLoad keyword Call NameLoad NameLoad keyword Call NameLoad AttributeLoad Call NameLoad Num attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad Call NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword Call NameLoad AttributeLoad Call AttributeLoad Call NameLoad Num attr attr Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad Assign NameStore Str Assign NameStore Call NameLoad keyword Set Call NameLoad keyword NameLoad keyword Dict NameLoad NameLoad Assign NameStore Call NameLoad keyword ListLoad Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword Dict keyword Dict keyword Dict Assign NameStore Call NameLoad NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword Call AttributeLoad NameLoad attr NameLoad keyword Dict Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad keyword ListLoad Call NameLoad keyword Call NameLoad NameLoad keyword Call NameLoad AttributeLoad Call NameLoad Num attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad Assign NameStore Call NameLoad AttributeLoad Call NameLoad Num attr Assign NameStore Call NameLoad keyword Call NameLoad NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad Assign NameStore Str Assign NameStore Call NameLoad keyword Set Call NameLoad keyword NameLoad keyword Dict Call NameLoad NameLoad NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword Dict keyword Dict keyword Dict Assign NameStore Call NameLoad keyword Set NameLoad Assign NameStore Call NameLoad NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword Call NameLoad ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad keyword Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad keyword ListLoad Call NameLoad keyword Call NameLoad keyword Num NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad keyword Set NameLoad Assign NameStore Call NameLoad NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword Dict Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Str Assign NameStore Call NameLoad Call NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword Call NameLoad keyword Dict NameLoad Call AttributeLoad Call NameLoad Str attr Call AttributeLoad NameLoad attr Str keyword Dict Call NameLoad NameLoad Call NameLoad Str keyword Dict NameLoad Call NameLoad keyword NameLoad keyword Call NameLoad keyword NameLoad keyword Call NameLoad Call AttributeLoad NameLoad attr keyword Dict keyword NameLoad Assign NameStore Call NameLoad keyword ListLoad Call NameLoad keyword NameLoad keyword AttributeLoad NameLoad attr keyword Call AttributeLoad AttributeLoad NameLoad attr attr TupleLoad NameLoad Str Str Dict Str Str Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Assign NameStore Call NameLoad keyword ListLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Str Assign NameStore Call NameLoad Call NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword Dict Str Str Assign NameStore Call NameLoad keyword Set Call NameLoad keyword NameLoad keyword Dict NameLoad Call NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword Dict keyword Dict keyword Dict Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad keyword ListLoad Call NameLoad keyword Call NameLoad NameLoad keyword NameLoad keyword Dict Str Str NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Str Assign NameStore Call NameLoad Call NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword Set Call NameLoad keyword NameLoad keyword Dict NameLoad Call NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword Dict keyword Dict keyword Dict Assign NameStore Call NameLoad keyword Set NameLoad Assign NameStore Call NameLoad NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword Dict Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Assign NameStore Call NameLoad Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Call NameLoad keyword ListLoad Call NameLoad keyword Call NameLoad NameLoad keyword NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call NameLoad NameLoad attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr Str Str NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Call NameLoad Call NameLoad keyword ListLoad decorator_list decorator_list ClassDef bases NameLoad NameLoad body FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad keyword Dict keyword Dict AttributeLoad NameLoad attr Call NameLoad Str keyword Dict Assign NameStore Call NameLoad NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Set Call NameLoad keyword Call NameLoad AttributeLoad NameLoad attr Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad keyword Dict keyword Dict AttributeLoad NameLoad attr Call NameLoad Str keyword Dict Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Dict Call NameLoad AttributeLoad NameLoad attr Call NameLoad keyword Call NameLoad keyword Call NameLoad AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Set Call NameLoad keyword Call NameLoad AttributeLoad NameLoad attr Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad keyword Dict keyword Dict keyword Dict Assign NameStore Call NameLoad AttributeLoad NameLoad attr Expr Call NameLoad NameLoad NameLoad NameLoad Set Call NameLoad keyword Call NameLoad AttributeLoad NameLoad attr keyword Call NameLoad Call AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad Call AttributeLoad NameLoad attr keyword Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad keyword Dict keyword Dict keyword Dict Assign NameStore Call AttributeLoad Call NameLoad AttributeLoad NameLoad attr attr ListLoad Str Call NameLoad AttributeLoad NameLoad attr Str Str NameLoad Expr Call NameLoad NameLoad NameLoad NameLoad Set Call NameLoad keyword Call NameLoad AttributeLoad NameLoad attr keyword Call NameLoad Call AttributeLoad NameLoad attr keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad Call AttributeLoad NameLoad attr keyword Call NameLoad keyword ListLoad Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr Call NameLoad Call AttributeLoad NameLoad attr Call NameLoad Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str FunctionDef arguments args NameParam defaults body Return TupleLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list Assign NameStore Call NameLoad Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Call NameLoad GeneratorExp Call NameLoad SubscriptLoad NameLoad Index NameLoad comprehension NameStore NameLoad Call NameLoad GeneratorExp Call NameLoad SubscriptLoad NameLoad Index NameLoad comprehension NameStore NameLoad decorator_list decorator_list ClassDef bases NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad keyword Call NameLoad NameLoad Assign AttributeStore NameLoad attr Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad keyword Call NameLoad AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Dict decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad Assign NameStore Call NameLoad NameLoad Expr Call NameLoad NameLoad AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad keyword ListLoad keyword Call NameLoad keyword Call NameLoad keyword AttributeLoad NameLoad attr keyword Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str NameLoad Expr Call AttributeLoad NameLoad attr AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad decorator_list Call NameLoad keyword Call AttributeLoad Call NameLoad NameLoad attr NameLoad FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad Assign NameStore Call NameLoad NameLoad Return Call NameLoad NameLoad AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad keyword ListLoad keyword Call NameLoad keyword Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword NameLoad Assign NameStore Call NameLoad NameLoad Return Call NameLoad NameLoad AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad keyword ListLoad keyword Set Call NameLoad keyword Str keyword Call NameLoad keyword NameLoad keyword Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr Call NameLoad NameLoad AttributeLoad NameLoad attr decorator_list decorator_list FunctionDef arguments args NameParam defaults body Expr Str ClassDef bases NameLoad NameLoad body FunctionDef arguments args NameParam defaults body Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad keyword NameLoad decorator_list decorator_list Return NameLoad decorator_list ClassDef bases Call NameLoad Lambda arguments args NameParam defaults Call NameLoad keyword NameLoad keyword NameLoad keyword Call AttributeLoad NameLoad attr keyword Call AttributeLoad NameLoad attr keyword Str body Expr Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call NameLoad ListLoad Str Str AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str For TupleStore NameStore NameStore Call NameLoad body TryExcept body Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Pass orelse Expr Call NameLoad NameLoad decorator_list ClassDef bases Call NameLoad keyword Call NameLoad NameLoad keyword NameLoad keyword NameLoad keyword Lambda arguments args NameParam defaults Call NameLoad Call NameLoad body Expr Str decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr keyword Str Assign NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Str NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr keyword Str Assign NameStore Call AttributeLoad NameLoad attr keyword Str Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword Call NameLoad NameLoad Expr Call AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad TupleLoad Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad keyword NameLoad keyword NameLoad Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad Call NameLoad Call AttributeLoad NameLoad attr attr Str Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword Call NameLoad keyword NameLoad Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call NameLoad AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr TupleLoad Num NameLoad TupleLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr NameLoad AttributeLoad AttributeLoad NameLoad attr attr keyword Call NameLoad keyword BinOpAdd AttributeLoad NameLoad attr Num decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad With Call AttributeLoad Call AttributeLoad Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Str attr Call NameLoad NameLoad attr Str NameStore body Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr ListLoad NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr ListLoad Str Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr Assign NameStore Call NameLoad NameLoad With Call AttributeLoad Call AttributeLoad NameLoad attr NameLoad attr Str NameStore body Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr ListLoad NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr keyword Call NameLoad keyword AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr ListLoad Str Call NameLoad NameLoad Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr ListLoad Str Call AttributeLoad NameLoad attr Str Call NameLoad NameLoad Expr Call AttributeLoad Call AttributeLoad NameLoad attr attr Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore NameLoad Assign NameStore Call NameLoad NameLoad keyword NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr BinOpMod Str TupleLoad NameLoad Call NameLoad NameLoad decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr ListLoad Call NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad Str attr ListLoad Str Str Expr Call AttributeLoad NameLoad attr ListLoad TupleLoad Call NameLoad Str Call NameLoad Str Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad Str attr ListLoad Str Str Str Expr Call AttributeLoad NameLoad attr ListLoad TupleLoad Call NameLoad Str Call NameLoad Str TupleLoad Call NameLoad Str Call NameLoad Str Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad Str attr ListLoad Str Str Expr Call AttributeLoad NameLoad attr ListLoad TupleLoad Call NameLoad Str Call NameLoad Str Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad Str attr ListLoad Str Expr Call AttributeLoad NameLoad attr ListLoad TupleLoad Call NameLoad Str Call NameLoad Str Call NameLoad NameLoad decorator_list decorator_list ClassDef bases Call NameLoad Call NameLoad NameLoad keyword NameLoad NameLoad body Expr Str decorator_list Assign NameStore Call NameLoad keyword Str keyword Call NameLoad Call AttributeLoad NameLoad attr keyword Call NameLoad FunctionDef arguments args NameParam NameParam defaults body Expr Str FunctionDef arguments args NameParam NameParam defaults body Assign ListStore NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr NameLoad Assign NameStore ListComp SubscriptLoad Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr NameLoad Index Num comprehension NameStore NameLoad Expr Call AttributeLoad NameLoad attr NameLoad AttributeLoad NameLoad attr decorator_list Return NameLoad decorator_list ClassDef bases Call NameLoad NameLoad Call NameLoad keyword Call NameLoad Str keyword Str Call NameLoad body Expr Str decorator_list ClassDef bases Call NameLoad NameLoad Call NameLoad keyword Call NameLoad Str keyword Str Call NameLoad keyword Call NameLoad Str keyword Str body Expr Str decorator_list ClassDef bases Call NameLoad NameLoad Call NameLoad keyword Call NameLoad keyword Call NameLoad Str keyword Call NameLoad Str Call NameLoad body Expr Str decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore Call NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad Assign NameStore Call NameLoad Assign NameStore Call NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad FunctionDef arguments args NameParam defaults body Return Call NameLoad keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore Str Assign NameStore Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore Call NameLoad keyword Call NameLoad keyword NameLoad keyword NameLoad keyword Call AttributeLoad NameLoad attr Return Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword NameLoad keyword NameLoad decorator_list NameLoad FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad Call NameLoad keyword Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad NameLoad attr attr keyword AttributeLoad NameLoad attr AttributeLoad NameLoad attr Call NameLoad decorator_list decorator_list ClassDef bases Call NameLoad NameLoad Call NameLoad keyword Call NameLoad keyword Call NameLoad Str keyword Call NameLoad Str Call NameLoad keyword Call NameLoad keyword Call NameLoad Str keyword Call NameLoad Str body Expr Str FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr Return TupleLoad NameLoad Call NameLoad NameLoad AttributeLoad NameLoad attr Call NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore TupleLoad AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore Call NameLoad GeneratorExp TupleLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr comprehension NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults Str body Assign NameStore Call AttributeLoad Call NameLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Return TupleLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Call AttributeLoad NameLoad attr Call NameLoad Call AttributeLoad Call AttributeLoad NameLoad attr attr keyword NameLoad AttributeLoad NameLoad attr Call NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad Expr Call NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr Str Expr Call NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr Str Assign NameStore Call AttributeLoad NameLoad attr Str Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr TupleLoad Call AttributeLoad Call AttributeLoad NameLoad attr attr Call AttributeLoad Call AttributeLoad NameLoad attr attr TupleLoad Str Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad Call NameLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr ListLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad Call NameLoad NameLoad attr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Expr Call NameLoad ListLoad Str AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Call NameLoad Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Call NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad Call NameLoad NameLoad attr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Expr Call NameLoad ListLoad Str keyword AttributeLoad NameLoad attr Expr Call NameLoad ListLoad Str AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Call NameLoad Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Call NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr ListLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad Call NameLoad NameLoad attr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad Call AttributeLoad NameLoad attr Str attr Str Expr Call NameLoad ListLoad Str keyword AttributeLoad NameLoad attr Expr Call NameLoad ListLoad Str AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Call NameLoad Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Call NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr ListLoad Call AttributeLoad NameLoad attr Str Call AttributeLoad NameLoad attr Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad Call NameLoad NameLoad attr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad Call AttributeLoad NameLoad attr Str attr Str Expr Call NameLoad ListLoad Str AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Call NameLoad Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Call NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad Call AttributeLoad NameLoad attr attr Str decorator_list decorator_list ClassDef bases Call NameLoad keyword NameLoad keyword Call NameLoad keyword Call NameLoad keyword NameLoad keyword Call NameLoad body Expr Str decorator_list ClassDef bases Call NameLoad NameLoad Call NameLoad keyword Call NameLoad keyword NameLoad Call NameLoad keyword Call NameLoad keyword NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr NameLoad Str NameLoad Assign NameStore Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad NameLoad keyword NameLoad Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Call AttributeLoad Call NameLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr Expr Call NameLoad NameLoad keyword NameLoad Expr Call NameLoad ListLoad Str AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore Call NameLoad keyword NameLoad keyword AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Call NameLoad NameLoad NameLoad Call NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Call NameLoad GeneratorExp Call NameLoad AttributeLoad NameLoad attr comprehension NameStore Call AttributeLoad NameLoad attr decorator_list Call NameLoad Lambda arguments args NameParam NameParam defaults Call AttributeLoad NameLoad attr Num Call NameLoad Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr NameLoad decorator_list ClassDef bases Call NameLoad keyword NameLoad keyword Call NameLoad keyword Call NameLoad keyword NameLoad keyword Call NameLoad body Expr Str decorator_list ClassDef bases Call NameLoad NameLoad Call NameLoad keyword Call NameLoad keyword NameLoad Call NameLoad keyword Call NameLoad keyword NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad NameLoad keyword Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr keyword Call AttributeLoad NameLoad attr Assign NameStore Call NameLoad keyword NameLoad keyword AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Call NameLoad NameLoad NameLoad Call NameLoad Assign ListStore NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad AttributeLoad NameLoad attr decorator_list decorator_list ClassDef bases Call NameLoad NameLoad Call NameLoad keyword NameLoad Call NameLoad body Expr Str decorator_list ClassDef bases Call NameLoad NameLoad Call NameLoad keyword NameLoad Call NameLoad keyword NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad NameLoad keyword NameLoad Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call NameLoad keyword NameLoad Assign NameStore Call NameLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr AttributeLoad Call AttributeLoad NameLoad attr attr Dict NameLoad NameLoad Expr Call AttributeLoad NameLoad attr ListLoad Call AttributeLoad NameLoad attr decorator_list decorator_list ClassDef bases Call NameLoad NameLoad Call NameLoad keyword Call NameLoad keyword NameLoad keyword Dict Str Str Call NameLoad keyword Dict body Expr Str decorator_list ClassDef bases Call NameLoad NameLoad Lambda arguments args NameParam defaults Call NameLoad Call NameLoad keyword NameLoad keyword NameLoad Lambda arguments args NameParam defaults Call NameLoad Call NameLoad keyword Call NameLoad keyword NameLoad body Expr Str decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam NameParam defaults Call NameLoad Dict body Expr Str Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad Expr Call NameLoad NameLoad AttributeLoad NameLoad attr Call NameLoad Assign ListStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Return NameLoad decorator_list decorator_list FunctionDef arguments args NameParam defaults body Expr Str ClassDef bases NameLoad NameLoad body FunctionDef arguments args NameParam defaults body Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr If NameLoad body Assign AttributeStore NameLoad attr Call NameLoad NameLoad keyword NameLoad orelse Assign AttributeStore NameLoad attr Call NameLoad NameLoad keyword NameLoad Assign AttributeStore NameLoad attr Call NameLoad NameLoad Assign AttributeStore NameLoad attr Call NameLoad keyword Call NameLoad keyword Str keyword AttributeLoad NameLoad attr keyword AttributeLoad NameLoad attr decorator_list decorator_list Return NameLoad decorator_list ClassDef bases Call NameLoad keyword NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr NameLoad Str NameLoad Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad NameLoad AttributeLoad NameLoad attr Call NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad AttributeLoad AttributeLoad NameLoad attr attr decorator_list Call NameLoad NameLoad NameLoad keyword NameLoad FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Str Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad keyword Dict NameLoad Str Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list Call NameLoad NameLoad NameLoad FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword BinOpAdd NameLoad Num Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword BinOpAdd NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list decorator_list ClassDef bases Call NameLoad keyword NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Str Assign NameStore Call NameLoad Assign NameStore Str Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad keyword Dict Str NameLoad Assign NameStore SubscriptLoad AttributeLoad AttributeLoad NameLoad attr attr Index AttributeLoad NameLoad attr Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad keyword NameLoad keyword NameLoad Call NameLoad keyword NameLoad keyword NameLoad decorator_list decorator_list ClassDef bases Call NameLoad keyword NameLoad keyword Call NameLoad keyword Call NameLoad keyword NameLoad keyword Call NameLoad body Expr Str decorator_list ClassDef bases Call NameLoad NameLoad Call NameLoad keyword Call NameLoad keyword NameLoad Call NameLoad keyword Call NameLoad keyword NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad NameLoad keyword NameLoad Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad Assign NameStore Call NameLoad keyword NameLoad keyword AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Str NameLoad Expr Call AttributeLoad NameLoad attr Call NameLoad NameLoad NameLoad Call NameLoad Assign NameStore Call AttributeLoad NameLoad attr keyword Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr ListLoad NameLoad Call AttributeLoad NameLoad attr decorator_list Call NameLoad NameLoad NameLoad NameLoad FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad NameLoad Assign NameStore Str Assign NameStore Call NameLoad keyword NameLoad keyword NameLoad Assign NameStore Call AttributeLoad NameLoad attr Call NameLoad NameLoad NameLoad Call NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad AttributeLoad AttributeLoad NameLoad attr attr decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr Call NameLoad keyword Num keyword Num NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr Call NameLoad keyword Num keyword Num NameLoad decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr Assign NameStore NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Call NameLoad AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore BinOpMult AttributeLoad NameLoad attr Num Assign NameStore NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Call NameLoad AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore BinOpAdd AttributeLoad NameLoad attr Num Assign NameStore BinOpMult AttributeLoad NameLoad attr Num Expr Call AttributeLoad NameLoad attr NameLoad Call NameLoad AttributeLoad NameLoad attr NameLoad decorator_list decorator_list FunctionDef arguments args NameParam defaults body Expr Str ClassDef bases NameLoad NameLoad body FunctionDef arguments args NameParam defaults body Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad Call AttributeLoad NameLoad attr attr decorator_list decorator_list Assign AttributeStore NameLoad attr BinOpAdd BinOpAdd Str AttributeLoad AttributeLoad NameLoad attr attr Str Return NameLoad decorator_list FunctionDef arguments args defaults body Expr Str For NameStore TupleLoad NameLoad NameLoad NameLoad NameLoad NameLoad body For NameStore TupleLoad Num Num Num Num body Assign NameStore Call NameLoad Call NameLoad NameLoad Assign SubscriptStore Call NameLoad Index AttributeLoad NameLoad attr NameLoad decorator_list Expr Call NameLoad Delete NameDel ClassDef bases Call NameLoad keyword Lambda arguments args NameParam defaults Call NameLoad Call NameLoad NameLoad keyword NameLoad keyword NameLoad keyword Lambda arguments args NameParam defaults Call NameLoad Call NameLoad body Expr Str decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr Call NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults vararg kwarg body Expr Str Return Call AttributeLoad AttributeLoad NameLoad attr attr Call NameLoad ListLoad NameLoad Call NameLoad NameLoad Call NameLoad NameLoad Num decorator_list FunctionDef arguments args NameParam NameParam defaults body Assign NameStore Call NameLoad AttributeLoad NameLoad attr NameLoad FunctionDef arguments args defaults vararg kwarg body Assign NameStore Call NameLoad ListLoad NameLoad Call NameLoad NameLoad Call NameLoad NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Num Assign AttributeStore NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad BinOpAdd NameLoad Num Return Call NameLoad NameLoad NameLoad decorator_list Return NameLoad decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Expr Call AttributeLoad Call NameLoad NameLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad NameLoad Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore ListComp Call AttributeLoad AttributeLoad NameLoad attr attr comprehension NameStore Call NameLoad Num Expr Call AttributeLoad NameLoad attr TupleLoad NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr Str TupleLoad BinOpMult ListLoad NameLoad Num Num decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad attr keyword NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad attr keyword NameLoad Return TupleLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Expr Call AttributeLoad NameLoad attr TupleLoad NameLoad NameLoad CompareEq NameLoad NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr Str NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr Str NameLoad TupleLoad NameLoad NameLoad NameLoad Num Num decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad AttributeLoad AttributeLoad NameLoad attr attr NameLoad decorator_list decorator_list ClassDef bases Call NameLoad Lambda arguments args NameParam defaults Call NameLoad Call NameLoad NameLoad body Expr Str decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr Call NameLoad ListLoad NameLoad NameLoad Call NameLoad Call NameLoad ListLoad NameLoad NameLoad keyword Lambda arguments args NameParam defaults TupleLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list Call NameLoad NameLoad NameLoad decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Call NameLoad Assign NameStore Call NameLoad keyword Str keyword Call NameLoad keyword NameLoad Expr Call AttributeLoad Call NameLoad keyword NameLoad keyword NameLoad attr NameLoad NameLoad Expr Call AttributeLoad NameLoad attr AttributeLoad Call AttributeLoad NameLoad attr attr Dict NameLoad NameLoad decorator_list Call NameLoad keyword Call NameLoad keyword Call NameLoad decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Expr Str FunctionDef arguments args defaults body Pass decorator_list NameLoad Expr Call NameLoad Expr Call NameLoad Expr Call NameLoad Assign NameStore ListComp SubscriptLoad AttributeLoad NameLoad attr Index Str comprehension NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad ListLoad Num Num Num decorator_list Call NameLoad Lambda arguments args NameParam NameParam defaults NameLoad FunctionDef arguments args NameParam defaults body Expr Str FunctionDef arguments args NameParam NameParam NameParam defaults body Return TupleLoad NameLoad NameLoad NameLoad decorator_list NameLoad Assign NameStore Call NameLoad Num Num keyword Num Expr Call AttributeLoad NameLoad attr NameLoad TupleLoad Num Num Num decorator_list decorator_list
N/A N/A 
Tests for ``flocker.node.agents.blockdevice``.
 errno ENOTDIR functools partial uuid UUID uuid4 subprocess check_output check_call stat S_IRWXU datetime datetime timedelta bitmath Byte MB MiB GB GiB pytz UTC N/A psutil zope.interface implementer zope.interface.verify verifyObject pyrsistent PClass field discard pmap pvector characteristic attributes hypothesis given note assume hypothesis.strategies uuids text lists just integers builds sampled_from dictionaries tuples booleans testtools.matchers Equals testtools.deferredruntest SynchronousDeferredRunTest twisted.internet reactor twisted.internet.defer succeed twisted.python.runtime platform twisted.python.filepath FilePath eliot Logger eliot.testing validate_logging capture_logging LoggedAction LoggedMessage assertHasMessage assertHasAction strategies blockdevice_volumes N/A blockdevice test.istatechange make_istatechange_tests blockdevice BlockDeviceDeployerLocalState BlockDeviceDeployer BlockDeviceCalculator IBlockDeviceAPI IProfiledBlockDeviceAPI BlockDeviceVolume UnknownVolume CreateBlockDeviceDataset UnattachedVolume DatasetExists UnmountBlockDevice DetachVolume AttachVolume CreateFilesystem DestroyVolume MountBlockDevice RegisterVolume DATASET_TRANSITIONS IDatasetStateChangeFactory ICalculator NOTHING_TO_DO DiscoveredDataset DesiredDataset DatasetStates PROFILE_METADATA_KEY UNMOUNT_BLOCK_DEVICE CREATE_BLOCK_DEVICE_DATASET INVALID_DEVICE_PATH CREATE_VOLUME_PROFILE_DROPPED DISCOVERED_RAW_STATE ATTACH_VOLUME UNREGISTERED_VOLUME_ATTACHED IBlockDeviceAsyncAPI _SyncToThreadedAsyncAPIAdapter allocated_size ProcessLifetimeCache FilesystemExists UnknownInstanceID log_list_volumes CALL_LIST_VOLUMES loopback LoopbackBlockDeviceAPI _losetup_list_parse _losetup_list _blockdevicevolume_from_dataset_id _backing_file_name EventuallyConsistentBlockDeviceAPI LOOPBACK_ALLOCATION_UNIT LOOPBACK_MINIMUM_ALLOCATABLE_SIZE common.algebraic tagged_union_strategy N/A run_state_change in_parallel ILocalState IStateChange NoOp testtools ideployer_tests_factory to_node assert_calculated_changes_for_deployer compute_cluster_state ControllableAction testtools REALISTIC_BLOCKDEVICE_SIZE run_process make_with_init_tests random_name TestCase control Dataset Manifestation Node NodeState Deployment DeploymentState NonManifestDatasets Application AttachedVolume DockerImage PersistentState control Leases control.testtools InMemoryStatePersister common.test.test_thread NonThreadPool NonReactor common RACKSPACE_MINIMUM_VOLUME_SIZE testtools FakeCloudAPI detach_destroy_volumes fakeprofiledloopbackblockdeviceapi_for_test loopbackblockdeviceapi_for_test make_iblockdeviceapi_tests make_iprofiledblockdeviceapi_tests make_icloudapi_tests mountroot_for_test umount umount_all N/A EMPTY_NODE_STATE N/A NodeState uuid N/A uuid4 hostname example.com N/A ARBITRARY_BLOCKDEVICE_ID blockdevice_id_1 N/A ARBITRARY_BLOCKDEVICE_ID_2 blockdevice_id_2 N/A _logger N/A Logger N/A DISCOVERED_DATASET_STRATEGY N/A N/A N/A tagged_union_strategy DiscoveredDataset N/A dataset_id maximum_size mount_point blockdevice_id device_path N/A uuids N/A integers min_value 1 N/A builds FilePath N/A sampled_from N/A /flocker/abc /flocker/xyz N/A just N/A builds FilePath N/A sampled_from N/A /dev/xvdf /dev/xvdg map N/A N/A N/A dataset N/A N/A N/A dataset set blockdevice_id N/A _create_blockdevice_id_for_test N/A dataset dataset_id N/A _METADATA_STRATEGY N/A text average_size 3 min_size 1 alphabet CGAT N/A DESIRED_DATASET_ATTRIBUTE_STRATEGIES N/A dataset_id maximum_size metadata mount_point N/A uuids N/A N/A N/A integers min_value 0 map N/A N/A N/A n N/A N/A LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A n LOOPBACK_ALLOCATION_UNIT N/A dictionaries keys _METADATA_STRATEGY values _METADATA_STRATEGY N/A builds FilePath N/A sampled_from N/A /flocker/abc /flocker/xyz N/A DESIRED_DATASET_STRATEGY N/A tagged_union_strategy DesiredDataset DESIRED_DATASET_ATTRIBUTE_STRATEGIES N/A _NoSuchThing N/A object N/A TWO_DESIRED_DATASET_STRATEGY N/A N/A DESIRED_DATASET_STRATEGY flatmap N/A N/A N/A x N/A N/A tuples N/A just x N/A tagged_union_strategy DesiredDataset N/A dict DESIRED_DATASET_ATTRIBUTE_STRATEGIES N/A attribute N/A just N/A getattr x attribute N/A attribute DESIRED_DATASET_ATTRIBUTE_STRATEGIES N/A N/A getattr x attribute _NoSuchThing _NoSuchThing dataset_map_from_iterable N/A N/A iterable N/A N/A N/A 
    Turn a list of datasets into a map from their IDs to the datasets.
     N/A N/A N/A dataset dataset_id dataset N/A dataset iterable N/A N/A N/A N/A N/A platform isLinux N/A N/A skip flocker.node.agents.blockdevice is only supported on Linux _SizeInfo N/A PClass N/A N/A 
    :ivar int actual: The number of bytes allocated in the filesystem to a
        file, as computed by counting block size.  A sparse file may have less
        space allocated to it than might be expected given just its reported
        size.
    :ivar int reported: The size of the file as a number of bytes, as computed
        by the apparent position of the end of the file (ie, what ``stat``
        reports).
     N/A actual N/A field type int mandatory True N/A reported N/A field type int mandatory True N/A get_size_info N/A N/A api volume N/A N/A N/A 
    Retrieve information about the size of the backing file for the given
    volume.

    :param LoopbackBlockDeviceAPI api: The loopback backend to use to retrieve
        the size information.
    :param BlockDeviceVolume volume: The volume the size of which to look up.

    :return: A ``_SizeInfo`` giving information about actual storage and
        reported size of the backing file for the given volume.
     N/A backing_file N/A N/A N/A api _root_path descendant N/A unattached N/A _backing_file_name volume N/A N/A N/A backing_file restat N/A actual N/A N/A N/A backing_file statinfo st_blocks 512 N/A reported N/A N/A backing_file getsize N/A N/A _SizeInfo actual actual reported reported N/A make_filesystem N/A N/A device block_device N/A N/A N/A 
    Synchronously initialize a device file with an ext4 filesystem.

    :param FilePath device: The path to the file onto which to put the
        filesystem.  Anything accepted by ``mkfs`` is acceptable (including a
        regular file instead of a device file).
    :param bool block_device: If ``True`` then the device is expected to be a
        block device and the ``-F`` flag will not be passed to ``mkfs``.  If
        ``False`` then the device is expected to be a regular file rather than
        an actual device and ``-F`` will be passed to ``mkfs`` to force it to
        create the filesystem.  It's possible to detect whether the given file
        is a device file or not.  This flag is required anyway because it's
        about what the caller *expects*.  This is meant to provide an extra
        measure of safety (these tests run as root, this function potentially
        wipes the filesystem from the device specified, this could have bad
        consequences if it goes wrong).
     N/A options N/A N/A N/A block_device N/A N/A N/A device isBlockDevice N/A N/A N/A Exception N/A N/A {} is not a block device but it was expected to be format N/A device path N/A N/A N/A N/A N/A device isBlockDevice N/A block_device N/A N/A N/A Exception N/A N/A {} is a block device but it was not expected to be format N/A device path N/A N/A block_device N/A N/A N/A N/A options extend N/A -F N/A command N/A N/A N/A mkfs options N/A -t ext4 N/A device path N/A N/A run_process command N/A mount N/A N/A device mountpoint N/A N/A N/A 
    Synchronously mount a filesystem.

    :param FilePath device: The path to the device file containing the
        filesystem.
    :param mountpoint device: The path to an existing directory at which to
        mount the filesystem.
     N/A N/A run_process N/A mount N/A device path N/A mountpoint path N/A create_blockdevicedeployer N/A N/A test_case hostname node_uuid eventually_consistent N/A 192.0.2.1 N/A uuid4 False N/A N/A 
    Create a new ``BlockDeviceDeployer``.

    :param unicode hostname: The hostname to assign the deployer.
    :param UUID node_uuid: The unique identifier of the node to assign the
        deployer.
    :param bool eventually_consistent: The ``IBlockDeviceAPI``
        should only be eventually consistent.

    :return: The newly created ``BlockDeviceDeployer``.
     N/A api N/A loopbackblockdeviceapi_for_test test_case N/A eventually_consistent N/A N/A api N/A EventuallyConsistentBlockDeviceAPI api N/A async_api N/A _SyncToThreadedAsyncAPIAdapter _sync api _reactor N/A NonReactor _threadpool N/A NonThreadPool N/A N/A BlockDeviceDeployer hostname hostname node_uuid node_uuid block_device_api api _async_block_device_api async_api mountroot N/A mountroot_for_test test_case N/A delete_manifestation N/A N/A node_state manifestation N/A N/A N/A 
    Remove all traces of a ``Manifestation`` from a ``NodeState``.
     N/A dataset_id N/A N/A manifestation dataset dataset_id N/A node_state N/A N/A node_state transform N/A manifestations dataset_id discard N/A node_state N/A N/A node_state transform N/A paths dataset_id discard N/A node_state N/A N/A node_state transform N/A devices N/A UUID dataset_id discard N/A node_state N/A BlockDeviceDeployerLocalStateTests N/A TestCase N/A N/A 
    Tests for ``BlockDeviceDeployerLocalState``.
     setUp N/A N/A self N/A N/A N/A N/A N/A N/A super BlockDeviceDeployerLocalStateTests self setUp N/A N/A self node_uuid N/A uuid4 N/A N/A self hostname 192.0.2.1 N/A test_provides_ilocalstate N/A N/A self N/A N/A N/A 
        Verify that ``BlockDeviceDeployerLocalState`` instances provide the
        ILocalState interface.
         N/A local_state N/A BlockDeviceDeployerLocalState node_uuid N/A self node_uuid hostname N/A self hostname datasets N/A N/A N/A N/A self assertTrue N/A verifyObject ILocalState local_state N/A test_shared_changes N/A N/A self N/A N/A N/A 
        ``shared_state_changes`` returns a ``NodeState`` with
        the ``node_uuid`` and ``hostname`` from the
        ``BlockDeviceDeployerLocalState`` and a
        ``NonManifestDatasets``.
         N/A local_state N/A BlockDeviceDeployerLocalState node_uuid N/A self node_uuid hostname N/A self hostname datasets N/A N/A expected_changes N/A N/A NodeState uuid N/A self node_uuid hostname N/A self hostname manifestations N/A paths N/A devices N/A applications None N/A NonManifestDatasets datasets N/A N/A N/A N/A self assertEqual N/A N/A local_state shared_state_changes expected_changes N/A non_manifest_dataset_test N/A N/A self state pass_device_path N/A True N/A N/A 
        When there is a dataset that exists but is not manifest locally, it is
        reported as a non-manifest dataset.

        :param state: Either ``DatasetStates.NOT_MANIFEST``,
            ``DatasetStates.ATTACHED``,
            ``DatasetStates.ATTACHED_NO_FILESYSTEM`` or
            ``DatasetStates.ATTACHED_TO_DEAD_NODE``.

        :param pass_device_path: If false don't create
            ``DiscoveredDataset`` with device path.
         N/A dataset_id N/A uuid4 N/A arguments N/A dict state state dataset_id dataset_id blockdevice_id ARBITRARY_BLOCKDEVICE_ID maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE device_path N/A FilePath /dev/xvdf N/A N/A pass_device_path N/A N/A N/A arguments N/A device_path N/A local_state N/A BlockDeviceDeployerLocalState node_uuid N/A self node_uuid hostname N/A self hostname datasets N/A dataset_id N/A DiscoveredDataset arguments N/A devices N/A N/A pass_device_path N/A N/A N/A devices N/A dataset_id N/A FilePath /dev/xvdf N/A expected_changes N/A N/A NodeState uuid N/A self node_uuid hostname N/A self hostname manifestations N/A paths N/A devices devices applications None N/A NonManifestDatasets datasets N/A N/A unicode dataset_id N/A Dataset dataset_id dataset_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A self assertEqual N/A N/A local_state shared_state_changes expected_changes N/A test_non_manifest_dataset N/A N/A self N/A N/A N/A 
        When there is a dataset in the ``NON_MANIFEST`` state,
        it is reported as a non-manifest dataset.
         N/A N/A N/A self non_manifest_dataset_test N/A DatasetStates NON_MANIFEST pass_device_path False N/A test_attached_dataset N/A N/A self N/A N/A N/A 
        When there is a a dataset in the ``ATTACHED`` state,
        it is reported as a non-manifest dataset.
         N/A N/A N/A self non_manifest_dataset_test N/A DatasetStates ATTACHED N/A test_attached_no_filesystem_dataset N/A N/A self N/A N/A N/A 
        When there is a a dataset in the ``ATTACHED_NO_FILESYSTEM`` state,
        it is reported as a non-manifest dataset.
         N/A N/A N/A self non_manifest_dataset_test N/A DatasetStates ATTACHED_NO_FILESYSTEM N/A test_attached_to_dead_node_dataset N/A N/A self N/A N/A N/A 
        When there is a a dataset in the ``ATTACHED_TO_DEAD_NODE`` state,
        it is reported as a non-manifest dataset.
         N/A N/A N/A self non_manifest_dataset_test N/A DatasetStates ATTACHED_TO_DEAD_NODE pass_device_path False N/A test_mounted_dataset N/A N/A self N/A N/A N/A 
        When there is a a dataset in the ``MOUNTED`` state,
        it is reported as a manifest dataset.
         N/A dataset_id N/A uuid4 N/A mount_point N/A FilePath /mount/point N/A device_path N/A FilePath /dev/xvdf N/A local_state N/A BlockDeviceDeployerLocalState node_uuid N/A self node_uuid hostname N/A self hostname datasets N/A dataset_id N/A DiscoveredDataset state N/A DatasetStates MOUNTED dataset_id dataset_id blockdevice_id ARBITRARY_BLOCKDEVICE_ID maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE device_path device_path mount_point mount_point N/A expected_changes N/A N/A NodeState uuid N/A self node_uuid hostname N/A self hostname manifestations N/A N/A unicode dataset_id N/A Manifestation dataset N/A Dataset dataset_id dataset_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE primary True paths N/A N/A unicode dataset_id mount_point devices N/A dataset_id device_path applications None N/A NonManifestDatasets N/A N/A N/A self assertEqual N/A N/A local_state shared_state_changes expected_changes N/A N/A BlockDeviceDeployerTests N/A N/A ideployer_tests_factory create_blockdevicedeployer N/A N/A 
    Tests for ``BlockDeviceDeployer``.
     N/A run_tests_with SynchronousDeferredRunTest N/A BlockDeviceDeployerAsyncAPITests N/A TestCase N/A N/A 
    Tests for ``BlockDeviceDeployer.async_block_device_api``.
     test_default N/A N/A self N/A N/A N/A 
        When not otherwise initialized, the attribute evaluates to a
        ``_SyncToThreadedAsyncAPIAdapter`` using the global reactor, the global
        reactor's thread pool, and the value of ``block_device_api``.
         N/A threadpool N/A N/A reactor getThreadPool N/A api N/A UnusableAPI N/A deployer N/A BlockDeviceDeployer hostname 192.0.2.1 node_uuid N/A uuid4 block_device_api api N/A N/A N/A self assertEqual N/A _SyncToThreadedAsyncAPIAdapter _reactor reactor _threadpool threadpool _sync api N/A deployer async_block_device_api N/A test_overridden N/A N/A self N/A N/A N/A 
        The object ``async_block_device_api`` refers to can be overridden by
        supplying the ``_async_block_device_api`` keyword argument to the
        initializer.
         N/A api N/A UnusableAPI N/A async_api N/A _SyncToThreadedAsyncAPIAdapter _reactor N/A NonReactor _threadpool N/A NonThreadPool _sync api N/A deployer N/A BlockDeviceDeployer hostname 192.0.2.1 node_uuid N/A uuid4 block_device_api api _async_block_device_api async_api N/A N/A N/A self assertIs async_api N/A deployer async_block_device_api N/A N/A assert_discovered_state N/A N/A case deployer expected_discovered_datasets persistent_state N/A N/A PersistentState N/A N/A 
    Assert that datasets on the state object returned by
    ``deployer.discover_state`` equals the given list of datasets.

    :param TestCase case: The running test.
    :param IDeployer deployer: The object to use to discover the state.
    :param expected_discovered_datasets: The expected discovered datasets.
        discover_state() is expected to return an
        ``BlockDeviceDeployerLocalState`` with a dataset attribute
        corresponding to this.
    :type expected_discovered_datasets: iterable of ``DiscoveredDataset``.

    :raise: A test failure exception if the manifestations are not what is
        expected.
     N/A previous_state N/A NodeState uuid N/A deployer node_uuid hostname N/A deployer hostname applications None manifestations None paths None devices None N/A discovering N/A N/A deployer discover_state N/A DeploymentState nodes N/A previous_state persistent_state persistent_state N/A local_state N/A N/A case successResultOf discovering N/A N/A N/A case assertEqual local_state N/A BlockDeviceDeployerLocalState hostname N/A deployer hostname node_uuid N/A deployer node_uuid datasets N/A dataset_map_from_iterable expected_discovered_datasets N/A BlockDeviceDeployerDiscoverRawStateTests N/A TestCase N/A N/A 
    Tests for ``BlockDeviceDeployer._discover_raw_state``.
     setUp N/A N/A self N/A N/A N/A N/A N/A N/A super BlockDeviceDeployerDiscoverRawStateTests self setUp N/A N/A self expected_hostname 192.0.2.123 N/A N/A self expected_uuid N/A uuid4 N/A N/A self api N/A loopbackblockdeviceapi_for_test self N/A N/A self this_node N/A N/A N/A self api compute_instance_id N/A N/A self deployer N/A BlockDeviceDeployer node_uuid N/A self expected_uuid hostname N/A self expected_hostname block_device_api N/A self api mountroot N/A mountroot_for_test self N/A test_compute_instance_id N/A N/A self N/A N/A N/A 
        ``BlockDeviceDeployer._discover_raw_state`` returns a ``RawState``
        with the ``compute_instance_id`` that the ``api`` reports.
         N/A raw_state N/A N/A N/A self deployer _discover_raw_state N/A N/A N/A self assertEqual N/A raw_state compute_instance_id N/A N/A N/A self api compute_instance_id N/A test_no_volumes N/A N/A self N/A N/A N/A 
        ``BlockDeviceDeployer._discover_raw_state`` returns a
        ``RawState`` with empty ``volumes`` if the ``api`` reports
        no attached volumes.
         N/A raw_state N/A N/A N/A self deployer _discover_raw_state N/A N/A N/A self assertEqual N/A raw_state volumes N/A N/A test_unattached_unmounted_device N/A N/A self N/A N/A N/A 
        If a volume is attached but not mounted, it is included as a
        volume by ``BlockDeviceDeployer._discover_raw_state``.
         N/A unmounted N/A N/A N/A self api create_volume dataset_id N/A uuid4 size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A raw_state N/A N/A N/A self deployer _discover_raw_state N/A N/A N/A self assertEqual N/A raw_state volumes N/A unmounted N/A test_filesystem_state N/A N/A self logger N/A N/A N/A 
        ``RawState`` includes whether or not a volume has a filesystem.
         N/A with_fs N/A N/A N/A self api create_volume dataset_id N/A uuid4 size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A with_fs N/A N/A N/A self api attach_volume N/A with_fs blockdevice_id N/A N/A N/A self api compute_instance_id N/A with_fs_device N/A N/A N/A self api get_device_path N/A with_fs blockdevice_id N/A N/A make_filesystem with_fs_device True N/A without_fs N/A N/A N/A self api create_volume dataset_id N/A uuid4 size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A without_fs N/A N/A N/A self api attach_volume N/A without_fs blockdevice_id N/A N/A N/A self api compute_instance_id N/A without_fs_device N/A N/A N/A self api get_device_path N/A without_fs blockdevice_id N/A devices_with_filesystems N/A N/A N/A N/A self deployer _discover_raw_state devices_with_filesystems N/A N/A N/A self assertEqual N/A dict with_fs N/A with_fs_device devices_with_filesystems without_fs N/A without_fs_device devices_with_filesystems N/A dict with_fs True without_fs False N/A N/A capture_logging assertHasMessage DISCOVERED_RAW_STATE N/A BlockDeviceDeployerDiscoverStateTests N/A TestCase N/A N/A 
    Tests for ``BlockDeviceDeployer.discover_state``.
     setUp N/A N/A self N/A N/A N/A N/A N/A N/A super BlockDeviceDeployerDiscoverStateTests self setUp N/A N/A self expected_hostname 192.0.2.123 N/A N/A self expected_uuid N/A uuid4 N/A N/A self api N/A loopbackblockdeviceapi_for_test self N/A N/A self this_node N/A N/A N/A self api compute_instance_id N/A N/A self deployer N/A BlockDeviceDeployer node_uuid N/A self expected_uuid hostname N/A self expected_hostname block_device_api N/A self api mountroot N/A mountroot_for_test self N/A test_no_devices N/A N/A self N/A N/A N/A 
        ``BlockDeviceDeployer.discover_state`` returns a ``NodeState`` with
        empty ``manifestations`` if the ``api`` reports no locally attached
        volumes.
         N/A N/A assert_discovered_state self N/A self deployer N/A N/A test_unattached_volume N/A N/A self N/A N/A N/A dataset_id N/A uuid4 N/A volume N/A N/A N/A self api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A assert_discovered_state self N/A self deployer persistent_state N/A PersistentState blockdevice_ownership N/A dataset_id N/A volume blockdevice_id expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates NON_MANIFEST dataset_id N/A volume dataset_id blockdevice_id N/A volume blockdevice_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A test_attached_unmounted_device N/A N/A self N/A N/A N/A 
        If a volume is attached but not mounted, it is discovered as
        an ``ATTACHED`` dataset returned by
        ``BlockDeviceDeployer.discover_state``.
         N/A dataset_id N/A uuid4 N/A volume N/A N/A N/A self api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A N/A self api attach_volume N/A volume blockdevice_id attach_to N/A self this_node N/A device_path N/A N/A N/A self api get_device_path N/A volume blockdevice_id N/A N/A make_filesystem device_path block_device True N/A N/A assert_discovered_state self N/A self deployer persistent_state N/A PersistentState blockdevice_ownership N/A dataset_id N/A volume blockdevice_id expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED dataset_id N/A volume dataset_id blockdevice_id N/A volume blockdevice_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE device_path device_path N/A test_one_device N/A N/A self N/A N/A N/A 
        ``BlockDeviceDeployer.discover_state`` returns a ``NodeState`` with one
        ``manifestations`` if the ``api`` reports one locally attached volume
        and the volume's filesystem is mounted in the right place.
         N/A dataset_id N/A uuid4 N/A volume N/A N/A N/A self api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A N/A self api attach_volume N/A volume blockdevice_id attach_to N/A self this_node N/A device N/A N/A N/A self api get_device_path N/A volume blockdevice_id N/A mount_point N/A N/A N/A N/A self deployer mountroot child N/A bytes dataset_id N/A N/A N/A mount_point makedirs N/A N/A make_filesystem device block_device True N/A N/A mount device mount_point N/A N/A assert_discovered_state self N/A self deployer persistent_state N/A PersistentState blockdevice_ownership N/A dataset_id N/A volume blockdevice_id expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates MOUNTED dataset_id N/A volume dataset_id blockdevice_id N/A volume blockdevice_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE device_path device mount_point mount_point N/A test_attached_and_mismounted N/A N/A self N/A N/A N/A 
        If a volume is attached and mounted but not mounted at the location
        ``BlockDeviceDeployer`` expects, the dataset returned by
        ``BlockDeviceDeployer.discover_state`` is marked as
        ``ATTACHED``.
         N/A dataset_id N/A uuid4 N/A volume N/A N/A N/A self api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A N/A self api attach_volume N/A volume blockdevice_id attach_to N/A self this_node N/A device_path N/A N/A N/A self api get_device_path N/A volume blockdevice_id N/A N/A make_filesystem device_path block_device True N/A mountpoint N/A N/A N/A N/A self deployer mountroot child nonsense N/A N/A N/A mountpoint makedirs N/A N/A mount device_path mountpoint N/A N/A assert_discovered_state self N/A self deployer persistent_state N/A PersistentState blockdevice_ownership N/A dataset_id N/A volume blockdevice_id expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED dataset_id N/A volume dataset_id blockdevice_id N/A volume blockdevice_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE device_path device_path N/A _incorrect_device_path_test N/A N/A self bad_value N/A N/A N/A 
        Assert that when ``IBlockDeviceAPI.get_device_path`` returns a value
        that must be wrong, the corresponding manifestation is not included in
        the discovered state for the node.
         N/A dataset_id N/A uuid4 N/A volume N/A N/A N/A self api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A N/A self api attach_volume N/A volume blockdevice_id N/A N/A N/A self api compute_instance_id N/A N/A N/A self patch N/A self api get_device_path N/A N/A N/A blockdevice_id N/A bad_value N/A N/A assert_discovered_state self N/A self deployer persistent_state N/A PersistentState blockdevice_ownership N/A dataset_id N/A volume blockdevice_id expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates NON_MANIFEST dataset_id N/A volume dataset_id blockdevice_id N/A volume blockdevice_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A test_attached_with_incorrect_device_path N/A N/A self logger N/A N/A N/A 
        If a volume is attached but the ``IBlockDeviceAPI`` returns a path that
        is not a block device, an error is logged and no manifestation
        corresponding to the volume is included in the discovered state.
         N/A N/A N/A self patch blockdevice _logger logger N/A N/A N/A self _incorrect_device_path_test N/A FilePath /definitely/wrong N/A N/A capture_logging assertHasMessage INVALID_DEVICE_PATH N/A invalid_value N/A FilePath /definitely/wrong test_attached_with_wrong_device_path_type N/A N/A self logger N/A N/A N/A 
        If a volume is attached but the ``IBlockDeviceAPI`` returns a value
        other than a ``FilePath``, an error is logged and no manifestation
        corresponding to the volume is included in the discovered state.
         N/A N/A N/A self patch blockdevice _logger logger N/A N/A N/A self _incorrect_device_path_test None N/A N/A capture_logging assertHasMessage INVALID_DEVICE_PATH N/A invalid_value None test_only_remote_device N/A N/A self N/A N/A N/A 
        If a volume is attached to a remote node, the dataset returned by
        ``BlockDeviceDeployer.discover_state`` is marked as
        ``ATTACHED_ELSEWHERE``.
         N/A dataset_id N/A uuid4 N/A volume N/A N/A N/A self api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A N/A self api attach_volume N/A volume blockdevice_id attach_to some.other.host N/A N/A assert_discovered_state self N/A self deployer persistent_state N/A PersistentState blockdevice_ownership N/A dataset_id N/A volume blockdevice_id expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED_ELSEWHERE dataset_id N/A volume dataset_id blockdevice_id N/A volume blockdevice_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A test_remote_device_dead_node N/A N/A self N/A N/A N/A 
        If the API supports ``ICloudAPI`` and a volume is attached to a remote
        node that is dead, the dataset returned by
        ``BlockDeviceDeployer.discover_state`` is marked as
        ``ATTACHED_TO_DEAD_NODE``.
         N/A dead_host dead N/A live_host live N/A api N/A FakeCloudAPI N/A self api N/A live_host N/A live_dataset_id N/A uuid4 N/A volume_attached_to_live N/A N/A api create_volume dataset_id live_dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A api attach_volume N/A volume_attached_to_live blockdevice_id attach_to live_host N/A dead_dataset_id N/A uuid4 N/A volume_attached_to_dead N/A N/A api create_volume dataset_id dead_dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A api attach_volume N/A volume_attached_to_dead blockdevice_id attach_to dead_host N/A N/A assert_discovered_state self N/A N/A N/A self deployer set block_device_api N/A ProcessLifetimeCache api _underlying_blockdevice_api api persistent_state N/A PersistentState blockdevice_ownership N/A live_dataset_id dead_dataset_id N/A volume_attached_to_live blockdevice_id N/A volume_attached_to_dead blockdevice_id expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED_ELSEWHERE dataset_id N/A volume_attached_to_live dataset_id blockdevice_id N/A volume_attached_to_live blockdevice_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A DiscoveredDataset state N/A DatasetStates ATTACHED_TO_DEAD_NODE dataset_id N/A volume_attached_to_dead dataset_id blockdevice_id N/A volume_attached_to_dead blockdevice_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A test_unrelated_mounted N/A N/A self N/A N/A N/A 
        If a volume is attached but an unrelated filesystem is mounted at
        the expected location for that volume, it is recognized as not
        being in ``MOUNTED`` state.
         N/A unrelated_device N/A FilePath N/A N/A self mktemp N/A N/A N/A unrelated_device open w unrelated_file N/A N/A N/A N/A unrelated_file truncate LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A dataset_id N/A uuid4 N/A volume N/A N/A N/A self api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A mountpoint N/A N/A N/A N/A self deployer mountroot child N/A bytes N/A volume dataset_id N/A N/A N/A mountpoint makedirs N/A N/A N/A N/A self api attach_volume N/A volume blockdevice_id attach_to N/A self this_node N/A N/A make_filesystem unrelated_device block_device False N/A N/A mount unrelated_device mountpoint N/A device_path N/A N/A N/A self api get_device_path N/A volume blockdevice_id N/A N/A assert_discovered_state self N/A self deployer persistent_state N/A PersistentState blockdevice_ownership N/A dataset_id N/A volume blockdevice_id expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED_NO_FILESYSTEM dataset_id N/A volume dataset_id blockdevice_id N/A volume blockdevice_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE device_path device_path N/A test_attached_no_filesystem N/A N/A self N/A N/A N/A 
        An attached volume with no filesystem ends up in
        ATTACHED_NO_FILESYSTEM state.
         N/A dataset_id N/A uuid4 N/A volume N/A N/A N/A self api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A N/A self api attach_volume N/A volume blockdevice_id attach_to N/A self this_node N/A device_path N/A N/A N/A self api get_device_path N/A volume blockdevice_id N/A N/A assert_discovered_state self N/A self deployer persistent_state N/A PersistentState blockdevice_ownership N/A dataset_id N/A volume blockdevice_id expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED_NO_FILESYSTEM dataset_id N/A volume dataset_id blockdevice_id N/A volume blockdevice_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE device_path device_path N/A test_unregistered N/A N/A self N/A N/A N/A 
        If a blockdevice associated to a dataset exists, but the dataset
        isn't registered as owning a blockdevice, the dataset is reported as
        ``UNREGISTERED``.
         N/A dataset_id N/A uuid4 N/A volume N/A N/A N/A self api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A assert_discovered_state self N/A self deployer expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates UNREGISTERED dataset_id N/A volume dataset_id blockdevice_id N/A volume blockdevice_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A test_registered N/A N/A self N/A N/A N/A 
        If a blockdevice associated to a dataset doesn't exist, but the dataset
        is registered as owning a blockdevice, the dataset is reported as
        ``REGISTERED``.
         N/A dataset_id N/A uuid4 N/A N/A assert_discovered_state self N/A self deployer persistent_state N/A PersistentState blockdevice_ownership N/A dataset_id no-such-volume expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates REGISTERED dataset_id dataset_id blockdevice_id no-such-volume N/A test_registered_other_blockdevice N/A N/A self N/A N/A N/A 
        If a blockdevice associated to a dataset exists, but the dataset
        is registered as owning a different blockdevice, the dataset is
        reported as ``REGISTERED`` and associated to the registered
        blockdevice.
         N/A dataset_id N/A uuid4 N/A N/A N/A N/A self api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A assert_discovered_state self N/A self deployer persistent_state N/A PersistentState blockdevice_ownership N/A dataset_id no-such-volume expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates REGISTERED dataset_id dataset_id blockdevice_id no-such-volume N/A test_registered_other_blockdevice_attached N/A N/A self logger N/A N/A N/A 
        If a blockdevice associated to a dataset is attached, but the dataset
        is registered as owning a different blockdevice, the dataset is
        reported as ``REGISTERED``, associated to the registered blockdevice,
        and a message is logged about the extraneously attached blockdevice.
         N/A N/A N/A self patch blockdevice _logger logger N/A dataset_id N/A uuid4 N/A volume N/A N/A N/A self api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A N/A self api attach_volume N/A volume blockdevice_id attach_to N/A self this_node N/A N/A assert_discovered_state self N/A self deployer persistent_state N/A PersistentState blockdevice_ownership N/A dataset_id no-such-volume expected_discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates REGISTERED dataset_id dataset_id blockdevice_id no-such-volume N/A N/A capture_logging assertHasMessage UNREGISTERED_VOLUME_ATTACHED N/A UnusableAPI N/A object N/A N/A 
    A non-implementation of ``IBlockDeviceAPI`` where it is explicitly required
    that the object not be used for anything.
     N/A N/A implementer IBlockDeviceAPI RecordingCalculator N/A object N/A N/A 
    An ``ICalculator`` that records the datasets passed to it, and calculates a
    fixed change.
     __init__ N/A N/A self expected_changes N/A N/A N/A N/A self expected_changes expected_changes N/A calculate_changes_for_datasets N/A N/A self discovered_datasets desired_datasets N/A N/A N/A N/A self discovered_datasets discovered_datasets N/A N/A self desired_datasets desired_datasets N/A N/A self expected_changes N/A N/A N/A implementer ICalculator make_icalculator_tests N/A N/A calculator_factory N/A N/A N/A 
    Make a test case to test an ``ICalculator`` implementation.

    :param calculator_factory: Factory to make an ``ICalculator`` provider.
    :type calculator_factory: No argument ``callable``.

    :return: A ``TestCase`` subclass.
     ICalculatorTests N/A TestCase N/A N/A 
        Tests of an ``ICalculator`` implementation.
         test_interface N/A N/A self N/A N/A N/A 
            The ``ICalculator`` implemention actually implements the interface.
             N/A N/A verifyObject ICalculator N/A calculator_factory N/A test_returns_changes N/A N/A self discovered_datasets desired_datasets N/A N/A N/A 
            ``ICalculator.calculate_changes_for_datasets`` returns a
            ``IStateChange``.
             N/A calculator N/A calculator_factory N/A changes N/A N/A calculator calculate_changes_for_datasets discovered_datasets discovered_datasets desired_datasets desired_datasets N/A N/A N/A self assertTrue N/A N/A IStateChange providedBy changes N/A N/A given discovered_datasets N/A builds dataset_map_from_iterable N/A lists DISCOVERED_DATASET_STRATEGY desired_datasets N/A builds dataset_map_from_iterable N/A lists DESIRED_DATASET_STRATEGY N/A N/A ICalculatorTests N/A BlockDeviceCalculatorInterfaceTests N/A N/A make_icalculator_tests BlockDeviceCalculator N/A N/A 
    Tests for ``BlockDeviceCalculator``'s implementation of ``ICalculator``.
     N/A RecordingCalculatorInterfaceTests N/A N/A make_icalculator_tests N/A N/A N/A N/A N/A RecordingCalculator NOTHING_TO_DO N/A N/A 
    Tests for ``RecordingCalculator``'s implementation of ``ICalculator``.
     N/A compare_dataset_state N/A N/A discovered_dataset desired_dataset N/A N/A N/A 
    Compare a discovered dataset to a desired dataset to determine if they have
    converged.

    .. note:: This ignores ``maximum_size`` as we don't support resizing yet.

    :return: ``bool`` indicating if the datasets correspond.
     N/A N/A discovered_dataset None N/A N/A N/A N/A desired_dataset None N/A N/A desired_dataset state N/A DatasetStates DELETED N/A N/A desired_dataset None N/A N/A N/A N/A discovered_dataset state N/A DatasetStates NON_MANIFEST N/A N/A N/A N/A desired_dataset state N/A DatasetStates DELETED N/A N/A discovered_dataset state N/A DatasetStates REGISTERED N/A N/A True N/A N/A N/A discovered_dataset state N/A desired_dataset state N/A N/A False N/A N/A N/A discovered_dataset state N/A DatasetStates MOUNTED N/A N/A N/A N/A discovered_dataset mount_point N/A desired_dataset mount_point N/A N/A N/A N/A discovered_dataset state N/A DatasetStates NON_MANIFEST N/A N/A True N/A N/A N/A N/A discovered_dataset state N/A DatasetStates DELETED N/A N/A True N/A N/A N/A ValueError N/A N/A Impossible dataset states: {} {} format discovered_dataset desired_dataset N/A compare_dataset_states N/A N/A discovered_datasets desired_datasets N/A N/A N/A 
    Compare discovered and desired state of datasets to determine if they have
    converged.

    .. note:: This ignores ``maximum_size`` as we don't support resizing yet.

    :return: ``bool`` indicating if the datasets correspond.
     N/A dataset_id N/A N/A set discovered_datasets N/A set desired_datasets N/A N/A desired_dataset N/A N/A desired_datasets get dataset_id N/A discovered_dataset N/A N/A discovered_datasets get dataset_id N/A N/A N/A compare_dataset_state discovered_dataset discovered_dataset desired_dataset desired_dataset N/A N/A False N/A True N/A DidNotConverge N/A Exception N/A N/A 
    Raised if running convergence with an ``ICalculator`` does not converge
    in the specified number of iterations.

    :ivar iteration_count: The count of iterations before this was raised.
     N/A N/A attributes N/A iteration_count BlockDeviceCalculatorTests N/A TestCase N/A N/A 
    Tests for ``BlockDeviceCalculator``.
     teardown_example N/A N/A self token N/A N/A N/A 
        Cleanup after running a hypothesis example.
         N/A N/A umount_all N/A N/A self deployer mountroot N/A N/A detach_destroy_volumes N/A N/A self deployer block_device_api N/A current_datasets N/A N/A self N/A N/A N/A 
        Return the current state of datasets from the deployer.
         N/A N/A N/A N/A self successResultOf N/A N/A N/A self deployer discover_state N/A DeploymentState nodes N/A N/A NodeState uuid N/A N/A self deployer node_uuid hostname N/A N/A self deployer hostname persistent_state N/A N/A N/A self persistent_state get_state datasets N/A run_convergence_step N/A N/A self desired_datasets N/A N/A N/A 
        Run one step of the calculator.

        :param desired_datasets: The dataset state to converge to.
        :type desired_datasets: Mapping from ``UUID`` to ``DesiredDataset``.
         N/A local_datasets N/A N/A self current_datasets N/A changes N/A N/A N/A N/A self deployer calculator calculate_changes_for_datasets discovered_datasets local_datasets desired_datasets desired_datasets N/A N/A note N/A N/A Running changes: {changes} format changes changes N/A N/A N/A self successResultOf N/A run_state_change changes deployer N/A self deployer state_persister N/A self persistent_state N/A run_to_convergence N/A N/A self desired_datasets max_iterations N/A 20 N/A N/A 
        Run the calculator until it converges on the desired state.

        :param desired_datasets: The dataset state to converge to.
        :type desired_datasets: Mapping from ``UUID`` to ``DesiredDataset``.
        :param int max_iterations: The maximum number of steps to iterate.
            Defaults to 20 on the assumption that iterations are cheap, and
            that there will always be fewer than 20 steps to transition from
            one desired state to another if there are no bugs.
         N/A _ N/A range max_iterations N/A N/A N/A N/A N/A N/A self run_convergence_step N/A dataset_map_from_iterable desired_datasets N/A N/A compare_dataset_states N/A N/A self current_datasets N/A dataset_map_from_iterable desired_datasets N/A N/A N/A N/A N/A Exception N/A e N/A N/A N/A note N/A N/A Error converging: {e.__class__}: {e} format e e N/A N/A N/A DidNotConverge iteration_count max_iterations N/A test_simple_transitions N/A N/A self two_dataset_states eventually_consistent N/A N/A N/A 
        Given an initial empty state, ``BlockDeviceCalculator`` will converge
        to any ``DesiredDataset``, followed by any other state of the same
        dataset.
         N/A N/A self deployer N/A create_blockdevicedeployer self eventually_consistent eventually_consistent N/A N/A self persistent_state N/A InMemoryStatePersister N/A N/A initial_dataset next_dataset two_dataset_states N/A dataset_id N/A initial_dataset dataset_id N/A mount_point N/A N/A N/A self deployer _mountpath_for_dataset_id N/A unicode dataset_id N/A N/A N/A getattr initial_dataset mount_point _NoSuchThing _NoSuchThing N/A N/A initial_dataset N/A N/A initial_dataset set mount_point mount_point N/A N/A N/A getattr next_dataset mount_point _NoSuchThing _NoSuchThing N/A N/A next_dataset N/A N/A next_dataset set mount_point mount_point N/A N/A N/A N/A N/A self run_to_convergence N/A initial_dataset N/A N/A N/A DidNotConverge N/A e N/A N/A N/A N/A self fail N/A Did not converge to initial state after %d iterations. N/A e iteration_count N/A N/A N/A N/A N/A self run_to_convergence N/A next_dataset N/A N/A N/A DidNotConverge N/A e N/A N/A N/A N/A self fail N/A Did not converge to next state after %d iterations. N/A e iteration_count N/A N/A given two_dataset_states TWO_DESIRED_DATASET_STRATEGY eventually_consistent N/A booleans N/A TranistionTests N/A TestCase N/A N/A 
    Tests for ``DATASET_TRANSITIONS``.
     test_all_transitions N/A N/A self desired_state discovered_state N/A N/A N/A 
        Transitions are defined from all possible desired states towards
        all possible discovered states.
         N/A N/A assume N/A desired_state discovered_state N/A N/A verifyObject IDatasetStateChangeFactory N/A N/A DATASET_TRANSITIONS N/A desired_state N/A discovered_state N/A N/A given desired_state N/A sampled_from N/A N/A N/A N/A DesiredDataset __invariant__ attributes_for_tag keys discovered_state N/A sampled_from N/A N/A N/A N/A N/A DiscoveredDataset __invariant__ attributes_for_tag keys N/A N/A DatasetStates NON_EXISTENT N/A assert_desired_datasets N/A N/A case deployer desired_manifestations local_datasets local_applications additional_node_config expected_datasets leases N/A N/A N/A N/A N/A set N/A N/A Leases N/A N/A 
    Assert that ``calculate_changes`` calculates the given desired datasets
    invoked with the given state and configuration.

    :param TestCase test_case: The ``TestCase`` which is being run.
    :param BlockDeviceDeployer deployer: The deployer that will be asked to
        calculate the desired datasets.
    :param desired_manifestations: Manifestations to include in the local nodes
        configuration.
    :type desired_manifestations: iterable of ``Manifestations``
    :param local_datasets: Datasets to include in the local node's state.
    :type local_datasets: iterable of ``DiscoveredDataset``s
    :param local_applications: Location to include in the local node's state.
    :type local_applications: iterable of ``Application``s
    :param additonal_node_config: Additional nodes to include in the cluster
        configration.
    :type additional_node_config: ``set`` of ``Node``s
    :param Leases leases: Leases to include in the cluster configration.
     N/A calculator N/A RecordingCalculator NOTHING_TO_DO N/A deployer N/A N/A deployer set calculator calculator N/A cluster_configuration N/A Deployment nodes N/A N/A N/A Node uuid N/A deployer node_uuid hostname N/A deployer hostname manifestations N/A N/A N/A manifestation dataset dataset_id manifestation N/A manifestation desired_manifestations additional_node_config leases leases N/A local_state N/A BlockDeviceDeployerLocalState node_uuid N/A deployer node_uuid hostname N/A deployer hostname datasets N/A N/A dataset dataset_id dataset N/A dataset local_datasets N/A N/A node_state nonmanifest_datasets N/A N/A local_state shared_state_changes N/A cluster_state N/A DeploymentState nodes N/A N/A N/A node_state set applications local_applications nonmanifest_datasets N/A nonmanifest_datasets datasets N/A N/A N/A deployer calculate_changes configuration cluster_configuration cluster_state cluster_state local_state local_state N/A N/A N/A case assertEqual N/A N/A dataset dataset_id dataset N/A dataset expected_datasets N/A calculator desired_datasets N/A CalculateDesiredStateTests N/A TestCase N/A N/A 
    Tests for ``BlockDeviceDeployer._calculate_desired_state``.
     setUp N/A N/A self N/A N/A N/A N/A N/A N/A super CalculateDesiredStateTests self setUp N/A N/A self hostname N/A ScenarioMixin NODE N/A N/A self node_uuid N/A ScenarioMixin NODE_UUID N/A N/A self api N/A UnusableAPI N/A N/A self deployer N/A BlockDeviceDeployer node_uuid N/A self node_uuid hostname N/A self hostname block_device_api N/A self api mountroot N/A FilePath /flocker N/A test_no_manifestations N/A N/A self N/A N/A N/A 
        If there are no Manifestations on this node, then
        there are no desired datasets calculated.
         N/A N/A assert_desired_datasets self N/A self deployer desired_manifestations N/A expected_datasets N/A N/A test_manifestation N/A N/A self N/A N/A N/A 
        If there is a manifesation configured on this node, then the
        corresponding desired dataset has a state of ``MOUNTED``.
         N/A N/A assert_desired_datasets self N/A self deployer desired_manifestations N/A N/A ScenarioMixin MANIFESTATION expected_datasets N/A N/A ScenarioMixin MOUNTED_DESIRED_DATASET N/A test_manifestation_metadata N/A N/A self N/A N/A N/A 
        If there is a manifesation configured with metadata on this node, then
        the corresponding desired dataset has that metadata.
         N/A N/A assert_desired_datasets self N/A self deployer desired_manifestations N/A N/A N/A N/A ScenarioMixin MANIFESTATION transform N/A dataset metadata N/A ScenarioMixin METADATA expected_datasets N/A N/A N/A N/A ScenarioMixin MOUNTED_DESIRED_DATASET transform N/A metadata N/A ScenarioMixin METADATA N/A test_manifestation_default_size N/A N/A self N/A N/A N/A 
        If there is a manifesation configured on this node without a size, then
        the corresponding desired dataset has a size fixed to the
        minimum allowed Rackspace volume size.

        XXX: Make the default size configurable.  FLOC-2679
         N/A expected_size N/A int N/A RACKSPACE_MINIMUM_VOLUME_SIZE bytes N/A N/A assert_desired_datasets self N/A self deployer desired_manifestations N/A N/A N/A N/A ScenarioMixin MANIFESTATION transform N/A dataset maximum_size N/A N/A N/A _ N/A None expected_datasets N/A N/A N/A N/A ScenarioMixin MOUNTED_DESIRED_DATASET transform N/A maximum_size expected_size N/A test_deleted_dataset N/A N/A self N/A N/A N/A 
        If there is a dataset that is configured as deleted on this node, the
        corresponding dataset has a desired state of ``DELETED``.
         N/A N/A assert_desired_datasets self N/A self deployer desired_manifestations N/A N/A N/A N/A ScenarioMixin MANIFESTATION transform N/A dataset deleted True N/A dataset metadata N/A ScenarioMixin METADATA local_datasets N/A expected_datasets N/A N/A DesiredDataset state N/A DatasetStates DELETED dataset_id N/A ScenarioMixin DATASET_ID metadata N/A ScenarioMixin METADATA N/A test_leased_mounted_manifestation N/A N/A self expected_size N/A N/A N/A 
        If there is a lease for a mounted dataset present on node, there is a
        corresponding desired dataset that has a state of ``MOUNTED`` even if
        the configuration of the node doesn't mention the dataset.
         N/A N/A assert_desired_datasets self N/A self deployer desired_manifestations N/A local_datasets N/A N/A N/A N/A ScenarioMixin MOUNTED_DISCOVERED_DATASET transform N/A maximum_size expected_size expected_datasets N/A N/A N/A N/A ScenarioMixin MOUNTED_DESIRED_DATASET transform N/A maximum_size expected_size leases N/A N/A N/A Leases acquire now N/A N/A datetime now tz UTC dataset_id N/A ScenarioMixin DATASET_ID node_id N/A N/A self deployer node_uuid N/A N/A given expected_size N/A integers min_value 0 test_leased_not_mounted N/A N/A self local_dataset N/A N/A N/A 
        If there is a lease for a dataset that isn't mounted on the node and
        the dataset isn't requested in the configuration of the node, there is
        not a corresponding desired dataset.
         N/A N/A assert_desired_datasets self N/A self deployer desired_manifestations N/A local_datasets N/A local_dataset expected_datasets N/A leases N/A N/A N/A Leases acquire now N/A N/A datetime now tz UTC dataset_id N/A local_dataset dataset_id node_id N/A N/A self deployer node_uuid N/A N/A given local_dataset N/A N/A DISCOVERED_DATASET_STRATEGY filter N/A N/A N/A dataset N/A N/A N/A dataset state N/A DatasetStates MOUNTED test_lease_elsewhere N/A N/A self N/A N/A N/A 
        If there is a lease for a dataset on another node, there isn't a
        corresponding desired dataset.
         N/A N/A assert_desired_datasets self N/A self deployer local_datasets N/A N/A ScenarioMixin MOUNTED_DISCOVERED_DATASET expected_datasets N/A leases N/A N/A N/A Leases acquire now N/A N/A datetime now tz UTC dataset_id N/A ScenarioMixin DATASET_ID node_id N/A uuid4 N/A test_application_mounted_manifestation N/A N/A self N/A N/A N/A 
        If there is an application with attached volume, there is a
        corresponding desired dataset that has a state of ``MOUNTED``.
         N/A N/A assert_desired_datasets self N/A self deployer desired_manifestations N/A local_datasets N/A N/A ScenarioMixin MOUNTED_DISCOVERED_DATASET local_applications N/A N/A Application name myapplication image N/A N/A DockerImage from_string image volume N/A AttachedVolume manifestation N/A ScenarioMixin MANIFESTATION mountpoint N/A FilePath /data expected_datasets N/A N/A ScenarioMixin MOUNTED_DESIRED_DATASET N/A test_leased_manifestation N/A N/A self expected_size N/A N/A N/A 
        If there is a manifesation on this node and lease for the corresponding
        volume for this node, then the corresponding desired dataset has a
        state of ``MOUNTED`` and the associated size corresponds to the
        discovered dataset.
         N/A N/A assert_desired_datasets self N/A self deployer desired_manifestations N/A N/A ScenarioMixin MANIFESTATION local_datasets N/A N/A N/A N/A ScenarioMixin MOUNTED_DISCOVERED_DATASET transform N/A maximum_size expected_size expected_datasets N/A N/A N/A N/A ScenarioMixin MOUNTED_DESIRED_DATASET transform N/A maximum_size expected_size leases N/A N/A N/A Leases acquire now N/A N/A datetime now tz UTC dataset_id N/A ScenarioMixin DATASET_ID node_id N/A N/A self deployer node_uuid N/A N/A given expected_size N/A integers min_value 0 test_deleted_leased_manifestation N/A N/A self N/A N/A N/A 
        If there is a manfestation on this node that is configured as deleted
        and there is a lease on the volume for this node, the corresponding
        desired dataset has a state of ``MOUNTED``.
         N/A N/A assert_desired_datasets self N/A self deployer desired_manifestations N/A N/A N/A N/A ScenarioMixin MANIFESTATION transform N/A dataset N/A N/A N/A d N/A N/A N/A d set deleted True local_datasets N/A N/A ScenarioMixin MOUNTED_DISCOVERED_DATASET expected_datasets N/A N/A ScenarioMixin MOUNTED_DESIRED_DATASET leases N/A N/A N/A Leases acquire now N/A N/A datetime now tz UTC dataset_id N/A ScenarioMixin DATASET_ID node_id N/A N/A self deployer node_uuid N/A N/A assert_calculated_changes N/A N/A case node_state node_config nonmanifest_datasets expected_changes additional_node_states leases discovered_datasets N/A N/A frozenset N/A Leases None N/A N/A 
    Assert that ``BlockDeviceDeployer`` calculates certain changes in a certain
    circumstance.

    :param discovered_datasets: Collection of ``DiscoveredDataset`` to
        expose as local state.
    :see: ``assert_calculated_changes_for_deployer``.
     N/A api N/A UnusableAPI N/A deployer N/A BlockDeviceDeployer node_uuid N/A node_state uuid hostname N/A node_state hostname block_device_api api N/A cluster_state N/A compute_cluster_state node_state additional_node_states nonmanifest_datasets N/A N/A discovered_datasets None N/A N/A local_state N/A local_state_from_shared_state node_state node_state nonmanifest_datasets N/A cluster_state nonmanifest_datasets N/A N/A local_state N/A BlockDeviceDeployerLocalState node_uuid N/A node_state uuid hostname N/A node_state hostname datasets N/A dataset_map_from_iterable discovered_datasets N/A N/A N/A case assertEqual N/A N/A local_state shared_state_changes N/A N/A N/A node_state set applications None N/A NonManifestDatasets datasets N/A cluster_state nonmanifest_datasets Inconsistent test data. N/A N/A assert_calculated_changes_for_deployer case deployer node_state node_config nonmanifest_datasets additional_node_states N/A set expected_changes local_state leases leases N/A _create_blockdevice_id_for_test N/A N/A dataset_id N/A N/A N/A 
    Generates a blockdevice_id from a dataset_id for tests that do not use an
    ``IBlockDeviceAPI``.

    :param dataset_id: A unicode or uuid dataset_id to generate the
        blockdevice_id for.
     N/A N/A blockdevice- N/A unicode dataset_id N/A ScenarioMixin N/A object N/A N/A 
    A mixin for tests which defines some basic Flocker cluster state.
     N/A DATASET_ID N/A uuid4 N/A BLOCKDEVICE_ID N/A _create_blockdevice_id_for_test DATASET_ID N/A NODE 192.0.2.1 N/A NODE_UUID N/A uuid4 N/A METADATA N/A I'm so meta even this acronym N/A MANIFESTATION N/A Manifestation dataset N/A Dataset dataset_id N/A unicode DATASET_ID maximum_size N/A int N/A N/A REALISTIC_BLOCKDEVICE_SIZE to_Byte primary True N/A ONE_DATASET_STATE N/A NodeState hostname NODE uuid NODE_UUID manifestations N/A N/A unicode DATASET_ID MANIFESTATION paths N/A N/A unicode DATASET_ID N/A N/A N/A FilePath /flocker/ child N/A bytes DATASET_ID devices N/A DATASET_ID N/A FilePath /dev/sda applications None N/A MOUNT_ROOT N/A FilePath /flocker N/A MOUNTED_DISCOVERED_DATASET N/A DiscoveredDataset dataset_id DATASET_ID blockdevice_id BLOCKDEVICE_ID state N/A DatasetStates MOUNTED maximum_size N/A int N/A REALISTIC_BLOCKDEVICE_SIZE bytes device_path N/A FilePath /dev/xvdf mount_point MOUNT_ROOT N/A MOUNTED_DESIRED_DATASET N/A DesiredDataset state N/A DatasetStates MOUNTED dataset_id DATASET_ID maximum_size N/A int N/A REALISTIC_BLOCKDEVICE_SIZE bytes mount_point N/A N/A MOUNT_ROOT child N/A unicode DATASET_ID N/A add_application_with_volume N/A N/A node_state N/A N/A N/A 
    Add a matching application that has the current dataset attached as a
    volume.

    :param NodeState node_state: Has dataset with ID ``DATASET_ID``.

    :return NodeState: With ``Application`` added.
     N/A manifestation N/A N/A list N/A N/A N/A node_state manifestations values N/A 0 N/A N/A N/A node_state set applications N/A N/A Application name myapplication image N/A N/A DockerImage from_string image volume N/A AttachedVolume manifestation manifestation mountpoint N/A FilePath /data N/A create_test_blockdevice_volume_for_dataset_id N/A N/A dataset_id attached_to N/A None N/A N/A 
    Create a fake ``BlockDeviceVolume`` for the given ``dataset_id``,
    attached to the given node.

    :param dataset_id: A unicode or uuid dataset_id to generate the
        blockdevice_id for.
    :param unicode attached_to: The compute_instance_id this volume should be
        attached to.
     N/A N/A BlockDeviceVolume blockdevice_id N/A _create_blockdevice_id_for_test dataset_id size N/A int N/A N/A REALISTIC_BLOCKDEVICE_SIZE to_Byte attached_to attached_to dataset_id N/A UUID dataset_id N/A local_state_from_shared_state N/A N/A node_state nonmanifest_datasets N/A N/A N/A 
    Convert the state as reported by
    ``BlockDeviceDeployerLocalState.shared_state_changes`` to a
    ``BlockDeviceDeployerLocalState`` instance.

    This exists so that tests that provide the former can be used
    with an implementation that expects the former.

    .. warning:: This function is a terrible idea and should be thrown out ASAP
    to be replaced by the real thing.
     N/A datasets N/A N/A N/A dataset_id dataset N/A N/A nonmanifest_datasets items N/A N/A dataset_id N/A UUID dataset_id N/A N/A dataset_id N/A node_state devices N/A N/A N/A datasets N/A dataset_id N/A DiscoveredDataset state N/A DatasetStates ATTACHED dataset_id dataset_id maximum_size N/A N/A dataset maximum_size 0 device_path N/A N/A node_state devices N/A dataset_id blockdevice_id N/A _create_blockdevice_id_for_test dataset_id N/A N/A N/A datasets N/A dataset_id N/A DiscoveredDataset state N/A DatasetStates NON_MANIFEST dataset_id dataset_id maximum_size N/A N/A dataset maximum_size 0 blockdevice_id N/A _create_blockdevice_id_for_test dataset_id N/A N/A N/A node_state manifestations None N/A N/A N/A dataset_id manifestation N/A N/A N/A node_state manifestations items N/A N/A dataset_id N/A UUID dataset_id N/A N/A datasets N/A dataset_id N/A DiscoveredDataset state N/A DatasetStates MOUNTED dataset_id dataset_id maximum_size N/A N/A N/A manifestation dataset maximum_size 0 device_path N/A N/A node_state devices N/A dataset_id blockdevice_id N/A _create_blockdevice_id_for_test dataset_id mount_point N/A N/A node_state paths N/A N/A unicode dataset_id N/A N/A BlockDeviceDeployerLocalState hostname N/A node_state hostname node_uuid N/A node_state uuid datasets datasets N/A N/A implementer ILocalState LocalStateFromSharedStateTests N/A TestCase N/A N/A 
    Tests for ``local_state_from_shared_state``.
     test_round_trip N/A N/A self local_state N/A N/A N/A 
        Calling ``local_state_from_shared_state`` followed by ``
        ``BlockDeviceDeployerLocalState.shared_state_changes`` on
        the state changes of a ``BlockDeviceDeployerLocalState`` is
        idempotent.
         N/A N/A node_state nonmanifest_datasets N/A N/A local_state shared_state_changes N/A fake_local_state N/A local_state_from_shared_state node_state node_state nonmanifest_datasets N/A nonmanifest_datasets datasets N/A N/A N/A self assertEqual N/A N/A local_state shared_state_changes N/A N/A fake_local_state shared_state_changes N/A N/A given local_state N/A builds BlockDeviceDeployerLocalState node_uuid N/A uuids hostname N/A text datasets N/A N/A N/A lists DISCOVERED_DATASET_STRATEGY map dataset_map_from_iterable N/A BlockDeviceDeployerAlreadyConvergedCalculateChangesTests N/A TestCase ScenarioMixin N/A N/A 
    Tests for the cases of ``BlockDeviceDeployer.calculate_changes`` where no
    changes are necessary because the local state already matches the desired
    configuration.
     test_no_changes N/A N/A self N/A N/A N/A 
        ``BlockDeviceDeployer.calculate_changes`` calculates no changes when
        the local state is already converged with the desired configuration.
         N/A local_state N/A self ONE_DATASET_STATE N/A local_config N/A to_node local_state N/A N/A assert_calculated_changes self local_state local_config N/A set NOTHING_TO_DO N/A test_deleted_ignored N/A N/A self N/A N/A N/A 
        Deleted datasets for which no corresponding volumes exist do not result
        in any convergence operations.
         N/A local_state N/A N/A N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID discard N/A devices N/A self DATASET_ID discard N/A paths N/A unicode N/A self DATASET_ID discard N/A local_config N/A N/A N/A to_node N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID dataset N/A N/A N/A d N/A N/A N/A d set deleted True maximum_size N/A N/A d maximum_size 2 metadata N/A foo bar N/A registered_dataset N/A DiscoveredDataset dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID state N/A DatasetStates REGISTERED N/A foreign_registered_dataset_id N/A uuid4 N/A foreign_registered_dataset N/A DiscoveredDataset dataset_id foreign_registered_dataset_id blockdevice_id N/A _create_blockdevice_id_for_test foreign_registered_dataset_id state N/A DatasetStates REGISTERED N/A N/A assert_calculated_changes self local_state local_config nonmanifest_datasets N/A expected_changes N/A in_parallel changes N/A discovered_datasets N/A registered_dataset foreign_registered_dataset N/A N/A BlockDeviceDeployerIgnorantCalculateChangesTests N/A TestCase ScenarioMixin N/A N/A 
    Tests for the cases of ``BlockDeviceDeployer.calculate_changes`` where no
    changes can be calculated because application state is unknown.
     test_another_node_ignorant N/A N/A self N/A N/A N/A 
        If a different node is ignorant about its state, it is still possible
        to calculate state for the current node.
         N/A local_state N/A self ONE_DATASET_STATE N/A local_config N/A N/A N/A to_node local_state transform N/A manifestations N/A unicode N/A self DATASET_ID dataset deleted True N/A N/A assert_calculated_changes self local_state local_config N/A set N/A in_parallel changes N/A N/A UnmountBlockDevice dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID N/A set N/A N/A NodeState hostname 1.2.3.4 uuid N/A uuid4 N/A N/A BlockDeviceDeployerDestructionCalculateChangesTests N/A TestCase ScenarioMixin N/A N/A 
    Tests for ``BlockDeviceDeployer.calculate_changes`` in the cases relating
    to dataset destruction.
     test_deleted_dataset_volume_mounted N/A N/A self N/A N/A N/A 
        If the configuration indicates a dataset with a primary manifestation
        on the node has been deleted and the volume associated with that
        dataset is mounted, ``BlockDeviceDeployer.calculate_changes`` returns
        a ``UnmountBlockDevice`` state change operation.
         N/A local_state N/A self ONE_DATASET_STATE N/A local_config N/A N/A N/A to_node local_state transform N/A manifestations N/A unicode N/A self DATASET_ID dataset deleted True N/A N/A assert_calculated_changes self local_state local_config N/A set N/A in_parallel changes N/A N/A UnmountBlockDevice dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates MOUNTED dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID maximum_size N/A int N/A N/A REALISTIC_BLOCKDEVICE_SIZE to_Byte device_path N/A FilePath /dev/sda mount_point N/A N/A N/A FilePath /flocker child N/A bytes N/A self DATASET_ID N/A test_deleted_dataset_volume_detached N/A N/A self N/A N/A N/A 
        If the configuration indicates a dataset with a primary manifestation
        on the node has been deleted and the volume associated with that
        dataset still exists but is not attached,
        ``BlockDeviceDeployer.calculate_changes`` returns a
        ``DestroyVolume`` state change operation.
         N/A local_state N/A N/A N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID discard N/A paths N/A N/A devices N/A N/A local_config N/A N/A N/A to_node N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID dataset deleted True N/A N/A assert_calculated_changes self local_state local_config nonmanifest_datasets N/A N/A N/A self MANIFESTATION dataset expected_changes N/A in_parallel changes N/A N/A DestroyVolume blockdevice_id N/A self BLOCKDEVICE_ID discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates NON_MANIFEST dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID maximum_size N/A int N/A N/A REALISTIC_BLOCKDEVICE_SIZE to_Byte N/A test_deleted_dataset_belongs_to_other_node N/A N/A self N/A N/A N/A 
        If a dataset with a primary manifestation on one node is marked as
        deleted in the configuration, the ``BlockDeviceDeployer`` for a
        different node does not return a ``DestroyVolume`` from its
        ``calculate_necessary_state_changes`` for that dataset.
         N/A other_node 192.0.2.2 N/A node_state N/A self ONE_DATASET_STATE N/A cluster_state N/A DeploymentState nodes N/A node_state N/A node_config N/A N/A N/A to_node node_state transform N/A manifestations N/A unicode N/A self DATASET_ID dataset deleted True N/A cluster_configuration N/A Deployment nodes N/A node_config N/A api N/A loopbackblockdeviceapi_for_test self N/A volume N/A N/A api create_volume dataset_id N/A self DATASET_ID size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A api attach_volume N/A volume blockdevice_id N/A self NODE N/A other_node_uuid N/A uuid4 N/A deployer N/A BlockDeviceDeployer hostname other_node node_uuid other_node_uuid block_device_api api N/A local_state N/A local_state_from_shared_state node_state N/A N/A cluster_state get_node other_node_uuid hostname other_node nonmanifest_datasets N/A N/A changes N/A N/A deployer calculate_changes cluster_configuration cluster_state local_state N/A N/A N/A self assertEqual N/A in_parallel changes N/A changes N/A N/A Wrong changes for node {} when dataset {} attached to node {} format other_node_uuid N/A self DATASET_ID N/A self NODE_UUID N/A test_no_delete_if_in_use N/A N/A self N/A N/A N/A 
        If a dataset has been marked as deleted *and* it is in use by an
        application, no changes are made.
         N/A local_state N/A add_application_with_volume N/A self ONE_DATASET_STATE N/A local_config N/A N/A N/A to_node N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID dataset deleted True N/A local_config N/A add_application_with_volume local_config N/A N/A assert_calculated_changes self local_state local_config N/A set N/A in_parallel changes N/A N/A test_no_delete_if_leased N/A N/A self N/A N/A N/A 
        If a dataset has been marked as deleted *and* it is leased, no changes
        are made.
         N/A local_state N/A self ONE_DATASET_STATE N/A leases N/A N/A N/A Leases acquire N/A N/A datetime now tz UTC N/A self DATASET_ID N/A N/A self ONE_DATASET_STATE uuid N/A local_config N/A N/A N/A to_node N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID dataset deleted True N/A local_config N/A add_application_with_volume local_config N/A N/A assert_calculated_changes self local_state local_config N/A set N/A in_parallel changes N/A leases leases N/A test_deleted_dataset_volume_unmounted N/A N/A self N/A N/A N/A 
        If the configuration indicates a dataset with a primary manifestation
        on the node has been deleted and the volume associated with that
        dataset is mounted, ``BlockDeviceDeployer.calculate_changes`` returns a
        ``UnmountBlockDevice`` state change operation.
         N/A local_state N/A self ONE_DATASET_STATE N/A local_config N/A N/A N/A to_node local_state transform N/A manifestations N/A unicode N/A self DATASET_ID dataset deleted True N/A local_state N/A N/A local_state transform N/A manifestations N/A unicode N/A self DATASET_ID discard N/A local_state N/A N/A local_state transform N/A paths N/A unicode N/A self DATASET_ID discard N/A N/A N/A self assertEqual N/A N/A self DATASET_ID N/A N/A N/A local_state devices keys N/A N/A assert_calculated_changes case self node_state local_state node_config local_config nonmanifest_datasets N/A N/A N/A self MANIFESTATION dataset expected_changes N/A in_parallel changes N/A N/A DetachVolume dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED dataset_id N/A self DATASET_ID blockdevice_id N/A _create_blockdevice_id_for_test N/A self DATASET_ID maximum_size N/A int N/A N/A REALISTIC_BLOCKDEVICE_SIZE to_Byte device_path N/A FilePath /dev/sda N/A test_deleted_dataset_volume_no_filesystem N/A N/A self N/A N/A N/A 
        If the configuration indicates a dataset with a primary manifestation
        on the node has been deleted and the volume associated with that
        dataset is attached but has no filesystem,
        ``BlockDeviceDeployer.calculate_changes`` returns a ``DetachVolume``
        state change operation.
         N/A local_state N/A self ONE_DATASET_STATE N/A local_config N/A N/A N/A to_node local_state transform N/A manifestations N/A unicode N/A self DATASET_ID dataset deleted True N/A local_state N/A N/A local_state transform N/A manifestations N/A unicode N/A self DATASET_ID discard N/A local_state N/A N/A local_state transform N/A paths N/A unicode N/A self DATASET_ID discard N/A device N/A FilePath /dev/sda N/A N/A N/A self assertEqual N/A N/A self DATASET_ID N/A N/A N/A local_state devices keys N/A N/A assert_calculated_changes case self node_state local_state node_config local_config nonmanifest_datasets N/A N/A N/A self MANIFESTATION dataset expected_changes N/A in_parallel changes N/A N/A DetachVolume dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED_NO_FILESYSTEM dataset_id N/A self DATASET_ID blockdevice_id N/A _create_blockdevice_id_for_test N/A self DATASET_ID maximum_size N/A int N/A N/A REALISTIC_BLOCKDEVICE_SIZE to_Byte device_path device N/A N/A BlockDeviceDeployerAttachCalculateChangesTests N/A TestCase ScenarioMixin N/A N/A 
    Tests for ``BlockDeviceDeployer.calculate_changes`` in the cases relating
    to attaching existing datasets.
     test_attach_existing_nonmanifest N/A N/A self N/A N/A N/A 
        If a dataset exists but is not manifest anywhere in the cluster and the
        configuration specifies it should be manifest on the deployer's node,
        ``BlockDeviceDeployer.calculate_changes`` returns state changes to
        attach that dataset to its node and then mount its filesystem.
         N/A deployer N/A create_blockdevicedeployer self hostname N/A self NODE node_uuid N/A self NODE_UUID N/A node_config N/A to_node N/A self ONE_DATASET_STATE N/A cluster_config N/A Deployment nodes N/A node_config N/A node_state N/A N/A N/A N/A N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID discard transform N/A devices N/A self DATASET_ID discard N/A manifestation N/A N/A node_config manifestations N/A N/A unicode N/A self DATASET_ID N/A dataset N/A manifestation dataset N/A nonmanifest_datasets N/A N/A unicode N/A dataset dataset_id dataset N/A cluster_state N/A DeploymentState nodes N/A node_state nonmanifest_datasets nonmanifest_datasets N/A local_state N/A local_state_from_shared_state node_state node_state nonmanifest_datasets N/A cluster_state nonmanifest_datasets N/A changes N/A N/A deployer calculate_changes cluster_config cluster_state local_state N/A N/A N/A self assertEqual N/A in_parallel changes N/A N/A AttachVolume dataset_id N/A UUID N/A dataset dataset_id blockdevice_id N/A _create_blockdevice_id_for_test N/A dataset dataset_id changes N/A N/A BlockDeviceDeployerMountCalculateChangesTests N/A TestCase ScenarioMixin N/A N/A 
    Tests for ``BlockDeviceDeployer.calculate_changes`` in the cases relating
    to mounting of filesystems.
     test_mount_manifestation N/A N/A self N/A N/A N/A 
        If the volume for a dataset is attached to the node but the filesystem
        is not mounted and the configuration says the dataset is meant to be
        manifest on the node, ``BlockDeviceDeployer.calculate_changes`` returns
        a state change to mount the filesystem.
         N/A device N/A FilePath /dev/sda N/A node_state N/A N/A N/A self ONE_DATASET_STATE set manifestations N/A paths N/A devices N/A N/A self DATASET_ID device N/A node_config N/A to_node N/A self ONE_DATASET_STATE N/A N/A assert_calculated_changes self node_state node_config N/A N/A Dataset dataset_id N/A unicode N/A self DATASET_ID maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A in_parallel changes N/A N/A MountBlockDevice dataset_id N/A self DATASET_ID device_path device mountpoint N/A N/A N/A FilePath /flocker/ child N/A bytes N/A self DATASET_ID discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED dataset_id N/A self DATASET_ID blockdevice_id N/A _create_blockdevice_id_for_test N/A self DATASET_ID maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE device_path device N/A N/A BlockDeviceDeployerCreateFilesystemCalculateChangesTests N/A TestCase ScenarioMixin N/A N/A 
    Tests for ``BlockDeviceDeployer.calculate_changes`` in the cases relating
    to creation of filesystems.
     test_create_filesystem N/A N/A self N/A N/A N/A 
        If the volume for a dataset is attached to the node but the filesystem
        does not exist and the configuration says the dataset is meant to be
        manifest on the node, ``BlockDeviceDeployer.calculate_changes`` returns
        a state change to create the filesystem.
         N/A device N/A FilePath /dev/sda N/A node_state N/A N/A N/A self ONE_DATASET_STATE set manifestations N/A paths N/A devices N/A N/A self DATASET_ID device N/A node_config N/A to_node N/A self ONE_DATASET_STATE N/A N/A assert_calculated_changes self node_state node_config N/A N/A Dataset dataset_id N/A unicode N/A self DATASET_ID maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A in_parallel changes N/A N/A CreateFilesystem device device filesystem ext4 discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED_NO_FILESYSTEM dataset_id N/A self DATASET_ID blockdevice_id N/A _create_blockdevice_id_for_test N/A self DATASET_ID maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE device_path device N/A N/A BlockDeviceDeployerUnmountCalculateChangesTests N/A TestCase ScenarioMixin N/A N/A 
    Tests for ``BlockDeviceDeployer.calculate_changes`` in the cases relating
    to unmounting of filesystems.
     test_unmount_manifestation N/A N/A self N/A N/A N/A 
        If the filesystem for a dataset is mounted on the node and the
        configuration says the dataset is not meant to be manifest on that
        node, ``BlockDeviceDeployer.calculate_changes`` returns a state change
        to unmount the filesystem.
         N/A node_state N/A self ONE_DATASET_STATE N/A node_config N/A N/A N/A to_node N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID discard N/A N/A assert_calculated_changes self node_state node_config N/A set N/A in_parallel changes N/A N/A UnmountBlockDevice dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID N/A test_unmount_deleted_manifestation N/A N/A self N/A N/A N/A 
        If the filesystem for a dataset is mounted on the node and the
        configuration says the dataset is deleted on that node,
        ``BlockDeviceDeployer.calculate_changes`` returns a state change to
        unmount the filesystem.
         N/A node_state N/A self ONE_DATASET_STATE N/A node_config N/A N/A N/A to_node N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID dataset deleted True N/A N/A assert_calculated_changes self node_state node_config N/A set N/A in_parallel changes N/A N/A UnmountBlockDevice dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID N/A test_no_unmount_if_in_use N/A N/A self N/A N/A N/A 
        If a dataset should be unmounted *and* it is in use by an application,
        no changes are made.
         N/A local_state N/A add_application_with_volume N/A self ONE_DATASET_STATE N/A node_config N/A N/A N/A to_node N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID discard N/A N/A assert_calculated_changes self local_state node_config N/A set N/A in_parallel changes N/A N/A test_no_unmount_if_leased N/A N/A self N/A N/A N/A 
        If a dataset should be unmounted *and* it is leased on this node, no
        changes are made.
         N/A local_state N/A self ONE_DATASET_STATE N/A leases N/A N/A N/A Leases acquire N/A N/A datetime now tz UTC N/A self DATASET_ID N/A N/A self ONE_DATASET_STATE uuid N/A node_config N/A N/A N/A to_node N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID discard N/A N/A assert_calculated_changes self local_state node_config N/A set N/A in_parallel changes N/A leases leases N/A test_unmount_manifestation_when_leased_elsewhere N/A N/A self N/A N/A N/A 
        If the filesystem for a dataset is mounted on the node and the
        configuration says the dataset is not meant to be manifest on that
        node, ``BlockDeviceDeployer.calculate_changes`` returns a state
        change to unmount the filesystem even if there is a lease, as long
        as the lease is for another node.
         N/A node_state N/A self ONE_DATASET_STATE N/A leases N/A N/A N/A Leases acquire N/A N/A datetime now tz UTC N/A self DATASET_ID N/A uuid4 N/A node_config N/A N/A N/A to_node N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID discard N/A N/A assert_calculated_changes self node_state node_config N/A set N/A in_parallel changes N/A N/A UnmountBlockDevice dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID leases leases N/A N/A BlockDeviceDeployerCreationCalculateChangesTests N/A TestCase ScenarioMixin N/A N/A 
    Tests for ``BlockDeviceDeployer.calculate_changes`` in the cases relating
    to dataset creation.
     test_no_devices_no_local_datasets N/A N/A self N/A N/A N/A 
        If no devices exist and no datasets are part of the configuration for
        the deployer's node, no state changes are calculated.
         N/A dataset_id N/A unicode N/A uuid4 N/A manifestation N/A Manifestation dataset N/A Dataset dataset_id dataset_id primary True N/A node 192.0.2.1 N/A node_uuid N/A uuid4 N/A other_node 192.0.2.2 N/A other_node_uuid N/A uuid4 N/A configuration N/A Deployment nodes N/A N/A Node hostname other_node uuid other_node_uuid manifestations N/A dataset_id manifestation N/A state N/A DeploymentState nodes N/A N/A deployer N/A create_blockdevicedeployer self hostname node node_uuid node_uuid N/A local_state N/A local_state_from_shared_state node_state N/A N/A state get_node node_uuid hostname node nonmanifest_datasets N/A N/A changes N/A N/A deployer calculate_changes configuration state local_state N/A N/A N/A self assertEqual N/A in_parallel changes N/A changes N/A test_no_devices_one_dataset N/A N/A self N/A N/A N/A 
        If no devices exist but a dataset is part of the configuration for the
        deployer's node, a ``CreateBlockDeviceDataset`` change is calculated.
         N/A uuid N/A uuid4 N/A dataset_id N/A unicode N/A uuid4 N/A dataset N/A Dataset dataset_id dataset_id maximum_size N/A int N/A N/A N/A N/A GiB 1 to_Byte value N/A manifestation N/A Manifestation dataset dataset primary True N/A node 192.0.2.1 N/A configuration N/A Deployment nodes N/A N/A Node uuid uuid manifestations N/A dataset_id manifestation N/A state N/A DeploymentState nodes N/A N/A NodeState uuid uuid hostname node applications None manifestations N/A devices N/A paths N/A N/A deployer N/A create_blockdevicedeployer self hostname node node_uuid uuid N/A local_state N/A local_state_from_shared_state node_state N/A N/A state get_node uuid nonmanifest_datasets N/A N/A changes N/A N/A deployer calculate_changes configuration state local_state N/A N/A N/A self assertEqual N/A in_parallel changes N/A N/A CreateBlockDeviceDataset dataset_id N/A UUID dataset_id maximum_size N/A int N/A N/A GiB 1 bytes changes N/A test_unknown_applications N/A N/A self N/A N/A N/A 
        If applications are unknown, block devices can still be created.
         N/A uuid N/A uuid4 N/A dataset_id N/A unicode N/A uuid4 N/A dataset N/A Dataset dataset_id dataset_id maximum_size N/A int N/A N/A N/A N/A GiB 1 to_Byte value N/A manifestation N/A Manifestation dataset dataset primary True N/A node 192.0.2.1 N/A configuration N/A Deployment nodes N/A N/A Node uuid uuid manifestations N/A dataset_id manifestation N/A state N/A DeploymentState nodes N/A N/A NodeState uuid uuid hostname node applications None manifestations N/A devices N/A paths N/A N/A deployer N/A create_blockdevicedeployer self hostname node node_uuid uuid N/A local_state N/A local_state_from_shared_state node_state N/A N/A state get_node uuid nonmanifest_datasets N/A N/A changes N/A N/A deployer calculate_changes configuration state local_state N/A N/A N/A self assertEqual N/A in_parallel changes N/A N/A CreateBlockDeviceDataset dataset_id N/A UUID dataset_id maximum_size N/A int N/A N/A GiB 1 bytes changes N/A test_dataset_elsewhere N/A N/A self N/A N/A N/A 
        If block device is attached elsewhere but is part of the configuration
        for the deployer's node, ``calculate_changes`` does not
        attempt to create a new dataset.
         N/A uuid N/A uuid4 N/A dataset_id N/A uuid4 N/A maximum_size N/A int N/A N/A GiB 1 bytes N/A dataset N/A Dataset dataset_id N/A unicode dataset_id maximum_size maximum_size N/A manifestation N/A Manifestation dataset dataset primary True N/A node 192.0.2.1 N/A configuration N/A Deployment nodes N/A N/A Node uuid uuid manifestations N/A N/A unicode dataset_id manifestation N/A node_state N/A NodeState uuid uuid hostname node applications None manifestations N/A devices N/A paths N/A N/A state N/A DeploymentState nodes N/A node_state N/A deployer N/A create_blockdevicedeployer self hostname node node_uuid uuid N/A local_state N/A BlockDeviceDeployerLocalState node_uuid uuid hostname node datasets N/A dataset_map_from_iterable N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED_ELSEWHERE dataset_id dataset_id maximum_size maximum_size blockdevice_id N/A _create_blockdevice_id_for_test dataset_id N/A changes N/A N/A deployer calculate_changes configuration state local_state N/A N/A N/A self assertEqual N/A in_parallel changes N/A N/A NoOp sleep N/A timedelta seconds 3 changes N/A _calculate_changes N/A N/A self local_uuid local_hostname local_state desired_configuration N/A N/A N/A 
        Create a ``BlockDeviceDeployer`` and call its
        ``calculate_changes`` method with the given arguments and an empty
        cluster state.

        :param UUID local_uuid: The node identifier to give the to the
            ``BlockDeviceDeployer``.
        :param unicode local_hostname: The node IP to give to the
            ``BlockDeviceDeployer``.
        :param desired_configuration: As accepted by
            ``IDeployer.calculate_changes``.

        :return: The return value of ``BlockDeviceDeployer.calculate_changes``.
         N/A current_cluster_state N/A DeploymentState nodes N/A local_state N/A deployer N/A create_blockdevicedeployer self node_uuid local_uuid hostname local_hostname N/A local_state N/A local_state_from_shared_state node_state local_state nonmanifest_datasets N/A N/A N/A N/A deployer calculate_changes desired_configuration current_cluster_state local_state N/A test_match_configuration_to_state_of_datasets N/A N/A self N/A N/A N/A 
        ``BlockDeviceDeployer.calculate_changes`` does not yield a
        ``CreateBlockDeviceDataset`` change if a dataset with the same ID
        exists with different metadata.
         N/A expected_hostname 192.0.2.123 N/A expected_dataset_id N/A unicode N/A uuid4 N/A local_state N/A NodeState hostname expected_hostname uuid N/A uuid4 paths N/A expected_dataset_id N/A N/A N/A FilePath /flocker child N/A N/A expected_dataset_id encode ascii devices N/A N/A UUID expected_dataset_id N/A FilePath /dev/loop0 manifestations N/A expected_dataset_id N/A Manifestation primary True dataset N/A Dataset dataset_id expected_dataset_id maximum_size N/A int N/A N/A REALISTIC_BLOCKDEVICE_SIZE to_Byte metadata N/A deleted False N/A desired_configuration N/A Deployment nodes N/A N/A Node hostname expected_hostname uuid N/A local_state uuid manifestations N/A N/A N/A local_state manifestations transform N/A expected_dataset_id dataset metadata N/A name my_volume N/A actual_changes N/A N/A self _calculate_changes N/A local_state uuid expected_hostname local_state desired_configuration N/A expected_changes N/A in_parallel changes N/A N/A N/A N/A self assertEqual expected_changes actual_changes N/A test_dataset_with_metadata N/A N/A self N/A N/A N/A 
        When supplied with a configuration containing a dataset with metadata
        size, ``BlockDeviceDeployer.calculate_changes`` returns a
        ``CreateBlockDeviceDataset`` with a dataset with that metadata.
         N/A node_id N/A uuid4 N/A node_address 192.0.2.1 N/A dataset_id N/A unicode N/A uuid4 N/A requested_dataset N/A Dataset dataset_id dataset_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE metadata N/A some metadata N/A configuration N/A Deployment nodes N/A N/A Node uuid node_id manifestations N/A dataset_id N/A Manifestation dataset requested_dataset primary True N/A node_state N/A NodeState uuid node_id hostname node_address applications None manifestations N/A devices N/A paths N/A N/A changes N/A N/A self _calculate_changes node_id node_address node_state configuration N/A N/A N/A self assertEqual N/A in_parallel changes N/A N/A CreateBlockDeviceDataset dataset_id N/A UUID dataset_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE metadata N/A some metadata changes N/A test_dataset_without_maximum_size N/A N/A self N/A N/A N/A 
        When supplied with a configuration containing a dataset with a null
        size, ``BlockDeviceDeployer.calculate_changes`` returns a
        ``CreateBlockDeviceDataset`` for a dataset with a size fixed to the
        minimum allowed Rackspace volume size.

        XXX: Make the default size configurable.  FLOC-2679
         N/A node_id N/A uuid4 N/A node_address 192.0.2.1 N/A dataset_id N/A unicode N/A uuid4 N/A requested_dataset N/A Dataset dataset_id dataset_id maximum_size None N/A configuration N/A Deployment nodes N/A N/A Node uuid node_id manifestations N/A dataset_id N/A Manifestation dataset requested_dataset primary True N/A node_state N/A NodeState uuid node_id hostname node_address applications None manifestations N/A devices N/A paths N/A N/A state N/A DeploymentState nodes N/A node_state N/A deployer N/A create_blockdevicedeployer self hostname node_address node_uuid node_id N/A local_state N/A local_state_from_shared_state node_state node_state nonmanifest_datasets N/A N/A changes N/A N/A deployer calculate_changes configuration state local_state N/A expected_size N/A int N/A N/A RACKSPACE_MINIMUM_VOLUME_SIZE to_Byte N/A N/A N/A self assertEqual N/A in_parallel changes N/A N/A CreateBlockDeviceDataset dataset_id N/A UUID dataset_id maximum_size expected_size changes N/A test_dataset_default_maximum_size_stable N/A N/A self N/A N/A N/A 
        When supplied with a configuration containing a dataset with a null
        size and operating against state where a volume of the default size
        exists for that dataset, ``BlockDeviceDeployer.calculate_changes``
        returns no changes.
         N/A local_state N/A self ONE_DATASET_STATE N/A local_config N/A N/A N/A to_node local_state transform N/A manifestations N/A unicode N/A self DATASET_ID dataset maximum_size None N/A N/A assert_calculated_changes self local_state local_config N/A set N/A in_parallel changes N/A N/A N/A BlockDeviceDeployerDetachCalculateChangesTests N/A TestCase ScenarioMixin N/A test_detach_manifestation N/A N/A self N/A N/A N/A 
        ``BlockDeviceDeployer.calculate_changes`` recognizes a volume that is
        attached but not mounted which is not associated with a dataset
        configured to have a manifestation on the deployer's node and returns a
        state change to detach the volume.
         N/A node_state N/A NodeState uuid N/A self NODE_UUID hostname N/A self NODE applications None manifestations N/A devices N/A N/A self DATASET_ID N/A FilePath /dev/xda paths N/A N/A node_config N/A to_node node_state N/A N/A assert_calculated_changes self node_state node_config N/A N/A Dataset dataset_id N/A unicode N/A self DATASET_ID N/A in_parallel changes N/A N/A DetachVolume dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID N/A test_detach_deleted_manifestation N/A N/A self N/A N/A N/A 
        ``BlockDeviceDeployer.calculate_changes`` recognizes a volume that is
        attached but not mounted which is associated with a dataset configured
        to have a deleted manifestation on the deployer's node and returns a
        state change to detach the volume.
         N/A node_state N/A NodeState uuid N/A self NODE_UUID hostname N/A self NODE applications None manifestations N/A devices N/A N/A self DATASET_ID N/A FilePath /dev/xda paths N/A N/A node_config N/A Node uuid N/A self NODE_UUID hostname N/A self NODE manifestations N/A N/A unicode N/A self DATASET_ID N/A Manifestation dataset N/A Dataset dataset_id N/A unicode N/A self DATASET_ID deleted True primary True N/A N/A assert_calculated_changes self node_state node_config N/A N/A Dataset dataset_id N/A unicode N/A self DATASET_ID N/A in_parallel changes N/A N/A DetachVolume dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID N/A test_detach_remote_volume_attached_to_dead_node N/A N/A self N/A N/A N/A 
        ``BlockDeviceDeployer.calculate_changes`` recognizes a volume that is
        attached to a remote dead node and is supposed to be mounted
        locally. The result ensures the volume is detached from the remote
        node so it can later be attached to the local node.
         N/A node_state N/A NodeState uuid N/A self NODE_UUID hostname N/A self NODE applications None manifestations N/A devices N/A paths N/A N/A node_config N/A to_node N/A self ONE_DATASET_STATE N/A N/A assert_calculated_changes self node_state node_config N/A N/A Dataset dataset_id N/A unicode N/A self DATASET_ID maximum_size N/A int N/A N/A REALISTIC_BLOCKDEVICE_SIZE to_Byte discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED_TO_DEAD_NODE dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID maximum_size N/A int N/A N/A REALISTIC_BLOCKDEVICE_SIZE to_Byte expected_changes N/A in_parallel changes N/A N/A DetachVolume dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID N/A test_detach_remote_volume_attached_to_dead_node_for_deletion N/A N/A self N/A N/A N/A 
        ``BlockDeviceDeployer.calculate_changes`` recognizes a volume that is
        attached to a remote dead node and is supposed to be deleted.  The
        result ensures the volume is detached from the remote node so it
        can later be deleted.
         N/A node_state N/A NodeState uuid N/A self NODE_UUID hostname N/A self NODE applications None manifestations N/A devices N/A paths N/A N/A node_config N/A N/A N/A to_node N/A self ONE_DATASET_STATE transform N/A manifestations N/A unicode N/A self DATASET_ID dataset deleted True N/A N/A assert_calculated_changes self node_state node_config N/A N/A Dataset dataset_id N/A unicode N/A self DATASET_ID maximum_size N/A int N/A N/A REALISTIC_BLOCKDEVICE_SIZE to_Byte discovered_datasets N/A N/A DiscoveredDataset state N/A DatasetStates ATTACHED_TO_DEAD_NODE dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID maximum_size N/A int N/A N/A REALISTIC_BLOCKDEVICE_SIZE to_Byte expected_changes N/A in_parallel changes N/A N/A DetachVolume dataset_id N/A self DATASET_ID blockdevice_id N/A self BLOCKDEVICE_ID N/A N/A BlockDeviceInterfaceTests N/A TestCase N/A N/A 
    Tests for ``IBlockDeviceAPI`` and ``IBlockDeviceAsyncAPI``.
     test_names N/A N/A self N/A N/A N/A 
        The two interfaces have all of the same names defined.
         N/A N/A N/A self assertItemsEqual N/A list N/A N/A IBlockDeviceAPI names N/A list N/A N/A IBlockDeviceAsyncAPI names N/A test_same_signatures N/A N/A self N/A N/A N/A 
        Methods of the two interfaces all have the same signature.
         parts N/A N/A method N/A N/A N/A N/A N/A method positional N/A method kwargs N/A method required N/A method varargs N/A N/A names N/A list N/A N/A IBlockDeviceAPI names N/A N/A N/A self assertItemsEqual N/A list N/A N/A parts N/A IBlockDeviceAPI N/A name N/A name names N/A list N/A N/A parts N/A IBlockDeviceAsyncAPI N/A name N/A name names N/A N/A BlockDeviceDeployerCalculateChangesTests N/A TestCase ScenarioMixin N/A N/A 
    Tests for ``BlockDeviceDeployer.calculate_changes``.
     setUp N/A N/A self N/A N/A N/A N/A N/A N/A super BlockDeviceDeployerCalculateChangesTests self setUp N/A N/A self expected_change N/A ControllableAction result N/A succeed None N/A N/A self deployer N/A BlockDeviceDeployer node_uuid N/A ScenarioMixin NODE_UUID hostname N/A ScenarioMixin NODE block_device_api N/A UnusableAPI calculator N/A RecordingCalculator N/A self expected_change N/A N/A self local_state N/A BlockDeviceDeployerLocalState node_uuid N/A ScenarioMixin NODE_UUID hostname N/A ScenarioMixin NODE datasets N/A N/A test_calculates_changes N/A N/A self discovered_datasets N/A N/A N/A 
        ``BlockDeviceDeployer.calculate_changes`` returns the changes
        calculated by calling the provided ``ICalculator``.
         N/A node_state N/A NodeState hostname N/A ScenarioMixin NODE uuid N/A ScenarioMixin NODE_UUID applications None N/A node_config N/A to_node node_state N/A N/A assert_calculated_changes_for_deployer self N/A self deployer node_state node_state node_config node_config nonmanifest_datasets N/A additional_node_states N/A set additional_node_config N/A set expected_changes N/A self expected_change local_state N/A N/A N/A self local_state transform N/A datasets discovered_datasets N/A N/A N/A self assertEqual N/A N/A N/A self deployer calculator discovered_datasets discovered_datasets N/A N/A given discovered_datasets N/A N/A N/A lists DISCOVERED_DATASET_STRATEGY map dataset_map_from_iterable test_unknown_applications N/A N/A self N/A N/A N/A 
        If applications are unknown, changes are still calculated.
         N/A node_state N/A NodeState hostname N/A ScenarioMixin NODE uuid N/A ScenarioMixin NODE_UUID applications None N/A node_config N/A to_node node_state N/A N/A assert_calculated_changes_for_deployer self N/A self deployer node_state node_state node_config node_config nonmanifest_datasets N/A additional_node_states N/A set additional_node_config N/A set expected_changes N/A self expected_change local_state N/A self local_state N/A test_another_node_ignorant N/A N/A self N/A N/A N/A 
        If a different node is ignorant about its state, it is still possible
        to calculate state for the current node.
         N/A node_state N/A NodeState hostname N/A ScenarioMixin NODE uuid N/A ScenarioMixin NODE_UUID applications None N/A node_config N/A to_node node_state N/A N/A assert_calculated_changes_for_deployer self N/A self deployer node_state node_state node_config node_config nonmanifest_datasets N/A additional_node_states N/A N/A NodeState hostname 1.2.3.4 uuid N/A uuid4 applications None additional_node_config N/A set expected_changes N/A self expected_change local_state N/A self local_state N/A N/A IBlockDeviceAsyncAPITestsMixin N/A object N/A N/A 
    Tests to perform on ``IBlockDeviceAsyncAPI`` providers.
     test_interface N/A N/A self N/A N/A N/A 
        The API object provides ``IBlockDeviceAsyncAPI``.
         N/A N/A N/A self assertTrue N/A verifyObject IBlockDeviceAsyncAPI N/A self api N/A N/A make_iblockdeviceasyncapi_tests N/A N/A blockdeviceasync_api_factory N/A N/A N/A 
    :return: A ``TestCase`` with tests that will be performed on the supplied
        ``IBlockDeviceAsyncAPI`` provider.  These tests are not exhaustive
        because we currently assume ``make_iblockdeviceapi_tests`` will be used
        on the wrapped object.
     Tests N/A IBlockDeviceAsyncAPITestsMixin TestCase N/A setUp N/A N/A self N/A N/A N/A N/A N/A N/A super Tests self setUp N/A N/A self api N/A blockdeviceasync_api_factory test_case self N/A N/A N/A Tests N/A SyncToThreadedAsyncAPIAdapterTests N/A N/A make_iblockdeviceasyncapi_tests N/A N/A N/A test_case N/A N/A _SyncToThreadedAsyncAPIAdapter _reactor None _threadpool None _sync N/A N/A LoopbackBlockDeviceAPI from_path root_path N/A N/A test_case mktemp compute_instance_id sync-threaded-tests N/A N/A 
    Tests for ``_SyncToThreadedAsyncAPIAdapter``.
     N/A losetup_detach N/A N/A device_file N/A N/A N/A 
    Detach the supplied loopback ``device_file``.
     N/A N/A check_output N/A losetup --detach N/A device_file path N/A losetup_detach_all N/A N/A root_path N/A N/A N/A 
    Detach all loop devices associated with files contained in ``root_path``.

    :param FilePath root_path: A directory in which to search for loop device
        backing files.
     N/A N/A device_file backing_file N/A _losetup_list N/A N/A N/A N/A N/A N/A backing_file segmentsFrom root_path N/A N/A N/A ValueError N/A N/A N/A N/A N/A losetup_detach device_file N/A LoopbackBlockDeviceAPITests N/A N/A make_iblockdeviceapi_tests blockdevice_api_factory N/A partial loopbackblockdeviceapi_for_test allocation_unit LOOPBACK_ALLOCATION_UNIT minimum_allocatable_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE unknown_blockdevice_id_factory N/A N/A N/A test N/A N/A unicode N/A uuid4 N/A N/A 
    Interface adherence Tests for ``LoopbackBlockDeviceAPI``.
     N/A LoopbackBlockDeviceAPIConstructorTests N/A TestCase N/A N/A 
    Implementation specific constructor tests.
     test_from_path_creates_instance_id_if_not_provided N/A N/A self N/A N/A N/A 
        Calling ``from_path`` with empty instance id creates an id.
         N/A loopback_blockdevice_api N/A N/A LoopbackBlockDeviceAPI from_path root_path N/A instance_id N/A N/A loopback_blockdevice_api compute_instance_id N/A N/A N/A self assertIsInstance instance_id unicode N/A N/A N/A self assertNotEqual instance_id N/A test_unique_instance_id_if_not_provided N/A N/A self N/A N/A N/A 
        Calling constructor with empty instance id creates a different
        id each time.
         N/A a N/A N/A LoopbackBlockDeviceAPI from_path root_path N/A b N/A N/A LoopbackBlockDeviceAPI from_path root_path N/A N/A N/A self assertNotEqual N/A N/A a compute_instance_id N/A N/A b compute_instance_id N/A N/A LoopbackBlockDeviceAPIImplementationTests N/A TestCase N/A N/A 
    Implementation specific tests for ``LoopbackBlockDeviceAPI``.
     assertDirectoryStructure N/A N/A self directory N/A N/A N/A 
        Assert that the supplied ``directory`` has all the sub-directories
        required by ``LoopbackBlockDeviceAPI``.
         N/A attached_directory N/A N/A directory child N/A LoopbackBlockDeviceAPI _attached_directory_name N/A unattached_directory N/A N/A directory child N/A LoopbackBlockDeviceAPI _unattached_directory_name N/A N/A N/A LoopbackBlockDeviceAPI from_path root_path N/A directory path compute_instance_id N/A random_name self N/A N/A N/A self assertTrue N/A True True N/A N/A N/A attached_directory exists N/A N/A unattached_directory exists N/A setUp N/A N/A self N/A N/A N/A N/A N/A N/A super LoopbackBlockDeviceAPIImplementationTests self setUp N/A N/A self api N/A loopbackblockdeviceapi_for_test test_case self allocation_unit LOOPBACK_ALLOCATION_UNIT N/A N/A self minimum_allocatable_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A test_initialise_directories N/A N/A self N/A N/A N/A 
        ``from_path`` creates a directory structure if it doesn't already
        exist.
         N/A directory N/A N/A N/A FilePath N/A N/A self mktemp child loopback N/A N/A N/A self assertDirectoryStructure directory N/A test_initialise_directories_attached_exists N/A N/A self N/A N/A N/A 
        ``from_path`` uses existing attached directory if present.
         N/A directory N/A FilePath N/A N/A self mktemp N/A attached_directory N/A N/A directory child N/A LoopbackBlockDeviceAPI _attached_directory_name N/A N/A N/A attached_directory makedirs N/A N/A N/A self assertDirectoryStructure directory N/A test_initialise_directories_unattached_exists N/A N/A self N/A N/A N/A 
        ``from_path`` uses existing unattached directory if present.
         N/A directory N/A FilePath N/A N/A self mktemp N/A unattached_directory N/A N/A directory child N/A LoopbackBlockDeviceAPI _unattached_directory_name N/A N/A N/A unattached_directory makedirs N/A N/A N/A self assertDirectoryStructure directory N/A test_create_sparse N/A N/A self N/A N/A N/A 
        ``create_volume`` creates sparse files.
         N/A requested_size N/A self minimum_allocatable_size N/A volume N/A N/A N/A self api create_volume dataset_id N/A uuid4 size requested_size N/A allocated_size N/A volume size N/A size N/A get_size_info N/A self api volume N/A N/A N/A self assertEqual N/A 0 allocated_size N/A N/A size actual N/A size reported N/A test_create_with_non_allocation_unit N/A N/A self N/A N/A N/A 
        ``create_volume`` raises ``ValueError`` unless the supplied
        ``size`` is a multiple of
        ``IBlockDeviceAPI.allocated_unit()``.
         N/A N/A N/A self assertRaises ValueError N/A N/A self api create_volume dataset_id N/A uuid4 size N/A N/A self minimum_allocatable_size 1 N/A test_list_unattached_volumes N/A N/A self N/A N/A N/A 
        ``list_volumes`` returns a ``BlockVolume`` for each unattached volume
        file.
         N/A expected_size N/A self minimum_allocatable_size N/A expected_dataset_id N/A uuid4 N/A blockdevice_volume N/A _blockdevicevolume_from_dataset_id size expected_size dataset_id expected_dataset_id N/A N/A N/A N/A N/A N/A N/A N/A N/A self api _root_path child unattached child N/A _backing_file_name blockdevice_volume open wb f N/A N/A N/A N/A f truncate expected_size N/A N/A N/A self assertEqual N/A blockdevice_volume N/A N/A N/A self api list_volumes N/A test_list_attached_volumes N/A N/A self N/A N/A N/A 
        ``list_volumes`` returns a ``BlockVolume`` for each attached volume
        file.
         N/A expected_size N/A self minimum_allocatable_size N/A expected_dataset_id N/A uuid4 N/A this_node N/A N/A N/A self api compute_instance_id N/A blockdevice_volume N/A _blockdevicevolume_from_dataset_id size expected_size attached_to this_node dataset_id expected_dataset_id N/A host_dir N/A N/A N/A N/A self api _root_path descendant N/A attached N/A N/A this_node encode utf-8 N/A N/A N/A host_dir makedirs N/A filename N/A _backing_file_name blockdevice_volume N/A N/A N/A N/A N/A host_dir child filename open wb f N/A N/A N/A N/A f truncate expected_size N/A N/A N/A self assertEqual N/A blockdevice_volume N/A N/A N/A self api list_volumes N/A test_stale_attachments N/A N/A self N/A N/A N/A 
        If there are volumes in the ``LoopbackBlockDeviceAPI``\ 's "attached"
        directory that do not have a corresponding loopback device, one is
        created for them.
         N/A this_node N/A N/A N/A self api compute_instance_id N/A volume N/A N/A N/A self api create_volume dataset_id N/A uuid4 size N/A self minimum_allocatable_size N/A unattached N/A N/A N/A N/A self api _root_path descendant N/A unattached N/A _backing_file_name volume N/A attached N/A N/A N/A N/A self api _root_path descendant N/A attached N/A N/A this_node encode utf-8 N/A _backing_file_name volume N/A N/A N/A N/A N/A attached parent makedirs N/A N/A N/A unattached moveTo attached N/A N/A N/A self assertNotEqual None N/A N/A N/A self api get_device_path N/A volume blockdevice_id N/A test_missing_instance_id N/A N/A self N/A N/A N/A 
        ``compute_instance_id`` raises an error when it cannot return a valid
        instance ID.
         N/A root_path None N/A api N/A LoopbackBlockDeviceAPI root_path compute_instance_id None N/A e N/A N/A self assertRaises UnknownInstanceID N/A api compute_instance_id N/A N/A N/A self assertEqual N/A Could not find valid instance ID for %r N/A api N/A str e N/A N/A LosetupListTests N/A TestCase N/A N/A 
    Tests for ``_losetup_list_parse``.
     test_parse_empty N/A N/A self N/A N/A N/A 
        An empty list is returned if there are no devices listed.
         N/A N/A N/A self assertEqual N/A N/A _losetup_list_parse N/A test_parse_one_line N/A N/A self N/A N/A N/A 
        A pair of FilePaths are returned for device_file and backing_file.
         N/A input_text N/A N/A join N/A /dev/loop0: []: (/tmp/rjw) N/A N/A N/A self assertEqual N/A N/A N/A FilePath /dev/loop0 N/A FilePath /tmp/rjw N/A _losetup_list_parse input_text N/A test_parse_multiple_lines N/A N/A self N/A N/A N/A 
        A pair of FilePaths is returned for every loopback device on the
        system.
         N/A input_text N/A N/A join N/A /dev/loop0: []: (/tmp/rjw) /dev/loop1: []: (/usr/share/virtualbox/VBoxGuestAdditions.iso) N/A N/A N/A self assertEqual N/A N/A N/A FilePath /dev/loop0 N/A FilePath /tmp/rjw N/A N/A FilePath /dev/loop1 N/A FilePath /usr/share/virtualbox/VBoxGuestAdditions.iso N/A _losetup_list_parse input_text N/A test_remove_deleted_suffix N/A N/A self N/A N/A N/A 
        Devices marked as ``(deleted)`` are listed.
         N/A input_text N/A N/A join N/A /dev/loop0: []: (/tmp/rjw (deleted)) N/A N/A N/A self assertEqual N/A N/A N/A FilePath /dev/loop0 N/A FilePath /tmp/rjw N/A _losetup_list_parse input_text N/A test_remove_inode N/A N/A self N/A N/A N/A 
        Devices listed with their inode number (when run as root) are listed.
         N/A input_text N/A N/A join N/A /dev/loop0: [0038]:723801 (/tmp/rjw) N/A N/A N/A self assertEqual N/A N/A N/A FilePath /dev/loop0 N/A FilePath /tmp/rjw N/A _losetup_list_parse input_text N/A N/A FakeProfiledLoopbackBlockDeviceIProfiledBlockDeviceTests N/A N/A make_iprofiledblockdeviceapi_tests N/A partial fakeprofiledloopbackblockdeviceapi_for_test allocation_unit LOOPBACK_ALLOCATION_UNIT LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A 
    ``IProfiledBlockDeviceAPI`` interface adherence Tests for
    ``FakeProfiledLoopbackBlockDevice``.
     N/A N/A _ARBITRARY_VOLUME N/A BlockDeviceVolume blockdevice_id abcd size N/A int N/A N/A REALISTIC_BLOCKDEVICE_SIZE to_Byte dataset_id N/A uuid4 multistep_change_log N/A N/A parent children N/A N/A N/A 
    Create an Eliot logging validation function which asserts that the given
    parent action is logged with the given children actions.

    :param ActionType parent: The type of an action that will be required.
    :param list children: The types of actions will be required to appear as
        children of ``parent``.

    :return: A two-argument callable suitable for use with
        ``validate_logging``.
     verify N/A N/A self logger N/A N/A N/A N/A parent_action N/A N/A LoggedAction of_type N/A logger messages parent N/A children_actions N/A N/A N/A N/A LoggedAction of_type N/A logger messages child_action N/A 0 N/A child_action children N/A N/A N/A self assertEqual children_actions N/A parent_action children N/A N/A verify N/A CreateFilesystemInitTests N/A N/A make_with_init_tests CreateFilesystem N/A dict device N/A FilePath /dev/null filesystem ext4 N/A dict N/A N/A 
    Tests for ``CreateFilesystem`` initialization.
     N/A CreateFilesystemTests N/A N/A make_istatechange_tests CreateFilesystem N/A dict device N/A FilePath /dev/null filesystem ext4 N/A dict device N/A FilePath /dev/null filesystem btrfs N/A N/A 
    Tests for ``CreateFilesystem``\ 's ``IStateChange`` implementation.

    See ``MountBlockDeviceTests`` for more ``CreateFilesystem`` tests.
     N/A MountBlockDeviceInitTests N/A N/A make_with_init_tests MountBlockDevice N/A dict dataset_id N/A uuid4 device_path N/A FilePath /dev/sdb mountpoint N/A FilePath /foo N/A dict N/A N/A 
    Tests for ``Mountblockdevice`` initialization.
     N/A _MountScenario N/A PClass N/A N/A 
    Setup tools for the tests defined on ``MountBlockDeviceTests``.

    This class serves as a central point for the handful of separate pieces of
    state that go into setting up a situation where it might be possible to
    mount something.  It also provides helpers for performing some of the
    external system interactions that might be necessary (such as creating a
    volume on the backend and initializing it with a filesystem).

    The factoring is dictated primarily by what makes it easy to write the
    tests with minimal duplication, nothing more.

    :ivar host: An identifier for the node to which a newly created volume will
        be attached.
    :ivar dataset_id: The dataset identifier associated with the volume that
        will be created.
    :ivar filesystem_type: The name of the filesystem with which the volume
        will be initialized (eg ``u"ext2"``).
    :ivar api: The ``IBlockDeviceAPI`` provider which will be used to create
        and attach a new volume.
    :ivar volume: The volume which is created.
    :ivar deployer: The ``BlockDeviceDeployer`` which will be passed to the
        ``IStateChange`` provider's ``run`` method.
    :ivar mountpoint: The filesystem location where the mount will be
        attempted.
     N/A host N/A field type unicode N/A dataset_id N/A field type UUID N/A filesystem_type N/A field type unicode N/A api N/A field N/A volume N/A field type BlockDeviceVolume N/A deployer N/A field type BlockDeviceDeployer N/A device_path N/A field type FilePath N/A mountpoint N/A field type FilePath state_change N/A N/A self N/A N/A N/A N/A MountBlockDevice dataset_id N/A self dataset_id device_path N/A self device_path mountpoint N/A self mountpoint N/A generate N/A N/A cls case mountpoint N/A N/A N/A 
        Create a new ``_MountScenario``.

        The scenario comes with a newly created volume attached to
        ``self.host`` and with a new ``self.filesystem_type`` filesystem.

        :param TestCase case: The running test case, used for temporary path
            generation.
        :param FilePath mountpoint: The location at which the mount attempt
            will eventually be made.

        :return: A new ``_MountScenario`` with attributes describing all of the
            state which has been set up.
         N/A host 192.0.7.8 N/A filesystem_type ext4 N/A dataset_id N/A uuid4 N/A api N/A loopbackblockdeviceapi_for_test case N/A volume N/A N/A api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A api attach_volume N/A volume blockdevice_id host N/A device_path N/A N/A api get_device_path N/A volume blockdevice_id N/A deployer N/A BlockDeviceDeployer node_uuid N/A uuid4 hostname host block_device_api api mountroot N/A N/A mountpoint parent N/A N/A cls host host dataset_id dataset_id filesystem_type filesystem_type api api volume volume deployer deployer device_path device_path mountpoint mountpoint N/A classmethod create N/A N/A self N/A N/A N/A 
        Create a filesystem on this scenario's volume.

        :return: A ``Deferred`` which fires when the filesystem has been
            created.
         N/A N/A run_state_change N/A CreateFilesystem device N/A N/A N/A self api get_device_path N/A N/A self volume blockdevice_id filesystem N/A self filesystem_type N/A self deployer N/A InMemoryStatePersister N/A N/A MountBlockDeviceTests N/A N/A make_istatechange_tests MountBlockDevice N/A dict dataset_id N/A uuid4 device_path N/A FilePath /dev/sdb mountpoint N/A FilePath /foo N/A dict dataset_id N/A uuid4 device_path N/A FilePath /dev/sdc mountpoint N/A FilePath /bar N/A N/A 
    Tests for ``MountBlockDevice``\ 's ``IStateChange`` implementation, as
    well as ``CreateFilesystem`` testing.
     _run_test N/A N/A self mountpoint N/A N/A N/A 
        Verify that ``MountBlockDevice.run`` mounts the filesystem from the
        block device for the attached volume it is given.
         N/A scenario N/A N/A _MountScenario generate self mountpoint N/A N/A N/A self successResultOf N/A N/A scenario create N/A change N/A N/A scenario state_change N/A N/A scenario N/A run_state_change change N/A scenario deployer N/A InMemoryStatePersister N/A _run_success_test N/A N/A self mountpoint N/A N/A N/A N/A scenario mount_result N/A N/A self _run_test mountpoint N/A N/A N/A self successResultOf mount_result N/A expected N/A N/A N/A scenario device_path path N/A mountpoint path N/A scenario filesystem_type N/A mounted N/A list N/A N/A N/A part device N/A part mountpoint N/A part fstype N/A part N/A N/A psutil disk_partitions N/A N/A N/A self assertIn expected mounted N/A scenario N/A _make_mounted_filesystem N/A N/A self path_segment N/A mount-test N/A N/A mountpoint N/A N/A N/A mountroot_for_test self child path_segment N/A scenario N/A N/A self _run_success_test mountpoint N/A N/A scenario mountpoint N/A _mount N/A N/A self scenario mountpoint N/A N/A N/A N/A N/A self successResultOf N/A run_state_change N/A N/A N/A N/A scenario state_change set mountpoint mountpoint N/A scenario deployer N/A InMemoryStatePersister N/A test_run N/A N/A self N/A N/A N/A 
        ``CreateFilesystem.run`` initializes a block device with a filesystem
        which ``MountBlockDevice.run`` can then mount.
         N/A mountroot N/A mountroot_for_test self N/A mountpoint N/A N/A mountroot child mount-test N/A N/A N/A self _run_success_test mountpoint N/A test_create_fails_on_mounted_filesystem N/A N/A self N/A N/A N/A 
        Running ``CreateFilesystem`` on a filesystem mounted with
        ``MountBlockDevice`` fails in a non-destructive manner.
         N/A N/A scenario mountpoint N/A N/A self _make_mounted_filesystem N/A afile N/A N/A mountpoint child file N/A N/A N/A afile setContent data N/A N/A N/A self failureResultOf N/A N/A scenario create FilesystemExists N/A N/A umount mountpoint N/A N/A N/A self _mount scenario mountpoint N/A N/A N/A self assertEqual N/A N/A afile getContent data N/A test_create_fails_on_existing_filesystem N/A N/A self N/A N/A N/A 
        Running ``CreateFilesystem`` on a block device that already has a file
        system fails with an exception and preserves the data.

        This is because mkfs is a destructive operation that will destroy any
        existing filesystem on that block device.
         N/A N/A scenario mountpoint N/A N/A self _make_mounted_filesystem N/A afile N/A N/A mountpoint child file N/A N/A N/A afile setContent data N/A N/A umount mountpoint N/A N/A N/A self failureResultOf N/A N/A scenario create FilesystemExists N/A N/A N/A self _mount scenario mountpoint N/A N/A N/A self assertEqual N/A N/A afile getContent data N/A test_mountpoint_exists N/A N/A self N/A N/A N/A 
        It is not an error if the mountpoint given to ``MountBlockDevice``
        already exists.
         N/A mountroot N/A mountroot_for_test self N/A mountpoint N/A N/A mountroot child mount-test N/A N/A N/A mountpoint makedirs N/A N/A N/A self _run_success_test mountpoint N/A test_mountpoint_error N/A N/A self N/A N/A N/A 
        If the mountpoint is unusable, for example because it is a regular file
        instead of a directory, ``MountBlockDevice.run`` returns a ``Deferred``
        that fires with a ``Failure`` given the reason.
         N/A mountroot N/A mountroot_for_test self N/A intermediate N/A N/A mountroot child mount-error-test N/A N/A N/A intermediate setContent collision N/A mountpoint N/A N/A intermediate child mount-test N/A N/A _ mount_result N/A N/A self _run_test mountpoint N/A failure N/A N/A self failureResultOf mount_result OSError N/A N/A N/A self assertEqual ENOTDIR N/A N/A failure value errno N/A test_mountpoint_permissions N/A N/A self N/A N/A N/A 
        The mountpoint is world-writeable (since containers can run as any
        user), and its parent is only accessible as current user (for
        security).
         N/A mountroot N/A mountroot_for_test self N/A mountpoint N/A N/A mountroot child mount-test N/A N/A N/A self _run_success_test mountpoint N/A N/A N/A self assertEqual N/A N/A N/A N/A N/A mountroot getPermissions shorthand N/A N/A N/A N/A mountpoint getPermissions shorthand N/A rwx------ rwxrwxrwx N/A test_new_is_empty N/A N/A self N/A N/A N/A 
        A newly created filesystem is empty after being mounted.

        If it's not empty it might break some Docker images that assumes
        volumes start out empty.
         N/A mountpoint N/A N/A N/A mountroot_for_test self child mount-test N/A N/A N/A self _run_success_test mountpoint N/A N/A N/A self assertEqual N/A N/A mountpoint children N/A N/A test_remount N/A N/A self N/A N/A N/A 
        It's possible to unmount and then remount an attached volume.
         N/A mountpoint N/A N/A N/A mountroot_for_test self child mount-test N/A scenario N/A N/A self _run_success_test mountpoint N/A N/A check_call N/A umount N/A mountpoint path N/A N/A N/A self successResultOf N/A run_state_change N/A N/A scenario state_change N/A scenario deployer N/A InMemoryStatePersister N/A test_lost_found_deleted_remount N/A N/A self N/A N/A N/A 
        If ``lost+found`` is recreated, remounting it removes it.
         N/A mountpoint N/A N/A N/A mountroot_for_test self child mount-test N/A scenario N/A N/A self _run_success_test mountpoint N/A N/A check_call N/A mklost+found cwd N/A mountpoint path N/A N/A check_call N/A umount N/A mountpoint path N/A N/A N/A self successResultOf N/A run_state_change N/A N/A scenario state_change N/A scenario deployer N/A InMemoryStatePersister N/A N/A N/A self assertEqual N/A N/A mountpoint children N/A N/A test_lost_found_not_deleted_if_other_files_exist N/A N/A self N/A N/A N/A 
        If files other than ``lost+found`` exist in the filesystem,
        ``lost+found`` is not deleted.
         N/A mountpoint N/A N/A N/A mountroot_for_test self child mount-test N/A scenario N/A N/A self _run_success_test mountpoint N/A N/A N/A N/A N/A mountpoint child file setContent stuff N/A N/A check_call N/A mklost+found cwd N/A mountpoint path N/A N/A check_call N/A umount N/A mountpoint path N/A N/A N/A self successResultOf N/A run_state_change N/A N/A scenario state_change N/A scenario deployer N/A InMemoryStatePersister N/A N/A N/A self assertItemsEqual N/A N/A mountpoint children N/A N/A N/A mountpoint child file N/A N/A mountpoint child lost+found N/A test_world_permissions_not_reset_if_other_files_exist N/A N/A self N/A N/A N/A 
        If files exist in the filesystem, permissions are not reset when the
        filesystem is remounted.
         N/A mountpoint N/A N/A N/A mountroot_for_test self child mount-test N/A scenario N/A N/A self _run_success_test mountpoint N/A N/A N/A N/A N/A mountpoint child file setContent stuff N/A N/A check_call N/A umount N/A mountpoint path N/A N/A N/A mountpoint chmod S_IRWXU N/A N/A N/A mountpoint restat N/A N/A N/A self successResultOf N/A run_state_change N/A N/A scenario state_change N/A scenario deployer N/A InMemoryStatePersister N/A N/A N/A self assertEqual N/A N/A N/A N/A mountpoint getPermissions shorthand rwx------ N/A N/A UnmountBlockDeviceInitTests N/A N/A make_with_init_tests record_type UnmountBlockDevice kwargs N/A dict dataset_id N/A uuid4 blockdevice_id ARBITRARY_BLOCKDEVICE_ID expected_defaults N/A dict N/A N/A 
    Tests for ``UnmountBlockDevice`` initialization.
     N/A UnmountBlockDeviceTests N/A N/A make_istatechange_tests UnmountBlockDevice N/A dict dataset_id N/A uuid4 blockdevice_id ARBITRARY_BLOCKDEVICE_ID N/A dict dataset_id N/A uuid4 blockdevice_id ARBITRARY_BLOCKDEVICE_ID_2 N/A N/A 
    Tests for ``UnmountBlockDevice``.
     test_run N/A N/A self logger N/A N/A N/A 
        ``UnmountBlockDevice.run`` unmounts the filesystem / block device
        associated with the volume passed to it (association as determined by
        the deployer's ``IBlockDeviceAPI`` provider).
         N/A N/A N/A self patch blockdevice _logger logger N/A node 192.0.2.1 N/A dataset_id N/A uuid4 N/A deployer N/A create_blockdevicedeployer self hostname node N/A api N/A deployer block_device_api N/A volume N/A N/A api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A volume N/A N/A api attach_volume N/A volume blockdevice_id node N/A device N/A N/A api get_device_path N/A volume blockdevice_id N/A mountroot N/A mountroot_for_test self N/A mountpoint N/A N/A mountroot child N/A N/A N/A unicode dataset_id encode ascii N/A N/A N/A mountpoint makedirs N/A N/A make_filesystem device block_device True N/A N/A check_output N/A mount N/A device path N/A mountpoint path N/A change N/A UnmountBlockDevice dataset_id dataset_id blockdevice_id N/A volume blockdevice_id N/A N/A N/A self successResultOf N/A run_state_change change deployer N/A InMemoryStatePersister N/A N/A N/A self assertNotIn device N/A list N/A N/A FilePath N/A partition device N/A partition N/A N/A psutil disk_partitions N/A N/A validate_logging N/A N/A N/A self logger N/A N/A N/A self assertEqual 1 N/A len N/A N/A LoggedAction of_type N/A logger messages UNMOUNT_BLOCK_DEVICE N/A DetachVolumeInitTests N/A N/A make_with_init_tests record_type DetachVolume kwargs N/A dict dataset_id N/A uuid4 blockdevice_id ARBITRARY_BLOCKDEVICE_ID expected_defaults N/A dict N/A N/A 
    Tests for ``DetachVolume`` initialization.
     N/A DetachVolumeTests N/A N/A make_istatechange_tests DetachVolume N/A dict dataset_id N/A uuid4 blockdevice_id ARBITRARY_BLOCKDEVICE_ID N/A dict dataset_id N/A uuid4 blockdevice_id ARBITRARY_BLOCKDEVICE_ID_2 N/A N/A 
    Tests for ``DetachVolume``.
     test_run N/A N/A self N/A N/A N/A 
        ``DetachVolume.run`` uses the deployer's ``IBlockDeviceAPI`` to detach
        its volume from the deployer's node.
         N/A dataset_id N/A uuid4 N/A deployer N/A create_blockdevicedeployer self hostname 192.0.2.1 N/A api N/A deployer block_device_api N/A volume N/A N/A api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A api attach_volume N/A volume blockdevice_id attach_to N/A N/A api compute_instance_id N/A change N/A DetachVolume dataset_id dataset_id blockdevice_id N/A volume blockdevice_id N/A N/A N/A self successResultOf N/A run_state_change change deployer N/A InMemoryStatePersister N/A N/A listed_volume N/A N/A api list_volumes N/A N/A N/A self assertIs None N/A listed_volume attached_to N/A N/A DestroyVolumeInitTests N/A N/A make_with_init_tests DestroyVolume N/A dict blockdevice_id ARBITRARY_BLOCKDEVICE_ID N/A dict N/A N/A 
    Tests for ``DestroyVolume`` initialization.
     N/A DestroyVolumeTests N/A N/A make_istatechange_tests DestroyVolume N/A dict blockdevice_id ARBITRARY_BLOCKDEVICE_ID N/A dict blockdevice_id ARBITRARY_BLOCKDEVICE_ID_2 N/A N/A 
    Tests for ``DestroyVolume``.
     test_run N/A N/A self N/A N/A N/A 
        ``DestroyVolume.run`` uses the deployer's ``IBlockDeviceAPI`` to
        destroy its volume.
         N/A node 192.0.2.1 N/A dataset_id N/A uuid4 N/A deployer N/A create_blockdevicedeployer self hostname node N/A api N/A deployer block_device_api N/A volume N/A N/A api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A blockdevice_id N/A volume blockdevice_id N/A change N/A DestroyVolume blockdevice_id blockdevice_id N/A state_persister N/A InMemoryStatePersister N/A N/A N/A state_persister record_ownership dataset_id blockdevice_id N/A N/A N/A self successResultOf N/A run_state_change change deployer state_persister N/A N/A N/A self assertEqual N/A N/A N/A state_persister get_state blockdevice_ownership N/A dataset_id blockdevice_id N/A N/A N/A self assertEqual N/A N/A N/A api list_volumes N/A N/A CreateBlockDeviceDatasetInitTests N/A N/A make_with_init_tests CreateBlockDeviceDataset N/A dict dataset_id N/A uuid4 maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE metadata N/A meta data N/A dict metadata N/A N/A N/A 
    Tests for ``CreateBlockDeviceDataset`` initialization.
     N/A CreateBlockDeviceDatasetInterfaceTests N/A N/A make_istatechange_tests CreateBlockDeviceDataset N/A N/A N/A _uuid N/A N/A uuid4 N/A dict dataset_id _uuid maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A _uuid N/A N/A uuid4 N/A dict dataset_id N/A uuid4 maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A 
    ``CreateBlockDeviceDataset`` interface adherance tests.
     N/A CreateBlockDeviceDatasetImplementationMixin N/A object N/A N/A 
    Utility Mixin for ``CreateBlockDeviceDataset`` implementation tests.
     _create_blockdevice_dataset N/A N/A self dataset_id maximum_size metadata N/A N/A pmap N/A N/A N/A 
        Call ``CreateBlockDeviceDataset.run`` with a ``BlockDeviceDeployer``.

        :param UUID dataset_id: The uuid4 identifier for the dataset which will
            be created.
        :param int maximum_size: The size, in bytes, of the dataset which will
            be created.
        :param pmap(unicode, unicode) metadata: The metadata for the dataset.

        :returns: A ``BlockDeviceVolume`` for the created volume.
         N/A change N/A CreateBlockDeviceDataset dataset_id dataset_id maximum_size maximum_size metadata metadata N/A N/A run_state_change change N/A self deployer N/A InMemoryStatePersister N/A N/A volume N/A N/A N/A self api list_volumes N/A volume N/A N/A make_createblockdevicedataset_mixin N/A N/A profiled_api N/A N/A N/A 
    Constructs a base class for tests that verify the implementation of
    ``CreateBlockDeviceDataset``.

    This ``IStateChange`` needs to be tested in two configurations:

    1) With an ``IBlockDeviceAPI`` provider that does not provide
        ``IProfiledBlockDeviceAPI``.

    2) With an ``IBlockDeviceAPI`` that does provide
        ``IProfiledBlockDeviceAPI``.

    The mixin holds utility functions that are useful in both configurations,
    and takes care of initializing the two different versions of the API.

    :param bool profiled_api: True if you want self.api to be an implementation
        of ``IBlockDeviceAPI`` that provides ``IProfiledBlockDeviceAPI``. False
        if you want self.api not to provide ``IProfiledBlockDeviceAPI``.
     Mixin N/A CreateBlockDeviceDatasetImplementationMixin TestCase N/A setUp N/A N/A self N/A N/A N/A N/A N/A N/A super Mixin self setUp N/A profiled_api N/A N/A N/A self api N/A fakeprofiledloopbackblockdeviceapi_for_test self allocation_unit LOOPBACK_ALLOCATION_UNIT N/A N/A N/A self api N/A loopbackblockdeviceapi_for_test self allocation_unit LOOPBACK_ALLOCATION_UNIT N/A N/A self mountroot N/A mountroot_for_test self N/A N/A self deployer N/A BlockDeviceDeployer node_uuid N/A uuid4 hostname 192.0.2.10 block_device_api N/A self api mountroot N/A self mountroot N/A N/A N/A Mixin N/A CreateBlockDeviceDatasetImplementationTests N/A N/A make_createblockdevicedataset_mixin profiled_api False N/A N/A 
    ``CreateBlockDeviceDataset`` implementation tests for use with a backend
    that is not storage profile aware.
     test_created_exists N/A N/A self logger N/A N/A N/A 
        ``CreateBlockDeviceDataset.run`` fails with ``DatasetExists`` if there
        is already a ``BlockDeviceVolume`` for the requested dataset.
         N/A N/A N/A self patch blockdevice _logger logger N/A dataset_id N/A uuid4 N/A existing_volume N/A N/A N/A self api create_volume dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A change N/A CreateBlockDeviceDataset dataset_id dataset_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A changing N/A run_state_change change N/A self deployer N/A InMemoryStatePersister N/A failure N/A N/A self failureResultOf changing DatasetExists N/A N/A N/A self assertEqual existing_volume N/A N/A failure value blockdevice N/A N/A capture_logging assertHasAction CREATE_BLOCK_DEVICE_DATASET succeeded False test_run_create N/A N/A self N/A N/A N/A 
        ``CreateBlockDeviceDataset.run`` uses the ``IDeployer``\ 's API object
        to create a new volume.
         N/A dataset_id N/A uuid4 N/A volume N/A N/A self _create_blockdevice_dataset dataset_id dataset_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A expected_volume N/A _blockdevicevolume_from_dataset_id dataset_id dataset_id attached_to None size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A self assertEqual expected_volume volume N/A test_run_create_profile_dropped N/A N/A self logger N/A N/A N/A 
        ``CreateBlockDeviceDataset.run`` uses the ``IDeployer``\ 's API object
        to create a new volume, and logs that profile dropped during creation
        if the backend does not provide ``IProfiledBlockDeviceAPI``.
         N/A N/A N/A self assertFalse N/A N/A IProfiledBlockDeviceAPI providedBy N/A self api This test assumes the API does not provide IProfiledBlockDeviceAPI. If the API now does provide that interface, this test needs a bit of love. N/A dataset_id N/A uuid4 N/A volume N/A N/A self _create_blockdevice_dataset dataset_id dataset_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE metadata N/A PROFILE_METADATA_KEY gold N/A expected_volume N/A _blockdevicevolume_from_dataset_id dataset_id dataset_id attached_to None size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A self assertEqual expected_volume volume N/A N/A capture_logging assertHasMessage CREATE_VOLUME_PROFILE_DROPPED test_run_create_round_up N/A N/A self N/A N/A N/A 
        ``CreateBlockDeviceDataset.run`` rounds up the size if the
        requested size is less than ``allocation_unit``.
         N/A dataset_id N/A uuid4 N/A volume_info N/A N/A self _create_blockdevice_dataset dataset_id dataset_id maximum_size N/A LOOPBACK_MINIMUM_ALLOCATABLE_SIZE 1 N/A expected_volume N/A _blockdevicevolume_from_dataset_id dataset_id dataset_id attached_to None size N/A LOOPBACK_MINIMUM_ALLOCATABLE_SIZE LOOPBACK_ALLOCATION_UNIT N/A N/A N/A self assertEqual expected_volume volume_info N/A N/A CreateBlockDeviceDatasetProfiledImplementationTests N/A N/A make_createblockdevicedataset_mixin profiled_api True N/A N/A 
    ``CreateBlockDeviceDataset`` implementation tests with a driver that can
    handle storage profiles.
     test_run_create_profile N/A N/A self N/A N/A N/A 
        ``CreateBlockDeviceDataset.run`` uses the ``IDeployer``\ 's API object
        to create a new volume, and logs that profile dropped during creation
        if the backend does not provide ``IProfiledBlockDeviceAPI``.
         N/A N/A N/A self assertTrue N/A N/A IProfiledBlockDeviceAPI providedBy N/A self api This test assumes the API provides IProfiledBlockDeviceAPI. If the API now does not provide that interface, this test needs a bit of love. N/A dataset_id N/A uuid4 N/A profile gold N/A volume_info N/A N/A self _create_blockdevice_dataset dataset_id dataset_id maximum_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE metadata N/A clusterhq:flocker:profile profile N/A actual_profile N/A N/A N/A self api dataset_profiles N/A N/A volume_info blockdevice_id N/A expected_volume N/A _blockdevicevolume_from_dataset_id dataset_id dataset_id attached_to None size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A N/A N/A self assertEqual N/A dict volume expected_volume profile profile N/A dict volume volume_info profile actual_profile N/A N/A AttachVolumeInitTests N/A N/A make_with_init_tests record_type AttachVolume kwargs N/A dict dataset_id N/A uuid4 blockdevice_id ARBITRARY_BLOCKDEVICE_ID expected_defaults N/A dict N/A N/A 
    Tests for ``AttachVolume`` initialization.
     N/A AttachVolumeTests N/A N/A make_istatechange_tests AttachVolume N/A dict dataset_id N/A uuid4 blockdevice_id ARBITRARY_BLOCKDEVICE_ID N/A dict dataset_id N/A uuid4 blockdevice_id ARBITRARY_BLOCKDEVICE_ID_2 N/A N/A 
    Tests for ``AttachVolume``\ 's ``IStateChange`` implementation.
     test_run N/A N/A self logger N/A N/A N/A 
        ``AttachVolume.run`` attaches a volume to a host.
         N/A host 192.0.7.8 N/A dataset_id N/A uuid4 N/A deployer N/A create_blockdevicedeployer self hostname host N/A api N/A deployer block_device_api N/A volume N/A N/A api create_volume dataset_id dataset_id size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE N/A change N/A AttachVolume dataset_id dataset_id blockdevice_id N/A volume blockdevice_id N/A N/A N/A self patch blockdevice _logger logger N/A N/A N/A self successResultOf N/A run_state_change change deployer N/A InMemoryStatePersister N/A expected_volume N/A N/A volume set attached_to N/A N/A api compute_instance_id N/A N/A N/A self assertEqual N/A expected_volume N/A N/A api list_volumes N/A N/A validate_logging assertHasAction ATTACH_VOLUME True test_missing N/A N/A self N/A N/A N/A 
        If no volume is associated with the ``AttachVolume`` instance's
        ``blockdevice_id``, the underlying ``IBlockDeviceAPI`` should fail with
        an ``UnknownVolume`` exception, and ``AttachVolume.run`` should return
        a ``Deferred`` that fires with a ``Failure`` wrapping that exception.
         N/A dataset_id N/A uuid4 N/A deployer N/A create_blockdevicedeployer self N/A bad_blockdevice_id incorrect_blockdevice_id N/A change N/A AttachVolume dataset_id dataset_id blockdevice_id bad_blockdevice_id N/A failure N/A N/A self failureResultOf N/A run_state_change change deployer N/A InMemoryStatePersister UnknownVolume N/A N/A N/A self assertEqual bad_blockdevice_id N/A N/A failure value blockdevice_id N/A N/A AllocatedSizeTypeTests N/A TestCase N/A N/A 
    Tests for type coercion of parameters supplied to
    ``allocated_size``.
     test_allocation_unit_float N/A N/A self N/A N/A N/A 
        ``allocated_size`` returns ``int`` if the supplied
        ``allocation_unit`` is of type ``float``.
         N/A N/A N/A self assertIsInstance N/A allocated_size allocation_unit 10.0 requested_size 1 int N/A test_requested_size_float N/A N/A self N/A N/A N/A 
        ``allocated_size`` returns ``int`` if the supplied
        ``requested_size`` is of type ``float``.
         N/A N/A N/A self assertIsInstance N/A allocated_size allocation_unit 10 requested_size 1.0 int N/A N/A AllocatedSizeTestsMixin N/A object N/A N/A 
    Tests for ``allocated_size``.
     test_size_is_allocation_unit N/A N/A self N/A N/A N/A 
        ``allocated_size`` returns the ``requested_size`` when it
        exactly matches the ``allocation_unit``.
         N/A requested_size N/A self allocation_unit N/A expected_size requested_size N/A N/A N/A self assertEqual expected_size N/A allocated_size N/A self allocation_unit requested_size N/A test_size_is_multiple_of_allocation_unit N/A N/A self N/A N/A N/A 
        ``allocated_size`` returns the ``requested_size`` when it
        is a multiple of the ``allocation_unit``.
         N/A requested_size N/A N/A self allocation_unit 10 N/A expected_size requested_size N/A N/A N/A self assertEqual expected_size N/A allocated_size N/A self allocation_unit requested_size N/A test_round_up N/A N/A self N/A N/A N/A 
        ``allocated_size`` returns next multiple of
        ``allocation_unit`` if ``requested_size`` is not a multiple of
        ``allocation_unit``.
         N/A requested_size N/A N/A self allocation_unit 1 N/A expected_size N/A N/A self allocation_unit 2 N/A N/A N/A self assertEqual expected_size N/A allocated_size N/A self allocation_unit requested_size N/A N/A make_allocated_size_tests N/A N/A allocation_unit N/A N/A N/A 
    :param Bitmath allocation_unit: The allocation_unit.
    :return: A ``TestCase`` to run ``AllocatedSizeTestsMixin`` tests
        against the supplied ``allocation_unit``. The name of the test
        contains the classname of ``allocation_unit``.
     Tests N/A AllocatedSizeTestsMixin TestCase N/A setUp N/A N/A self N/A N/A N/A N/A N/A N/A super Tests self setUp N/A N/A self allocation_unit N/A int N/A N/A N/A allocation_unit to_Byte value N/A N/A N/A N/A Tests __name__ N/A N/A AllocatedSize N/A N/A allocation_unit __class__ __name__ Tests N/A Tests N/A _make_allocated_size_testcases N/A N/A N/A N/A N/A 
    Build test cases for some common allocation_units.
     N/A unit N/A Byte MB MiB GB GiB N/A N/A size N/A 1 2 4 8 N/A N/A test_case N/A make_allocated_size_tests N/A unit size N/A N/A N/A globals N/A N/A test_case __name__ test_case N/A N/A N/A _make_allocated_size_testcases N/A _make_allocated_size_testcases ProcessLifetimeCacheIBlockDeviceAPITests N/A N/A make_iblockdeviceapi_tests blockdevice_api_factory N/A N/A N/A test_case N/A N/A ProcessLifetimeCache N/A loopbackblockdeviceapi_for_test test_case allocation_unit LOOPBACK_ALLOCATION_UNIT minimum_allocatable_size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE unknown_blockdevice_id_factory N/A N/A N/A test N/A N/A unicode N/A uuid4 N/A N/A 
    Interface adherence Tests for ``ProcessLifetimeCache``.
     N/A CountingProxy N/A object N/A N/A 
    Transparent proxy that counts the number of calls to methods of the
    wrapped object.

    :ivar _wrapped: Wrapped object.
    :ivar call_count: Mapping of (method name, args, kwargs) to number of
        calls.
     __init__ N/A N/A self wrapped N/A N/A N/A N/A self _wrapped wrapped N/A N/A self call_count N/A pmap N/A num_calls N/A N/A self name N/A args kwargs N/A N/A 
        Return the number of times the given method was called with given
        arguments.

        :param name: Method name.
        :param args: Positional arguments it was called with.
        :param kwargs: Keyword arguments it was called with.

        :return: Number of calls.
         N/A N/A N/A N/A self call_count get N/A pvector N/A name N/A pvector args N/A pmap kwargs 0 N/A __getattr__ N/A N/A self name N/A N/A N/A method N/A getattr N/A self _wrapped name counting_proxy N/A N/A N/A args kwargs N/A N/A key N/A pvector N/A name N/A pvector args N/A pmap kwargs N/A current_count N/A N/A N/A self call_count get key 0 N/A N/A self call_count N/A N/A N/A self call_count set key N/A current_count 1 N/A N/A method args kwargs N/A N/A counting_proxy N/A N/A ProcessLifetimeCacheTests N/A TestCase N/A N/A 
    Tests for the caching logic in ``ProcessLifetimeCache``.
     setUp N/A N/A self N/A N/A N/A N/A N/A N/A super ProcessLifetimeCacheTests self setUp N/A N/A self api N/A loopbackblockdeviceapi_for_test self N/A N/A self counting_proxy N/A CountingProxy N/A self api N/A N/A self cache N/A ProcessLifetimeCache N/A self counting_proxy N/A test_compute_instance_id N/A N/A self N/A N/A N/A 
        The result of ``compute_instance_id`` is cached indefinitely.
         N/A initial N/A N/A N/A self cache compute_instance_id N/A later N/A N/A N/A N/A self cache compute_instance_id N/A _ N/A range 10 N/A N/A N/A self assertEqual N/A later N/A N/A N/A self counting_proxy num_calls compute_instance_id N/A N/A N/A initial 10 1 N/A attached_volumes N/A N/A self N/A N/A N/A 
        :return: A sequence of two attached volumes' ``blockdevice_id``.
         N/A dataset1 N/A uuid4 N/A dataset2 N/A uuid4 N/A this_node N/A N/A N/A self cache compute_instance_id N/A attached_volume1 N/A N/A N/A self cache attach_volume N/A N/A N/A N/A self cache create_volume dataset_id dataset1 size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE blockdevice_id attach_to this_node N/A attached_volume2 N/A N/A N/A self cache attach_volume N/A N/A N/A N/A self cache create_volume dataset_id dataset2 size LOOPBACK_MINIMUM_ALLOCATABLE_SIZE blockdevice_id attach_to this_node N/A N/A N/A attached_volume1 blockdevice_id N/A attached_volume2 blockdevice_id N/A test_get_device_path_cached_after_attach N/A N/A self N/A N/A N/A 
        The result of ``get_device_path`` is cached after an ``attach_device``.
         N/A N/A attached_id1 attached_id2 N/A N/A self attached_volumes N/A path1 N/A N/A N/A self cache get_device_path attached_id1 N/A path2 N/A N/A N/A self cache get_device_path attached_id2 N/A path1again N/A N/A N/A self cache get_device_path attached_id1 N/A path2again N/A N/A N/A self cache get_device_path attached_id2 N/A N/A N/A self assertEqual N/A path1again path2again N/A path1 path2 N/A N/A N/A self counting_proxy num_calls get_device_path attached_id1 N/A N/A N/A self counting_proxy num_calls get_device_path attached_id2 N/A path1 path2 False 1 1 N/A test_get_device_path_until_detach N/A N/A self N/A N/A N/A 
        The result of ``get_device_path`` is no longer cached after an
        ``detach_device`` call.
         N/A N/A attached_id1 _ N/A N/A self attached_volumes N/A N/A N/A N/A self cache get_device_path attached_id1 N/A N/A N/A N/A self cache detach_volume attached_id1 N/A N/A N/A self assertRaises UnattachedVolume N/A N/A self cache get_device_path attached_id1 N/A N/A FakeCloudAPITests N/A N/A make_icloudapi_tests N/A N/A N/A test_case N/A N/A FakeCloudAPI N/A loopbackblockdeviceapi_for_test test_case N/A N/A 
    ``ICloudAPI`` tests for ``FakeCloudAPI``.
     N/A BlockDeviceVolumeTests N/A TestCase N/A N/A 
    Tests for ``BlockDeviceVolume``.
     test_stable_sort_order N/A N/A self one another N/A N/A N/A 
        Instances of ``BlockDeviceVolume`` sort in the same order as a tuple
        made up of the ``blockdevice_id``, ``dataset_id``, ``size``, and
        ``attached_to`` fields would sort.
         N/A N/A N/A self assertThat N/A sorted N/A one another N/A Equals N/A sorted N/A one another key N/A N/A N/A volume N/A N/A N/A volume blockdevice_id N/A volume dataset_id N/A volume size N/A volume attached_to N/A N/A given blockdevice_volumes blockdevice_volumes N/A RegisterVolumeTests N/A TestCase N/A N/A 
    Tests for ``RegisterVolume``.
     test_run N/A N/A self dataset_id blockdevice_id N/A N/A N/A 
        ``RegisterVolume.run`` register a blockdevice mapping in the persistent
        state.
         N/A state_persister N/A InMemoryStatePersister N/A api N/A UnusableAPI N/A deployer N/A BlockDeviceDeployer hostname 192.0.2.1 node_uuid N/A uuid4 block_device_api api N/A N/A N/A N/A RegisterVolume dataset_id dataset_id blockdevice_id blockdevice_id run deployer state_persister N/A N/A N/A self assertEqual N/A N/A N/A state_persister get_state blockdevice_ownership N/A dataset_id blockdevice_id N/A N/A given dataset_id N/A uuids blockdevice_id N/A text N/A LogListVolumesTest N/A TestCase N/A N/A 
    Tests for ``log_list_volumes``
     test_generates_log_with_incrementing_count N/A N/A self logger N/A N/A N/A 
        ``log_list_volumes`` increments the count field of log messages.
         wrapped N/A N/A N/A N/A N/A N/A log_list_volumes N/A N/A wrapped N/A N/A wrapped N/A N/A wrapped N/A counts N/A N/A N/A logged message N/A count N/A logged N/A N/A LoggedMessage of_type N/A logger messages CALL_LIST_VOLUMES N/A N/A N/A self assertEqual counts N/A 1 2 3 N/A N/A capture_logging N/A N/A N/A self logger N/A None test_args_passed N/A N/A self N/A N/A N/A 
        Arguments and result passed to/from wrapped function.
         wrapped N/A N/A x y z N/A N/A N/A N/A x y z N/A log_list_volumes N/A result N/A wrapped 3 5 z 7 N/A N/A N/A self assertEqual result N/A 3 5 7 N/A N/A