Module Expr Str Import alias Import alias ImportFrom alias ImportFrom alias ImportFrom alias ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Assign AttributeStore NameLoad attr ListLoad Assign AttributeStore NameLoad attr ListLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr Num decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign AttributeStore NameLoad attr ListLoad Assign AttributeStore NameLoad attr Call NameLoad Assign AttributeStore NameLoad attr NameLoad If NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Dict For NameStore AttributeLoad NameLoad attr body If BoolOpAnd CompareEq NameLoad Str Call NameLoad NameLoad NameLoad CompareEq Call AttributeLoad NameLoad attr Str body For NameStore Call Call NameLoad NameLoad Str body Assign SubscriptStore NameLoad Index Call AttributeLoad NameLoad attr NameLoad orelse If Call NameLoad NameLoad NameLoad body For NameStore Call Call NameLoad NameLoad NameLoad body Assign SubscriptStore NameLoad Index Call AttributeLoad NameLoad attr NameLoad Return Call NameLoad Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr If BoolOpAnd UnaryOpNot NameLoad UnaryOpNot NameLoad body Raise Call NameLoad Str Assign NameStore BinOpMult AttributeLoad Call AttributeLoad NameLoad attr attr Num Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr NameLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr NameLoad NameLoad attr UnaryOpUSub NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If BoolOpAnd NameLoad NameLoad body Return Call AttributeLoad NameLoad attr ListLoad NameLoad NameLoad orelse If NameLoad body Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad orelse Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr attr If NameLoad body For NameStore Call AttributeLoad Call AttributeLoad NameLoad attr attr body Expr Call AttributeLoad NameLoad attr NameLoad If CompareLt Call NameLoad NameLoad Num body Raise Call NameLoad Str Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Num Assign NameStore NameLoad For NameStore NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return ListComp Call AttributeLoad NameLoad attr ListLoad NameLoad comprehension NameStore AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If CompareEq Call NameLoad NameLoad NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad orelse If BoolOpOr CompareEq Call NameLoad NameLoad NameLoad CompareEq Call NameLoad NameLoad NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return SubscriptLoad AttributeLoad NameLoad attr Index Num decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return AttributeLoad SubscriptLoad AttributeLoad NameLoad attr Index Num attr decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults Num NameLoad Str body Expr Str FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr If UnaryOpNot BoolOpOr CompareLt Call NameLoad BinOpSub AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad AttributeLoad NameLoad attr attr CompareLt Call NameLoad BinOpSub AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad AttributeLoad NameLoad attr attr CompareLt Call NameLoad BinOpSub AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad AttributeLoad NameLoad attr attr body Return NameLoad Return Call NameLoad CompareLt Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad Call NameLoad Num Num Num attr NameLoad If CompareLt AttributeLoad NameLoad attr AttributeLoad AttributeLoad NameLoad attr attr body Assign NameStore Call NameLoad Num Num Num Return NameLoad decorator_list If CompareGt Call NameLoad AttributeLoad NameLoad attr Num body If UnaryOpNot Call NameLoad GeneratorExp CompareEq Call AttributeLoad NameLoad attr Str comprehension NameStore AttributeLoad NameLoad attr body Raise Call NameLoad Str If UnaryOpNot Call NameLoad GeneratorExp Call NameLoad SubscriptLoad AttributeLoad NameLoad attr Index Num NameLoad comprehension NameStore SubscriptLoad AttributeLoad NameLoad attr Slice Num body Raise Call NameLoad Str If CompareEq NameLoad Str body Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr orelse If CompareEq NameLoad Str body Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad SubscriptLoad AttributeLoad NameLoad attr Index Num attr Assign NameStore Call NameLoad NameLoad orelse Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index Num If Call NameLoad NameLoad NameLoad body If CompareEq NameLoad Str body Assign NameStore Call AttributeLoad NameLoad attr orelse If CompareEq NameLoad Str body Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call NameLoad NameLoad orelse If Call NameLoad NameLoad Str body If CompareEq NameLoad Str body Assign NameStore Call AttributeLoad NameLoad attr orelse If CompareEq NameLoad Str body Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr orelse Raise Call NameLoad Str If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Num Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call NameLoad NameLoad NameLoad NameLoad Assign NameStore Call NameLoad NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call AttributeLoad NameLoad attr SubscriptLoad AttributeLoad NameLoad attr Slice Num Num decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Return Call AttributeLoad NameLoad attr ListLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call AttributeLoad NameLoad attr ListLoad SubscriptLoad AttributeLoad NameLoad attr Index Num decorator_list FunctionDef arguments args NameParam defaults body Expr Str If AttributeLoad NameLoad attr body Return AttributeLoad NameLoad attr orelse Raise Call NameLoad Str decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If NameLoad body For NameStore AttributeLoad NameLoad attr body If Call NameLoad NameLoad NameLoad body Return NameLoad orelse If Call NameLoad NameLoad NameLoad body Return Call AttributeLoad NameLoad attr If BoolOpAnd NameLoad CompareIsNot AttributeLoad NameLoad attr NameLoad body Return Call AttributeLoad AttributeLoad NameLoad attr attr keyword NameLoad keyword NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad If CompareIsNot NameLoad NameLoad body If BoolOpOr Call NameLoad NameLoad NameLoad Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad orelse Assign NameStore NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Return Call AttributeLoad NameLoad attr Str NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Return Call AttributeLoad NameLoad attr Str NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Return Call AttributeLoad NameLoad attr Str NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Return Call AttributeLoad NameLoad attr Str NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Return Call AttributeLoad NameLoad attr Str NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Return Call AttributeLoad NameLoad attr Str NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Return Call AttributeLoad NameLoad attr Str NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Return Call AttributeLoad NameLoad attr AttributeLoad Call AttributeLoad NameLoad attr attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad NameLoad FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore BinOpAdd NameLoad NameLoad Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad decorator_list Return Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Expr Str Return Call AttributeLoad NameLoad attr ListComp Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad comprehension NameStore AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults Str TupleLoad Num Num Num body Expr Str Assign NameStore Call AttributeLoad NameLoad attr ListLoad Call AttributeLoad SubscriptLoad AttributeLoad NameLoad attr Index Num attr NameLoad NameLoad Return Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Return Call AttributeLoad NameLoad attr ListComp Call AttributeLoad NameLoad attr NameLoad comprehension NameStore AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr For NameStore AttributeLoad NameLoad attr body If CompareNotEq Call NameLoad NameLoad NameLoad body Raise Call NameLoad Str Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr attr If CompareLt Call NameLoad NameLoad Num body Raise Call NameLoad Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr attr If CompareLt Call NameLoad NameLoad Num body Raise Call NameLoad Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list decorator_list ClassDef bases NameLoad body Expr Str Assign NameStore Str FunctionDef arguments args NameParam NameParam NameParam NameParam defaults TupleLoad Num Num Num NameLoad body Expr Str If CompareEq AttributeLoad AttributeLoad NameLoad attr attr Str body Assign NameStore NameLoad orelse If BoolOpOr Call NameLoad NameLoad NameLoad Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad orelse Assign NameStore NameLoad If CompareIs NameLoad NameLoad body Raise Call NameLoad Call AttributeLoad Str attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr ListLoad AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr Call NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults TupleLoad Num Num Num TupleLoad Num Num Num body Expr Str If CompareEq AttributeLoad AttributeLoad NameLoad attr attr Str body Assign NameStore Call AttributeLoad NameLoad attr If CompareEq AttributeLoad AttributeLoad NameLoad attr attr Str body Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign AttributeStore NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr ListLoad AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad Str Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr Call NameLoad NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index Num If Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr orelse If Call NameLoad NameLoad NameLoad body Assign NameStore NameLoad orelse Raise Call NameLoad BinOpMod Str Call NameLoad NameLoad If NameLoad body Return Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad orelse Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam defaults NameLoad body Expr Str If BoolOpOr CompareLt NameLoad Num CompareLt NameLoad Num CompareLt NameLoad Num CompareLt NameLoad Num body Raise Call NameLoad Str Assign NameStore ListLoad For NameStore Call NameLoad NameLoad body For NameStore Call NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr TupleLoad BinOpMult NameLoad NameLoad BinOpMult NameLoad NameLoad If NameLoad body Assign NameStore BinOpMult BinOpMult NameLoad BinOpSub NameLoad Num Num Assign NameStore BinOpMult BinOpMult NameLoad BinOpSub NameLoad Num Num Assign NameStore ListLoad For NameStore NameLoad body Expr Call AttributeLoad NameLoad attr TupleLoad BinOpSub SubscriptLoad NameLoad Index Num NameLoad BinOpSub SubscriptLoad NameLoad Index Num NameLoad Assign NameStore Call NameLoad NameLoad Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore ListLoad For NameStore NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Expr Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr ListLoad AttributeLoad AttributeLoad NameLoad attr attr Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr TupleLoad NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad If UnaryOpNot NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr BinOpAdd AttributeLoad NameLoad attr NameLoad BinOpAdd NameLoad AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Return Call AttributeLoad NameLoad attr Num NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Return Call AttributeLoad NameLoad attr NameLoad Num NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr NameLoad AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults Num Num body Expr Str Assign NameStore Call NameLoad NameLoad NameLoad Num Return Call AttributeLoad NameLoad attr ListLoad Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults Num Num body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore BinOpAdd NameLoad Call NameLoad NameLoad NameLoad Num Return Call AttributeLoad NameLoad attr ListLoad Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr SubscriptLoad NameLoad Index Num Assign NameStore ListComp Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad comprehension NameStore NameLoad Assign NameStore BinOpAdd ListLoad NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If UnaryOpNot NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad If UnaryOpNot NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Call AttributeLoad Call AttributeLoad NameLoad attr attr NameLoad For NameStore NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad If CompareIs AttributeLoad AttributeLoad NameLoad attr attr NameLoad body Assign AttributeStore AttributeLoad NameLoad attr attr Call AttributeLoad AttributeLoad NameLoad attr attr Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr attr If CompareLt Call NameLoad NameLoad Num body Return NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr ListLoad NameLoad Assign AttributeStore AttributeLoad NameLoad attr attr ListLoad Expr Call AttributeLoad NameLoad attr NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr If CompareEq Call NameLoad NameLoad Num body Return NameLoad Assign AttributeStore AttributeLoad NameLoad attr attr ListLoad Assign NameStore ListLoad For NameStore AttributeLoad NameLoad attr body If CompareNotEq Call NameLoad NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If UnaryOpNot NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr BinOpAdd NameLoad ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore ListLoad For NameStore AttributeLoad NameLoad attr body If NameLoad body Assign NameStore Call NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore Call NameLoad NameLoad If CompareEq Call NameLoad NameLoad NameLoad body If UnaryOpNot AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore ListLoad If CompareEq Call NameLoad AttributeLoad NameLoad attr Num body Expr Call AttributeLoad NameLoad attr AttributeLoad AttributeLoad NameLoad attr attr orelse For NameStore AttributeLoad NameLoad attr body Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Return Call AttributeLoad Call AttributeLoad NameLoad attr NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam defaults body If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Call NameLoad BinOpDiv NameLoad Num BinOpDiv NameLoad Num Num Assign NameStore Call AttributeLoad NameLoad attr Call NameLoad BinOpDiv NameLoad Num BinOpDiv NameLoad Num Num Assign NameStore Call AttributeLoad NameLoad attr Call NameLoad BinOpDiv NameLoad Num BinOpDiv NameLoad Num Num Assign NameStore Call AttributeLoad NameLoad attr Call NameLoad BinOpDiv NameLoad Num BinOpDiv NameLoad Num Num orelse Assign NameStore NameLoad Assign NameStore Call AttributeLoad NameLoad attr Call NameLoad NameLoad Num Num Assign NameStore Call AttributeLoad NameLoad attr Call NameLoad NameLoad NameLoad Num Assign NameStore Call AttributeLoad NameLoad attr Call NameLoad Num NameLoad Num Assign NameStore Call AttributeLoad NameLoad attr ListLoad NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad Return NameLoad decorator_list Return Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Call NameLoad Num Num Num Assign AttributeStore NameLoad attr NameLoad Return NameLoad decorator_list Return Call AttributeLoad NameLoad attr NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Assign NameStore BinOpDiv BinOpMult Num AttributeLoad NameLoad attr NameLoad Assign NameStore ListLoad For NameStore Call NameLoad BinOpAdd NameLoad Num body Expr Call AttributeLoad NameLoad attr BinOpAdd NameLoad Call NameLoad BinOpMult BinOpDiv NameLoad Num Call AttributeLoad NameLoad attr BinOpMult NameLoad NameLoad BinOpMult BinOpDiv NameLoad Num Call AttributeLoad NameLoad attr BinOpMult NameLoad NameLoad Num Return Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list Return Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore ListLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad For NameStore NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad NameLoad Assign NameStore NameLoad If UnaryOpNot NameLoad body Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Num Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Assign AttributeStore AttributeLoad NameLoad attr attr NameLoad Return Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr If NameLoad body Return BinOpMult AttributeLoad Call AttributeLoad NameLoad attr attr Num orelse Return Num decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr If CompareIs NameLoad NameLoad body Raise Call NameLoad Str Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr NameLoad NameLoad attr Assign NameStore NameLoad For NameStore NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Num Num Num Assign NameStore Call AttributeLoad NameLoad attr BinOpDiv NameLoad Num NameLoad NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr BinOpDiv NameLoad Num NameLoad NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Return NameLoad decorator_list Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr FunctionDef arguments args NameParam defaults body Assign NameStore Call NameLoad Num Num Num Assign NameStore Call AttributeLoad NameLoad attr BinOpDiv NameLoad Num NameLoad NameLoad NameLoad Assign NameStore BinOpDiv NameLoad Num Assign NameStore BinOpDiv NameLoad Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr BinOpDiv NameLoad Num Assign NameStore Call AttributeLoad NameLoad attr NameLoad Num NameLoad NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Return NameLoad decorator_list Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call NameLoad Num Num Num Assign NameStore Call AttributeLoad NameLoad attr BinOpDiv NameLoad Num NameLoad NameLoad NameLoad Return NameLoad decorator_list Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str Assign NameStore Call NameLoad Call NameLoad AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr ListLoad Assign AttributeStore AttributeLoad NameLoad attr attr ListLoad Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Assign NameStore NameLoad For NameStore NameLoad body Assign NameStore Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Num SubscriptLoad NameLoad Slice Num AttributeLoad AttributeLoad NameLoad attr attr NameLoad NameLoad If CompareIs NameLoad NameLoad body Assign NameStore NameLoad orelse Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad orelse Assign NameStore Call AttributeLoad NameLoad attr ListLoad NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad orelse Assign NameStore Call AttributeLoad NameLoad attr ListLoad NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam defaults Num NameLoad NameLoad NameLoad NameLoad body Expr Str AugAssignMod NameStore Num Assign NameStore IfExp CompareEq NameLoad Num Num NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad Call AttributeLoad AttributeLoad NameLoad attr attr TupleLoad Num Num attr orelse Assign NameStore Call AttributeLoad Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad attr If CompareIs NameLoad NameLoad body If CompareNotEq SubscriptLoad NameLoad Index Num Num body Assign NameStore Call AttributeLoad Call AttributeLoad AttributeLoad NameLoad attr attr TupleLoad Num SubscriptLoad NameLoad Index Num attr orelse Assign NameStore Call AttributeLoad Call AttributeLoad AttributeLoad NameLoad attr attr TupleLoad Num Num attr orelse Assign NameStore Call AttributeLoad Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad orelse Assign NameStore Call AttributeLoad NameLoad attr ListLoad NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad orelse Assign NameStore Call AttributeLoad NameLoad attr ListLoad NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad Assign NameStore NameLoad If CompareIsNot NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call NameLoad AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr Num For NameStore NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad body Expr Str If BoolOpOr CompareEq Call NameLoad NameLoad NameLoad CompareEq Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr attr If CompareLt Call NameLoad NameLoad Num body Raise Call NameLoad Str Assign NameStore Call AttributeLoad NameLoad attr Num For NameStore NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad orelse If CompareEq Call NameLoad NameLoad NameLoad body Assign NameStore NameLoad orelse Raise Call NameLoad Call AttributeLoad Str attr Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad If BoolOpAnd NameLoad CompareIsNot NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr orelse Assign NameStore NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad If CompareIs NameLoad NameLoad body Raise Call NameLoad Str Assign NameStore NameLoad If BoolOpOr CompareEq Call NameLoad NameLoad NameLoad CompareEq Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr orelse If CompareEq Call NameLoad NameLoad NameLoad body Assign NameStore NameLoad orelse Raise Call NameLoad Call AttributeLoad Str attr Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr If NameLoad body Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr If UnaryOpNot NameLoad body AugAssignMult NameStore Num Return Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad body Expr Str Assign NameStore AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore AttributeLoad NameLoad attr attr ListLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad If CompareIsNot NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr ListLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call NameLoad Call NameLoad AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr ListLoad Assign AttributeStore AttributeLoad NameLoad attr attr ListLoad Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Assign NameStore ListLoad For NameStore NameLoad body Assign NameStore Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Num SubscriptLoad NameLoad Slice Num NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad Call NameLoad AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr ListLoad Assign AttributeStore AttributeLoad NameLoad attr attr ListLoad Assign NameStore ListLoad For NameStore NameLoad body Assign NameStore Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Num SubscriptLoad NameLoad Slice Num NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call NameLoad Call NameLoad AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr ListLoad Assign AttributeStore AttributeLoad NameLoad attr attr ListLoad Assign NameStore ListLoad For NameStore NameLoad body Assign NameStore Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Num SubscriptLoad NameLoad Slice Num Call AttributeLoad NameLoad attr NameLoad NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam NameParam defaults TupleLoad NameLoad NameLoad NameLoad NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam defaults body Assign TupleStore NameStore NameStore NameStore Call AttributeLoad NameLoad attr If SubscriptLoad NameLoad Index Num body AugAssignSub NameStore BinOpDiv NameLoad Num If SubscriptLoad NameLoad Index Num body AugAssignSub NameStore BinOpDiv NameLoad Num If SubscriptLoad NameLoad Index Num body AugAssignSub NameStore BinOpDiv NameLoad Num Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Call NameLoad NameLoad NameLoad NameLoad decorator_list Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad If UnaryOpNot NameLoad body Return NameLoad orelse Return Call AttributeLoad NameLoad attr NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam NameParam NameParam NameParam defaults TupleLoad Num Num Num Num Num Num TupleLoad NameLoad NameLoad NameLoad NameLoad NameLoad body Expr Str If Call NameLoad NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad FunctionDef arguments args NameParam defaults body Expr Str Assign TupleStore NameStore NameStore NameStore Call AttributeLoad NameLoad attr If UnaryOpNot SubscriptLoad NameLoad Index Num body AugAssignAdd NameStore NameLoad If UnaryOpNot SubscriptLoad NameLoad Index Num body AugAssignAdd NameStore NameLoad If UnaryOpNot SubscriptLoad NameLoad Index Num body AugAssignAdd NameStore NameLoad Return Call AttributeLoad NameLoad attr NameLoad Call NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad decorator_list Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad If UnaryOpNot NameLoad body Return NameLoad orelse Return Call AttributeLoad NameLoad attr NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str TryExcept body Assign NameStore ListComp Call AttributeLoad NameLoad attr comprehension NameStore AttributeLoad NameLoad attr handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str Call AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr NameLoad decorator_list decorator_list
N/A N/A 
    Copyright (C) 2011-2015  Parametric Products Intellectual Holdings, LLC

    This file is part of CadQuery.

    CadQuery is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    CadQuery is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; If not, see <http://www.gnu.org/licenses/>
 N/A time N/A math cadquery * cadquery selectors cadquery exporters CQContext N/A object N/A N/A 
        A shared context for modeling.

        All objects in the same CQ chain share a reference to this same object instance
        which allows for shared state when needed,
     __init__ N/A N/A self N/A N/A N/A N/A self pendingWires N/A N/A N/A self pendingEdges N/A N/A N/A self firstPoint None N/A N/A self tolerance 0.0001 N/A N/A CQ N/A object N/A N/A 
    Provides enhanced functionality for a wrapped CAD primitive.

    Examples include feature selection, feature creation, 2d drawing
    using work planes, and 3d operations like fillets, shells, and splitting
     __init__ N/A N/A self obj N/A N/A N/A 
        Construct a new CadQuery (CQ) object that wraps a CAD primitive.

        :param obj: Object to Wrap.
        :type obj: A CAD Primitive ( wire,vertex,face,solid,edge )
         N/A N/A self objects N/A N/A N/A self ctx N/A CQContext N/A N/A self parent None N/A obj N/A N/A N/A N/A N/A self objects append obj N/A newObject N/A N/A self objlist N/A N/A N/A 
        Make a new CQ object.

        :param objlist: The stack of objects to use
        :type objlist: a list of CAD primitives ( wire,face,edge,solid,vertex,etc )

        The parent of the new object will be set to the current object,
        to preserve the chain correctly.

        Custom plugins and subclasses should use this method to create new CQ objects
        correctly.
         N/A r N/A CQ None N/A N/A r parent self N/A N/A r ctx N/A self ctx N/A N/A r objects N/A list objlist N/A r N/A _collectProperty N/A N/A self propName N/A N/A N/A 
        Collects all of the values for propName,
        for all items on the stack.
        FreeCAD objects do not implement id correctly,
        so hashCode is used to ensure we don't add the same
        object multiple times.

        One weird use case is that the stack could have a solid reference object
        on it.  This is meant to be a reference to the most recently modified version
        of the context solid, whatever it is.
         N/A all N/A N/A o N/A self objects N/A N/A N/A N/A propName Solids N/A isinstance o Solid N/A N/A N/A o ShapeType Compound N/A N/A i N/A N/A getattr o Compounds N/A N/A N/A all N/A N/A N/A i hashCode i N/A N/A N/A hasattr o propName N/A N/A i N/A N/A getattr o propName N/A N/A N/A all N/A N/A N/A i hashCode i N/A N/A list N/A N/A all values N/A split N/A N/A self keepTop keepBottom N/A False False N/A N/A 
            Splits a solid on the stack into two parts, optionally keeping the separate parts.

            :param boolean keepTop: True to keep the top, False or None to discard it
            :param boolean keepBottom: True to keep the bottom, False or None to discard it
            :raises: ValueError if keepTop and keepBottom are both false.
            :raises: ValueError if there is not a solid in the current stack or the parent chain
            :returns: CQ object with the desired objects on the stack.

            The most common operation splits a solid and keeps one half. This sample creates
            split bushing::

                #drill a hole in the side
                c = Workplane().box(1,1,1).faces(">Z").workplane().circle(0.25).cutThruAll()F
                #now cut it in half sideways
                c.faces(">Y").workplane(-0.5).split(keepTop=True)
         N/A solid N/A N/A self findSolid N/A N/A N/A keepTop N/A keepBottom N/A N/A N/A ValueError You have to keep at least one half N/A maxDim N/A N/A N/A N/A solid BoundingBox DiagonalLength 10.0 N/A topCutBox N/A N/A N/A N/A self rect maxDim maxDim _extrude maxDim N/A bottomCutBox N/A N/A N/A N/A self rect maxDim maxDim _extrude N/A maxDim N/A top N/A N/A solid cut bottomCutBox N/A bottom N/A N/A solid cut topCutBox N/A N/A keepTop keepBottom N/A N/A N/A N/A self newObject N/A top bottom N/A N/A keepTop N/A N/A N/A solid wrapped N/A top wrapped N/A N/A N/A self newObject N/A top N/A N/A N/A solid wrapped N/A bottom wrapped N/A N/A N/A self newObject N/A bottom N/A combineSolids N/A N/A self otherCQToCombine N/A None N/A N/A 
        !!!DEPRECATED!!! use union()
        Combines all solids on the current stack, and any context object, together
        into a single object.

        After the operation, the returned solid is also the context solid.

        :param otherCQToCombine: another CadQuery to combine.
        :return: a cQ object with the resulting combined solid on the stack.

        Most of the time, both objects will contain a single solid, which is
        combined and returned on the stack of the new object.
         N/A toCombine N/A N/A N/A N/A self solids vals N/A otherCQToCombine N/A N/A obj N/A N/A N/A N/A otherCQToCombine solids vals N/A N/A N/A N/A toCombine append obj N/A N/A N/A len toCombine 1 N/A N/A N/A ValueError Cannot Combine: at least one solid required! N/A ctxSolid N/A N/A self findSolid searchStack False searchParents True N/A N/A ctxSolid None N/A N/A ctxSolid N/A N/A toCombine pop 0 N/A s ctxSolid N/A tc toCombine N/A N/A s N/A N/A s fuse tc N/A N/A ctxSolid wrapped N/A s wrapped N/A N/A N/A self newObject N/A s N/A all N/A N/A self N/A N/A N/A 
        Return a list of all CQ objects on the stack.

        useful when you need to operate on the elements
        individually.

        Contrast with vals, which returns the underlying
        objects for all of the items on the stack
         N/A N/A N/A N/A self newObject N/A o N/A o N/A self objects N/A size N/A N/A self N/A N/A N/A 
         Return the number of objects currently on the stack
         N/A N/A len N/A self objects N/A vals N/A N/A self N/A N/A N/A 
        get the values in the current list

        :rtype: list of FreeCAD objects
        :returns: the values of the objects on the stack.

        Contrast with :py:meth:`all`, which returns CQ objects for all of the items on the stack
         N/A N/A self objects N/A add N/A N/A self obj N/A N/A N/A 
        Adds an object or a list of objects to the stack

        :param obj: an object to add
        :type obj: a CQ object, CAD primitive, or list of CAD primitives
        :return: a CQ object with the requested operation performed

        If an CQ object, the values of that object's stack are added. If a list of cad primitives,
        they are all added. If a single CAD primitive it is added

        Used in rare cases when you need to combine the results of several CQ results
        into a single CQ object. Shelling is one common example
         N/A N/A N/A type obj list N/A N/A N/A N/A N/A self objects extend obj N/A N/A N/A N/A N/A type obj CQ N/A N/A type obj Workplane N/A N/A N/A N/A N/A self objects extend N/A obj objects N/A N/A N/A N/A N/A self objects append obj N/A self N/A val N/A N/A self N/A N/A N/A 
        Return the first value on the stack

        :return: the first value on the stack.
        :rtype: A FreeCAD object or a SolidReference
         N/A N/A N/A self objects N/A 0 N/A toFreecad N/A N/A self N/A N/A N/A 
        Directly returns the wrapped FreeCAD object to cut down on the amount of boiler plate code
        needed when rendering a model in FreeCAD's 3D view.
        :return: The wrapped FreeCAD object
        :rtype A FreeCAD object or a SolidReference
         N/A N/A N/A N/A self objects N/A 0 wrapped N/A workplane N/A N/A self offset invert centerOption N/A 0.0 False CenterOfMass N/A N/A 
        Creates a new 2-D workplane, located relative to the first face on the stack.

        :param offset:  offset for the work plane in the Z direction. Default
        :param invert:  invert the Z direction from that of the face.
        :type offset: float or None=0.0
        :type invert: boolean or None=False
        :rtype: Workplane object ( which is a subclass of CQ )

        The first element on the stack must be a face, a set of
        co-planar faces or a vertex.  If a vertex, then the parent
        item on the chain immediately before the vertex must be a
        face.

        The result will be a 2-d working plane
        with a new coordinate system set up as follows:

           * The origin will be located in the *center* of the
             face/faces, if a face/faces was selected. If a vertex was
             selected, the origin will be at the vertex, and located
             on the face.
           * The Z direction will be normal to the plane of the face,computed
             at the center point.
           * The X direction will be parallel to the x-y plane. If the workplane is  parallel to
             the global x-y plane, the x direction of the workplane will co-incide with the
             global x direction.

        Most commonly, the selected face will be planar, and the workplane lies in the same plane
        of the face ( IE, offset=0).  Occasionally, it is useful to define a face offset from
        an existing surface, and even more rarely to define a workplane based on a face that is
        not planar.

        To create a workplane without first having a face, use the Workplane() method.

        Future Enhancements:
          * Allow creating workplane from planar wires
          * Allow creating workplane based on an arbitrary point on a face, not just the center.
            For now you can work around by creating a workplane and then offsetting the center
            afterwards.
         _isCoPlanar N/A N/A f0 f1 N/A N/A N/A Test if two faces are on the same plane. N/A p0 N/A N/A f0 Center N/A p1 N/A N/A f1 Center N/A n0 N/A N/A f0 normalAt N/A n1 N/A N/A f1 normalAt N/A N/A N/A N/A N/A abs N/A N/A n0 x N/A n1 x N/A N/A self ctx tolerance N/A N/A abs N/A N/A n0 y N/A n1 y N/A N/A self ctx tolerance N/A N/A abs N/A N/A n0 z N/A n1 z N/A N/A self ctx tolerance N/A N/A False N/A N/A abs N/A N/A N/A n0 dot N/A N/A p0 sub p1 N/A N/A self ctx tolerance N/A _computeXdir N/A N/A normal N/A N/A N/A 
            Figures out the X direction based on the given normal.
            :param :normal The direction that's normal to the plane.
            :type :normal A Vector
            :return A vector representing the X direction.
             N/A xd N/A N/A N/A Vector 0 0 1 cross normal N/A N/A N/A xd Length N/A N/A self ctx tolerance N/A N/A xd N/A Vector 1 0 0 N/A xd N/A N/A N/A N/A len N/A self objects 1 N/A N/A N/A N/A all N/A N/A N/A N/A o geomType PLANE N/A o N/A self objects N/A N/A N/A ValueError If multiple objects selected, they all must be planar faces. N/A N/A N/A all N/A N/A _isCoPlanar N/A N/A self objects N/A 0 f N/A f N/A N/A self objects N/A 1 N/A N/A N/A ValueError Selected faces must be co-planar. N/A N/A centerOption CenterOfMass N/A N/A center N/A N/A Shape CombinedCenter N/A self objects N/A N/A N/A centerOption CenterOfBoundBox N/A N/A center N/A N/A Shape CombinedCenterOfBoundBox N/A self objects N/A normal N/A N/A N/A N/A self objects N/A 0 normalAt N/A xDir N/A _computeXdir normal N/A N/A obj N/A N/A self objects N/A 0 N/A N/A isinstance obj Face N/A N/A N/A centerOption CenterOfMass N/A N/A center N/A N/A obj Center N/A N/A N/A centerOption CenterOfBoundBox N/A N/A center N/A N/A obj CenterOfBoundBox N/A normal N/A N/A obj normalAt center N/A xDir N/A _computeXdir normal N/A N/A N/A hasattr obj Center N/A N/A N/A centerOption CenterOfMass N/A N/A center N/A N/A obj Center N/A N/A N/A centerOption CenterOfBoundBox N/A N/A center N/A N/A obj CenterOfBoundBox N/A normal N/A N/A self plane zDir N/A xDir N/A N/A self plane xDir N/A N/A N/A ValueError Needs a face or a vertex or point on a work plane N/A invert N/A N/A normal N/A N/A normal multiply -1.0 N/A offsetVector N/A N/A N/A N/A normal normalized multiply offset N/A offsetCenter N/A N/A center add offsetVector N/A plane N/A Plane offsetCenter xDir normal N/A s N/A Workplane plane N/A N/A s parent self N/A N/A s ctx N/A self ctx N/A s N/A first N/A N/A self N/A N/A N/A 
        Return the first item on the stack
        :returns: the first item on the stack.
        :rtype: a CQ object
         N/A N/A N/A self newObject N/A N/A self objects N/A 0 1 N/A item N/A N/A self i N/A N/A N/A 

        Return the ith item on the stack.
        :rtype: a CQ object
         N/A N/A N/A self newObject N/A N/A N/A self objects N/A i N/A last N/A N/A self N/A N/A N/A 
        Return the last item on the stack.
        :rtype: a CQ object
         N/A N/A N/A self newObject N/A N/A N/A self objects N/A -1 N/A end N/A N/A self N/A N/A N/A 
        Return the parent of this CQ element
        :rtype: a CQ object
        :raises: ValueError if there are no more parents in the chain.

        For example::

            CQ(obj).faces("+Z").vertices().end()

        will return the same as::

            CQ(obj).faces("+Z")
         N/A N/A self parent N/A N/A N/A self parent N/A N/A N/A ValueError Cannot End the chain-- no parents! N/A findSolid N/A N/A self searchStack searchParents N/A True True N/A N/A 
        Finds the first solid object in the chain, searching from the current node
        backwards through parents until one is found.

        :param searchStack: should objects on the stack be searched first.
        :param searchParents: should parents be searched?
        :raises: ValueError if no solid is found in the current object or its parents,
            and errorOnEmpty is True

        This function is very important for chains that are modifying a single parent object,
        most often a solid.

        Most of the time, a chain defines or selects a solid, and then modifies it using workplanes
        or other operations.

        Plugin Developers should make use of this method to find the solid that should be modified,
        if the plugin implements a unary operation, or if the operation will automatically merge its
        results with an object already on the stack.
         N/A searchStack N/A N/A s N/A self objects N/A N/A N/A isinstance s Solid N/A N/A s N/A N/A N/A isinstance s Compound N/A N/A N/A N/A s Solids N/A N/A searchParents N/A N/A self parent None N/A N/A N/A N/A N/A self parent findSolid searchStack True searchParents searchParents N/A None N/A _selectObjects N/A N/A self objType selector N/A None N/A N/A 
            Filters objects of the selected type with the specified selector,and returns results

            :param objType: the type of object we are searching for
            :type objType: string: (Vertex|Edge|Wire|Solid|Shell|Compound|CompSolid)
            :return: a CQ object with the selected objects on the stack.

            **Implementation Note**: This is the base implementation of the vertices,edges,faces,
            solids,shells, and other similar selector methods.  It is a useful extension point for
            plugin developers to make other selector methods.
         N/A toReturn N/A N/A self _collectProperty objType N/A N/A selector None N/A N/A N/A N/A isinstance selector str N/A isinstance selector unicode N/A N/A selectorObj N/A N/A selectors StringSyntaxSelector selector N/A N/A selectorObj selector N/A toReturn N/A N/A selectorObj filter toReturn N/A N/A N/A self newObject toReturn N/A vertices N/A N/A self selector N/A None N/A N/A 
        Select the vertices of objects on the stack, optionally filtering the selection. If there
        are multiple objects on the stack, the vertices of all objects are collected and a list of
        all the distinct vertices is returned.

        :param selector:
        :type selector:  None, a Selector object, or a string selector expression.
        :return: a CQ object who's stack contains  the *distinct* vertices of *all* objects on the
           current stack, after being filtered by the selector, if provided

        If there are no vertices for any objects on the current stack, an empty CQ object
        is returned

        The typical use is to select the vertices of a single object on the stack. For example::

           Workplane().box(1,1,1).faces("+Z").vertices().size()

        returns 4, because the topmost face of cube will contain four vertices. While this::

           Workplane().box(1,1,1).faces().vertices().size()

        returns 8, because a cube has a total of 8 vertices

        **Note** Circles are peculiar, they have a single vertex at the center!

        :py:class:`StringSyntaxSelector`

         N/A N/A N/A self _selectObjects Vertices selector N/A faces N/A N/A self selector N/A None N/A N/A 
        Select the faces of objects on the stack, optionally filtering the selection. If there are
        multiple objects on the stack, the faces of all objects are collected and a list of all the
        distinct faces is returned.

        :param selector: A selector
        :type selector:  None, a Selector object, or a string selector expression.
        :return: a CQ object who's stack contains all of the *distinct* faces of *all* objects on
            the current stack, filtered by the provided selector.

        If there are no vertices for any objects on the current stack, an empty CQ object
        is returned.

        The typical use is to select the faces of a single object on the stack. For example::

           CQ(aCube).faces("+Z").size()

        returns 1, because a cube has one face with a normal in the +Z direction. Similarly::

           CQ(aCube).faces().size()

        returns 6, because a cube has a total of 6 faces, And::

            CQ(aCube).faces("|Z").size()

        returns 2, because a cube has 2 faces having normals parallel to the z direction

        See more about selectors HERE
         N/A N/A N/A self _selectObjects Faces selector N/A edges N/A N/A self selector N/A None N/A N/A 
        Select the edges of objects on the stack, optionally filtering the selection. If there are
        multiple objects on the stack, the edges of all objects are collected and a list of all the
        distinct edges is returned.

        :param selector: A selector
        :type selector:  None, a Selector object, or a string selector expression.
        :return: a CQ object who's stack contains all of the *distinct* edges of *all* objects on
            the current stack, filtered by the provided selector.

        If there are no edges for any objects on the current stack, an empty CQ object is returned

        The typical use is to select the edges of a single object on the stack. For example::

           CQ(aCube).faces("+Z").edges().size()

        returns 4, because a cube has one face with a normal in the +Z direction. Similarly::

           CQ(aCube).edges().size()

        returns 12, because a cube has a total of 12 edges, And::

            CQ(aCube).edges("|Z").size()

        returns 4, because a cube has 4 edges parallel to the z direction

        See more about selectors HERE
         N/A N/A N/A self _selectObjects Edges selector N/A wires N/A N/A self selector N/A None N/A N/A 
        Select the wires of objects on the stack, optionally filtering the selection. If there are
        multiple objects on the stack, the wires of all objects are collected and a list of all the
        distinct wires is returned.

        :param selector: A selector
        :type selector:  None, a Selector object, or a string selector expression.
        :return: a CQ object who's stack contains all of the *distinct* wires of *all* objects on
            the current stack, filtered by the provided selector.

        If there are no wires for any objects on the current stack, an empty CQ object is returned

        The typical use is to select the wires of a single object on the stack. For example::

           CQ(aCube).faces("+Z").wires().size()

        returns 1, because a face typically only has one outer wire

        See more about selectors HERE
         N/A N/A N/A self _selectObjects Wires selector N/A solids N/A N/A self selector N/A None N/A N/A 
        Select the solids of objects on the stack, optionally filtering the selection. If there are
        multiple objects on the stack, the solids of all objects are collected and a list of all the
        distinct solids is returned.

        :param selector: A selector
        :type selector:  None, a Selector object, or a string selector expression.
        :return: a CQ object who's stack contains all of the *distinct* solids of *all* objects on
            the current stack, filtered by the provided selector.

        If there are no solids for any objects on the current stack, an empty CQ object is returned

        The typical use is to select the  a single object on the stack. For example::

           CQ(aCube).solids().size()

        returns 1, because a cube consists of one solid.

        It is possible for single CQ object ( or even a single CAD primitive ) to contain
        multiple solids.

        See more about selectors HERE
         N/A N/A N/A self _selectObjects Solids selector N/A shells N/A N/A self selector N/A None N/A N/A 
        Select the shells of objects on the stack, optionally filtering the selection. If there are
        multiple objects on the stack, the shells of all objects are collected and a list of all the
        distinct shells is returned.

        :param selector: A selector
        :type selector:  None, a Selector object, or a string selector expression.
        :return: a CQ object who's stack contains all of the *distinct* solids of *all* objects on
            the current stack, filtered by the provided selector.

        If there are no shells for any objects on the current stack, an empty CQ object is returned

        Most solids will have a single shell, which represents the outer surface. A shell will
        typically be composed of multiple faces.

        See more about selectors HERE
         N/A N/A N/A self _selectObjects Shells selector N/A compounds N/A N/A self selector N/A None N/A N/A 
        Select compounds on the stack, optionally filtering the selection. If there are multiple
        objects on the stack, they are collected and a list of all the distinct compounds
        is returned.

        :param selector: A selector
        :type selector:  None, a Selector object, or a string selector expression.
        :return: a CQ object who's stack contains all of the *distinct* solids of *all* objects on
            the current stack, filtered by the provided selector.

        A compound contains multiple CAD primitives that resulted from a single operation, such as
        a union, cut, split, or fillet.  Compounds can contain multiple edges, wires, or solids.

        See more about selectors HERE
         N/A N/A N/A self _selectObjects Compounds selector N/A toSvg N/A N/A self opts N/A None N/A N/A 
        Returns svg text that represents the first item on the stack.

        for testing purposes.

        :param opts: svg formatting options
        :type opts: dictionary, width and height
        :return: a string that contains SVG that represents this item.
         N/A N/A N/A exporters getSVG N/A N/A N/A self val wrapped opts N/A exportSvg N/A N/A self fileName N/A N/A N/A 
        Exports the first item on the stack as an SVG file

        For testing purposes mainly.

        :param fileName: the filename to export
        :type fileName: String, absolute path to the file
         N/A N/A N/A exporters exportSVG self fileName N/A rotateAboutCenter N/A N/A self axisEndPoint angleDegrees N/A N/A N/A 
        Rotates all items on the stack by the specified angle, about the specified axis

        The center of rotation is a vector starting at the center of the object on the stack,
        and ended at the specified point.

        :param axisEndPoint: the second point of axis of rotation
        :type axisEndPoint: a three-tuple in global coordinates
        :param angleDegrees: the rotation angle, in degrees
        :type angleDegrees: float
        :returns: a CQ object, with all items rotated.

        WARNING: This version returns the same cq object instead of a new one-- the
        old object is not accessible.

        Future Enhancements:
            * A version of this method that returns a transformed copy, rather than modifying
              the originals
            * This method doesnt expose a very good interface, because the axis of rotation
              could be inconsistent between multiple objects.  This is because the beginning
              of the axis is variable, while the end is fixed. This is fine when operating on
              one object, but is not cool for multiple.
         N/A endVec N/A Vector axisEndPoint _rot N/A N/A obj N/A N/A N/A startPt N/A N/A obj Center N/A endPt N/A startPt endVec N/A N/A N/A obj rotate startPt endPt angleDegrees N/A N/A N/A N/A self each _rot False N/A rotate N/A N/A self axisStartPoint axisEndPoint angleDegrees N/A N/A N/A 
        Returns a copy of all of the items on the stack rotated through and angle around the axis
        of rotation.

        :param axisStartPoint: The first point of the axis of rotation
        :type axisStartPoint: a 3-tuple of floats
        :type axisEndPoint: The second point of the axis of rotation
        :type axisEndPoint: a 3-tuple of floats
        :param angleDegrees: the rotation angle, in degrees
        :type angleDegrees: float
        :returns: a CQ object
         N/A N/A N/A self newObject N/A N/A N/A o rotate axisStartPoint axisEndPoint angleDegrees N/A o N/A self objects N/A mirror N/A N/A self mirrorPlane basePointVector N/A XY N/A 0 0 0 N/A N/A 
	Mirror a single CQ object. This operation is the same as in the FreeCAD PartWB's mirroring

	:param mirrorPlane: the plane to mirror about
	:type mirrorPlane: string, one of "XY", "YX", "XZ", "ZX", "YZ", "ZY" the planes
	:param basePointVector: the base point to mirror about
	:type basePointVector: tuple
	 N/A newS N/A N/A self newObject N/A N/A N/A N/A N/A self objects N/A 0 mirror mirrorPlane basePointVector N/A N/A N/A newS first N/A translate N/A N/A self vec N/A N/A N/A 
        Returns a copy of all of the items on the stack moved by the specified translation vector.

        :param tupleDistance: distance to move, in global coordinates
        :type  tupleDistance: a 3-tuple of float
        :returns: a CQ object
         N/A N/A N/A self newObject N/A N/A N/A o translate vec N/A o N/A self objects N/A shell N/A N/A self thickness N/A N/A N/A 
        Remove the selected faces to create a shell of the specified thickness.

        To shell, first create a solid, and *in the same chain* select the faces you wish to remove.

        :param thickness: a positive float, representing the thickness of the desired shell.
            Negative values shell inwards, positive values shell outwards.
        :raises: ValueError if the current stack contains objects that are not faces of a solid
             further up in the chain.
        :returns: a CQ object with the resulting shelled solid selected.

        This example will create a hollowed out unit cube, where the top most face is open,
        and all other walls are 0.2 units thick::

            Workplane().box(1,1,1).faces("+Z").shell(0.2)

        Shelling is one of the cases where you may need to use the add method to select several
        faces. For example, this example creates a 3-walled corner, by removing three faces
        of a cube::

            s = Workplane().box(1,1,1)
            s1 = s.faces("+Z")
            s1.add(s.faces("+Y")).add(s.faces("+X"))
            self.saveModel(s1.shell(0.2))

        This fairly yucky syntax for selecting multiple faces is planned for improvement

        **Note**:  When sharp edges are shelled inwards, they remain sharp corners, but **outward**
        shells are automatically filleted, because an outward offset from a corner generates
        a radius.


        Future Enhancements:
            Better selectors to make it easier to select multiple faces
         N/A solidRef N/A N/A self findSolid N/A f N/A self objects N/A N/A N/A N/A type f Face N/A N/A N/A ValueError Shelling requires that faces be selected N/A s N/A N/A solidRef shell N/A self objects thickness N/A N/A solidRef wrapped N/A s wrapped N/A N/A N/A self newObject N/A s N/A fillet N/A N/A self radius N/A N/A N/A 
        Fillets a solid on the selected edges.

        The edges on the stack are filleted. The solid to which the edges belong must be in the
        parent chain of the selected edges.

        :param radius: the radius of the fillet, must be > zero
        :type radius: positive float
        :raises: ValueError if at least one edge is not selected
        :raises: ValueError if the solid containing the edge is not in the chain
        :returns: cq object with the resulting solid selected.

        This example will create a unit cube, with the top edges filleted::

            s = Workplane().box(1,1,1).faces("+Z").edges().fillet(0.1)
         N/A solid N/A N/A self findSolid N/A edgeList N/A N/A N/A N/A self edges vals N/A N/A N/A len edgeList 1 N/A N/A N/A ValueError Fillets requires that edges be selected N/A s N/A N/A solid fillet radius edgeList N/A N/A solid wrapped N/A s wrapped N/A N/A N/A self newObject N/A s N/A chamfer N/A N/A self length length2 N/A None N/A N/A 
        Chamfers a solid on the selected edges.

        The edges on the stack are chamfered. The solid to which the
        edges belong must be in the parent chain of the selected
        edges.

        Optional parameter `length2` can be supplied with a different
        value than `length` for a chamfer that is shorter on one side
        longer on the other side.

        :param length: the length of the fillet, must be greater than zero
        :param length2: optional parameter for asymmetrical chamfer
        :type length: positive float
        :type length2: positive float
        :raises: ValueError if at least one edge is not selected
        :raises: ValueError if the solid containing the edge is not in the chain
        :returns: cq object with the resulting solid selected.

        This example will create a unit cube, with the top edges chamfered::

            s = Workplane("XY").box(1,1,1).faces("+Z").chamfer(0.1)

        This example will create chamfers longer on the sides::

            s = Workplane("XY").box(1,1,1).faces("+Z").chamfer(0.2, 0.1)
         N/A solid N/A N/A self findSolid N/A edgeList N/A N/A N/A N/A self edges vals N/A N/A N/A len edgeList 1 N/A N/A N/A ValueError Chamfer requires that edges be selected N/A s N/A N/A solid chamfer length length2 edgeList N/A N/A solid wrapped N/A s wrapped N/A N/A N/A self newObject N/A s N/A N/A Workplane N/A CQ N/A N/A 
    Defines a coordinate system in space, in which 2-d coordinates can be used.

    :param plane: the plane in which the workplane will be done
    :type plane: a Plane object, or a string in (XY|YZ|XZ|front|back|top|bottom|left|right)
    :param origin: the desired origin of the new workplane
    :type origin: a 3-tuple in global coordinates, or None to default to the origin
    :param obj: an object to use initially for the stack
    :type obj: a CAD primitive, or None to use the centerpoint of the plane as the initial
        stack value.
    :raises: ValueError if the provided plane is not a plane, a valid named workplane
    :return: A Workplane object, with coordinate system matching the supplied plane.

    The most common use is::

        s = Workplane("XY")

    After creation, the stack contains a single point, the origin of the underlying plane,
    and the *current point* is on the origin.

    .. note::
        You can also create workplanes on the surface of existing faces using
        :py:meth:`CQ.workplane`
     N/A FOR_CONSTRUCTION ForConstruction __init__ N/A N/A self inPlane origin obj N/A N/A 0 0 0 None N/A N/A 
        make a workplane from a particular plane

        :param inPlane: the plane in which the workplane will be done
        :type inPlane: a Plane object, or a string in (XY|YZ|XZ|front|back|top|bottom|left|right)
        :param origin: the desired origin of the new workplane
        :type origin: a 3-tuple in global coordinates, or None to default to the origin
        :param obj: an object to use initially for the stack
        :type obj: a CAD primitive, or None to use the centerpoint of the plane as the initial
            stack value.
        :raises: ValueError if the provided plane is not a plane, or one of XY|YZ|XZ
        :return: A Workplane object, with coordinate system matching the supplied plane.

        The most common use is::

            s = Workplane("XY")

        After creation, the stack contains a single point, the origin of the underlying plane, and
        the *current point* is on the origin.
         N/A N/A N/A N/A inPlane __class__ __name__ Plane N/A N/A tmpPlane inPlane N/A N/A N/A N/A isinstance inPlane str N/A isinstance inPlane unicode N/A N/A tmpPlane N/A N/A Plane named inPlane origin N/A N/A tmpPlane None N/A N/A tmpPlane None N/A N/A N/A ValueError N/A N/A Provided value {} is not a valid work plane format inPlane N/A N/A self obj obj N/A N/A self plane tmpPlane N/A N/A self firstPoint None N/A N/A self objects N/A N/A N/A self plane origin N/A N/A self parent None N/A N/A self ctx N/A CQContext N/A transformed N/A N/A self rotate offset N/A N/A 0 0 0 N/A 0 0 0 N/A N/A 
        Create a new workplane based on the current one.
        The origin of the new plane is located at the existing origin+offset vector, where offset is
        given in coordinates local to the current plane
        The new plane is rotated through the angles specified by the components of the rotation
        vector.
        :param rotate: 3-tuple of angles to rotate, in degrees relative to work plane coordinates
        :param offset: 3-tuple to offset the new plane, in local work plane coordinates
        :return: a new work plane, transformed as requested
         N/A N/A N/A N/A rotate __class__ __name__ Vector N/A N/A rotate N/A N/A rotate toTuple N/A N/A N/A N/A offset __class__ __name__ Vector N/A N/A offset N/A N/A offset toTuple N/A p N/A N/A N/A self plane rotated rotate N/A N/A p origin N/A N/A N/A self plane toWorldCoords offset N/A ns N/A N/A self newObject N/A N/A p origin N/A N/A ns plane p N/A ns N/A newObject N/A N/A self objlist N/A N/A N/A 
        Create a new workplane object from this one.

        Overrides CQ.newObject, and should be used by extensions, plugins, and
        subclasses to create new objects.

        :param objlist: new objects to put on the stack
        :type objlist: a list of CAD primitives
        :return: a new Workplane object with the current workplane as a parent.
         N/A ns N/A Workplane XY N/A N/A ns plane N/A self plane N/A N/A ns parent self N/A N/A ns objects N/A list objlist N/A N/A ns ctx N/A self ctx N/A ns N/A _findFromPoint N/A N/A self useLocalCoords N/A False N/A N/A 
        Finds the start point for an operation when an existing point
        is implied.  Examples include 2d operations such as lineTo,
        which allows specifying the end point, and implicitly use the
        end of the previous line as the starting point

        :return: a Vector representing the point to use, or none if
        such a point is not available.

        :param useLocalCoords: selects whether the point is returned
        in local coordinates or global coordinates.

        The algorithm is this:
            * If an Edge is on the stack, its end point is used.yp
            * if a vector is on the stack, it is used

        WARNING: only the last object on the stack is used.

        NOTE:
         N/A obj N/A N/A self objects N/A -1 N/A N/A isinstance obj Edge N/A N/A p N/A N/A obj endPoint N/A N/A N/A isinstance obj Vector N/A N/A p obj N/A N/A N/A RuntimeError N/A Cannot convert object type '%s' to vector  N/A type obj N/A useLocalCoords N/A N/A N/A N/A N/A self plane toLocalCoords p N/A N/A p N/A rarray N/A N/A self xSpacing ySpacing xCount yCount center N/A True N/A N/A 
        Creates an array of points and pushes them onto the stack.
        If you want to position the array at another point, create another workplane
        that is shifted to the position you would like to use as a reference

        :param xSpacing: spacing between points in the x direction ( must be > 0)
        :param ySpacing: spacing between points in the y direction ( must be > 0)
        :param xCount: number of points ( > 0 )
        :param yCount: number of points ( > 0 )
        :param center: if true, the array will be centered at the center of the workplane. if
            false, the lower left corner will be at the center of the work plane
         N/A N/A N/A xSpacing 1 N/A ySpacing 1 N/A xCount 1 N/A yCount 1 N/A N/A N/A ValueError Spacing and count must be > 0  N/A lpoints N/A N/A x N/A range xCount N/A N/A y N/A range yCount N/A N/A N/A N/A lpoints append N/A N/A xSpacing x N/A ySpacing y N/A center N/A N/A xc N/A N/A xSpacing N/A xCount 1 0.5 N/A yc N/A N/A ySpacing N/A yCount 1 0.5 N/A cpoints N/A N/A p lpoints N/A N/A N/A N/A cpoints append N/A N/A N/A p N/A 0 xc N/A N/A p N/A 1 yc N/A lpoints N/A list cpoints N/A N/A N/A self pushPoints lpoints N/A pushPoints N/A N/A self pntList N/A N/A N/A 
        Pushes a list of points onto the stack as vertices.
        The points are in the 2-d coordinate space of the workplane face

        :param pntList: a list of points to push onto the stack
        :type pntList: list of 2-tuples, in *local* coordinates
        :return: a new workplane with the desired points on the stack.

        A common use is to provide a list of points for a subsequent operation, such as creating
        circles or holes. This example creates a cube, and then drills three holes through it,
        based on three points::

            s = Workplane().box(1,1,1).faces(">Z").workplane().                pushPoints([(-0.3,0.3),(0.3,0.3),(0,0)])
            body = s.circle(0.05).cutThruAll()

        Here the circle function operates on all three points, and is then extruded to create three
        holes. See :py:meth:`circle` for how it works.
         N/A vecs N/A N/A pnt pntList N/A N/A vec N/A N/A N/A self plane toWorldCoords pnt N/A N/A N/A vecs append vec N/A N/A N/A self newObject vecs N/A center N/A N/A self x y N/A N/A N/A 
        Shift local coordinates to the specified location.

        The location is specified in terms of local coordinates.

        :param float x: the new x location
        :param float y: the new y location
        :returns: the workplane object, with the center adjusted.

        The current point is set to the new center.
        This method is useful to adjust the center point after it has been created automatically on
        a face, but not where you'd like it to be.

        In this example, we adjust the workplane center to be at the corner of a cube, instead of
        the center of a face, which is the default::

            #this workplane is centered at x=0.5,y=0.5, the center of the upper face
            s = Workplane().box(1,1,1).faces(">Z").workplane()

            s.center(-0.5,-0.5) # move the center to the corner
            t = s.circle(0.25).extrude(0.2)
            assert ( t.faces().size() == 9 ) # a cube with a cylindrical nub at the top right corner

        The result is a cube with a round boss on the corner
         N/A Shift local coordinates to the specified location, according to current coordinates N/A N/A N/A N/A self plane setOrigin2d x y N/A n N/A N/A self newObject N/A N/A N/A self plane origin N/A n N/A lineTo N/A N/A self x y forConstruction N/A False N/A N/A 
        Make a line from the current point to the provided point

        :param float x: the x point, in workplane plane coordinates
        :param float y: the y point, in workplane plane coordinates
        :return: the Workplane object with the current point at the end of the new line

        see :py:meth:`line` if you want to use relative dimensions to make a line instead.
         N/A startPoint N/A N/A self _findFromPoint False N/A endPoint N/A N/A N/A self plane toWorldCoords N/A x y N/A p N/A N/A Edge makeLine startPoint endPoint N/A N/A forConstruction N/A N/A N/A N/A self _addPendingEdge p N/A N/A N/A self newObject N/A p N/A line N/A N/A self xDist yDist forConstruction N/A False N/A N/A 
        Make a line from the current point to the provided point, using
        dimensions relative to the current point

        :param float xDist: x distance from current point
        :param float yDist: y distance from current point
        :return: the workplane object with the current point at the end of the new line

        see :py:meth:`lineTo` if you want to use absolute coordinates to make a line instead.
         N/A p N/A N/A self _findFromPoint True N/A N/A N/A self lineTo N/A N/A p x xDist N/A yDist N/A p y forConstruction N/A vLine N/A N/A self distance forConstruction N/A False N/A N/A 
        Make a vertical line from the current point the provided distance

        :param float distance: (y) distance from current point
        :return: the workplane object with the current point at the end of the new line
         N/A N/A N/A self line 0 distance forConstruction N/A hLine N/A N/A self distance forConstruction N/A False N/A N/A 
        Make a horizontal line from the current point the provided distance

        :param float distance: (x) distance from current point
        :return: the Workplane object with the current point at the end of the new line
         N/A N/A N/A self line distance 0 forConstruction N/A vLineTo N/A N/A self yCoord forConstruction N/A False N/A N/A 
        Make a vertical line from the current point to the provided y coordinate.

        Useful if it is more convenient to specify the end location rather than distance,
        as in :py:meth:`vLine`

        :param float yCoord: y coordinate for the end of the line
        :return: the Workplane object with the current point at the end of the new line
         N/A p N/A N/A self _findFromPoint True N/A N/A N/A self lineTo N/A p x yCoord forConstruction N/A hLineTo N/A N/A self xCoord forConstruction N/A False N/A N/A 
        Make a horizontal line from the current point to the provided x coordinate.

        Useful if it is more convenient to specify the end location rather than distance,
        as in :py:meth:`hLine`

        :param float xCoord: x coordinate for the end of the line
        :return: the Workplane object with the current point at the end of the new line
         N/A p N/A N/A self _findFromPoint True N/A N/A N/A self lineTo xCoord N/A p y forConstruction N/A moveTo N/A N/A self x y N/A 0 0 N/A N/A 
        Move to the specified point, without drawing.

        :param x: desired x location, in local coordinates
        :type x: float, or none for zero
        :param y: desired y location, in local coordinates
        :type y: float, or none for zero.

        Not to be confused with :py:meth:`center`, which moves the center of the entire
        workplane, this method only moves the current point ( and therefore does not affect objects
        already drawn ).

        See :py:meth:`move` to do the same thing but using relative dimensions
         N/A newCenter N/A Vector x y 0 N/A N/A N/A self newObject N/A N/A N/A N/A self plane toWorldCoords newCenter N/A move N/A N/A self xDist yDist N/A 0 0 N/A N/A 
        Move the specified distance from the current point, without drawing.

        :param xDist: desired x distance, in local coordinates
        :type xDist: float, or none for zero
        :param yDist: desired y distance, in local coordinates
        :type yDist: float, or none for zero.

        Not to be confused with :py:meth:`center`, which moves the center of the entire
        workplane, this method only moves the current point ( and therefore does not affect objects
        already drawn ).

        See :py:meth:`moveTo` to do the same thing but using absolute coordinates
         N/A p N/A N/A self _findFromPoint True N/A newCenter N/A p N/A Vector xDist yDist 0 N/A N/A N/A self newObject N/A N/A N/A N/A self plane toWorldCoords newCenter N/A spline N/A N/A self listOfXYTuple forConstruction N/A False N/A N/A 
        Create a spline interpolated through the provided points.

        :param listOfXYTuple: points to interpolate through
        :type listOfXYTuple: list of 2-tuple
        :return: a Workplane object with the current point at the end of the spline

        The spline will begin at the current point, and
        end with the last point in the XY tuple list

        This example creates a block with a spline for one side::

            s = Workplane(Plane.XY())
            sPnts = [
                (2.75,1.5),
                (2.5,1.75),
                (2.0,1.5),
                (1.5,1.0),
                (1.0,1.25),
                (0.5,1.0),
                (0,1.0)
            ]
            r = s.lineTo(3.0,0).lineTo(3.0,1.0).spline(sPnts).close()
            r = r.extrude(0.5)

        *WARNING*  It is fairly easy to create a list of points
        that cannot be correctly interpreted as a spline.

        Future Enhancements:
          * provide access to control points
         N/A gstartPoint N/A N/A self _findFromPoint False N/A gEndPoint N/A N/A N/A self plane toWorldCoords N/A listOfXYTuple N/A -1 N/A vecs N/A N/A N/A N/A self plane toWorldCoords p N/A p listOfXYTuple N/A allPoints N/A N/A gstartPoint vecs N/A e N/A N/A Edge makeSpline allPoints N/A N/A forConstruction N/A N/A N/A N/A self _addPendingEdge e N/A N/A N/A self newObject N/A e N/A threePointArc N/A N/A self point1 point2 forConstruction N/A False N/A N/A 
        Draw an arc from the current point, through point1, and ending at point2

        :param point1: point to draw through
        :type point1: 2-tuple, in workplane coordinates
        :param point2: end point for the arc
        :type point2: 2-tuple, in workplane coordinates
        :return: a workplane with the current point at the end of the arc

        Future Enhancements:
            provide a version that allows an arc using relative measures
            provide a centerpoint arc
            provide tangent arcs
         N/A gstartPoint N/A N/A self _findFromPoint False N/A gpoint1 N/A N/A N/A self plane toWorldCoords point1 N/A gpoint2 N/A N/A N/A self plane toWorldCoords point2 N/A arc N/A N/A Edge makeThreePointArc gstartPoint gpoint1 gpoint2 N/A N/A forConstruction N/A N/A N/A N/A self _addPendingEdge arc N/A N/A N/A self newObject N/A arc N/A rotateAndCopy N/A N/A self matrix N/A N/A N/A 
        Makes a copy of all edges on the stack, rotates them according to the
        provided matrix, and then attempts to consolidate them into a single wire.

        :param matrix: a 4xr transformation matrix, in global coordinates
        :type matrix: a FreeCAD Base.Matrix object
        :return: a CadQuery object  with consolidated wires, and any originals on the stack.

        The most common use case is to create a set of open edges, and then mirror them
        around either the X or Y axis to complete a closed shape.

        see :py:meth:`mirrorX` and :py:meth:`mirrorY` to mirror about the global X and Y axes
        see :py:meth:`mirrorX` and for an example

        Future Enhancements:
            faster implementation: this one transforms 3 times to accomplish the result
         N/A n N/A N/A self wire forConstruction False N/A consolidated N/A N/A n consolidateWires N/A rotatedWires N/A N/A N/A self plane rotateShapes N/A N/A N/A N/A consolidated wires vals matrix N/A w rotatedWires N/A N/A N/A N/A N/A consolidated objects append w N/A N/A N/A consolidated _addPendingWire w N/A c N/A N/A consolidated consolidateWires N/A c N/A mirrorY N/A N/A self N/A N/A N/A 
        Mirror entities around the y axis of the workplane plane.

        :return: a new object with any free edges consolidated into as few wires as possible.

        All free edges are collected into a wire, and then the wire is mirrored,
        and finally joined into a new wire

        Typically used to make creating wires with symmetry easier. This line of code::

             s = Workplane().lineTo(2,2).threePointArc((3,1),(2,0)).mirrorX().extrude(0.25)

        Produces a flat, heart shaped object

        Future Enhancements:
            mirrorX().mirrorY() should work but doesnt, due to some FreeCAD weirdness
         N/A tm N/A Matrix N/A N/A N/A tm rotateY N/A math pi N/A N/A N/A self rotateAndCopy tm N/A mirrorX N/A N/A self N/A N/A N/A 
        Mirror entities around the x axis of the workplane plane.

        :return: a new object with any free edges consolidated into as few wires as possible.

        All free edges are collected into a wire, and then the wire is mirrored,
        and finally joined into a new wire

        Typically used to make creating wires with symmetry easier.

        Future Enhancements:
            mirrorX().mirrorY() should work but doesnt, due to some FreeCAD weirdness
         N/A tm N/A Matrix N/A N/A N/A tm rotateX N/A math pi N/A N/A N/A self rotateAndCopy tm N/A _addPendingEdge N/A N/A self edge N/A N/A N/A 
        Queues an edge for later combination into a wire.

        :param edge:
        :return:
         N/A N/A N/A N/A N/A self ctx pendingEdges append edge N/A N/A N/A N/A self ctx firstPoint None N/A N/A N/A N/A self ctx firstPoint N/A N/A N/A self plane toLocalCoords N/A N/A edge startPoint N/A _addPendingWire N/A N/A self wire N/A N/A N/A 
        Queue a Wire for later extrusion

        Internal Processing Note.  In FreeCAD, edges-->wires-->faces-->solids.

        but users do not normally care about these distinctions.  Users 'think' in terms
        of edges, and solids.

        CadQuery tracks edges as they are drawn, and automatically combines them into wires
        when the user does an operation that needs it.

        Similarly, cadQuery tracks pending wires, and automatically combines them into faces
        when necessary to make a solid.
         N/A N/A N/A N/A N/A self ctx pendingWires append wire N/A consolidateWires N/A N/A self N/A N/A N/A 
        Attempt to consolidate wires on the stack into a single.
        If possible, a new object with the results are returned.
        if not possible, the wires remain separated

        FreeCAD has a bug in Part.Wire([]) which does not create wires/edges properly sometimes
        Additionally, it has a bug where a profile composed of two wires ( rather than one )
        also does not work properly. Together these are a real problem.
         N/A wires N/A N/A N/A N/A self wires vals N/A N/A N/A len wires 2 N/A N/A self N/A w N/A N/A Wire combine wires N/A r N/A N/A self newObject N/A w N/A N/A N/A r ctx pendingWires N/A N/A N/A N/A r _addPendingWire w N/A r N/A wire N/A N/A self forConstruction N/A False N/A N/A 
        Returns a CQ object with all pending edges connected into a wire.

        All edges on the stack that can be combined will be combined into a single wire object,
        and other objects will remain on the stack unmodified

        :param forConstruction: whether the wire should be used to make a solid, or if it is just
            for reference
        :type forConstruction: boolean. true if the object is only for reference

        This method is primarily of use to plugin developers making utilities for 2-d construction.
        This method should be called when a user operation implies that 2-d construction is
        finished, and we are ready to begin working in 3d

        SEE '2-d construction concepts' for a more detailed explanation of how CadQuery handles
        edges, wires, etc

        Any non edges will still remain.
         N/A edges N/A N/A self ctx pendingEdges N/A N/A N/A len edges 0 N/A N/A self N/A N/A N/A self ctx pendingEdges N/A N/A others N/A N/A e N/A self objects N/A N/A N/A N/A type e Edge N/A N/A N/A N/A others append e N/A w N/A N/A Wire assembleEdges edges N/A N/A forConstruction N/A N/A N/A N/A self _addPendingWire w N/A N/A N/A self newObject N/A others N/A w N/A each N/A N/A self callBackFunction useLocalCoordinates N/A False N/A N/A 
        Runs the provided function on each value in the stack, and collects the return values into
        a new CQ object.

        Special note: a newly created workplane always has its center point as its only stack item

        :param callBackFunction: the function to call for each item on the current stack.
        :param useLocalCoordinates: should  values be converted from local coordinates first?
        :type useLocalCoordinates: boolean

        The callback function must accept one argument, which is the item on the stack, and return
        one object, which is collected. If the function returns None, nothing is added to the stack.
        The object passed into the callBackFunction is potentially transformed to local coordinates,
        if useLocalCoordinates is true

        useLocalCoordinates is very useful for plugin developers.

        If false, the callback function is assumed to be working in global coordinates.  Objects
        created are added as-is, and objects passed into the function are sent in using global
        coordinates

        If true, the calling function is assumed to be  working in local coordinates.  Objects are
        transformed to local coordinates before they are passed into the callback method, and result
        objects are transformed to global coordinates after they are returned.

        This allows plugin developers to create objects in local coordinates, without worrying
        about the fact that the working plane is different than the global coordinate system.


        TODO: wrapper object for Wire will clean up forConstruction flag everywhere
         N/A results N/A N/A obj N/A self objects N/A N/A useLocalCoordinates N/A N/A r N/A callBackFunction N/A N/A N/A self plane toLocalCoords obj N/A r N/A N/A r transformShape N/A N/A self plane rG N/A N/A r N/A callBackFunction obj N/A N/A N/A type r Wire N/A N/A N/A N/A r forConstruction N/A N/A N/A N/A self _addPendingWire r N/A N/A N/A results append r N/A N/A N/A self newObject results N/A eachpoint N/A N/A self callbackFunction useLocalCoordinates N/A False N/A N/A 
        Same as each(), except each item on the stack is converted into a point before it
        is passed into the callback function.

        :return: CadQuery object which contains a list of  vectors (points ) on its stack.

        :param useLocalCoordinates: should points be in local or global coordinates
        :type useLocalCoordinates: boolean

        The resulting object has a point on the stack for each object on the original stack.
        Vertices and points remain a point.  Faces, Wires, Solids, Edges, and Shells are converted
        to a point by using their center of mass.

        If the stack has zero length, a single point is returned, which is the center of the current
        workplane/coordinate system
         N/A pnts N/A N/A N/A N/A len N/A self objects 0 N/A N/A N/A N/A pnts append N/A N/A self plane origin N/A N/A v N/A self objects N/A N/A N/A N/A pnts append N/A N/A v Center N/A N/A N/A N/A N/A self newObject pnts each callbackFunction useLocalCoordinates N/A rect N/A N/A self xLen yLen centered forConstruction N/A True False N/A N/A 
        Make a rectangle for each item on the stack.

        :param xLen: length in xDirection ( in workplane coordinates )
        :type xLen: float > 0
        :param yLen: length in yDirection ( in workplane coordinates )
        :type yLen: float > 0
        :param boolean centered: true if the rect is centered on the reference point, false if the
            lower-left is on the reference point
        :param forConstruction: should the new wires be reference geometry only?
        :type forConstruction: true if the wires are for reference, false if they are creating part
            geometry
        :return: a new CQ object with the created wires on the stack

        A common use case is to use a for-construction rectangle to define the centers of a hole
        pattern::

            s = Workplane().rect(4.0,4.0,forConstruction=True).vertices().circle(0.25)

        Creates 4 circles at the corners of a square centered on the origin.

        Future Enhancements:
            better way to handle forConstruction
            project points not in the workplane plane onto the workplane plane
         makeRectangleWire N/A N/A pnt N/A N/A N/A centered N/A N/A p1 N/A N/A pnt add N/A Vector N/A xLen -2.0 N/A yLen -2.0 0 N/A p2 N/A N/A pnt add N/A Vector N/A xLen 2.0 N/A yLen -2.0 0 N/A p3 N/A N/A pnt add N/A Vector N/A xLen 2.0 N/A yLen 2.0 0 N/A p4 N/A N/A pnt add N/A Vector N/A xLen -2.0 N/A yLen 2.0 0 N/A N/A p1 pnt N/A p2 N/A N/A pnt add N/A Vector xLen 0 0 N/A p3 N/A N/A pnt add N/A Vector xLen yLen 0 N/A p4 N/A N/A pnt add N/A Vector 0 yLen 0 N/A w N/A N/A Wire makePolygon N/A p1 p2 p3 p4 p1 forConstruction N/A w N/A N/A N/A N/A self eachpoint makeRectangleWire True N/A circle N/A N/A self radius forConstruction N/A False N/A N/A 
        Make a circle for each item on the stack.

        :param radius: radius of the circle
        :type radius: float > 0
        :param forConstruction: should the new wires be reference geometry only?
        :type forConstruction: true if the wires are for reference, false if they are creating
            part geometry
        :return: a new CQ object with the created wires on the stack

        A common use case is to use a for-construction rectangle to define the centers of a
        hole pattern::

            s = Workplane().rect(4.0,4.0,forConstruction=True).vertices().circle(0.25)

        Creates 4 circles at the corners of a square centered on the origin. Another common case is
        to use successive circle() calls to create concentric circles.  This works because the
        center of a circle is its reference point::

            s = Workplane().circle(2.0).circle(1.0)

        Creates two concentric circles, which when extruded will form a ring.

        Future Enhancements:
            better way to handle forConstruction
            project points not in the workplane plane onto the workplane plane

         makeCircleWire N/A N/A obj N/A N/A N/A cir N/A N/A Wire makeCircle radius obj N/A Vector 0 0 1 N/A N/A cir forConstruction forConstruction N/A cir N/A N/A N/A N/A self eachpoint makeCircleWire useLocalCoordinates True N/A polygon N/A N/A self nSides diameter forConstruction N/A False N/A N/A 
        Creates a polygon inscribed in a circle of the specified diameter for each point on
        the stack

        The first vertex is always oriented in the x direction.

        :param nSides: number of sides, must be > 3
        :param diameter: the size of the circle the polygon is inscribed into
        :return: a polygon wire
         _makePolygon N/A N/A center N/A N/A N/A angle N/A N/A 2.0 N/A math pi nSides N/A pnts N/A N/A i N/A range N/A nSides 1 N/A N/A N/A N/A pnts append N/A center N/A Vector N/A N/A diameter 2.0 N/A N/A math cos N/A angle i N/A N/A diameter 2.0 N/A N/A math sin N/A angle i 0 N/A N/A N/A Wire makePolygon pnts forConstruction N/A N/A N/A N/A self eachpoint _makePolygon True N/A polyline N/A N/A self listOfXYTuple forConstruction N/A False N/A N/A 
        Create a polyline from a list of points

        :param listOfXYTuple: a list of points in Workplane coordinates
        :type listOfXYTuple: list of 2-tuples
        :param forConstruction: whether or not the edges are used for reference
        :type forConstruction: true if the edges are for reference, false if they are for creating geometry
            part geometry
        :return: a new CQ object with a list of edges on the stack

        *NOTE* most commonly, the resulting wire should be closed.
         N/A edges N/A N/A startPoint N/A N/A self _findFromPoint False N/A curTuple listOfXYTuple N/A N/A endPoint N/A N/A N/A self plane toWorldCoords curTuple N/A N/A N/A edges append N/A N/A Edge makeLine startPoint endPoint N/A startPoint endPoint N/A N/A forConstruction N/A N/A N/A N/A self _addPendingEdge N/A edges N/A -1 N/A N/A N/A self newObject edges N/A close N/A N/A self N/A N/A N/A 
        End 2-d construction, and attempt to build a closed wire.

        :return: a CQ object with a completed wire on the stack, if possible.

        After 2-d drafting with lineTo,threePointArc, and polyline, it is necessary
        to convert the edges produced by these into one or more wires.

        When a set of edges is closed, cadQuery assumes it is safe to build the group of edges
        into a wire.  This example builds a simple triangular prism::

            s = Workplane().lineTo(1,0).lineTo(1,1).close().extrude(0.2)
         N/A N/A N/A self lineTo N/A N/A N/A self ctx firstPoint x N/A N/A N/A self ctx firstPoint y N/A N/A N/A self ctx firstPoint None N/A N/A N/A self wire N/A largestDimension N/A N/A self N/A N/A N/A 
        Finds the largest dimension in the stack.
        Used internally to create thru features, this is how you can compute
        how long or wide a feature must be to make sure to cut through all of the material
        :return: A value representing the largest dimension of the first solid on the stack
         N/A s N/A N/A self findSolid N/A s N/A N/A N/A N/A N/A N/A s BoundingBox DiagonalLength 5.0 N/A N/A -1 N/A cutEach N/A N/A self fcn useLocalCoords clean N/A False True N/A N/A 
        Evaluates the provided function at each point on the stack (ie, eachpoint)
        and then cuts the result from the context solid.
        :param fcn: a function suitable for use in the eachpoint method: ie, that accepts a vector
        :param useLocalCoords: same as for :py:meth:`eachpoint`
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape
        :return: a CQ object that contains the resulting solid
        :raises: an error if there is not a context solid to cut from
         N/A ctxSolid N/A N/A self findSolid N/A N/A ctxSolid None N/A N/A N/A ValueError Must have a solid in the chain to cut from! N/A results N/A N/A N/A N/A self eachpoint fcn useLocalCoords vals N/A s ctxSolid N/A cb results N/A N/A s N/A N/A s cut cb N/A clean N/A N/A s N/A N/A s clean N/A N/A ctxSolid wrapped N/A s wrapped N/A N/A N/A self newObject N/A s N/A cboreHole N/A N/A self diameter cboreDiameter cboreDepth depth clean N/A None True N/A N/A 
        Makes a counterbored hole for each item on the stack.

        :param diameter: the diameter of the hole
        :type diameter: float > 0
        :param cboreDiameter: the diameter of the cbore
        :type cboreDiameter: float > 0 and > diameter
        :param cboreDepth: depth of the counterbore
        :type cboreDepth: float > 0
        :param depth: the depth of the hole
        :type depth: float > 0 or None to drill thru the entire part.
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape

        The surface of the hole is at the current workplane plane.

        One hole is created for each item on the stack.  A very common use case is to use a
        construction rectangle to define the centers of a set of holes, like so::

                s = Workplane(Plane.XY()).box(2,4,0.5).faces(">Z").workplane()                    .rect(1.5,3.5,forConstruction=True)                    .vertices().cboreHole(0.125, 0.25,0.125,depth=None)

        This sample creates a plate with a set of holes at the corners.

        **Plugin Note**: this is one example of the power of plugins. Counterbored holes are quite
        time consuming to create, but are quite easily defined by users.

        see :py:meth:`cskHole` to make countersinks instead of counterbores
         N/A N/A depth None N/A N/A depth N/A N/A self largestDimension _makeCbore N/A N/A center N/A N/A N/A 
            Makes a single hole with counterbore at the supplied point
            returns a solid suitable for subtraction
            pnt is in local coordinates
             N/A boreDir N/A Vector 0 0 -1 N/A hole N/A N/A Solid makeCylinder N/A diameter 2.0 depth center boreDir N/A cbore N/A N/A Solid makeCylinder N/A cboreDiameter 2.0 cboreDepth center boreDir N/A r N/A N/A hole fuse cbore N/A r N/A N/A N/A N/A self cutEach _makeCbore True clean N/A cskHole N/A N/A self diameter cskDiameter cskAngle depth clean N/A None True N/A N/A 
        Makes a countersunk hole for each item on the stack.

        :param diameter: the diameter of the hole
        :type diameter: float > 0
        :param cskDiameter: the diameter of the countersink
        :type cskDiameter: float > 0 and > diameter
        :param cskAngle: angle of the countersink, in degrees ( 82 is common )
        :type cskAngle: float > 0
        :param depth: the depth of the hole
        :type depth: float > 0 or None to drill thru the entire part.
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape

        The surface of the hole is at the current workplane.

        One hole is created for each item on the stack.  A very common use case is to use a
        construction rectangle to define the centers of a set of holes, like so::

                s = Workplane(Plane.XY()).box(2,4,0.5).faces(">Z").workplane()                    .rect(1.5,3.5,forConstruction=True)                    .vertices().cskHole(0.125, 0.25,82,depth=None)

        This sample creates a plate with a set of holes at the corners.

        **Plugin Note**: this is one example of the power of plugins. CounterSunk holes are quite
        time consuming to create, but are quite easily defined by users.

        see :py:meth:`cboreHole` to make counterbores instead of countersinks
         N/A N/A depth None N/A N/A depth N/A N/A self largestDimension _makeCsk N/A N/A center N/A N/A N/A boreDir N/A Vector 0 0 -1 N/A hole N/A N/A Solid makeCylinder N/A diameter 2.0 depth center boreDir N/A r N/A cskDiameter 2.0 N/A h N/A r N/A N/A math tan N/A N/A math radians N/A cskAngle 2.0 N/A csk N/A N/A Solid makeCone r 0.0 h center boreDir N/A r N/A N/A hole fuse csk N/A r N/A N/A N/A N/A self cutEach _makeCsk True clean N/A hole N/A N/A self diameter depth clean N/A None True N/A N/A 
        Makes a hole for each item on the stack.

        :param diameter: the diameter of the hole
        :type diameter: float > 0
        :param depth: the depth of the hole
        :type depth: float > 0 or None to drill thru the entire part.
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape

        The surface of the hole is at the current workplane.

        One hole is created for each item on the stack.  A very common use case is to use a
        construction rectangle to define the centers of a set of holes, like so::

                s = Workplane(Plane.XY()).box(2,4,0.5).faces(">Z").workplane()                    .rect(1.5,3.5,forConstruction=True)                    .vertices().hole(0.125, 0.25,82,depth=None)

        This sample creates a plate with a set of holes at the corners.

        **Plugin Note**: this is one example of the power of plugins. CounterSunk holes are quite
        time consuming to create, but are quite easily defined by users.

        see :py:meth:`cboreHole` and :py:meth:`cskHole` to make counterbores or countersinks
         N/A N/A depth None N/A N/A depth N/A N/A self largestDimension _makeHole N/A N/A center N/A N/A N/A 
            Makes a single hole with counterbore at the supplied point
            returns a solid suitable for subtraction
            pnt is in local coordinates
             N/A boreDir N/A Vector 0 0 -1 N/A hole N/A N/A Solid makeCylinder N/A diameter 2.0 depth center boreDir N/A hole N/A N/A N/A N/A self cutEach _makeHole True clean N/A twistExtrude N/A N/A self distance angleDegrees combine clean N/A True True N/A N/A 
        Extrudes a wire in the direction normal to the plane, but also twists by the specified
        angle over the length of the extrusion

        The center point of the rotation will be the center of the workplane

        See extrude for more details, since this method is the same except for the the addition
        of the angle. In fact, if angle=0, the result is the same as a linear extrude.

        **NOTE**  This method can create complex calculations, so be careful using it with
        complex geometries

        :param distance: the distance to extrude normal to the workplane
        :param angle: angline ( in degrees) to rotate through the extrusion
        :param boolean combine: True to combine the resulting solid with parent solids if found.
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape
        :return: a CQ object with the resulting solid selected.
         N/A wireSets N/A sortWiresByBuildOrder N/A list N/A N/A self ctx pendingWires N/A self plane N/A N/A N/A N/A self ctx pendingWires N/A N/A eDir N/A N/A N/A N/A self plane zDir multiply distance N/A r None N/A ws wireSets N/A N/A thisObj N/A N/A Solid extrudeLinearWithRotation N/A ws N/A 0 N/A ws N/A 1 N/A N/A self plane origin eDir angleDegrees N/A N/A r None N/A N/A r thisObj N/A N/A r N/A N/A r fuse thisObj N/A combine N/A N/A newS N/A N/A self _combineWithBase r N/A N/A newS N/A N/A self newObject N/A r N/A clean N/A N/A newS N/A N/A newS clean N/A newS N/A extrude N/A N/A self distance combine clean N/A True True N/A N/A 
        Use all un-extruded wires in the parent chain to create a prismatic solid.

        :param distance: the distance to extrude, normal to the workplane plane
        :type distance: float, negative means opposite the normal direction
        :param boolean combine: True to combine the resulting solid with parent solids if found.
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape
        :return: a CQ object with the resulting solid selected.

        extrude always *adds* material to a part.

        The returned object is always a CQ object, and depends on wither combine is True, and
        whether a context solid is already defined:

        *  if combine is False, the new value is pushed onto the stack.
        *  if combine is true, the value is combined with the context solid if it exists,
           and the resulting solid becomes the new context solid.

        FutureEnhancement:
            Support for non-prismatic extrusion ( IE, sweeping along a profile, not just
            perpendicular to the plane extrude to surface. this is quite tricky since the surface
            selected may not be planar
         N/A r N/A N/A self _extrude distance N/A combine N/A N/A newS N/A N/A self _combineWithBase r N/A N/A newS N/A N/A self newObject N/A r N/A clean N/A N/A newS N/A N/A newS clean N/A newS N/A revolve N/A N/A self angleDegrees axisStart axisEnd combine clean N/A 360.0 None None True True N/A N/A 
        Use all un-revolved wires in the parent chain to create a solid.

        :param angleDegrees: the angle to revolve through.
        :type angleDegrees: float, anything less than 360 degrees will leave the shape open
        :param axisStart: the start point of the axis of rotation
        :type axisStart: tuple, a two tuple
        :param axisEnd: the end point of the axis of rotation
        :type axisEnd: tuple, a two tuple
        :param combine: True to combine the resulting solid with parent solids if found.
        :type combine: boolean, combine with parent solid
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape
        :return: a CQ object with the resulting solid selected.

        The returned object is always a CQ object, and depends on wither combine is True, and
        whether a context solid is already defined:

        *  if combine is False, the new value is pushed onto the stack.
        *  if combine is true, the value is combined with the context solid if it exists,
           and the resulting solid becomes the new context solid.
         N/A angleDegrees 360.0 N/A angleDegrees N/A N/A angleDegrees 0 360.0 angleDegrees N/A N/A axisStart None N/A N/A axisStart N/A N/A N/A N/A N/A self plane toWorldCoords N/A 0 0 toTuple N/A N/A axisStart N/A N/A N/A N/A N/A self plane toWorldCoords axisStart toTuple N/A N/A axisEnd None N/A N/A N/A N/A axisStart N/A 1 0 N/A N/A axisEnd N/A N/A N/A N/A N/A self plane toWorldCoords N/A 0 N/A axisStart N/A 1 toTuple N/A N/A axisEnd N/A N/A N/A N/A N/A self plane toWorldCoords N/A 0 1 toTuple N/A N/A axisEnd N/A N/A N/A N/A N/A self plane toWorldCoords axisEnd toTuple N/A r N/A N/A self _revolve angleDegrees axisStart axisEnd N/A combine N/A N/A newS N/A N/A self _combineWithBase r N/A N/A newS N/A N/A self newObject N/A r N/A clean N/A N/A newS N/A N/A newS clean N/A newS N/A sweep N/A N/A self path makeSolid isFrenet combine clean N/A True False True True N/A N/A 
        Use all un-extruded wires in the parent chain to create a swept solid.

        :param path: A wire along which the pending wires will be swept
        :param boolean combine: True to combine the resulting solid with parent solids if found.
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape
        :return: a CQ object with the resulting solid selected.
         N/A r N/A N/A self _sweep N/A N/A path wire makeSolid isFrenet N/A combine N/A N/A newS N/A N/A self _combineWithBase r N/A N/A newS N/A N/A self newObject N/A r N/A clean N/A N/A newS N/A N/A newS clean N/A newS N/A _combineWithBase N/A N/A self obj N/A N/A N/A 
        Combines the provided object with the base solid, if one can be found.
        :param obj:
        :return: a new object that represents the result of combining the base object with obj,
           or obj if one could not be found
         N/A baseSolid N/A N/A self findSolid searchParents True N/A r obj N/A N/A baseSolid None N/A N/A r N/A N/A baseSolid fuse obj N/A N/A baseSolid wrapped N/A r wrapped N/A N/A N/A self newObject N/A r N/A combine N/A N/A self clean N/A True N/A N/A 
        Attempts to combine all of the items on the stack into a single item.
        WARNING: all of the items must be of the same type!

        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape
        :raises: ValueError if there are no items on the stack, or if they cannot be combined
        :return: a CQ object with the resulting object selected
         N/A items N/A list N/A self objects N/A s N/A N/A items pop 0 N/A ss items N/A N/A s N/A N/A s fuse ss N/A clean N/A N/A s N/A N/A s clean N/A N/A N/A self newObject N/A s N/A union N/A N/A self toUnion combine clean N/A None True True N/A N/A 
        Unions all of the items on the stack of toUnion with the current solid.
        If there is no current solid, the items in toUnion are unioned together.
        if combine=True, the result and the original are updated to point to the new object
        if combine=False, the result will be on the stack, but the original is unmodified

        :param toUnion:
        :type toUnion: a solid object, or a CQ object having a solid,
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape
        :raises: ValueError if there is no solid to add to in the chain
        :return: a CQ object with the resulting object selected
         N/A N/A N/A N/A type toUnion CQ N/A N/A type toUnion Workplane N/A N/A solids N/A N/A N/A N/A toUnion solids vals N/A N/A N/A len solids 1 N/A N/A N/A ValueError CQ object  must have at least one solid on the stack to union! N/A newS N/A N/A solids pop 0 N/A s solids N/A N/A newS N/A N/A newS fuse s N/A N/A N/A N/A type toUnion Solid N/A N/A newS toUnion N/A N/A N/A ValueError N/A N/A Cannot union type '{}' format N/A type toUnion N/A solidRef N/A N/A self findSolid searchStack True searchParents True N/A N/A combine N/A solidRef None N/A N/A r N/A N/A solidRef fuse newS N/A N/A solidRef wrapped N/A newS wrapped N/A N/A r newS N/A clean N/A N/A r N/A N/A r clean N/A N/A N/A self newObject N/A r N/A cut N/A N/A self toCut combine clean N/A True True N/A N/A 
        Cuts the provided solid from the current solid, IE, perform a solid subtraction

        if combine=True, the result and the original are updated to point to the new object
        if combine=False, the result will be on the stack, but the original is unmodified

        :param toCut: object to cut
        :type toCut: a solid object, or a CQ object having a solid,
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape
        :raises: ValueError if there is no solid to subtract from in the chain
        :return: a CQ object with the resulting object selected
         N/A solidRef N/A N/A self findSolid searchStack True searchParents True N/A N/A solidRef None N/A N/A N/A ValueError Cannot find solid to cut from N/A solidToCut None N/A N/A N/A N/A type toCut CQ N/A N/A type toCut Workplane N/A N/A solidToCut N/A N/A toCut val N/A N/A N/A N/A type toCut Solid N/A N/A solidToCut toCut N/A N/A N/A ValueError N/A N/A Cannot cut type '{}' format N/A type toCut N/A newS N/A N/A solidRef cut solidToCut N/A clean N/A N/A newS N/A N/A newS clean N/A combine N/A N/A N/A solidRef wrapped N/A newS wrapped N/A N/A N/A self newObject N/A newS N/A cutBlind N/A N/A self distanceToCut clean N/A True N/A N/A 
        Use all un-extruded wires in the parent chain to create a prismatic cut from existing solid.

        Similar to extrude, except that a solid in the parent chain is required to remove material
        from. cutBlind always removes material from a part.

        :param distanceToCut: distance to extrude before cutting
        :type distanceToCut: float, >0 means in the positive direction of the workplane normal,
            <0 means in the negative direction
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape
        :raises: ValueError if there is no solid to subtract from in the chain
        :return: a CQ object with the resulting object selected

        see :py:meth:`cutThruAll` to cut material from the entire part

        Future Enhancements:
            Cut Up to Surface
         N/A toCut N/A N/A self _extrude distanceToCut N/A solidRef N/A N/A self findSolid N/A s N/A N/A solidRef cut toCut N/A clean N/A N/A s N/A N/A s clean N/A N/A solidRef wrapped N/A s wrapped N/A N/A N/A self newObject N/A s N/A cutThruAll N/A N/A self positive clean N/A False True N/A N/A 
        Use all un-extruded wires in the parent chain to create a prismatic cut from existing solid.

        Similar to extrude, except that a solid in the parent chain is required to remove material
        from. cutThruAll always removes material from a part.

        :param boolean positive: True to cut in the positive direction, false to cut in the
            negative direction
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape
        :raises: ValueError if there is no solid to subtract from in the chain
        :return: a CQ object with the resulting object selected

        see :py:meth:`cutBlind` to cut material to a limited depth
         N/A maxDim N/A N/A self largestDimension N/A N/A positive N/A N/A maxDim -1.0 N/A N/A N/A self cutBlind maxDim clean N/A loft N/A N/A self filled ruled combine N/A True False True N/A N/A 
        Make a lofted solid, through the set of wires.
        :return: a CQ object containing the created loft
         N/A wiresToLoft N/A N/A self ctx pendingWires N/A N/A N/A self ctx pendingWires N/A N/A r N/A N/A Solid makeLoft wiresToLoft ruled N/A combine N/A N/A parentSolid N/A N/A self findSolid searchStack False searchParents True N/A N/A parentSolid None N/A N/A r N/A N/A parentSolid fuse r N/A N/A parentSolid wrapped N/A r wrapped N/A N/A N/A self newObject N/A r N/A _extrude N/A N/A self distance N/A N/A N/A 
        Make a prismatic solid from the existing set of pending wires.

        :param distance: distance to extrude
        :return: a FreeCAD solid, suitable for boolean operations.

        This method is a utility method, primarily for plugin and internal use.
        It is the basis for cutBlind,extrude,cutThruAll, and all similar methods.

        Future Enhancements:
            extrude along a profile (sweep)
         N/A s N/A N/A time time N/A wireSets N/A sortWiresByBuildOrder N/A list N/A N/A self ctx pendingWires N/A self plane N/A N/A N/A N/A self ctx pendingWires N/A N/A eDir N/A N/A N/A N/A self plane zDir multiply distance N/A toFuse N/A N/A ws wireSets N/A N/A thisObj N/A N/A Solid extrudeLinear N/A ws N/A 0 N/A ws N/A 1 eDir N/A N/A N/A toFuse append thisObj N/A N/A N/A Compound makeCompound toFuse N/A _revolve N/A N/A self angleDegrees axisStart axisEnd N/A N/A N/A 
        Make a solid from the existing set of pending wires.

        :param angleDegrees: the angle to revolve through.
        :type angleDegrees: float, anything less than 360 degrees will leave the shape open
        :param axisStart: the start point of the axis of rotation
        :type axisStart: tuple, a two tuple
        :param axisEnd: the end point of the axis of rotation
        :type axisEnd: tuple, a two tuple
        :return: a FreeCAD solid, suitable for boolean operations.

        This method is a utility method, primarily for plugin and internal use.
         N/A wireSets N/A sortWiresByBuildOrder N/A list N/A N/A self ctx pendingWires N/A self plane N/A N/A N/A N/A self ctx pendingWires N/A N/A toFuse N/A N/A ws wireSets N/A N/A thisObj N/A N/A Solid revolve N/A ws N/A 0 N/A ws N/A 1 angleDegrees axisStart axisEnd N/A N/A N/A toFuse append thisObj N/A N/A N/A Compound makeCompound toFuse N/A _sweep N/A N/A self path makeSolid isFrenet N/A True False N/A N/A 
        Makes a swept solid from an existing set of pending wires.

        :param path: A wire along which the pending wires will be swept
        :return:a FreeCAD solid, suitable for boolean operations
         N/A s N/A N/A time time N/A wireSets N/A sortWiresByBuildOrder N/A list N/A N/A self ctx pendingWires N/A self plane N/A N/A N/A N/A self ctx pendingWires N/A N/A toFuse N/A N/A ws wireSets N/A N/A thisObj N/A N/A Solid sweep N/A ws N/A 0 N/A ws N/A 1 N/A N/A path val makeSolid isFrenet N/A N/A N/A toFuse append thisObj N/A N/A N/A Compound makeCompound toFuse N/A box N/A N/A self length width height centered combine clean N/A N/A True True True True True N/A N/A 
        Return a 3d box with specified dimensions for each object on the stack.

        :param length: box size in X direction
        :type length: float > 0
        :param width: box size in Y direction
        :type width: float > 0
        :param height: box size in Z direction
        :type height: float > 0
        :param centered: should the box be centered, or should reference point be at the lower
            bound of the range?
        :param combine: should the results be combined with other solids on the stack
            (and each other)?
        :type combine: true to combine shapes, false otherwise.
        :param boolean clean: call :py:meth:`clean` afterwards to have a clean shape

        Centered is a tuple that describes whether the box should be centered on the x,y, and
        z axes.  If true, the box is centered on the respective axis relative to the workplane
        origin, if false, the workplane center will represent the lower bound of the resulting box

        one box is created for each item on the current stack. If no items are on the stack, one box
        using the current workplane center is created.

        If combine is true, the result will be a single object on the stack:
            if a solid was found in the chain, the result is that solid with all boxes produced
            fused onto it otherwise, the result is the combination of all the produced boxes

        if combine is false, the result will be a list of the boxes produced

        Most often boxes form the basis for a part::

            #make a single box with lower left corner at origin
            s = Workplane().box(1,2,3,centered=(False,False,False)

        But sometimes it is useful to create an array of them:

            #create 4 small square bumps on a larger base plate:
            s = Workplane().box(4,4,0.5).faces(">Z").workplane()                .rect(3,3,forConstruction=True).vertices().box(0.25,0.25,0.25,combine=True)

         _makebox N/A N/A pnt N/A N/A N/A N/A xp yp zp N/A N/A pnt toTuple N/A N/A centered N/A 0 N/A N/A xp N/A length 2.0 N/A N/A centered N/A 1 N/A N/A yp N/A width 2.0 N/A N/A centered N/A 2 N/A N/A zp N/A height 2.0 N/A N/A N/A Solid makeBox length width height N/A Vector xp yp zp N/A N/A boxes N/A N/A self eachpoint _makebox True N/A N/A combine N/A N/A boxes N/A N/A N/A N/A self union boxes clean clean N/A sphere N/A N/A self radius direct angle1 angle2 angle3 centered combine clean N/A N/A 0 0 1 -90 90 360 N/A True True True True True N/A N/A 
        Returns a 3D sphere with the specified radius for each point on the stack

        :param radius: The radius of the sphere
        :type radius: float > 0
        :param direct: The direction axis for the creation of the sphere
        :type direct: A three-tuple
        :param angle1: The first angle to sweep the sphere arc through
        :type angle1: float > 0
        :param angle2: The second angle to sweep the sphere arc through
        :type angle2: float > 0
        :param angle3: The third angle to sweep the sphere arc through
        :type angle3: float > 0
        :param centered: A three-tuple of booleans that determines whether the sphere is centered
            on each axis origin
        :param combine: Whether the results should be combined with other solids on the stack
            (and each other)
        :type combine: true to combine shapes, false otherwise
        :return: A sphere object for each point on the stack

        Centered is a tuple that describes whether the sphere should be centered on the x,y, and
        z axes.  If true, the sphere is centered on the respective axis relative to the workplane
        origin, if false, the workplane center will represent the lower bound of the resulting
        sphere.

        One sphere is created for each item on the current stack. If no items are on the stack, one
        box using the current workplane center is created.

        If combine is true, the result will be a single object on the stack:
            If a solid was found in the chain, the result is that solid with all spheres produced
            fused onto it otherwise, the result is the combination of all the produced boxes

        If combine is false, the result will be a list of the spheres produced
         N/A N/A isinstance direct tuple N/A N/A direct N/A Vector direct _makesphere N/A N/A pnt N/A N/A N/A 
            Inner function that is used to create a sphere for each point/object on the workplane
            :param pnt: The center point for the sphere
            :return: A CQ Solid object representing a sphere
             N/A N/A xp yp zp N/A N/A pnt toTuple N/A N/A N/A centered N/A 0 N/A N/A xp radius N/A N/A N/A centered N/A 1 N/A N/A yp radius N/A N/A N/A centered N/A 2 N/A N/A zp radius N/A N/A N/A Solid makeSphere radius N/A Vector xp yp zp direct angle1 angle2 angle3 N/A N/A spheres N/A N/A self eachpoint _makesphere True N/A N/A combine N/A N/A spheres N/A N/A N/A N/A self union spheres clean clean N/A clean N/A N/A self N/A N/A N/A 
        Cleans the current solid by removing unwanted edges from the
        faces.

        Normally you don't have to call this function. It is
        automatically called after each related operation. You can
        disable this behavior with `clean=False` parameter if method
        has any. In some cases this can improve performance
        drastically but is generally dis-advised since it may break
        some operations such as fillet.

        Note that in some cases where lots of solid operations are
        chained, `clean()` may actually improve performance since
        the shape is 'simplified' at each step and thus next operation
        is easier.

        Also note that, due to limitation of the underlying engine,
        `clean` may fail to produce a clean output in some cases such as
        spherical faces.
         N/A N/A N/A cleanObjects N/A N/A N/A obj clean N/A obj N/A self objects N/A N/A N/A AttributeError N/A N/A N/A AttributeError N/A %s object doesn't support `clean()` method! N/A N/A obj ShapeType N/A N/A N/A self newObject cleanObjects N/A N/A