PKKa3숲[dispatch/__init__.py"""Multiple/Predicate Dispatch Framework This framework refines the algorithms of Chambers and Chen in their 1999 paper, "Efficient Multiple and Predicate Dispatching", to make them suitable for Python, while adding a few other enhancements like incremental index building and lazy expansion of the dispatch DAG. Also, their algorithm was designed only for class selection and true/false tests, while this framework can be used with any kind of test, such as numeric ranges, or custom tests such as categorization/hierarchy membership. NOTE: this package is not yet ready for prime-time. APIs are subject to change randomly without notice. You have been warned! TODO * Support DAG-walking for visualization, debugging, and ambiguity detection """ from dispatch.interfaces import * from types import ClassType as _ClassType _cls = _ClassType,type def generic(combiner=None): """Use the following function as the skeleton for a generic function Decorate a Python function so that it wraps an instance of 'dispatch.functions.GenericFunction' that has been configured with the decorated function's name, docstring, argument signature, and default arguments. The decorated function will have additional attributes besides those of a normal function. (See 'dispatch.IGenericFunction' for more information on these special attributes/methods.) Most commonly, you will use the 'when()' method of the decorated function to define "rules" or "methods" of the generic function. For example:: import dispatch @dispatch.generic() def someFunction(*args): '''This is a generic function''' @someFunction.when("len(args)>0") def argsPassed(*args): print "Arguments were passed!" @someFunction.when("len(args)==0") def noArgsPassed(*args): print "No arguments were passed!" someFunction() # prints "No args passed" someFunction(1) # prints "args passed" Note that when using older Python versions, you must use '[dispatch.generic()]' instead of '@dispatch.generic()'. """ from dispatch.functions import GenericFunction, AbstractGeneric from protocols.advice import add_assignment_advisor if combiner is None: def callback(frm,name,value,old_locals): return GenericFunction(value).delegate elif isinstance(combiner,_cls) and issubclass(combiner,AbstractGeneric): def callback(frm,name,value,old_locals): return combiner(value).delegate else: def callback(frm,name,value,old_locals): gf = GenericFunction(value) gf.combine = combiner return gf.delegate return add_assignment_advisor(callback) def as(*decorators): """Use Python 2.4 decorators w/Python 2.2+ Example: import dispatch class Foo(object): [dispatch.as(classmethod)] def something(cls,etc): \"""This is a classmethod\""" """ if len(decorators)>1: decorators = list(decorators) decorators.reverse() def callback(frame,k,v,old_locals): for d in decorators: v = d(v) return v from protocols.advice import add_assignment_advisor return add_assignment_advisor(callback) def on(argument_name): """Decorate the following function as a single-dispatch generic function Single-dispatch generic functions may have a slight speed advantage over predicate-dispatch generic functions when you only need to dispatch based on a single argument's type or protocol, and do not need arbitrary predicates. Also, single-dispatch functions do not require you to adapt the dispatch argument when dispatching based on protocol or interface, and if the dispatch argument has a '__conform__' method, it will attempt to use it, rather than simply dispatching based on class information the way predicate dispatch functions do. The created generic function will use the documentation from the supplied function as its docstring. And, it will dispatch methods based on the argument named by 'argument_name', and otherwise keeping the same argument signature, defaults, etc. For example:: @dispatch.on('y') def doSomething(x,y,z): '''Doc for 'doSomething()' generic function goes here''' @doSomething.when([SomeClass,OtherClass]) def doSomething(x,y,z): # do something when 'isinstance(y,(SomeClass,OtherClass))' @doSomething.when(IFoo) def doSomething(x,y,z): # do something to a 'y' that has been adapted to 'IFoo' """ def callback(frm,name,value,old_locals): return _mkGeneric(value,argument_name) from dispatch.functions import _mkGeneric from protocols.advice import add_assignment_advisor return add_assignment_advisor(callback) PKi{4ccdispatch/__init__.pyc; {gCc@sHdZdkTdklZeefZedZdZ dZ dS(sMultiple/Predicate Dispatch Framework This framework refines the algorithms of Chambers and Chen in their 1999 paper, "Efficient Multiple and Predicate Dispatching", to make them suitable for Python, while adding a few other enhancements like incremental index building and lazy expansion of the dispatch DAG. Also, their algorithm was designed only for class selection and true/false tests, while this framework can be used with any kind of test, such as numeric ranges, or custom tests such as categorization/hierarchy membership. NOTE: this package is not yet ready for prime-time. APIs are subject to change randomly without notice. You have been warned! TODO * Support DAG-walking for visualization, debugging, and ambiguity detection (s*(s ClassTypecsdkll}dkl}tjod}n@tt o t |od}nd}||SdS(sUse the following function as the skeleton for a generic function Decorate a Python function so that it wraps an instance of 'dispatch.functions.GenericFunction' that has been configured with the decorated function's name, docstring, argument signature, and default arguments. The decorated function will have additional attributes besides those of a normal function. (See 'dispatch.IGenericFunction' for more information on these special attributes/methods.) Most commonly, you will use the 'when()' method of the decorated function to define "rules" or "methods" of the generic function. For example:: import dispatch @dispatch.generic() def someFunction(*args): '''This is a generic function''' @someFunction.when("len(args)>0") def argsPassed(*args): print "Arguments were passed!" @someFunction.when("len(args)==0") def noArgsPassed(*args): print "No arguments were passed!" someFunction() # prints "No args passed" someFunction(1) # prints "args passed" Note that when using older Python versions, you must use '[dispatch.generic()]' instead of '@dispatch.generic()'. (sGenericFunctionsAbstractGeneric(sadd_assignment_advisorcs|iSdS(N(sGenericFunctionsvaluesdelegate(sfrmsnamesvalues old_locals(sGenericFunction(sAbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/__init__.pyscallbackTscs|iSdS(N(scombinersvaluesdelegate(sfrmsnamesvalues old_locals(scombiner(sAbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/__init__.pyscallbackWscs |}|_|iSdS(N(sGenericFunctionsvaluesgfscombinerscombinesdelegate(sfrmsnamesvalues old_localssgf(scombinersGenericFunction(sAbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/__init__.pyscallbackZs  N( sdispatch.functionssGenericFunctionsAbstractGenericsprotocols.advicesadd_assignment_advisorscombinersNonescallbacks isinstances_clss issubclass(scombinersadd_assignment_advisorsGenericFunctionscallbacksAbstractGeneric((scombinersGenericFunctionsAbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/__init__.pysgeneric*s!   csTtdjotind}dkl}||SdS(sUse Python 2.4 decorators w/Python 2.2+ Example: import dispatch class Foo(object): [dispatch.as(classmethod)] def something(cls,etc): """This is a classmethod""" ics%xD]}||}qW|SdS(N(s decoratorssdsv(sframesksvs old_localssd(s decorators(sAbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/__init__.pyscallbackss(sadd_assignment_advisorN(slens decoratorsslistsreversescallbacksprotocols.advicesadd_assignment_advisor(s decoratorssadd_assignment_advisorscallback((s decoratorssAbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/__init__.pysasbs    cs7d}dkldkl}||SdS(sADecorate the following function as a single-dispatch generic function Single-dispatch generic functions may have a slight speed advantage over predicate-dispatch generic functions when you only need to dispatch based on a single argument's type or protocol, and do not need arbitrary predicates. Also, single-dispatch functions do not require you to adapt the dispatch argument when dispatching based on protocol or interface, and if the dispatch argument has a '__conform__' method, it will attempt to use it, rather than simply dispatching based on class information the way predicate dispatch functions do. The created generic function will use the documentation from the supplied function as its docstring. And, it will dispatch methods based on the argument named by 'argument_name', and otherwise keeping the same argument signature, defaults, etc. For example:: @dispatch.on('y') def doSomething(x,y,z): '''Doc for 'doSomething()' generic function goes here''' @doSomething.when([SomeClass,OtherClass]) def doSomething(x,y,z): # do something when 'isinstance(y,(SomeClass,OtherClass))' @doSomething.when(IFoo) def doSomething(x,y,z): # do something to a 'y' that has been adapted to 'IFoo' cs|SdS(N(s _mkGenericsvalues argument_name(sfrmsnamesvalues old_locals(s _mkGenerics argument_name(sAbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/__init__.pyscallbacks(s _mkGeneric(sadd_assignment_advisorN(scallbacksdispatch.functionss _mkGenericsprotocols.advicesadd_assignment_advisor(s argument_names _mkGenericscallbacksadd_assignment_advisor((s argument_names _mkGenericsAbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/__init__.pyson|s   N( s__doc__sdispatch.interfacesstypess ClassTypes _ClassTypestypes_clssNonesgenericsasson(sonsgenerics _ClassTypesass_cls((sAbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/__init__.pys?s    8 PKj{4"dispatch/_speedups.pydef __bootstrap__(): global __bootstrap__, __loader__, __file__ import sys, pkg_resources, imp __file__ = pkg_resources.resource_filename(__name__,'_speedups.so') del __bootstrap__, __loader__ imp.load_dynamic(__name__,__file__) __bootstrap__() PKj{4هPPdispatch/_speedups.pyc; (R(Dc@sdatdS(cCsGdk}dk}dk}|itdabb|ittdS(Ns _speedups.so( ssyss pkg_resourcessimpsresource_filenames__name__s__file__s __bootstrap__s __loader__s load_dynamic(s pkg_resourcesssyssimp((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/_speedups.pys __bootstrap__s N(s __bootstrap__(((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/_speedups.pys?s PKi{4OhȀbbdispatch/_speedups.soH__TEXT__text__TEXTtp__picsymbol_stub__TEXTtt$__picsymbolstub1__TEXTtt __cstring__TEXTTT__DATA__data__DATA__dyld__DATA__la_symbol_ptr__DATA/__nl_symbol_ptr__DATAD^__bss__DATA8__LINKEDIT€ 4DXX/usr/lib/libSystem.B.dylib0 mJx P , , -@Lo|B}|}cx=}| x=~N |B}h|=kk}iN |HB|`&A<<<_a88d{!p8<88~Hva>,;׆~;`;@; A$<8g{Hv<,f|ex@=NHH(=?~8{Hu,@4=_.J=9`=&WoH>8pH,A>?8qdH.A>_>>d;>>>?8>>x Ht/A$<<_~8{8Ht,@$?>_.9`|҇K(<>;xHt,A$<~?8{8Ht.@$=?胀.9`g~K=_=?8j|Ht)/@=.KH0=~=8|8{Ht,@$>.P>?9`.KX<_?8|8`Hv9|{y&@,>S~&V H0<~exHsa.@(,>T~&>_9`҇Hx;/@cx}N!8`Hu|{y&@(>,Ճ>~&9`ׇH?<_;݇0;4?_dx8 >,h9KH{ zDH.|zx@ >>t9`30H ;,@cx}N!CxHu|{y&AP;և8g/f@~}N!Cx~Hu5|{y&@ ?>_9`҇H;Շ u9K. U@~#}N!~;`9, @Cx}N!8`Hs.|zx@(>?<_~&V9`H<?;ć<Dxf8 {8H |{y&@4=>胀9`,>_r~&V HHZ:/@zCx}N!cxHs.|zx@ =?>Ƀ9`H;ԇ9.@~}N!^;@;,@cx}N!<_;;‡@:td}{8,@}}N!8`Hrq|{y&@$>>U9` ~&20H8`Hr.|zx@0>=_׃vj9` ,?~~&Hȃ҄8`9 >;)>Hq|yy~&@(<?d; <܇Hl 9;l~9K^ (Q8H G T ;@x;s/x@}}N!=8`Hq%; |{y&@$=?>Ƀ~&9`HX8`HqM.|zx@ ?=9`Hl<c ;ć|dx;;`8xf>:}Hp|yy~&@ =>胀9`HxZ:2.:@ZCx}N!;|%x;@HmE,@$><_.lb9`H;u,y@#x}N!8`; Ho|{y&@8=>/~&9`ׇ<V>~ V>eHL8`Ho.|zx@0<?Ã9`<d~&VH >c ;ԇ |dx;`x8>#}HoU|yy~&@,>_<29`=_~xjH9l/ z@Cx}N!|%x;@Hk.@4?<_.9`=?&WiH0y;[,Y@̂#x}N!H A,9,@cx}N!A,;/@Cx}N!~ A,8x.y@y#x}N!!8!>(8t{| H !8!~(} N |#y|HBA!|~x|3x@ <<xȀd8p|Hj5Hd,A<x|A~AHk,A 8`H0=?x<_ 8pgx Hi8`AX8!P}HN |B|&<_|xxbz<_|#x!8pHi]; -|}x;@;A.Ax-H8`Hl -|yxA`|{x<.dzHh|~yADHj.||xA4<x8p xhxxxHh|zxH N M A,8,@#x}N!A,]9*,=@}x}N!A,9- @<x}N!CxAh8!`aH}c N |HBA!|#xHk|~y@<xveHgAX8!Px|HN |HBA!Hg-|~y@4<v8dHiu,A<<v48nXfHfՀAX8!Px|HN |HBA!Hf|iyAH8, @}N!<<u8mgHf]8`H Hh8`AX8!P|HN !|&|~y|HBA!&|#x|+xA~8.MA8-A8?_up|@@4[9*,;@{cx}N!;`H8A4<;u4`A <?_uDd8m|He]H@up;<uTH<x >8 8H-C@C}N!~}AxHg.AxHd,A=~u0| AHg]/@??>ud} `A<du\}@lup~(A <?_uD8m}HdmH`8,@<x}N!x^8 H4=<_luD8m܀ kHd,.-&H,exah8!`xahx!}c HepA,|;#,<@x}N! A,;/@^x}N!A,;-@cx}N!h8!`a!|}c N |HA!Hbف#4<, 8Ai8 ,A8,AE9 }#Kx!X8!P}(HdX|hB8@a!;AHA@ADHbI|~x8D8a@8HHd58a@8D8HHbHf,@D,@<qD8>4,A,I9 / @~4#}N!>8, A,9l,i@~8}N!> W@>HM&W`HWޠ> W`> A,8,@;cx}N! A,9L,W@w~x}N!A,:.@:Cx}N!A,x;[-X@x}N! A,;/@~x}N!AD:-@0~x8!a~a}}c N A8!aa|H}c N }B<!<8@|}x9D|#x|+x8d8f8@ADA@HaU,8`AL@9l}E9*%aD8a@H`|~xH`,@TD8dh 8,@} }N!AD;] H4<=k<=9@=?8ldIn nK);8/@x}N!@8e,}@a@#}N!ADj8K,J@aD}N!xh8!`}N |&|A萡||x!Bc<_;8;@bl<_m8K.|~x@0==Kip8<M*`&W{lH=mx}N!8`H^y.|~x@,<=ip9=_MdlklH xx;F\ H^ -|zx@(==Lip8@<*Gl(lHԁ};k,}@x}N!~;8.@x}N!CxH]|{xH]/;A4=_,*ip<_8< `&lNlH4;-@zCx}N!~xHA,9, @x}N!x A,};c,}@x}N!A,8.@Cx}N!?_8zcDK;\9*/ <@x}N!h8!`axA}a N |&|A||x!Bc|#x;8|#xD8H[.|~x@0==KfL8<`&W{*iȑ(iHxH[}|}y`&@(<<fL8@=LiȐiHx `8,@x}N!=;,@]x}N!.A;|AxHpA,9l, ~@x}N!x A,8f,}@x}N!<_8b`@K;8.@x}N!:;/@ZCx}N!Ah8!`xHA} N }(!! 88C 8,@c}N!AX8!Px}HN }@&}hܑaAB!#>wd|#x9 <_|+x8|yx;8;8d<_8]K},@$><cN9`gPHxHX|}y&@ <?_c9`gPH#xHX.||x@ =_<_*c9` gPH<x C|ba@};,@x}N!;8 ,@x}N!@;.A|2x! | @,&Ax8`HW|}y&@4=?> c9`HWgP=_Wހ>Ё Wހ>jgLH{;/@cx}N!xHlyHWQ.||x@(<<_c9`lbgP<fgLH,;,@cx}N!x; Z}",!@A8`HV|}y&Acxx8@HV.@ =>Kc9`JWgPHA@TE@;/@x}N!a@;HVU.||x@8<<c9`gPHk] ],@A8`HV |}y&Acxx8@HU,@ ?_=c9`7(gPH0A@8@. @8@A@}8 /@x}N!a@;HU.||x@d<?c9`HkL L}a, @A8`HUA|}y&Acxx8@HU,@ =<_c9`gPHdA@ JBQA@97. =@}x}N!a@;HT.||x@<?c9`gPHpk] ]/@A8`HTu|}y&Acxx8@HT9,@ ==c9`gPHA@1"~@8,@]x}N!a@;HS.||x@<=_cЁ~jgP9`HkD D|!.@A8`HS|}y&Acxx8@HSm/@ <<c9`gPH́@8@,A8@A@8,@=x}N!a@;HS.||x@=>Kc9`Hk] ].@A8`HR|}y&Acxx8@HR/@,<<_c9`gP=.lgLH@U@;,@=x}N!a@;HRM.||x@0=>Kc9`JWgP<&WހegLH xHd؃8Hp A,}8,@x}N!A,9. @x}N!<_8b]K;9/@;cx}N!;w,y@Y#x}N!X;*,8@xx}N!8!x| N |`&}Ba<!<|#x8@|+x8U8V8@A@HQ,;;;`8`A $@?\t<W~ܳx8~ڳx~׳x69y~ٳx9Kv:V98_@x}N!;,@x}N!;8e-|@x}N!x?_@~óx;HO-|~x@(><_U[l9`~&V`^H08`HO-|}x@,==[l8=?N ^^HxxxHO-|xy~&@(=?<I[l8<^葄^H~:-@x}N!;.@x}N!x;8/@x}N!8`;HM-|~x@0=_<_[l~&V`9`^=?i^H;,@w~x}N!<>_ xg^K;-|}x@8=N[l<M9<^萣^~&VHLY; ,@9#x}N!~óxxHL;|xy~&@D=M[l<_8<f^b^V>~ V@>V>~ V>HxHLm-|~x@ HM}-Ax<.C[lH8K-|}xA`;e.z@Cx}N!x8Kx.|{x;AH\9/ @<x}N!x8K|x,;`A ~8-@x}N!Cx$x8DHK;,AADT@.D@,Cxx8DHK-AD ^|D.@=~x_DHL -|~xA8`HK-|}xA8`8] |8HK.|{xAē dxxHKi-|}xA8l.~@^x}N!9'/ ;@{cx}N!;`8,@x}N!;88E-Y@Y#x}N!xKp;,@xx}N!w~x;H=L[l"<9`'^H=.K[lK=_-<_9<M^萢^NH==+[l8<M^MHH<<[l9`^=_Mj^HL==+[l8@<C^^H(=_<[l9<.^^A,8l/~@x}N!A,=;-@}x}N!~ A,;,@x}N!A,;.@cx}N!?8{UK;8-@V~óx}N!w:,@~x}N!:/@9#x}N!z;+-:@Cx}N!;U,\@x}N!@8X.\@a@}N!x8!a}c N |`&}Ba<!<8@|#x9D|+x8K8MH8@ADA@HG,;`;8`A@>R8`W;:7~׳x!D~ٳx8  v9K8V8HG|~y&@$<>QN9`UPHԁAD*9ijD aD9AD^:,@W~x}N!a@xxHEm0C,H&A|}x;lcH0a@$xHE50C|.HAH|~x;8,@#x}N!x;H=<_hUDUtK1|~y&@ <>Q9`duUPH8`HE|{y@&A4a@xdx;  A@[ HEI.|xx@(>?Q8=?ULUPH;]/^@x}N!{;8,@cx}N!a@$xx;`HC,@0<='Q8@=_xxJULUPHX9;.@~x}N!x;/@~x}N!;~x;@HB,||xaH@8=,lQ<8>K@&UL&CUPNH4|8A8.HAh pW:0.9'>Y;b/y@#x}N!~ x8H;{dx8aDHB,AdHUaH[8,@;cx}N!AH;`.A xK 8Hx;GXaDHBe/AH8@.A8@AH9,@x}N!;]H;.@a@$xHA|~y&AXxHXR؃;HD=<KQ8>@&WZ&WUL.UPHh<=GQ9`ˁ:,UP<@&WZfULH! W>A,~8,@x}N!X A,[;,@{cx}N!A,;l.x@8x}N!?;8xL4K5;G/V@~óx}N!:,@~x}N!:,@#x}N!!@y8C.Y@a@}N!D^8 /@aDc}N!x8!} N |`&}Ba<!<8@|#x9D|+x8C8F(8@ADA@H@U,;`;;@8`A P!@?KD=?8xD8K@9l9K}]@e| AH=,&W @??{MNKӥ.|{x@@==KJ<8@<W> W@>Wޠ> W`>CMMHH8`H>-||x@4?<J<9 =W> W@>,MMH<x9CN cx9glJ\ @8A@\H>M-|zx@ <?J<9`ց$>MHd;-@cx}N!\;`8 -@|x}N!Cx88;KӉ9. @:Cx}N!<Wޠ> W`>J<<8@?_ZMMH=aDMH=|~yAp^x8 ;/@}x}N!}x;`9, @=x}N!H<K<~H;Q,ATH;%aDH<-||x@$=?J<-9`MH]8-@J<=8@=N LMMHy8-@#x}N!K=_J W`>8@?^MM;`N M H.@?a@NH:e-||xA8`H:1-|zxA]xDx8  H9.|{xA9l/ |@x}N!98, :@Cx}N!~xH,AD |89-@x}N!xK`AD?\K0j}@,<_a@MH85|~yA8 H<gK,~Ad|{x|dx9a@H7|~x9&/ ;@cx}N!,A8d~HKD~;[^H~9K^Hp=?<_J<9`MHd<<J<9`MHp=_?J<-9`dxM=NlMHx<=&J<M9`=.hMHP?<_J<9`M<cMH,<-gJ<=9@< NDM MA,9&,;@cx}N!A,;~-|@x}N!A,;-@Cx}N!?_8zDKA;]8j.}@}x}N!;/@#x}N!!@8F,Y@a@#}N!Dh8,@aD}N!xx8!pa}c N }B<!<8@|~x9D|#x|+x8: 8HH,xx8@H3,@0,=K>H~&=9` A>?qAH@ U~@~:S,^@x}N!@.AD?cxB4H35-|~x@<<>H~&V`9`edAKt{ xH1y|~y@`>>:>H=7:A>_>? 8B8:AȀt:AĐK-|~xA`H0ݐa@~9K-^@x}N!A@;/A,=8l9 KUK]-|~x@ W:~&V2Hl8.@}N!{xH0y|~y@`w=B<t:K-|~xA`H/a@>8 ,@^x}N!a@;, AH<8d9 KuK}-|~x@ ,8@l~&vHX8,@}N!{xH/-|~x@$,8@~&UHh8KŁ.|xx@$W,8@2~&U6H;4/=@x}N!x8K!x|yy;~&@W9 j5vHԂ:.@zCx}N!x8K-:x,; @ >H,8@~&AHp;-@x}N!?pAB@;K.|xx@>H8wAĒrAHd>cxB4H/|yy~&@ s>H8@MQAđAH88`H/9-|~xA0# x:x8^H.|yy~&@>H9 U1AđRAHx:,@x}N!9/ @x}N!#xH,;.|xx@ >H:`MqAĐAH\:,@#x}N!xxH.; -|~x@$s>H9~&V`AĒAHX8 .@8x}N!~;:8U,]@x}N!{xxxH,m/@0>H,8@~&AȐQAV>~ V>HP^:2->@>x}N!x;HNM~&VA,:g,~@x}N!A,;.@x}N!~ A,y:,@Y#x}N!=?8i9$Kș;8/@x}N!z;-@Cx}N!;L,[@cx}N!<;q.|@\x}N!8!ax}a N }&|B!0c=N6|#x9+8#;`D|pxD<8WxYx@SxHaLaP6q8H| 88Z8A@H),@4>>_6M=tH(Ł59`29@H ~#xH),||x@ ?>59`59@HD?~x9xH*,|}xa@AH(9||yA@|@F8-@a@}N!<89~x@H*I.aHA8`H*/|dxaDAaHH),|}xa@@(<=59@6<,D9<+9@HxH:T,M@aH}N!DH;-@aD}N!a@DH'!/@ ?=59`69@H@H@8H.G@a@}N!=k9Pa@C8 9,/ :@Cx}N!A@;@ H:W9, @~x}N!HHZ Dh8;,@y#x}N!=?9;)9@!t!DD6}AX~@d?~x9H(/|}xa@A`8`H',|dxaHAa@H',aDAa@8L-[@a@}N!AH;@8.@aH}N!DH;/@aD}N!8`DH&,|}xa@@(=_<j5<8@p9@H|dxCxH%,aH@ =??i58@p+Ha@8L-[@a@}N!AH;@~\x 8.@aH}N!/HAԀ  D;aDH$%,|}xa@@0=_<j5?8Ap9@ap 9M9<9@H X|dx~cxH%,aH@0==59 Zap<EM+95;Zp<9<9@H ;-@cx}N!aL;`HI/@ ==?K58@Z!p H t@HLe9/ @aL#}N!<F9PAL:8,@Cx}N!AL;L P;8G.W@W~x}N!PPZ @,8il9e,y@#x}N!t<_;9@;?!@@:@6ȐX\`dhl}A @L=~x9H%,aDA 8`H.|dxaHA aDH-|{xA Dd9K,D@aD}N!H;D8u-l@aH#}N!H8/@cx}N!8`;`H,|~xaL@0<<58apMX9<H|dxCxH,aP@0><58@aaplpA\E9?u59bp!`9< MH@8]-F@a@}N!D~xa@H,aH@(=<59 bp'958bp!l9< LH;8.@cx}N!H;`D8 8H,Y@y#x}N!!H8-@aH}N!aH:Hl/:A,~;,@aL}N!!P;L. A,;,@aP#}N!!@AP/ A, ;, @a@}N!!D8@A@. A,I8 , @aDc}N!ADA,8-@cx}N!!H;`/ A,8f,i@aH}N!8aL8P8@AHHup9<<~x9H.aDA8`H-|{xAaDdxHq,aHApD9-@aD#}N!AD[8 /@{cx}N!H;`8L,E@aH}N!/aHAA.AH,;A-AԀz D:aDH |vxH|}y@؃D8/@aD}N!|xD@V:8`}` HD9*$HA.|~xaLAaH#x~ LHH-|{xAL]8,@aL}N!9cxLH|vyAh@@:-@cx}N!?x9P8g{9/@:Cx}N!zxH\~óxH,|}xa@A|dx~cxH.aDA @v9K,V@a@}N!;8`@H-|bxaHAԀD#x HDH/aPAHF8,@aH}N!aPHHA|vyAp@HaP9. @aP}N!=h9PaP8:8,@ZCx}N!APAPz L89}-w@~x}N!8LLz c9Y8/@#x}N!yx;`KL;H$>>V58_p2H=?< 58_H?=]58fap*H><58fp%HaL<_P}x@ApHapaL9_?58ip'p>49@9g5?9mp9@9_=?58@m!p>I9<9@@-H4=?=I58@_ap> -p@D9<9@,;A,8.@a@}N!!D8@,A,:/@aD}N!!HD, A,i;.@aH}N!!PH,A,:T/I@aP}N!!LP, A,9. @aLC}N!8@ALA,;9i-{@cx}N!8a@8D8HH ap9<;`6Ȃ88,@~cx}N!/xAD@/A,@Ѐa@;D=HH U9<@DHHp?6~ x@=#x9LH -A~#xH ,aPA|dx#xHU/aL@>?T59`xHP9,@aPC}N!aL;P8E.K@aL#}N!L!T;}yH=<59`>9@Hd== 59`E9@Ha@}xDHH <9?T59`Gr~9@>@v9<-H==K59`I9@H<<_58I<M=9<"9@HL?=5;K>M9<9@H$<=59`X9@>_r9<@HP<>59`X9@=_Mj9<558>=- 9<9@,A,;/@a@}N!!H, A,9.@aH}N!!D,A,9/ @aD}N!A,[8r-{@cx}N!!L, A,;v.i@aL}N!!P,A,I8/@aPc}N!<8e0KU8@AT:8-@Cx}N!;\,W@~x}N!:.@#x}N!;-,3@~cx}N!:l/p@~x}N!:-@Q~#x}N!!؀aT8!Ёa~(}a N |B!8}N!<_8 8AX8!P|HN |HA|~x!# , A,i8, @~ }N!xX8!P|}N |H|#xA|+x!c ,A}N!|cy@8`X8!P|N |HAB!# |~x, A,i8, @~ }N!=_8`4 8X8!P|N }(!B!8}N!<_d9KD 88AX8!P|HN |HA|~x!#, A,i8, @~}N!> ,A,8/@~ }N!>, A,I9 , @~#}N!xaX8!P}h}N |HA|~x!|#xc|+x,A|+xxN!|cy@P~ ,AxxN!|cy@,~,AxxN!|cy@8`X8!P|N |HAB!#|~x, A,i8, @~}N!?̐8> ,A,I9 / @~ #}N!}̑~ K9>, A,i8, @~}N!8`;X8!PN |HA|}x!|#xH%|~y8`APx8x}N!|}x~8,@x}N!xAX8!P|HN |H8A!}N!AX8!P|HN }N 8`N 8`N |HA|}x!|#xHQ|~y8`APx8x}N!|}x~8,@x}N!xAX8!P|HN |B}h=k|l}N |B}h=k|P}N |B}h=k|4}N |B}h=k|}N |B}h=k|}N |B}h=k|}N |B}h=k|}N |B}h=k|}N |B}h=k|}N |B}h=k|p}N |B}h=k|T}N |B}h=k|8}N |B}h=k|}N |B}h=k|}N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| t}N |B}h=k| X}N |B}h=k| <}N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| x}N |B}h=k| \}N |B}h=k| @}N |B}h=k| $}N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| |}N |B}h=k| `}N |B}h=k| D}N |B}h=k| (}N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| }N |B}h=k| d}N cmprreprange_maptableobargtupleexpr_defsDispatchErrorIndexErrorInstanceTypeKeyErrorMaxMinNoApplicableMethodsTypeError__all____class____getitem____hash___acquire_dispatcher_release_startNodeappendconcatenate_rangesdispatch_by_inequalitiesdispatch_by_mrokeysmapobjectreseedsorttypes_speedups._ExtremeType_speedups.ExprCache_speedups.BaseDispatcher_speedups__builtin____builtins___ExtremeTypeExprCacheBaseDispatcher_speedups.pyxMissing type objectArgument '%s' has incorrect type (expected %s, got %s)__import__OOOOunpack sequence of wrong sizeraise: arg 3 must be a traceback or Noneinstance exception may not have a separate valueexceptions must be strings, classes, or instances, not %sOO_speedups._ExtremeType.__init___speedups._ExtremeType.__hash___speedups._ExtremeType.__cmp__self_speedups._ExtremeType.__richcmp__O_speedups.concatenate_ranges_speedups.dispatch_by_inequalities_speedups.dispatch_by_mro_speedups.ExprCache.__init___speedups.__getitem___speedups.ExprCache.__getitem___speedups.BaseDispatcher.__getitem__C Speedups for commonly-used operationsdispatch.interfacesT`dpxNot a dict subclassNot a class or type:Lookup '__class__' of 'ob' in 'table' using its MRO orderpx|x|t ,8DPXl,`t.p0+LE\0)V|EhTd _@X9dlCJ`؏@@@@@@@@@@t@L @8@4@( @@ @ @@@@@@x@X @D@@@4 @@@ @@@@@@@d @T@P@L@@ @,@( @$ @ @@@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @|@x @t@p @l@h @d@` @\@X @T@P @L@H @D@@ @<@8 @4@0 @,@( @$@ @@ @@ @ @ @@ @@ @@ @@ @@ @@@@@X@T@L@D@@@@@@@@@@@@|@x@t@p@l@h@d@`@\@X@T@P@L@H@D@@@<@8@4@0@,@(@$@ @@@@@ @@@@@@@@@@dǀ'AL[}$DD DDDD D  D $D (D ,D0D4$4D8D<D@DD6DH7DL8DP9DT:dT4;dTadTz<   , @L1TC`MtX~     x |! > Q tb u         7 P c q ~           7 Z |   .p 0 B+L n\  0 )  B f    V|  0 Q xh  Td   9 \_ @"Ht9d)CVJD_TDclD_xDc|D_Dcz PDdDcD`DaDbDdDe TDfDeDfDg \ XDh0DiDDjXDo\Dj`DodDjpDkt dDlx hDm| lDn pDj2 `DnDpDjDkDlDmDnDoDpDqDsDrDsDrDtDs DtDuDw\Dv`DwdDvhDwlDxDyD|DyD|D}D~DDlDDDDDDDDDDDD$DLDdDDDDDDDD,DdDhDlDpDtDDDDD0D`DdDhDDDDDDDDDDTDXD\DhDlDxD|DDDDDDDDDDDD(D,D4D8DdDDDDDDDDDDDDD,D0D\DDDDDDDDD D$D(D4D<DxDDDDDDDHDtDDS$_Tnz@`h"-€΀   + < T g {~ Ȁ ۀ !! !3!L!b!s!!!!Ā!ހ!""+"@"T"h"}"#^$ $$4$F$Y$j$|$$ $@a$@b$l$$$ $$DDDDD D(DXD`DDD$$%@%@%7@%K@%WG%m$%nDDDDDDDDDDDDDDDDD D$D(D0D 8D <D HD xD D D %|$%@%@%@%@%@%@%@&@&&&$|&D D 8D <D DD X&"$ &7@ &C@ &O@ &]8&^`&_$T&`pD pD D D D &r$ p&@ &@ &@ &&&$l&D "D $D % D  $D ' <D ) DD * HD + L&$ "&@ "&@ "&@ # && `&$& `D - `D . hD - lD . D - D . D / D 0 D 2 D 3 D 4!D 6! D 7!$D 9!<D <!@D =!DD >!HD A!TD B!`D C!dD D!hD E!tD G!D I!D K!D M"D N"D T"0D U"XD V"\D W"`D ]"pD `"D b"D e"D f"D g#$D i#P'$ - `'@ -'$@ -'1@ -';@ B'F!`'G!'H$ 'I#lD k#lD l#|D m#D o#D p#D n#D p#D q#D r#D s#'X$ k#l'm@ l'R'* !*'+&)+<@ m +H@ n+U@ o+_#|+`#+a$t+b#D v#D w#D v#D x#D w$D y$ D z$D {$$D |$4D ~$@D $LD $TD $XD $\D $dD $D $D %D %D %D %D %D %0D %4D %8D %<D %@D %tD %D %+u$ v#+ w@+ wD+ wH+@ x+@ y+#+%+$+%D %D &D &D & D &$D &(D &8D &DD &H+$ %+@ ,C ,a$l,b&`D &`D &tD &D &D &D &D &D &D &,u$ &`,@ ,ۀ ,$t,&D &D &D &D &D &D &D 'D 'D 'D ' D 'D 'D 'D 'D '$D ',D '8D 'DD 'LD 'TD '`D 'lD 'xD 'D 'D 'D 'D 'D (PD (D (D (D )D )8D )|-$ &-(@ -8@ -J@ -]@ -o@ -@ -@ /3/I@ /l,/&/)/$D^)Dd)D^)Dd)D_)D^)Dd)D`)D_)Dd)De)Df)De)Df*Dg* Dj*Dn*4Dk*8Dn*<Do*HDp*tDr*xDp*|Ds*Du*Ds*Du*Ds*Du*Dv*Du*Dx*Dy*Dz+D{+4D|+8/$^)/@^/@^/@^/_@0`D0@a0$@b03&c@00)0+L0$D+LD+lD+pD+tD+xD+|D+D+D+D+D,D,8D,tD,xD,D,D,D,D,D,D,D-D-(D-,D-`D-D-D-D-D-D.D.$D.(D.(D.P0$+L0@1@1 @1/@1>@1M@1]+l1^.\1_$$D.pD.D.D.D.D.D.D.D.D.D/,D/0D/<D/`D/D/D/D/D/D/D/D/D0D0D0D0D0@D0h1`$.p1@1@1@1@1@1@1.10t1$D0D0D0D0D0D0D0D0D01$02+@ 2?@2N02O02P$lD0D1D1D1 D1$D1(D1,D10D14D18D1<D1@D1DD1HD1LD1PD1\D1D1D1D2D2,D20D24D2XD2\D2`D2hD2D2D2D2D2D3D38D 3`D 3dD3hD3pD3tD3xD3|D3D3D3D3D3D4D4,D48D4<D4@D!4DD"4XD#4D$4D%4D$4D%4D+4D,5D+5D,5 D/5D05$D15XD25hD35D25D35D95D:5D95D:5D=5D>5D?6$D@64DA6\D@6`DA6dDG6DH6DG6DH6DK6DL6DM6DN7DO70DN74DO78DU7\DV7hDU7lDV7pDY7tDZ7D[7D\7D]8D\8D]8D^8DD`8HDe8LDf8\Dh8`Di8Dj8Dk8Dj8Dm8Dn8Do9Dq9D2Q$02@2@2@2@2@2@2@3@3139P3$pDx9dD9Dx9D9Dy9D9Dy9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D:D:D:D: D:D:D:D:D:4D:HD:`D:D:D:D:D:D:D:D:D;$D;`D;D;D;D;D;D<D<D< D<\D<D<D<D<D<D<D=D= D=D=D=D=dD=lD=xD=D=D=D=D=D=D=D=D>D>$D>(D>,D>0D>4D>\D>lD>pD>xD>D>D>D>D>D>D>D>D>D>D>D>D?D? D?D? D?$D?<D?dD?D?D?D?D?D?D?D?D?D?D@ D@$D@(D@0DA(DATDADADADADADADBDB<DBdDBDBDBDB3$x9d3?@x3Q@x3c@x3uy@3@z3@{3@|3@}3@~3@3@4 @4@4+@4:D4H&L4t94uC4v$ DCDCDC DC$DC(DC,DCDDCHDCLD CTD CXDC\DCdDChDCpDCtDCDCDCDCDCDCDCDCDCDCDCDCDCDCDD DDD!D<DDDD!DHD$DLD%DTD$DXD%D\D)DdD*DhD)DlD,DtD2DxD5DD6DD5DD6DD:DD9DD:DD;DD<DD=DD>DDCDDDEDEE,DGE0DEE8DFEDDGELDHEDIEDHEDIEDJEDIEDJEDKFDLF(DNFPDMFTDNFXDVFDSFDVFDWFDVFDWFD\FD]FD\FD]FD`FDcFD`FDcFDdGDeGDjG8DfG<DlG@DgGDDkGHDlGLDkGPDlGXDmGhDnGtDoGDnGDoGDrGDsGDuGDwGDvGDwGDvGDwGDxGDyGDzHD~H DyH$D~H(D}H0DH0DHHDHLDHPDH`DIDI8DIhDIDIDIDIDIDIDJDJHDJtDJx4w$C4@4@4@4@4D5@5@5)@5<@5Q@5d@5z@5@ 5@ 5 H5@ 5@ 5&T6C6J6$DJDJDJDJDJDJDJDJDJDJDJDJDJDJDKDKDK DKDKDK,DK0DK4DK8DK<DK@DKDDKhDKDLDL DLDLDLDL(DL0DL@DLHDLtDLDLDLDLDLDLDLDMDM4DMDDMLDMPDMTDM\DMDMDMDMDMDMDMDMDMDNDN DN\DNDNDNDNDNDNDND NDNDNDNDNDND ND$OD%O D*OD+O0D,ODD0OHD,OLD0OPD,OTD-OdD.OlD/OxD0O|D1OD2OD1OD2OD3OD2OD3OD4OD5PD4PHD5PLD:PXD=P\DAPdDBPDCPDEPDCPDDPDEPDFPDGPDHQ DJQDNQDQQDRQ DSQ,DTQTDVQXDbQ\DcQ`DbQhDcQlDfQtDjQDnQDqQDzQD{QDQD~QDQDQDQDQDQDQDQDQDRDR DRDR DR,DSDS4DS`DSDSDSDSDSDSDTDTDDTH6$J6.@6@@6R@6d@6xD6@6@6@7D7[@7p@7@7@7@7@7&7J7Td7$ DTdDTxDT|DTDTDTDTDTDTDTDTDTDTDTDTDTDTDU$DU(DU,DU0DU<DUhDUpDU|DUDUDUDUDUDUDUDUDUDUDUDV DV8DVdDVh7$Td8@80@8B@8T@8kD8@8@8&8Tx8V|8$DV|DVDVDVDVDVDVDVDVDVDVDVDVDVDVDVDVDW DWPDW`DWDWDWDWDWDWDWDWDWDXDXDXDXDXDX(DX8DX@DXhDXlDXpDXxDXDXDXDXDXDXDXDXDYDYDY DYHDYLDYPDYXDYdD YD)YD*YD+Z D.ZHD,ZTD.ZXD-Z\D.Z`D/ZD2ZD0ZD2ZD1ZD2ZD3ZD6[D3[D6[D7[@D8[xD9[D=[D:[D=[D:[D;[D=[D>[D?[D@\ D?\(D@\,DA\TDB\|DA\DB\DC\DD\DC\DD\DE\DG]DF]$DG](DH]`DK]DL]DK]DM]DP]DR]DS]DT^DU^4DV^@DU^DDX^DDY^lDZ^D[^D]^8$V|9@9@9)@9:@9N@9]@9l@9z@9@9V9^9$Df_Dx_$Dz_(Df_0Dx_4Do_8Dx_<Dr_@Dy_DDf_HDq_LD_PDy_TD{_XDy_\D|_`Do_dD}_hDp_lDs_pDt_tD_xDz_|D_Dz_D_D{_D|_Dz_D}_D{_D|_D}_D_D_D_D_D_D_D_D_D`D`$D`(D`<D`HD`LD`xD`|D`D`D`D`D`D`DaDa Da$DaLDaPDaTDa|DaDaDaDaDaDaDaDbDbDb8Db<Db@DbLDbXDbDbDbDbDbDbDbDbDbDbDbDc$Dc(Dc0DcXDc\Dc`DcDcDcDcDcDd(Dd,Dd4Dd8DdDDdhDdlDdpDdtDdDdDdDdDeDeDeDe DeDeLDePDeTDedDeDeDeDeDeDfDfDfDDfLDfLDfPDfTDfDfDfDfDfDfDfDgDgDgDgDg,Dg@DgXDgDgDgDgDgDgDgDgDgDh DhDhDhDh$D h8D h`D hdD hhD hlDhpDh|DhDhDhDhDhDhDhDhDhDhDhDhDhDiDi Di8DiDDiPDixD i|D#iD$iD%iD&iD'iD*iD+iD,iD-j D.jD/jD4jD/j$D4j(D5j8D6jLD:jPD6jTD7j\D8j`D9jhD:jlD;jD<jDDjD=jD>jDDjDEk(DFklDGkDFkDGkDHkDJkDHkDIkDJkDKkDLl$DKl(DLl,DMlTDNlXDOlDPlDRlDSlDTlDWlDXlDYlDZmD[mD^mD_m$D`m0DemXDbmdDemhDamlDbmpDemtDhmDlmDomDpmDqmDrmDsnDrnDsn$DtnPDznxDtn|DznD{nD|oD}o0D|o4D~o8D}o<D~oHDolD~opDotDoxDoDoDoDoDpDpDp<DphDplDppDpDpDqDqDqDq$DqLDqPDq|DqDqDqDqDqDqDqDqDqDqDr,Dr0Dr8DrlDrDrDrDrDrDrDrDrDsDsDs4DsdDsDsDsDsDsDsD sDsDsDtDtDtHDtLDtPDtTDtXDt\DthDttDtDtDtDtDtDtDtDtDtDtDtDtDuDu$Du0DuXDu\Du`DuxDuDuDuDuDuDuDuDuDuDuDvDv,Dv0Dv4Dv@DvDDvpDv|DvDvDvDvDvDvDvDvDwDwDw DwDw@DwDD wLDwDwDwDwDwDwDwDwDwDwDwDwDwDy DyDyDy@DyDDyLDy|DyDyDyDyDyDyDyDyDz,DzXDzhDzpDztDzD zDzD zD%zD'zD%zD&zD%zD&zD'zD(zD)zD*zD5zD4zD5{D6{ D8{ D;{$D<{8D={dD>{D={D>{DD{DE{DD{DF{D|D|D|D|(D|0D|4D|8D|<DK}LDL}|DM}DN}DO~DP~DDQ~xDR~DQ~DT~DU~DV~DWDX,DYTD[|9$f_9@f9@f9@g:@h:'@i:;@j:R@k:f@l:{mT:@n:o@:pH:qD:@r:рsL:߀tP:@u:@v; _$; @;fD;h ;@;0q|;1s;2@ ;Cs;Ds;E@;Vs;Ws;X@ ;iwL;jwT;k@;|w;}w;~@ ;y ;z;@;{;|@;;$ DDD;$;@;@;@;H8>I>J$tD!D#D$D%D&D>K$!>x@!>$D)hD,D)D,D-D/D0D2D3D5D6>$)h>@)>@)>@)>@*>>>$D8D: D8$D:(D;XD<pD=D>D?DAD?>$8?@8?$DBDD,DE@DF`DGDH?$B?:@B?C@B?L@C?U@D?^,?_?`$DDDD?a$?@?@?@?@$,DD@$@9@@B$DD@C$@v@@@@@@$DD@$@@@$DDDD4D\D`@$@@A@A@A@A#A$tA%$A&( !PA5( "TAD( #XAX( $\An&A&'A&A&B&&B2& BB_& CB& DB( E`B( FdC ( GhC5( HlCS( IpCv&M,C( OtC( PxC( Q|C( RC( SD$( TDC( UDf( VD( WD( XD( YD( [D( ~D( E ( sE ( tE4( uEJ( Ec( Ey( E( E&`E&tE&F.( FI( Fc( F{( F( _F( `F( aF( bF( cG &]G=&|Gm& G& G& H& H,& HT& JH& NH&wH&I& I,& Ir& I& I&I& @J&WJI&Jvdt0CTRo/>M^o&4DQ]o.@Xjy .@M[i{ c E 0 ^ _ ` 8 b f = \ < M L R 7 W i X F k U : 6 V ; ] 2 4 5 h S Z Y 1 J T K O I [ N e Q 9 H - c E 0 ^ _ ` 8 b f = \ < M L R 7 W i X F k U : 6 V ; ] 2 4 5 h S Z Y 1 J T K O I [ N e Q 9 H - a d D @ A C B P > g . G j / ? 3 l__dyld_func_lookupdyld_stub_binding_helper__mh_bundle_header_init_speedups_PyArg_ParseTupleAndKeywords_PyBaseObject_Type_PyClass_Type_PyCode_New_PyDict_GetItem_PyDict_New_PyDict_Type_PyErr_Clear_PyErr_ExceptionMatches_PyErr_Fetch_PyErr_Format_PyErr_NormalizeException_PyErr_Occurred_PyErr_Restore_PyErr_SetNone_PyErr_SetObject_PyErr_SetString_PyExc_AssertionError_PyExc_AttributeError_PyExc_IndexError_PyExc_NameError_PyExc_SystemError_PyExc_TypeError_PyExc_ValueError_PyFrame_New_PyImport_AddModule_PyInstance_Type_PyInt_AsLong_PyInt_FromLong_PyIter_Next_PyList_New_PyModule_GetDict_PyObject_CallFunction_PyObject_CallObject_PyObject_Cmp_PyObject_GC_Del_PyObject_GetAttr_PyObject_GetAttrString_PyObject_GetItem_PyObject_GetIter_PyObject_IsInstance_PyObject_IsTrue_PyObject_SetAttr_PyObject_SetAttrString_PyObject_SetItem_PyObject_Size_PyObject_Type_PySequence_GetItem_PySequence_Tuple_PyString_FromString_PyString_FromStringAndSize_PyString_InternFromString_PyString_Type_PyThreadState_Get_PyTraceBack_Here_PyTraceBack_Type_PyTuple_New_PyTuple_Size_PyTuple_Type_PyType_IsSubtype_PyType_Ready_PyType_Type_Py_InitModule4__Py_NoneStruct{standard input}int:t1=r1;-2147483648;2147483647;char:t2=r2;0;127;void:t3=3/SourceCache/Csu/Csu-57/bundle1.s/SourceCache/Csu/Csu-57///SourceCache/Csu/Csu-57/bundle1.s/SourceCache/Csu/Csu-57/bundle1.sdyld_stub_binding_helper:F3dyld_lazy_symbol_binding_entry_pointdyld__mh_bundle_header__dyld_func_lookup:F3dyld_func_lookup_pointer/Users/tazzzzz/projects/RuleDispatch/src/dispatch/_speedups.cgcc2_compiled.___pyx_mdoc___pyx_ptype_9_speedups__ExtremeType___pyx_ptype_9_speedups_ExprCache___pyx_ptype_9_speedups_BaseDispatcher___pyx_k1___pyx_argnames.0___pyx_argnames.1___pyx_argnames.2___pyx_k9___pyx_k10___pyx_doc_9_speedups_dispatch_by_mro___pyx_argnames.3___pyx_argnames.4___pyx_intern_tab___pyx_n_DispatchError___pyx_n_IndexError___pyx_n_InstanceType___pyx_n_KeyError___pyx_n_Max___pyx_n_Min___pyx_n_NoApplicableMethods___pyx_n_TypeError___pyx_n___all_____pyx_n___class_____pyx_n___getitem_____pyx_n___hash_____pyx_n__acquire___pyx_n__dispatcher___pyx_n__release___pyx_n__startNode___pyx_n_append___pyx_n_concatenate_ranges___pyx_n_dispatch_by_inequalities___pyx_n_dispatch_by_mro___pyx_n_expr_defs___pyx_n_keys___pyx_n_map___pyx_n_object___pyx_n_reseed___pyx_n_sort___pyx_n_types___pyx_string_tab___pyx_k1p___pyx_k9p___pyx_k10p___pyx_methods_9_speedups__ExtremeType___pyx_tp_as_number__ExtremeType___pyx_tp_as_sequence__ExtremeType___pyx_tp_as_mapping__ExtremeType___pyx_tp_as_buffer__ExtremeType___pyx_type_9_speedups__ExtremeType___pyx_tp_dealloc_9_speedups__ExtremeType___pyx_f_9_speedups_12_ExtremeType___cmp_____pyx_f_9_speedups_12_ExtremeType___repr_____pyx_f_9_speedups_12_ExtremeType___hash_____pyx_tp_traverse_9_speedups__ExtremeType___pyx_tp_clear_9_speedups__ExtremeType___pyx_f_9_speedups_12_ExtremeType___richcmp_____pyx_f_9_speedups_12_ExtremeType___init_____pyx_tp_new_9_speedups__ExtremeType___pyx_methods_9_speedups_ExprCache___pyx_tp_as_number_ExprCache___pyx_tp_as_sequence_ExprCache___pyx_sq_item_9_speedups_ExprCache___pyx_tp_as_mapping_ExprCache___pyx_f_9_speedups_9ExprCache___getitem_____pyx_tp_as_buffer_ExprCache___pyx_type_9_speedups_ExprCache___pyx_tp_dealloc_9_speedups_ExprCache___pyx_tp_traverse_9_speedups_ExprCache___pyx_tp_clear_9_speedups_ExprCache___pyx_f_9_speedups_9ExprCache___init_____pyx_tp_new_9_speedups_ExprCache___pyx_methods_9_speedups_BaseDispatcher___pyx_tp_as_number_BaseDispatcher___pyx_tp_as_sequence_BaseDispatcher___pyx_sq_item_9_speedups_BaseDispatcher___pyx_tp_as_mapping_BaseDispatcher___pyx_f_9_speedups_14BaseDispatcher___getitem_____pyx_tp_as_buffer_BaseDispatcher___pyx_type_9_speedups_BaseDispatcher___pyx_tp_dealloc_9_speedups_BaseDispatcher___pyx_tp_traverse_9_speedups_BaseDispatcher___pyx_tp_clear_9_speedups_BaseDispatcher___pyx_tp_new_9_speedups_BaseDispatcher___pyx_methods___pyx_f_9_speedups_concatenate_ranges___pyx_f_9_speedups_dispatch_by_inequalities___pyx_f_9_speedups_dispatch_by_mro___pyx_m___pyx_b___pyx_f___pyx_filename___pyx_lineno___pyx_v_9_speedups_NoApplicableMethods___pyx_v_9_speedups_DispatchError___pyx_v_9_speedups__NF___pyx_v_9_speedups___nclass___pyx_v_9_speedups_InstanceTypeinit_speedups:F(0,1)=(0,1)void:t(0,1)__pyx_1:r(0,2)=*(0,3)=(0,4)=xs_object:PyObject:t(0,3)_object:T(0,4)=s8ob_refcnt:(0,5)=r(0,5);-2147483648;2147483647;,0,32;ob_type:(0,6)=*(0,7)=xs_typeobject:,32,32;;int:t(0,5)_typeobject:T(0,7)=s192ob_refcnt:(0,5),0,32;ob_type:(0,6),32,32;ob_size:(0,5),64,32;tp_name:(0,8)=*(0,9)=r(0,9);0;127;,96,32;tp_basicsize:(0,5),128,32;tp_itemsize:(0,5),160,32;tp_dealloc:(0,10)=(0,11)=*(0,12)=f(0,1),192,32;tp_print:(0,13)=(0,14)=*(0,15)=f(0,5),224,32;tp_getattr:(0,16)=(0,17)=*(0,18)=f(0,2),256,32;tp_setattr:(0,19)=(0,20)=*(0,21)=f(0,5),288,32;tp_compare:(0,22)=(0,23)=*(0,24)=f(0,5),320,32;tp_repr:(0,25)=(0,26)=*(0,27)=f(0,2),352,32;tp_as_number:(0,28)=*(0,29)=(0,30)=s152nb_add:(0,31)=(0,32)=*(0,33)=f(0,2),0,32;nb_subtract:(0,31),32,32;nb_multiply:(0,31),64,32;nb_divide:(0,31),96,32;nb_remainder:(0,31),128,32;nb_divmod:(0,31),160,32;nb_power:(0,34)=(0,35)=*(0,36)=f(0,2),192,32;nb_negative:(0,37)=(0,26),224,32;nb_positive:(0,37),256,32;nb_absolute:(0,37),288,32;nb_nonzero:(0,38)=(0,39)=*(0,40)=f(0,5),320,32;nb_invert:(0,37),352,32;nb_lshift:(0,31),384,32;nb_rshift:(0,31),416,32;nb_and:(0,31),448,32;nb_xor:(0,31),480,32;nb_or:(0,31),512,32;nb_coerce:(0,41)=(0,42)=*(0,43)=f(0,5),544,32;nb_int:(0,37),576,32;nb_long:(0,37),608,32;nb_float:(0,37),640,32;nb_oct:(0,37),672,32;nb_hex:(0,37),704,32;nb_inplace_add:(0,31),736,32;nb_inplace_subtract:(0,31),768,32;nb_inplace_multiply:(0,31),800,32;nb_inplace_divide:(0,31),832,32;nb_inplace_remainder:(0,31),864,32;nb_inplace_power:(0,34),896,32;nb_inplace_lshift:(0,31),928,32;nb_inplace_rshift:(0,31),960,32;nb_inplace_and:(0,31),992,32;nb_inplace_xor:(0,31),1024,32;nb_inplace_or:(0,31),1056,32;nb_floor_divide:(0,31),1088,32;nb_true_divide:(0,31),1120,32;nb_inplace_floor_divide:(0,31),1152,32;nb_inplace_true_divide:(0,31),1184,32;;,384,32;tp_as_sequence:(0,44)=*(0,45)=(0,46)=s40sq_length:(0,38),0,32;sq_concat:(0,31),32,32;sq_repeat:(0,47)=(0,48)=*(0,49)=f(0,2),64,32;sq_item:(0,47),96,32;sq_slice:(0,50)=(0,51)=*(0,52)=f(0,2),128,32;sq_ass_item:(0,53)=(0,54)=*(0,55)=f(0,5),160,32;sq_ass_slice:(0,56)=(0,57)=*(0,58)=f(0,5),192,32;sq_contains:(0,59)=(0,23),224,32;sq_inplace_concat:(0,31),256,32;sq_inplace_repeat:(0,47),288,32;;,416,32;tp_as_mapping:(0,60)=*(0,61)=(0,62)=s12mp_length:(0,38),0,32;mp_subscript:(0,31),32,32;mp_ass_subscript:(0,63)=(0,64)=*(0,65)=f(0,5),64,32;;,448,32;tp_hash:(0,66)=(0,67)=*(0,68)=f(0,69)=r(0,69);-2147483648;2147483647;,480,32;tp_call:(0,34),512,32;tp_str:(0,25),544,32;tp_getattro:(0,70)=(0,32),576,32;tp_setattro:(0,71)=(0,64),608,32;tp_as_buffer:(0,72)=*(0,73)=(0,74)=s16bf_getreadbuffer:(0,75)=(0,76)=*(0,77)=f(0,5),0,32;bf_getwritebuffer:(0,78)=(0,76),32,32;bf_getsegcount:(0,79)=(0,80)=*(0,81)=f(0,5),64,32;bf_getcharbuffer:(0,82)=(0,83)=*(0,84)=f(0,5),96,32;;,640,32;tp_flags:(0,69),672,32;tp_doc:(0,8),704,32;tp_traverse:(0,85)=(0,86)=*(0,87)=f(0,5),736,32;tp_clear:(0,38),768,32;tp_richcompare:(0,88)=(0,89)=*(0,90)=f(0,2),800,32;tp_weaklistoffset:(0,69),832,32;tp_iter:(0,91)=(0,26),864,32;tp_iternext:(0,92)=(0,26),896,32;tp_methods:(0,93)=*(0,94)=xsPyMethodDef:,928,32;tp_members:(0,95)=*(0,96)=xsPyMemberDef:,960,32;tp_getset:(0,97)=*(0,98)=xsPyGetSetDef:,992,32;tp_base:(0,6),1024,32;tp_dict:(0,2),1056,32;tp_descr_get:(0,99)=(0,35),1088,32;tp_descr_set:(0,100)=(0,64),1120,32;tp_dictoffset:(0,69),1152,32;tp_init:(0,101)=(0,64),1184,32;tp_alloc:(0,102)=(0,103)=*(0,104)=f(0,2),1216,32;tp_new:(0,105)=(0,106)=*(0,107)=f(0,2),1248,32;tp_free:(0,108)=(0,109)=*(0,110)=f(0,1),1280,32;tp_is_gc:(0,38),1312,32;tp_bases:(0,2),1344,32;tp_mro:(0,2),1376,32;tp_cache:(0,2),1408,32;tp_subclasses:(0,2),1440,32;tp_weaklist:(0,2),1472,32;tp_del:(0,10),1504,32;;char:t(0,9)destructor:t(0,10)printfunc:t(0,13)getattrfunc:t(0,16)setattrfunc:t(0,19)cmpfunc:t(0,22)reprfunc:t(0,25)PyNumberMethods:t(0,29)binaryfunc:t(0,31)ternaryfunc:t(0,34)unaryfunc:t(0,37)inquiry:t(0,38)coercion:t(0,41)PySequenceMethods:t(0,45)intargfunc:t(0,47)intintargfunc:t(0,50)intobjargproc:t(0,53)intintobjargproc:t(0,56)objobjproc:t(0,59)PyMappingMethods:t(0,61)objobjargproc:t(0,63)hashfunc:t(0,66)long int:t(0,69)getattrofunc:t(0,70)setattrofunc:t(0,71)PyBufferProcs:t(0,73)getreadbufferproc:t(0,75)getwritebufferproc:t(0,78)getsegcountproc:t(0,79)getcharbufferproc:t(0,82)traverseproc:t(0,85)richcmpfunc:t(0,88)getiterfunc:t(0,91)iternextfunc:t(0,92)PyMethodDef:T(0,94)=s16ml_name:(0,8),0,32;ml_meth:(0,111)=(0,32),32,32;ml_flags:(0,5),64,32;ml_doc:(0,8),96,32;;PyMemberDef:T(0,96)=s20name:(0,8),0,32;type:(0,5),32,32;offset:(0,5),64,32;flags:(0,5),96,32;doc:(0,8),128,32;;PyGetSetDef:T(0,98)=s20name:(0,8),0,32;get:(0,112)=(0,113)=*(0,114)=f(0,2),32,32;set:(0,115)=(0,116)=*(0,117)=f(0,5),64,32;doc:(0,8),96,32;closure:(0,118)=*(0,1),128,32;;descrgetfunc:t(0,99)descrsetfunc:t(0,100)initproc:t(0,101)allocfunc:t(0,102)newfunc:t(0,105)freefunc:t(0,108)PyCFunction:t(0,111)getter:t(0,112)setter:t(0,115)__pyx_2:r(0,2)__pyx_3:r(0,2)___pyx_filenames___Pyx_ArgTypeTest__Pyx_ArgTypeTest:f(0,5)obj:P(0,2)type:P(0,119)=*(0,120)=(0,7)none_allowed:P(0,5)name:P(0,8)PyTypeObject:t(0,120)___Pyx_Import__Pyx_Import:f(0,2)name:P(0,2)from_list:P(0,2)__import__:r(0,2)empty_list:r(0,2)module:r(0,2)global_dict:r(0,2)empty_dict:r(0,2)list:r(0,2)___Pyx_GetName__Pyx_GetName:f(0,2)dict:P(0,2)name:P(0,2)result:r(0,2)___Pyx_UnpackItem__Pyx_UnpackItem:f(0,2)seq:P(0,2)i:P(0,5)item:r(0,2)___Pyx_EndUnpack__Pyx_EndUnpack:f(0,5)seq:P(0,2)i:P(0,5)item:r(0,2)___Pyx_Raise__Pyx_Raise:f(0,1)type:P(0,2)value:P(0,2)tb:P(0,2)tmp:r(0,2)___Pyx_ReRaise__Pyx_ReRaise:f(0,1)tstate:r(0,121)=*(0,122)=(0,123)=xs_ts:PyThreadState:t(0,122)_ts:T(0,123)=s84next:(0,124)=*(0,123),0,32;interp:(0,125)=*(0,126)=(0,127)=xs_is:,32,32;frame:(0,128)=*(0,129)=xs_frame:,64,32;recursion_depth:(0,5),96,32;tracing:(0,5),128,32;use_tracing:(0,5),160,32;c_profilefunc:(0,130)=(0,131)=*(0,132)=f(0,5),192,32;c_tracefunc:(0,130),224,32;c_profileobj:(0,2),256,32;c_traceobj:(0,2),288,32;curexc_type:(0,2),320,32;curexc_value:(0,2),352,32;curexc_traceback:(0,2),384,32;exc_type:(0,2),416,32;exc_value:(0,2),448,32;exc_traceback:(0,2),480,32;dict:(0,2),512,32;tick_counter:(0,5),544,32;gilstate_counter:(0,5),576,32;async_exc:(0,2),608,32;thread_id:(0,69),640,32;;PyInterpreterState:t(0,126)_is:T(0,127)=s36next:(0,133)=*(0,127),0,32;tstate_head:(0,124),32,32;modules:(0,2),64,32;sysdict:(0,2),96,32;builtins:(0,2),128,32;codec_search_path:(0,2),160,32;codec_search_cache:(0,2),192,32;codec_error_registry:(0,2),224,32;dlopenflags:(0,5),256,32;;Py_tracefunc:t(0,130)type:r(0,2)value:r(0,2)tb:r(0,2)___Pyx_GetExcValue__Pyx_GetExcValue:f(0,2)type:(0,2)value:(0,2)tb:(0,2)result:r(0,2)tstate:r(0,121)___Pyx_InternStrings__Pyx_InternStrings:f(0,5)t:P(0,134)=*(0,135)=(0,136)=s8p:(0,137)=*(0,2),0,32;s:(0,8),32,32;;__Pyx_InternTabEntry:t(0,135)___Pyx_InitStrings__Pyx_InitStrings:f(0,5)t:P(0,138)=*(0,139)=(0,140)=s12p:(0,137),0,32;s:(0,8),32,32;n:(0,69),64,32;;__Pyx_StringTabEntry:t(0,139)___Pyx_AddTraceback__Pyx_AddTraceback:f(0,1)funcname:P(0,8)py_srcfile:r(0,2)py_funcname:r(0,2)py_globals:r(0,2)empty_tuple:r(0,2)empty_string:r(0,2)py_code:r(0,141)=*(0,142)=(0,143)=s64ob_refcnt:(0,5),0,32;ob_type:(0,6),32,32;co_argcount:(0,5),64,32;co_nlocals:(0,5),96,32;co_stacksize:(0,5),128,32;co_flags:(0,5),160,32;co_code:(0,2),192,32;co_consts:(0,2),224,32;co_names:(0,2),256,32;co_varnames:(0,2),288,32;co_freevars:(0,2),320,32;co_cellvars:(0,2),352,32;co_filename:(0,2),384,32;co_name:(0,2),416,32;co_firstlineno:(0,5),448,32;co_lnotab:(0,2),480,32;;PyCodeObject:t(0,142)py_frame:r(0,144)=*(0,145)=(0,129)PyFrameObject:t(0,145)__pyx_f_9_speedups_12_ExtremeType___init__:f(0,5)__pyx_v_self:P(0,2)__pyx_args:P(0,2)__pyx_kwds:P(0,2)__pyx_v_cmpr:(0,2)__pyx_v_rep:(0,2)__pyx_r:r(0,5)__pyx_1:r(0,5)__pyx_argnames:V(0,146)=ar(0,147)=r(0,147);0000000000000;0037777777777;;0;2;(0,8)long unsigned int:t(0,148)=r(0,148);0000000000000;0037777777777;__pyx_f_9_speedups_12_ExtremeType___hash__:f(0,69)__pyx_v_self:P(0,2)__pyx_r:r(0,69)__pyx_1:r(0,2)__pyx_2:r(0,2)__pyx_3:r(0,2)__pyx_4:r(0,69)__pyx_f_9_speedups_12_ExtremeType___cmp__:f(0,5)__pyx_v_self:P(0,2)__pyx_v_other:P(0,2)__pyx_r:r(0,5)__pyx_1:r(0,5)__pyx_2:r(0,2)__pyx_3:r(0,2)__pyx_f_9_speedups_12_ExtremeType___repr__:f(0,2)__pyx_v_self:P(0,2)__pyx_r:r(0,2)__pyx_f_9_speedups_12_ExtremeType___richcmp__:f(0,2)__pyx_v_self:P(0,2)__pyx_v_other:P(0,2)__pyx_v_op:P(0,5)__pyx_v_cmp:r(0,2)__pyx_r:r(0,2)__pyx_1:(0,5)__pyx_2:r(0,2)__pyx_3:r(0,2)__pyx_f_9_speedups_concatenate_ranges:f(0,2)__pyx_self:P(0,2)__pyx_args:P(0,2)__pyx_kwds:P(0,2)__pyx_v_range_map:(0,2)__pyx_v_ranges:r(0,2)__pyx_v_output:r(0,2)__pyx_v_last:r(0,2)__pyx_v_l:r(0,2)__pyx_v_h:r(0,2)__pyx_r:r(0,2)__pyx_1:r(0,2)__pyx_2:r(0,2)__pyx_3:r(0,2)__pyx_4:r(0,2)__pyx_5:(0,5)__pyx_argnames:V(0,149)=ar(0,147);0;1;(0,8)__pyx_f_9_speedups_dispatch_by_inequalities:f(0,2)__pyx_self:P(0,2)__pyx_args:P(0,2)__pyx_kwds:P(0,2)__pyx_v_table:(0,2)__pyx_v_ob:(0,2)__pyx_v_lo:r(0,5)__pyx_v_hi:r(0,5)__pyx_v_mid:r(0,5)__pyx_v_tmp:r(0,118)__pyx_v_key:r(0,2)__pyx_v_ranges:r(0,2)__pyx_v_t:r(0,2)__pyx_r:r(0,2)__pyx_1:r(0,2)__pyx_2:(0,5)__pyx_3:r(0,2)__pyx_4:r(0,2)__pyx_argnames:V(0,150)=ar(0,147);0;2;(0,8)__pyx_f_9_speedups_dispatch_by_mro:f(0,2)__pyx_self:P(0,2)__pyx_args:P(0,2)__pyx_kwds:P(0,2)__pyx_v_table:(0,2)__pyx_v_ob:(0,2)__pyx_v_bc:r(0,5)__pyx_v_tmp:r(0,118)__pyx_v_bases:r(0,151)=*(0,152)=(0,153)=s16ob_refcnt:(0,5),0,32;ob_type:(0,6),32,32;ob_size:(0,5),64,32;ob_item:(0,154)=ar(0,147);0;0;(0,2),96,32;;PyTupleObject:t(0,152)__pyx_v_klass:r(0,2)__pyx_v_err:r(0,2)__pyx_r:r(0,2)__pyx_2:r(0,2)__pyx_3:r(0,2)__pyx_4:r(0,2)__pyx_argnames:V(0,155)=ar(0,147);0;2;(0,8)__pyx_f_9_speedups_9ExprCache___init__:f(0,5)__pyx_v_self:P(0,2)__pyx_args:P(0,2)__pyx_kwds:P(0,2)__pyx_v_argtuple:(0,2)__pyx_v_expr_defs:(0,2)__pyx_r:r(0,5)__pyx_1:r(0,2)__pyx_argnames:V(0,156)=ar(0,147);0;2;(0,8)__pyx_f_9_speedups_9ExprCache___getitem__:f(0,2)__pyx_v_self:P(0,2)__pyx_v_item:P(0,2)__pyx_v_f:r(0,2)__pyx_v_args:r(0,2)__pyx_r:r(0,2)__pyx_1:r(0,2)__pyx_2:(0,5)__pyx_3:r(0,2)__pyx_4:r(0,2)__pyx_f_9_speedups_14BaseDispatcher___getitem__:f(0,2)__pyx_v_self:P(0,2)__pyx_v_argtuple:P(0,2)__pyx_v_expr:r(0,5)__pyx_v_argct:r(0,5)__pyx_v_node:r(0,2)__pyx_v_factory:r(0,2)__pyx_v_func:r(0,2)__pyx_v_cache:r(0,2)__pyx_r:(0,2)__pyx_1:r(0,5)__pyx_2:(0,2)__pyx_3:(0,2)__pyx_4:(0,2)__pyx_5:r(0,2)__pyx_6:(0,2)__pyx_7:(0,2)__pyx_8:r(0,5)__pyx_9:r(0,5)__pyx_why:r(0,5)__pyx_why:r(0,5)__pyx_why:r(0,5)__pyx_why:r(0,5)__pyx_why:r(0,5)__pyx_why:r(0,5)__pyx_why:r(0,5)__pyx_why:r(0,5)__pyx_tp_new_9_speedups__ExtremeType:f(0,2)t:P(0,119)a:P(0,2)k:P(0,2)__pyx_obj_9_speedups__ExtremeType:T(0,157)=s16ob_refcnt:(0,5),0,32;ob_type:(0,6),32,32;_cmpr:(0,5),64,32;_rep:(0,2),96,32;;__pyx_tp_dealloc_9_speedups__ExtremeType:f(0,1)o:P(0,2)__pyx_tp_traverse_9_speedups__ExtremeType:f(0,5)o:P(0,2)v:P(0,158)=(0,159)=*(0,160)=f(0,5)a:P(0,118)visitproc:t(0,158)e:r(0,5)__pyx_tp_clear_9_speedups__ExtremeType:f(0,5)o:P(0,2)__pyx_tp_new_9_speedups_ExprCache:f(0,2)t:P(0,119)a:P(0,2)k:P(0,2)o:r(0,2)__pyx_obj_9_speedups_ExprCache:T(0,161)=s20ob_refcnt:(0,5),0,32;ob_type:(0,6),32,32;cache:(0,2),64,32;argtuple:(0,2),96,32;expr_defs:(0,2),128,32;;__pyx_tp_dealloc_9_speedups_ExprCache:f(0,1)o:P(0,2)__pyx_tp_traverse_9_speedups_ExprCache:f(0,5)o:P(0,2)v:P(0,158)a:P(0,118)e:r(0,5)__pyx_tp_clear_9_speedups_ExprCache:f(0,5)o:P(0,2)__pyx_sq_item_9_speedups_ExprCache:f(0,2)o:P(0,2)i:P(0,5)r:r(0,2)x:r(0,2)__pyx_tp_new_9_speedups_BaseDispatcher:f(0,2)t:P(0,119)a:P(0,2)k:P(0,2)__pyx_obj_9_speedups_BaseDispatcher:T(0,162)=s8ob_refcnt:(0,5),0,32;ob_type:(0,6),32,32;;__pyx_tp_dealloc_9_speedups_BaseDispatcher:f(0,1)o:P(0,2)__pyx_tp_traverse_9_speedups_BaseDispatcher:f(0,5)o:P(0,2)v:P(0,158)a:P(0,118)__pyx_tp_clear_9_speedups_BaseDispatcher:f(0,5)o:P(0,2)__pyx_sq_item_9_speedups_BaseDispatcher:f(0,2)o:P(0,2)i:P(0,5)r:r(0,2)x:r(0,2)__pyx_m:S(0,2)__pyx_b:S(0,2)__pyx_lineno:S(0,5)__pyx_filename:S(0,8)__pyx_f:S(0,163)=*(0,8)__pyx_mdoc:S(0,164)=ar(0,147);0;39;(0,9)__pyx_type_9_speedups__ExtremeType:S(0,120)__pyx_type_9_speedups_ExprCache:S(0,120)__pyx_type_9_speedups_BaseDispatcher:S(0,120)__pyx_ptype_9_speedups__ExtremeType:S(0,119)__pyx_ptype_9_speedups_ExprCache:S(0,119)__pyx_ptype_9_speedups_BaseDispatcher:S(0,119)__pyx_v_9_speedups_InstanceType:S(0,2)__pyx_v_9_speedups_NoApplicableMethods:S(0,2)__pyx_v_9_speedups_DispatchError:S(0,2)__pyx_v_9_speedups__NF:S(0,2)__pyx_v_9_speedups___nclass:S(0,2)__pyx_k1:S(0,165)=ar(0,147);0;19;(0,9)__pyx_n___all__:S(0,2)__pyx_n_Max:S(0,2)__pyx_n_Min:S(0,2)__pyx_n_concatenate_ranges:S(0,2)__pyx_n_dispatch_by_inequalities:S(0,2)__pyx_n_dispatch_by_mro:S(0,2)__pyx_n_NoApplicableMethods:S(0,2)__pyx_n_DispatchError:S(0,2)__pyx_n_types:S(0,2)__pyx_n_InstanceType:S(0,2)__pyx_n___class__:S(0,2)__pyx_k1p:S(0,2)__pyx_n_object:S(0,2)__pyx_n___hash__:S(0,2)__pyx_n_keys:S(0,2)__pyx_n_sort:S(0,2)__pyx_n_append:S(0,2)__pyx_n_TypeError:S(0,2)__pyx_n_reseed:S(0,2)__pyx_k9p:S(0,2)__pyx_k10p:S(0,2)__pyx_k9:S(0,166)=ar(0,147);0;19;(0,9)__pyx_k10:S(0,167)=ar(0,147);0;20;(0,9)__pyx_doc_9_speedups_dispatch_by_mro:S(0,168)=ar(0,147);0;57;(0,9)__pyx_n___getitem__:S(0,2)__pyx_n_IndexError:S(0,2)__pyx_n_KeyError:S(0,2)__pyx_n_map:S(0,2)__pyx_n__dispatcher:S(0,2)__pyx_n__startNode:S(0,2)__pyx_n__acquire:S(0,2)__pyx_n__release:S(0,2)__pyx_n_expr_defs:S(0,2)__pyx_intern_tab:S(0,169)=ar(0,147);0;27;(0,135)__pyx_string_tab:S(0,170)=ar(0,147);0;3;(0,139)__pyx_methods_9_speedups__ExtremeType:S(0,171)=ar(0,147);0;0;(0,94)__pyx_tp_as_number__ExtremeType:S(0,29)__pyx_tp_as_sequence__ExtremeType:S(0,45)__pyx_tp_as_mapping__ExtremeType:S(0,61)__pyx_tp_as_buffer__ExtremeType:S(0,73)__pyx_methods_9_speedups_ExprCache:S(0,172)=ar(0,147);0;0;(0,94)__pyx_tp_as_number_ExprCache:S(0,29)__pyx_tp_as_sequence_ExprCache:S(0,45)__pyx_tp_as_mapping_ExprCache:S(0,61)__pyx_tp_as_buffer_ExprCache:S(0,73)__pyx_methods_9_speedups_BaseDispatcher:S(0,173)=ar(0,147);0;0;(0,94)__pyx_tp_as_number_BaseDispatcher:S(0,29)__pyx_tp_as_sequence_BaseDispatcher:S(0,45)__pyx_tp_as_mapping_BaseDispatcher:S(0,61)__pyx_tp_as_buffer_BaseDispatcher:S(0,73)__pyx_methods:S(0,174)=ar(0,147);0;3;(0,94)__pyx_filenames:S(0,175)=ar(0,147);0;0;(0,8)PKP{4@a!a!dispatch/assembler.pyfrom array import array from dis import * from new import code __all__ = ['Code'] opcode = {} for op in range(256): name=opname[op] if name.startswith('<'): continue if name.endswith('+0'): opcode[name[:-2]]=op opcode[name]=op globals().update(opcode) # opcodes are now importable at will __all__.extend(opcode.keys()) class Code: co_argcount = 0 co_stacksize = 0 co_flags = 0 co_filename = '' co_name = '' co_firstlineno = 0 co_freevars = () co_cellvars = () _last_lineofs = 0 stack_size = 0 def __init__(self): self.co_code = array('B') self.co_consts = [] self.co_names = [] self.co_varnames = [] self.co_lnotab = array('B') self.emit = self.co_code.append def code(self): return code( self.co_argcount, len(self.co_varnames), self.co_stacksize, self.co_flags, self.co_code.tostring(), tuple(self.co_consts), tuple(self.co_names), tuple(self.co_varnames), self.co_filename, self.co_name, self.co_firstlineno, self.co_lnotab.tostring(), self.co_freevars, self.co_cellvars ) def emit_arg(self, op, arg): emit = self.emit if arg>0xFFFF: emit(EXTENDED_ARG) emit((arg>>16)&255) emit((arg>>24)&255) emit(op) emit(arg&255) emit((arg>>8)&255) def set_lineno(self, lno): if not self.co_firstlineno: self.co_firstlineno = self._last_line = lno return append = self.co_lnotab.append incr_line = lno - self._last_line incr_addr = len(self.co_code) - self._last_lineofs if not incr_line: return assert incr_addr>=0 and incr_line>=0 while incr_addr>255: append(255) append(0) incr_addr -= 255 while incr_line>255: append(incr_addr) append(255) incr_line -= 255 incr_addr = 0 if incr_addr or incr_line: append(incr_addr) append(incr_line) self._last_line = lno self._last_lineofs = len(self.co_code) def stackchange(self, (inputs,outputs)): assert inputs<=self.stack_size, "Stack underflow" if inputs or outputs: ss = self.stack_size = self.stack_size + outputs - inputs if outputs>inputs and ss>self.co_stacksize: self.co_stacksize = ss def LOAD_CONST(self, const): self.stackchange((0,1)) try: arg = self.co_consts.index(const) except ValueError: arg = len(self.co_consts) self.co_consts.append(const) self.emit_arg(LOAD_CONST, arg) def CALL_FUNCTION(self, argc=0, kwargc=0, op=CALL_FUNCTION): self.stackchange((1+argc+2*kwargc,1)) emit = self.emit emit(op); emit(argc); emit(kwargc) def CALL_FUNCTION_VAR(self, argc=0, kwargc=0): self.stackchange((1,0)) # extra for *args self.CALL_FUNCTION(argc,kwargc,CALL_FUNCTION_VAR) def CALL_FUNCTION_KW(self, argc=0, kwargc=0): self.stackchange((1,0)) # extra for **kw self.CALL_FUNCTION(argc,kwargc,CALL_FUNCTION_KW) def CALL_FUNCTION_VAR_KW(self, argc=0, kwargc=0): self.stackchange((2,0)) # extra for *args, **kw self.CALL_FUNCTION(argc,kwargc,CALL_FUNCTION_VAR_KW) def BUILD_TUPLE(self, count): self.stackchange((count,1)) self.emit_arg(BUILD_TUPLE,count) def BUILD_LIST(self, count): self.stackchange((count,1)) self.emit_arg(BUILD_LIST,count) def UNPACK_SEQUENCE(self, count): self.stackchange((1,count)) self.emit_arg(UNPACK_SEQUENCE,count) def BUILD_SLICE(self, count): assert count in (2,3), "Invalid number of arguments for BUILD_SLICE" self.stackchange((count,1)) self.emit_arg(BUILD_SLICE,count) def DUP_TOPX(self,count): self.stackchange((count,count*2)) self.emit_arg(DUP_TOPX,count) def RAISE_VARARGS(self, argc): assert 0<=argc<=3, "Invalid number of arguments for RAISE_VARARGS" self.stackchange((argc,0)) self.emit_arg(RAISE_VARARGS,argc) def MAKE_FUNCTION(self, ndefaults): self.stackchange((1+ndefaults,1)) self.emit_arg(MAKE_FUNCTION, ndefaults) def MAKE_CLOSURE(self, ndefaults, freevars): self.stackchange((1+freevars+ndefaults,1)) self.emit_arg(MAKE_CLOSURE, ndefaults) def label(self): return len(self.co_code) def jump(self, op, arg=None): def backpatch(target): if op not in hasjabs: target = target - posn assert target>=0, "Relative jumps can't go backwards" self.co_code[posn-2] = target & 255 self.co_code[posn-1] = (target>>8) & 255 def lbl(): backpatch(self.label()) self.emit_arg(op,0) posn = self.label() if arg is not None: backpatch(arg) return lbl for op in hasname: if not hasattr(Code, opname[op]): def do_name(self, name, op=op): self.stackchange(stack_effects[op]) try: arg = self.co_names.index(name) except ValueError: arg = len(self.co_names) self.co_names.append(name) self.emit_arg(op, arg) setattr(Code, opname[op], do_name) for op in haslocal: if not hasattr(Code, opname[op]): def do_local(self, varname, op=op): self.stackchange(stack_effects[op]) try: arg = self.co_varnames.index(varname) except ValueError: arg = len(self.co_varnames) self.co_varnames.append(varname) self.emit_arg(op, arg) setattr(Code, opname[op], do_local) for op in hasjrel+hasjabs: if not hasattr(Code, opname[op]): def do_jump(self, address=None, op=op): self.stackchange(stack_effects[op]) return self.jump(op, address) setattr(Code, opname[op], do_jump) class _se: """Quick way of defining static stack effects of opcodes""" POP_TOP = 1,0 ROT_TWO = 2,2 ROT_THREE = 3,3 ROT_FOUR = 4,4 DUP_TOP = 1,2 UNARY_POSITIVE = UNARY_NEGATIVE = UNARY_NOT = UNARY_CONVERT = \ UNARY_INVERT = GET_ITER = LOAD_ATTR = IMPORT_FROM = 1,1 BINARY_POWER = BINARY_MULTIPLY = BINARY_DIVIDE = BINARY_FLOOR_DIVIDE = \ BINARY_TRUE_DIVIDE = BINARY_MODULO = BINARY_ADD = BINARY_SUBTRACT = \ BINARY_SUBSCR = BINARY_LSHIFT = BINARY_RSHIFT = BINARY_AND = \ BINARY_XOR = BINARY_OR = COMPARE_OP = 2,1 INPLACE_POWER = INPLACE_MULTIPLY = INPLACE_DIVIDE = \ INPLACE_FLOOR_DIVIDE = INPLACE_TRUE_DIVIDE = INPLACE_MODULO = \ INPLACE_ADD = INPLACE_SUBTRACT = INPLACE_LSHIFT = INPLACE_RSHIFT = \ INPLACE_AND = INPLACE_XOR = INPLACE_OR = 2,1 SLICE_0, SLICE_1, SLICE_2, SLICE_3 = \ (1,1),(2,1),(2,1),(3,1) STORE_SLICE_0, STORE_SLICE_1, STORE_SLICE_2, STORE_SLICE_3 = \ (2,0),(3,0),(3,0),(4,0) DELETE_SLICE_0, DELETE_SLICE_1, DELETE_SLICE_2, DELETE_SLICE_3 = \ (1,0),(2,0),(2,0),(3,0) STORE_SUBSCR = 3,0 DELETE_SUBSCR = STORE_ATTR = 2,0 DELETE_ATTR = STORE_DEREF = 1,0 PRINT_EXPR = PRINT_ITEM = PRINT_NEWLINE_TO = IMPORT_STAR = 1,0 RETURN_VALUE = YIELD_VALUE = STORE_NAME = STORE_GLOBAL = STORE_FAST = 1,0 PRINT_ITEM_TO = LIST_APPEND = 2,0 LOAD_LOCALS = LOAD_CONST = LOAD_NAME = LOAD_GLOBAL = LOAD_FAST = \ LOAD_CLOSURE = LOAD_DEREF = IMPORT_NAME = BUILD_MAP = 0,1 EXEC_STMT = BUILD_CLASS = 3,0 stack_effects = [(0,0)]*256 for name in opcode: op = opcode[name] name = name.replace('+','_') if hasattr(_se,name): # update stack effects table from the _se class stack_effects[op] = getattr(_se,name) if not hasattr(Code,name): # Create default method for Code class if op>=HAVE_ARGUMENT: def do_op(self,arg,op=op,se=stack_effects[op]): self.stackchange(se); self.emit_arg(op,arg) else: def do_op(self,op=op,se=stack_effects[op]): self.stackchange(se); self.emit(op) setattr(Code, name, do_op) PKi{4Iw77dispatch/assembler.pyc; Q(Dc@sdklZdkTdklZdgZhZxaedD]SZeeZ e i doq=ne i doeee d scCsLtd|_g|_g|_g|_td|_|ii|_dS(NsB( sarraysselfsco_codes co_constssco_namess co_varnamess co_lnotabsappendsemit(sself((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys__init__6s    cCst|it|i|i|i|iit |i t |i t |i|i |i |i|ii|i|iSdS(N(scodesselfs co_argcountslens co_varnamess co_stacksizesco_flagssco_codestostringstuples co_constssco_namess co_filenamesco_namesco_firstlinenos co_lnotabs co_freevarss co_cellvars(sself((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pyscode>s  cCsv|i}|djo2|t||d?d@||d?d@n||||d@||d?d@dS(Niiiii(sselfsemitsargs EXTENDED_ARGsop(sselfsopsargsemit((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pysemit_argIs    cCs4|i o||_|_dSn|ii}||i}t|i|i }| odSn|djo |djpt x0|djo"|d|d|d8}qWx6|djo(|||d|d8}d}qW|p|o||||n||_t|i|_ dS(Nii( sselfsco_firstlinenoslnos _last_lines co_lnotabsappends incr_lineslensco_codes _last_lineofss incr_addrsAssertionError(sselfslnos incr_addrs incr_linesappend((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys set_linenoSs2   !          cCs~|\}}||ijp td|p|oF|i||}|_||jo ||ijo ||_qzndS(NsStack underflow(sinputssoutputssselfs stack_sizesAssertionErrorssss co_stacksize(sselfs.2sinputssoutputssss((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys stackchangers cCsr|iddfy|ii|}Wn2tj o&t|i}|ii|nX|i t |dS(Nii( sselfs stackchanges co_constssindexsconstsargs ValueErrorslensappendsemit_args LOAD_CONST(sselfsconstsarg((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys LOAD_CONST|scCsJ|id|d|df|i}||||||dS(Nii(sselfs stackchangesargcskwargcsemitsop(sselfsargcskwargcsopsemit((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys CALL_FUNCTIONs cCs*|iddf|i||tdS(Nii(sselfs stackchanges CALL_FUNCTIONsargcskwargcsCALL_FUNCTION_VAR(sselfsargcskwargc((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pysCALL_FUNCTION_VARscCs*|iddf|i||tdS(Nii(sselfs stackchanges CALL_FUNCTIONsargcskwargcsCALL_FUNCTION_KW(sselfsargcskwargc((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pysCALL_FUNCTION_KWscCs*|iddf|i||tdS(Nii(sselfs stackchanges CALL_FUNCTIONsargcskwargcsCALL_FUNCTION_VAR_KW(sselfsargcskwargc((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pysCALL_FUNCTION_VAR_KWscCs'|i|df|it|dS(Ni(sselfs stackchangescountsemit_args BUILD_TUPLE(sselfscount((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys BUILD_TUPLEscCs'|i|df|it|dS(Ni(sselfs stackchangescountsemit_args BUILD_LIST(sselfscount((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys BUILD_LISTscCs'|id|f|it|dS(Ni(sselfs stackchangescountsemit_argsUNPACK_SEQUENCE(sselfscount((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pysUNPACK_SEQUENCEscCsD|ddfjp td|i|df|it|dS(Niis+Invalid number of arguments for BUILD_SLICEi(scountsAssertionErrorsselfs stackchangesemit_args BUILD_SLICE(sselfscount((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys BUILD_SLICEscCs+|i||df|it|dS(Ni(sselfs stackchangescountsemit_argsDUP_TOPX(sselfscount((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pysDUP_TOPXscCsOd|jo djnp td|i|df|it|dS(Niis-Invalid number of arguments for RAISE_VARARGS(sargcsAssertionErrorsselfs stackchangesemit_args RAISE_VARARGS(sselfsargc((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys RAISE_VARARGSs(cCs+|id|df|it|dS(Ni(sselfs stackchanges ndefaultssemit_args MAKE_FUNCTION(sselfs ndefaults((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys MAKE_FUNCTIONscCs/|id||df|it|dS(Ni(sselfs stackchangesfreevarss ndefaultssemit_args MAKE_CLOSURE(sselfs ndefaultssfreevars((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys MAKE_CLOSUREscCst|iSdS(N(slensselfsco_code(sself((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pyslabelscs`dd}idi|tj o|n|SdS(Ncsdtjo%|}|djp tdn|d@id<|d?d@idZ?Z@ddfZAZBZCZDZEddfZFZGddfZHZIZJZKZLZMZNZOZPddfZQZRRS(s5Quick way of defining static stack effects of opcodesiiiii(Ss__name__s __module__s__doc__sPOP_TOPsROT_TWOs ROT_THREEsROT_FOURsDUP_TOPsUNARY_POSITIVEsUNARY_NEGATIVEs UNARY_NOTs UNARY_CONVERTs UNARY_INVERTsGET_ITERs LOAD_ATTRs IMPORT_FROMs BINARY_POWERsBINARY_MULTIPLYs BINARY_DIVIDEsBINARY_FLOOR_DIVIDEsBINARY_TRUE_DIVIDEs BINARY_MODULOs BINARY_ADDsBINARY_SUBTRACTs BINARY_SUBSCRs BINARY_LSHIFTs BINARY_RSHIFTs BINARY_ANDs BINARY_XORs BINARY_ORs COMPARE_OPs INPLACE_POWERsINPLACE_MULTIPLYsINPLACE_DIVIDEsINPLACE_FLOOR_DIVIDEsINPLACE_TRUE_DIVIDEsINPLACE_MODULOs INPLACE_ADDsINPLACE_SUBTRACTsINPLACE_LSHIFTsINPLACE_RSHIFTs INPLACE_ANDs INPLACE_XORs INPLACE_ORsSLICE_0sSLICE_1sSLICE_2sSLICE_3s STORE_SLICE_0s STORE_SLICE_1s STORE_SLICE_2s STORE_SLICE_3sDELETE_SLICE_0sDELETE_SLICE_1sDELETE_SLICE_2sDELETE_SLICE_3s STORE_SUBSCRs DELETE_SUBSCRs STORE_ATTRs DELETE_ATTRs STORE_DEREFs PRINT_EXPRs PRINT_ITEMsPRINT_NEWLINE_TOs IMPORT_STARs RETURN_VALUEs YIELD_VALUEs STORE_NAMEs STORE_GLOBALs STORE_FASTs PRINT_ITEM_TOs LIST_APPENDs LOAD_LOCALSs LOAD_CONSTs LOAD_NAMEs LOAD_GLOBALs LOAD_FASTs LOAD_CLOSUREs LOAD_DEREFs IMPORT_NAMEs BUILD_MAPs EXEC_STMTs BUILD_CLASS(((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys_ses(      (D<666 ,is+s_cCs!|i||i||dS(N(sselfs stackchangessesemit_argsopsarg(sselfsargsopsse((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pysdo_op-scCs|i||i|dS(N(sselfs stackchangessesemitsop(sselfsopsse((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pysdo_op0sN(!sarraysdissnewscodes__all__sopcodesrangesopsopnamesnames startswithsendswithsglobalssupdatesextendskeyssCodeshasnameshasattrsdo_namessetattrshaslocalsdo_localshasjrelshasjabssNonesdo_jumps_ses stack_effectssreplacesgetattrs HAVE_ARGUMENTsdo_op( scodesarraysdo_names__all__sdo_jumpsdo_localsdo_ops stack_effectssCodesnames_sesopcodesop((sBbuild/bdist.darwin-8.5.0-Power_Macintosh/egg/dispatch/assembler.pys?sV         )  PKP{4b)dispatch/assembler.txt====================================================== Generating Python Bytecode with ``dispatch.assembler`` ====================================================== >>> from dispatch.assembler import * >>> from dis import dis Line number tracking: >>> def simple_code(flno, slno, consts=1, ): ... c = Code() ... c.set_lineno(flno) ... for i in range(consts): c.LOAD_CONST(None) ... c.set_lineno(slno) ... c.RETURN_VALUE() ... return c.code() >>> dis(simple_code(1,1)) 1 0 LOAD_CONST 0 (None) 3 RETURN_VALUE >>> simple_code(1,1).co_stacksize 1 >>> dis(simple_code(13,414)) 13 0 LOAD_CONST 0 (None) 414 3 RETURN_VALUE >>> dis(simple_code(13,14,100)) 13 0 LOAD_CONST 0 (None) 3 LOAD_CONST 0 (None) ... 14 300 RETURN_VALUE >>> simple_code(13,14,100).co_stacksize 100 >>> dis(simple_code(13,572,120)) 13 0 LOAD_CONST 0 (None) 3 LOAD_CONST 0 (None) ... 572 360 RETURN_VALUE Stack size tracking: >>> c = Code() >>> c.LOAD_CONST(1) >>> c.POP_TOP() >>> c.LOAD_CONST(2) >>> c.LOAD_CONST(3) >>> c.co_stacksize 2 >>> c.BINARY_ADD() >>> c.LOAD_CONST(4) >>> c.co_stacksize 2 >>> c.LOAD_CONST(5) >>> c.LOAD_CONST(6) >>> c.co_stacksize 4 >>> c.POP_TOP() >>> c.stack_size 3 Stack underflow detection/recovery, and global/local variable names: >>> c = Code() >>> c.LOAD_GLOBAL('foo') >>> c.stack_size 1 >>> c.STORE_ATTR('bar') # drops stack by 2 Traceback (most recent call last): ... AssertionError: Stack underflow >>> c.co_names # 'bar' isn't added unless success ['foo'] >>> c.LOAD_ATTR('bar') >>> c.co_names ['foo', 'bar'] >>> c.DELETE_FAST('baz') >>> c.co_varnames ['baz'] >>> dis(c.code()) 0 0 LOAD_GLOBAL 0 (foo) 3 LOAD_ATTR 1 (bar) 6 DELETE_FAST 0 (baz) Sequence operators and stack tracking: Function calls and raise: >>> c = Code() >>> c.LOAD_GLOBAL('locals') >>> c.CALL_FUNCTION() # argc/kwargc default to 0 >>> c.POP_TOP() >>> c.LOAD_GLOBAL('foo') >>> c.LOAD_CONST(1) >>> c.LOAD_CONST('x') >>> c.LOAD_CONST(2) >>> c.CALL_FUNCTION(1,1) # argc, kwargc >>> c.POP_TOP() >>> dis(c.code()) 0 0 LOAD_GLOBAL 0 (locals) 3 CALL_FUNCTION 0 6 POP_TOP 7 LOAD_GLOBAL 1 (foo) 10 LOAD_CONST 0 (1) 13 LOAD_CONST 1 ('x') 16 LOAD_CONST 2 (2) 19 CALL_FUNCTION 257 22 POP_TOP >>> c = Code() >>> c.LOAD_GLOBAL('foo') >>> c.LOAD_CONST(1) >>> c.LOAD_CONST('x') >>> c.LOAD_CONST(2) >>> c.BUILD_MAP(0) >>> c.stack_size 5 >>> c.CALL_FUNCTION_KW(1,1) >>> c.POP_TOP() >>> c.stack_size 0 >>> c = Code() >>> c.LOAD_GLOBAL('foo') >>> c.LOAD_CONST(1) >>> c.LOAD_CONST('x') >>> c.LOAD_CONST(1) >>> c.BUILD_TUPLE(1) >>> c.CALL_FUNCTION_VAR(0,1) >>> c.POP_TOP() >>> c.stack_size 0 >>> c = Code() >>> c.LOAD_GLOBAL('foo') >>> c.LOAD_CONST(1) >>> c.LOAD_CONST('x') >>> c.LOAD_CONST(1) >>> c.BUILD_TUPLE(1) >>> c.BUILD_MAP(0) >>> c.CALL_FUNCTION_VAR_KW(0,1) >>> c.POP_TOP() >>> c.stack_size 0 >>> c = Code() >>> c.RAISE_VARARGS(0) >>> c.RAISE_VARARGS(1) Traceback (most recent call last): ... AssertionError: Stack underflow >>> c.LOAD_CONST(1) >>> c.RAISE_VARARGS(1) >>> dis(c.code()) 0 0 RAISE_VARARGS 0 3 LOAD_CONST 0 (1) 6 RAISE_VARARGS 1 Sequence bui