PK76^RI))EGG-INFO/PKG-INFOMetadata-Version: 1.0 Name: PyProtocols Version: 1.0a0dev-r2302 Summary: Open Protocols and Component Adaptation for Python Home-page: http://peak.telecommunity.com/PyProtocols.html Author: Phillip J. Eby Author-email: peak@eby-sarna.com License: PSF or ZPL Description: UNKNOWN Platform: UNKNOWN PK76ɑEGG-INFO/SOURCES.txt.cvsignore CHANGES.txt README.txt TODO.txt UPGRADING.txt setup.cfg setup.py docs/ref/.cvsignore docs/ref/libprotocols.tex docs/ref/ref.tex ez_setup/README.txt ez_setup/__init__.py src/PyProtocols.egg-info/PKG-INFO src/PyProtocols.egg-info/SOURCES.txt src/PyProtocols.egg-info/dependency_links.txt src/PyProtocols.egg-info/native_libs.txt src/PyProtocols.egg-info/requires.txt src/PyProtocols.egg-info/top_level.txt src/PyProtocols.egg-info/zip-safe src/protocols/__init__.py src/protocols/_speedups.c src/protocols/_speedups.pyx src/protocols/adapters.py src/protocols/advice.py src/protocols/api.py src/protocols/classic.py src/protocols/generate.py src/protocols/interfaces.py src/protocols/twisted_support.py src/protocols/zope_support.py src/protocols/tests/__init__.py src/protocols/tests/checks.py src/protocols/tests/doctest.py src/protocols/tests/test_advice.py src/protocols/tests/test_classes.py src/protocols/tests/test_direct.py src/protocols/tests/test_twisted.py src/protocols/tests/test_zope.py src/setup/common.py PK762EGG-INFO/dependency_links.txt PK863ntEGG-INFO/native_libs.txtprotocols/_speedups.so PK76. EGG-INFO/requires.txtDecoratorTools>=1.3PK76; EGG-INFO/top_level.txtprotocols PK952EGG-INFO/zip-safe PK˃95d)yyprotocols/__init__.py"""Trivial Interfaces and Adaptation""" from api import * from adapters import NO_ADAPTER_NEEDED,DOES_NOT_SUPPORT,Adapter,StickyAdapter from adapters import AdaptationFailure from interfaces import * from advice import metamethod, supermeta from classic import ProviderMixin from generate import protocolForType, protocolForURI from generate import sequenceOf, IBasicSequence PK86LkUEEprotocols/__init__.pyc; Ec@sdZdkTdklZlZlZlZdklZdkTdk l Z l Z dk l Z dklZlZdklZlZdS( s!Trivial Interfaces and Adaptation(s*(sNO_ADAPTER_NEEDEDsDOES_NOT_SUPPORTsAdapters StickyAdapter(sAdaptationFailure(s metamethods supermeta(s ProviderMixin(sprotocolForTypesprotocolForURI(s sequenceOfsIBasicSequenceN(s__doc__sapisadapterssNO_ADAPTER_NEEDEDsDOES_NOT_SUPPORTsAdapters StickyAdaptersAdaptationFailures interfacessadvices metamethods supermetasclassics ProviderMixinsgeneratesprotocolForTypesprotocolForURIs sequenceOfsIBasicSequence( sIBasicSequencesAdaptationFailures sequenceOfsAdapters StickyAdaptersprotocolForTypesprotocolForURIsDOES_NOT_SUPPORTs ProviderMixins supermetas metamethodsNO_ADAPTER_NEEDED((s7build/bdist.darwin-8.9.1-i386/egg/protocols/__init__.pys?s  PK86"protocols/_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__() PK86i<<protocols/_speedups.pyc; k7Fc@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((s8build/bdist.darwin-8.9.1-i386/egg/protocols/_speedups.pys __bootstrap__s N(s __bootstrap__(((s8build/bdist.darwin-8.9.1-i386/egg/protocols/_speedups.pys?s PK8666protocols/_speedups.soH__TEXT``__text__TEXTH NH __picsymbol_stub__TEXT\\__cstring__TEXT\\__textcoal_nt__TEXT__ __DATA``__data__DATA``__dyld__DATAdd__bss__DATAe__IMPORTpp__jump_table__IMPORTpp__pointers__IMPORTp8p)8__LINKEDIT 4 C/usr/lib/libgcc_s.1.dylib 4 (FX/usr/lib/libSystem.B.dylibSXhN P7|7sXRWXWUVS0REXEED$ED$ WD$ IPD$ED$E $YbthEEEut,Et 0[^]ËEP$R0[^]ËEP$REu10[^]UVS0QE XEED$ED$MVD$ OD$ED$E $at3EEbEt%Et 0[^]ËEP$REP$REuUVS0QuEED$UD$ ND$ED$E $`EEFtLUVt"t 10[^]ËEP$RF4$PUuًFP$RUVuȸ0[^]US%PED$$aP[]UVuVt tFu^]FP$RFu^]UE@tUT$$U t1UVS}OuVt tf`F1[^]ËFP$Rf`F1[^]UWVS<$OE؉֍LD$HU$=_DžuEDU$_ƅ6_EUT$D$t$ U؉T$MD$<$D_ƋU܅tU܋tKt1EtUu B$P<[^_]E믋G<$P1렋B$P1<[^_]$^E܅tE1EuUWVSIǃ:IAB1BI>Iǃ:IҋBI>Iǃ:I붋F4$PBI>Iǃ:It끋F4$PqBI>Iǃ:IUWVSL@EĉUMEtQBdQ9sT$$ Q_`QU9BFD$Eĉ$PEȅtQUȋ$aPƅEF t$Uȉ$]PDžtQ;tQ$uȉ}ЋtQUԋF4$PUЋB$PUԋB$PUċB$PUB$PUċB9EUT$$O{EăljuЉuԋCUЋLUԋUUċ^UgUu B$PL[^_]ÉvQU9BED$$FNUă׋tQuЉu?F4$PAB$PHFFǃFGG|$F$NƅO$&NNjuJuȋtQUԉUЍ?r1B$PUȋYB$PK?7.…oFt$F$hMDž[D$${ME؅&$KMDžD$E؉$(ME܅U؋bKGD$E܉$LDžU܋XWtQE9-GLH4P8@<$$8u1q1ǃm1VF4$PF4$PL|$><$7u1q1ǃm1  UWVS|g'EEED$ED$O,D$ &D$ED$E $=7EEP8Ud89BB-|$-$P7ƅD$E$77Nj_P8`>}B@89T$$ 7U<89B-D$E$6ƅ~P8h3u;.D$E$]6E̅‹?.D$$>6EŰP8]UB889tT$$;6PE@EЅG}E$5E̅p D$E$5Eą"ŰP89E!EuE9Ew UiB$P[rP8QuB@89EtP8WB$Pu;.D$E$4E̅N--ǃ-rP8EljE&1UB$PG<$PUB$PUB$PUB$PEEP$R1|[^_]ËB$PuUu B$PP8UUEljƋU UU(U1E:E;EP$R|[^_]ËB$PP8jB$PEF4$PG<$P}B$PUBX89tT$$2CURUE|$]2EGp D$E$[2DžEUP8;P8VEuU9UNUB Uԋ4UcB$PUB$PB$Pr--ǃ-rP8EljEE̅ŰB$PF4$PuE$0Eur$1E̅ p D$E$1E ŰP8u9}uE$0ƅn UoB$PaB$PpB$PM|$`8$0--ǃ-)P8}}}}B$P$/ƅP8dEx…Od8UȃT$4$/1UȋL8EȃD$4$/UȋUȋB$PuD8$T/e/EpEP-9tD$$M/1/-t$-$.Eȅ $.E$.E̅EỦB EBT$Uȉ$.ƅUȋŰtB$PfG<$P}B$PZƅP8-H4P8@uދ t2 GD$G$i# 7uԋ$!%)- $4$#t$mD$ $H#{$p"ƅaV aeV eBiV iB}V }B V BqV qByV yBmV mBt$MD$ $C"$!ƅQV Q򋃅Dž*QD$<$!ƅD$QD$ $!$ DžUW UqƅUD$4$ DžD$UD$ $ $$ ƅYV YYDžYD$<$< ƅED$YD$ $H du F4$Pu G<$PYt$ $Dž{-:-|$ $ƅ D$$Džqu F4$Pu B$P$ƅ!!$ƅz%u B$P%$ƅ%D$]D$ $u F4$P$Hƅ?))$159=t$ $At$ $<Et$ $I,[^_]Ëǃ,[^_]ǃ^,[^_]ǃ몋ǃ@됋F4$Pǃ1tYUFG<$P8ǃ@붋ǃ@믋F4$P뜋F4$PǃAG<$PF4$PǃA-G<$PǃAǃD|$ $ƅ$Nj$…Fu B$P|$ $Pƅ_$DžaF4$PSF4$PkG<$PNF4$POǃDG<$PF4$P\ǃDu F4$PuB$P|$$$&ǃIǃFǃJuǃI|$$$ǃF'ǃGǃLǃKB$P=t$$$ǃE?t$$$ǃ`|$$$ǃG/ǃL1t$$$Vǃt$$$%ǃB$PǃMUWVS,UwEU E:|$ $ƅ$Dž>>G |$4$E11ҋE螺U ǃ lJ踼UU tlUu B$P,[^_]Ë ǃ lWtwG<$PiB$P뉋B$PmEU :|$ $Vƅ$ODžBBG |$4$EEH+11ҋE-U ǃ ojGUtU B$PU B$P7G<$P F4$PF4$P ǃ ogXG<$PJ|$$ ǃ lB$PG<$PF4$PF4$Pr|$$Y ǃ o_speedups.metamethodWrapper for metaclass method that might be confused w/instance methodAdaptationFailureAttributeErrorDOES_NOT_SUPPORTExtensionClassFalseImportErrorNO_ADAPTER_NEEDEDProtocol__adapt__Protocol__call__TypeError_Protocol__adapters__all____bases____class__mro__adaptclassicMROexc_infoextClassMROgetgetMROmetamethodobjectsystb_next_speedups.pyxobjprotocolO|OfuncO__import__OOOOraise: arg 3 must be a traceback or Noneraising a string exception is deprecatedinstance exception may not have a separate value_speedups.metamethod.__get___speedups.buildClassicMRO_speedups.buildECMROobextendedClassic_speedups.extClassMRO_speedups._adaptselfdefaultOO|O_speedups.Protocol__call___speedups.adapt_speedups.classicMRO_speedups.getMROOO_speedups.Protocol__adapt___speedups__builtin____builtins___speedups.metamethod.__set___speedups.metamethod.__delete__$\ e@e eeE$\KredX__mro____class____adapt____conform__fafafaf|a fhaNot a classic classCan't adaptRead-only attributeRead-only attributeprotocols.adaptershfl\f\xf\lf\f\f\tf\f\f\f]f]`f$]f,]pf8]f@]|fH]fP]df\]fh]ft]fx]f]f]f]f]C Speedups for commonly-used operations\j Pd\2$dH]u/c\P.pcP]0h]x]4\8Adapt to this protocolPEP 246-alike: Adapt 'obj' to 'protocol', return 'default' If 'default' is not supplied and no implementation is found, raise 'AdaptationFailure'.Prevent 'obj' from supporting 'protocol'Assume 'obj' implements 'protocol' directly]]]]]]^^_^ _]] _^^^^_]`ddddddddddddddddddd|dTcPcDc@c4c0c$c cccc cccbbbbbbbbbbbbbbbb|bxbtbpblbhbdb`b\bXbTbPbLbHbDb@b%?%[%$N.DDDD\%$%% %%@%@%%%%%$2N.DDDD%D*D,D8DDDI%$&!&&@&$NNK.KDKDQD[DlDnDp&$K&& &&@&&')'@2'K3'r4'$'Nr.rDrDDDDDD5'$ra'j'@s'$XNt'.DD' fDDD!'fD"!D$)D%1D'9D*cD+xD,D.D"D+D%D*DD.DD'$''@'@''@'@ ((%(&('($9N((.D8D9D;&D<.D=JD>]DPhDQzDRDTDRDTDQDPD@DDDEDFDG+DH1DI7DJ=DK@DLGDMNDNUDDaDFuDEDADB;($8T(9_(9k(9t(@:(;(((***+"+@+d+--.../8/K/i// 1V1W1X1$NY1.DVDWDXDYD[D_D`D5DNDaDD\DbDeDjDlDmDnDpDqD4DJDuRDyzDzDgDDD\DDDDDf1$Vy1@V1V1V1$ON1.DD1(fD(D0D:DBDSD[DiDqDD1$fDDDDDD(D?DMD`DoDDDDDDDDD1$1@1 2@2.2@A2T2d2u22222$ N.DD&D4D9D?DBDEDIDkDtDDDDDDD2,fD2$22 223@3@33 3$N 3 . D D D)D,DADPDSD[DaDzDDDDDDDDDD D D*D3DPD^Dv?3$ i3@~33333344)5@<5@K5@Z5 [5\5$N]5.D7D=D>DADDDEDFDH DIDMDR-DSADFLDHNDI[DJ_D[DSDFDMDRD[DDDYD\D_#D`.DbED_ODEZDZrDFDADUDWDU|5$757575@85@95@:5@;6<666$EN6d.DeDfDm.6XfDnD4Do>DpDDqJDtSDuiDzxD{D~DDDDDDDDDDD,D2D5DJDgDxDuD{DtDDzD~DDD*DI96$e_6eq6e 6e6f6g6@h6@i6@j6@k7&ld787@eJ7@e\7]7c^7$Nc_7c.cD'cD1zD2}D3D6D9DMDfz74fDjDnDoDtDz D{& D|, D}/ D~H DW Dl Dx DY DZ D[ D\ D] D=!DA%DL%D]%D4k%D%D%D4%D%D%D&D2 &D3&D'&D1&D@&DSH&DY&Dh&D}&D&D&D&D&D&D&D&D&D&D&D&DT'DU5'D`'Dn'D|'D'D'D'D'D2'D3'D'D'D 'D (D /(D A(D S(Do(D~(D(D(D(D(D(D(D(D(D(D(D(D(DS*)DT9)DR)Dj)DT)D)D )D#)D6)70fDL)D)D)D)D)D *D*D"*DS0*D>*Dg*D*D)*D**D*D*D*D*D*D*D*D+D0+D43+DG+Dp+D ~+D+D+D+D9,D2,D3",D:*,D;A,D<J,D=V,D>\,D?_,D@e,DAk,DB,DC,DD,DE,DF,D ,D*,D -D0-D-D'-D 5-D4U-Di-D)-D -DA-DE .D4.DC4.DBB.7$'c7'8'8'38@)G8*\8+n8@,}8@-8@.8/808c8@8B"8^"8@8"8#8@8k%8%8@8%8%8@8 &8'&8@ 9' 9' 9@93+9G+99%9,&9*,'9@39U-49i-599@9.A94.B9P.C9$NP.D9d.P.DP.D].Dd.Dk.Y9PfDt.D.D.D.D.D.D.D.D/D/D#/D//DK/Dc/d9$P.99 99999@:@:&d5:Q:@c:@u:P.v:u/w:$%Nu/x:d.u/Ddu/De/Df/Dk/:LfDl/D/Dm/Dn/Do/Dr/D~ 0D0D%0D?0D~H0DT0Drp0D{0:$du/:d:d :d:e;f;g-;@h<;@iK;&jdc;;@d;@d;u/;0;$%N0;d.0D0D0D0;TfD0D0D0D1D 1D1D2!1D351D=1DT1D]1Di1Do1Du1D 1D!1D"1D#1D$1D,1D/1D02D12D3,2D62D382DB2D)`2D*k2D02D/2D#2D!2D 2D)2D2D3D3D)3D83DL3DN3D4X3Dq3Dw3Dz3D3D3D 3D 3D 3D3D3D3D3D4D64DS4Dw4D 4;$0;; <!<2<P<@c<@r<@<@<<@<&d<<@<@=0=@=!1==1=@ =X3!=q3"=4#=$N4$=d.4D4D4D49=\fD4D5D 5D5D5D!5D>5DZ5Dl5D5D5D5D5D=@fD5D25D35D5D5D5D6D6D 6D6D.6DE6DV6Dn6D}6D6D6D6D26D36D6D6D6D7D7D 7D7D.7DE7DW7D]7Dj7D{7D7D7D7D7D7D7D7D4 8D8D:8DH8D4V8Dj8a=$4== ====@=>@>@">&d:>V>@h>@z>4{>@>5>5>@>6>6>@> 8>8>@>V8>j8>8>$N8>d.8D8D8D8D8D8D8D8D8D8D(9D2 9D3 9D)(9D*99D.H9D2P9D3S9D8h9DSw9D]|9Ds9D9>D >D+>D.>D1>DJ>D\>Dq>D}>D>D>D>D>D>D>Dd?D,?D0=?D<T?D=k?D>n?D?q?D@?DA?DG?D0?D2?D3?D7?D?D@D4@D(#@DL;@DR@Dv`@Dwv@D|@D}@D@D@D@D@D@D@D@DAD;(AD<8AD?@ADBEADPADtADyAD2AD3ADADADADADADADADBDA'BD@5BDLCBDMRBDgBDlBDoBDrBDuBD|BDBDBDSBDBD BDBD-CDDCD^CDpCDCDCDCDCDCDwCD}CD DDDD/DD4DD7DD:DD=DDDDDKDDRDDbDDDDbDDcDDbDDEDv1EDIEDJ_EDKvEDLEDMEDNEDOEDPEDQEDREDUFD0/FD|LFD rFDFDbFDFDFDFDGDGD*GD 0GD!9GD"SGD#eGDGDGDGDM#HDL1HDNHDJHD4HDHDHDHDIDID4AID<{IDIDID? JD3JDMPJDL|JDJDJDJDJDKJDKDU*KDR;KDQIKDWKDPKD#KD"KD!K>$8?"? 4?F?Y?k?{??@????@? ? @ @ !@/@&dG@c@@u@@@8@@(@ 9@(9@@(@@@#@@@@A@A@@@H@H@L@$~NL.LDNLD LDTLDUWLDV_LDWsLDX{LDLDLDLDLDLDLDYLDLDLDMDMD[ MD\MD]!MD^'MD_-MD`8MDaJMDbZMDc~MDfMDgMDhMDiMDjMDkMDlMDmMDnMDoMDpMDqNDr NDsNDt NDu,NDv5NDwANDxeND{tND|ND}ND~NDNDNDNDODOD"OD8ODAODLODcODrODODODODODODODODPD PDF(:HfOF(;Lf`F(<PfqF(=TfF(>XfF(?\fF&GaF&H`F&I`F&J`F&K`G(M`fG(Ndf2G(OhfSG(PlfqG(QpfG(RtfG(SxfG(T|fG(UfG(VfH(Wf3H(XfIH(YfjH(ZfH([fH(\fH(]fH(^fH(`fH&cPdI&{$dNI(flI(f~I&aI(fI&aI( fI(!fI(#fI&%|a J&cc/J&pc^J(fpJ&haJ(5fJ(fJ(fJ(fJ&saK& aK&eJK&epK&@eK& eK&eK&?bK&|dL ?L\LyLLLLLM$MAM^M{MMMMMN-NJNfNd\C_0[ `}L.>M^o{+7DRd{'?Nc )6F4#C.D)7H?<>Q'F@/IE O;%$K&="1L9A8!6(NB32MP*GR+5J,0-:__dyld_func_lookupdyld_stub_binding_helper__mh_bundle_header___i686.get_pc_thunk.bx___pyx_type_9_speedups_metamethod_init_speedups_PyArg_ParseTupleAndKeywords_PyBaseObject_Type_PyClass_Type_PyCode_New_PyDict_New_PyErr_Clear_PyErr_ExceptionMatches_PyErr_Fetch_PyErr_NormalizeException_PyErr_Occurred_PyErr_Restore_PyErr_SetObject_PyErr_SetString_PyErr_Warn_PyExc_AttributeError_PyExc_DeprecationWarning_PyExc_NameError_PyExc_TypeError_PyFrame_New_PyImport_AddModule_PyInstance_Type_PyInt_FromLong_PyIter_Next_PyList_Append_PyList_New_PyList_Type_PyMethod_New_PyModule_GetDict_PyObject_CallFunction_PyObject_CallObject_PyObject_GC_Del_PyObject_GetAttr_PyObject_GetAttrString_PyObject_GetItem_PyObject_GetIter_PyObject_IsInstance_PyObject_IsTrue_PyObject_SetAttr_PyObject_SetAttrString_PyObject_Type_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-58/bundle1.s/SourceCache/Csu/Csu-58///SourceCache/Csu/Csu-58/bundle1.s/SourceCache/Csu/Csu-58/bundle1.sdyld_stub_binding_helper:F3dyld__mh_bundle_headerdyld_lazy_symbol_binding_entry_point__dyld_func_lookup:F3dyld_func_lookup_pointer/Users/alberto/src/python/checkouts/PyProtocols/src/protocols/_speedups.cgcc2_compiled.___pyx_tp_dealloc_9_speedups_metamethod___pyx_tp_as_number_metamethod___pyx_tp_as_sequence_metamethod___pyx_tp_as_mapping_metamethod___pyx_tp_as_buffer_metamethod___pyx_tp_traverse_9_speedups_metamethod___pyx_tp_clear_9_speedups_metamethod___pyx_methods_9_speedups_metamethod___pyx_tp_descr_get_9_speedups_metamethod___pyx_tp_descr_set_9_speedups_metamethod___pyx_f_9_speedups_10metamethod___init_____pyx_tp_new_9_speedups_metamethod___pyx_k18___pyx_k17___pyx_k16___pyx_k15___pyx_ptype_9_speedups_metamethod___pyx_string_tab___pyx_k11p___pyx_k11___pyx_k26p___pyx_k26___pyx_k27p___pyx_k27___pyx_k28p___pyx_k28___pyx_k29p___pyx_k29___pyx_intern_tab___pyx_n_AdaptationFailure___pyx_n_AttributeError___pyx_n_DOES_NOT_SUPPORT___pyx_n_ExtensionClass___pyx_n_False___pyx_n_ImportError___pyx_n_NO_ADAPTER_NEEDED___pyx_n_Protocol__adapt_____pyx_n_Protocol__call_____pyx_n_TypeError___pyx_n__Protocol__adapters___pyx_n___all_____pyx_n___bases_____pyx_n___class___pyx_n___mro_____pyx_n_adapt___pyx_n_classicMRO___pyx_n_exc_info___pyx_n_extClassMRO___pyx_n_get___pyx_n_getMRO___pyx_n_metamethod___pyx_n_object___pyx_n_sys___pyx_n_tb_next___pyx_mdoc___pyx_methods___pyx_f_9_speedups_NO_ADAPTER_NEEDED___pyx_doc_9_speedups_NO_ADAPTER_NEEDED___pyx_f_9_speedups_DOES_NOT_SUPPORT___pyx_doc_9_speedups_DOES_NOT_SUPPORT___pyx_f_9_speedups_adapt___pyx_doc_9_speedups_adapt___pyx_f_9_speedups_Protocol__call_____pyx_doc_9_speedups_Protocol__call_____pyx_f_9_speedups_classicMRO___pyx_f_9_speedups_extClassMRO___pyx_f_9_speedups_getMRO___pyx_f_9_speedups_Protocol__adapt_____pyx_filenames___pyx_argnames.7041___pyx_k19__pyx_f_9_speedups_NO_ADAPTER_NEEDED:f(0,1)__pyx_self:p(0,1)__pyx_args:p(0,1)__pyx_kwds:p(0,1)__pyx_v_obj:(0,1)__pyx_v_protocol:(0,1)__pyx_r:r(0,1)__pyx_argnames:V(0,2)void:t(0,3)=(0,3):t(0,1)=*(0,4):t(0,2)=ar(0,5);0;2;(0,6)PyObject:t(0,4)=(0,7)long unsigned int:t(0,5)=r(0,5);0;037777777777;:t(0,6)=*(0,8)_object:T(0,7)=s8ob_refcnt:(0,9),0,32;ob_type:(0,10),32,32;;char:t(0,8)=r(0,8);0;127;int:t(0,9)=r(0,9);-2147483648;2147483647;:t(0,10)=*(0,11)_typeobject:T(0,11)=s192ob_refcnt:(0,9),0,32;ob_type:(0,10),32,32;ob_size:(0,9),64,32;tp_name:(0,6),96,32;tp_basicsize:(0,9),128,32;tp_itemsize:(0,9),160,32;tp_dealloc:(0,12),192,32;tp_print:(0,14),224,32;tp_getattr:(0,16),256,32;tp_setattr:(0,18),288,32;tp_compare:(0,20),320,32;tp_repr:(0,22),352,32;tp_as_number:(0,24),384,32;tp_as_sequence:(0,25),416,32;tp_as_mapping:(0,26),448,32;tp_hash:(0,27),480,32;tp_call:(0,29),512,32;tp_str:(0,22),544,32;tp_getattro:(0,31),576,32;tp_setattro:(0,33),608,32;tp_as_buffer:(0,35),640,32;tp_flags:(0,36),672,32;tp_doc:(0,6),704,32;tp_traverse:(0,37),736,32;tp_clear:(0,39),768,32;tp_richcompare:(0,41),800,32;tp_weaklistoffset:(0,36),832,32;tp_iter:(0,43),864,32;tp_iternext:(0,44),896,32;tp_methods:(0,45),928,32;tp_members:(0,46),960,32;tp_getset:(0,47),992,32;tp_base:(0,10),1024,32;tp_dict:(0,1),1056,32;tp_descr_get:(0,48),1088,32;tp_descr_set:(0,49),1120,32;tp_dictoffset:(0,36),1152,32;tp_init:(0,50),1184,32;tp_alloc:(0,51),1216,32;tp_new:(0,53),1248,32;tp_free:(0,55),1280,32;tp_is_gc:(0,39),1312,32;tp_bases:(0,1),1344,32;tp_mro:(0,1),1376,32;tp_cache:(0,1),1408,32;tp_subclasses:(0,1),1440,32;tp_weaklist:(0,1),1472,32;tp_del:(0,12),1504,32;;:t(0,13)=*(0,57)destructor:t(0,12)=(0,13):t(0,15)=*(0,58)printfunc:t(0,14)=(0,15):t(0,17)=*(0,59)getattrfunc:t(0,16)=(0,17):t(0,19)=*(0,60)setattrfunc:t(0,18)=(0,19):t(0,21)=*(0,61)cmpfunc:t(0,20)=(0,21):t(0,23)=*(0,62)reprfunc:t(0,22)=(0,23):t(0,24)=*(0,63):t(0,25)=*(0,64):t(0,26)=*(0,65):t(0,28)=*(0,66)hashfunc:t(0,27)=(0,28):t(0,30)=*(0,67)ternaryfunc:t(0,29)=(0,30):t(0,32)=*(0,68)getattrofunc:t(0,31)=(0,32):t(0,34)=*(0,69)setattrofunc:t(0,33)=(0,34):t(0,35)=*(0,70)long int:t(0,36)=r(0,36);-2147483648;2147483647;:t(0,38)=*(0,71)traverseproc:t(0,37)=(0,38):t(0,40)=*(0,72)inquiry:t(0,39)=(0,40):t(0,42)=*(0,73)richcmpfunc:t(0,41)=(0,42)getiterfunc:t(0,43)=(0,23)iternextfunc:t(0,44)=(0,23):t(0,45)=*(0,74):t(0,46)=*(0,75):t(0,47)=*(0,76)descrgetfunc:t(0,48)=(0,30)descrsetfunc:t(0,49)=(0,34)initproc:t(0,50)=(0,34):t(0,52)=*(0,77)allocfunc:t(0,51)=(0,52):t(0,54)=*(0,78)newfunc:t(0,53)=(0,54):t(0,56)=*(0,79)freefunc:t(0,55)=(0,56):t(0,57)=f(0,3):t(0,58)=f(0,9):t(0,59)=f(0,1):t(0,60)=f(0,9):t(0,61)=f(0,9):t(0,62)=f(0,1)PyNumberMethods:t(0,63)=(0,80)PySequenceMethods:t(0,64)=(0,81)PyMappingMethods:t(0,65)=(0,82):t(0,66)=f(0,36):t(0,67)=f(0,1):t(0,68)=f(0,1):t(0,69)=f(0,9)PyBufferProcs:t(0,70)=(0,83):t(0,71)=f(0,9):t(0,72)=f(0,9):t(0,73)=f(0,1)PyMethodDef:T(0,74)=s16ml_name:(0,6),0,32;ml_meth:(0,84),32,32;ml_flags:(0,9),64,32;ml_doc:(0,6),96,32;;PyMemberDef:T(0,75)=s20name:(0,6),0,32;type:(0,9),32,32;offset:(0,9),64,32;flags:(0,9),96,32;doc:(0,6),128,32;;PyGetSetDef:T(0,76)=s20name:(0,6),0,32;get:(0,85),32,32;set:(0,87),64,32;doc:(0,6),96,32;closure:(0,89),128,32;;:t(0,77)=f(0,1):t(0,78)=f(0,1):t(0,79)=f(0,3):T(0,80)=s152nb_add:(0,90),0,32;nb_subtract:(0,90),32,32;nb_multiply:(0,90),64,32;nb_divide:(0,90),96,32;nb_remainder:(0,90),128,32;nb_divmod:(0,90),160,32;nb_power:(0,29),192,32;nb_negative:(0,91),224,32;nb_positive:(0,91),256,32;nb_absolute:(0,91),288,32;nb_nonzero:(0,39),320,32;nb_invert:(0,91),352,32;nb_lshift:(0,90),384,32;nb_rshift:(0,90),416,32;nb_and:(0,90),448,32;nb_xor:(0,90),480,32;nb_or:(0,90),512,32;nb_coerce:(0,92),544,32;nb_int:(0,91),576,32;nb_long:(0,91),608,32;nb_float:(0,91),640,32;nb_oct:(0,91),672,32;nb_hex:(0,91),704,32;nb_inplace_add:(0,90),736,32;nb_inplace_subtract:(0,90),768,32;nb_inplace_multiply:(0,90),800,32;nb_inplace_divide:(0,90),832,32;nb_inplace_remainder:(0,90),864,32;nb_inplace_power:(0,29),896,32;nb_inplace_lshift:(0,90),928,32;nb_inplace_rshift:(0,90),960,32;nb_inplace_and:(0,90),992,32;nb_inplace_xor:(0,90),1024,32;nb_inplace_or:(0,90),1056,32;nb_floor_divide:(0,90),1088,32;nb_true_divide:(0,90),1120,32;nb_inplace_floor_divide:(0,90),1152,32;nb_inplace_true_divide:(0,90),1184,32;;:T(0,81)=s40sq_length:(0,39),0,32;sq_concat:(0,90),32,32;sq_repeat:(0,94),64,32;sq_item:(0,94),96,32;sq_slice:(0,96),128,32;sq_ass_item:(0,98),160,32;sq_ass_slice:(0,100),192,32;sq_contains:(0,102),224,32;sq_inplace_concat:(0,90),256,32;sq_inplace_repeat:(0,94),288,32;;:T(0,82)=s12mp_length:(0,39),0,32;mp_subscript:(0,90),32,32;mp_ass_subscript:(0,103),64,32;;:T(0,83)=s16bf_getreadbuffer:(0,104),0,32;bf_getwritebuffer:(0,106),32,32;bf_getsegcount:(0,107),64,32;bf_getcharbuffer:(0,109),96,32;;PyCFunction:t(0,84)=(0,32):t(0,86)=*(0,111)getter:t(0,85)=(0,86):t(0,88)=*(0,112)setter:t(0,87)=(0,88):t(0,89)=*(0,3)binaryfunc:t(0,90)=(0,32)unaryfunc:t(0,91)=(0,23):t(0,93)=*(0,113)coercion:t(0,92)=(0,93):t(0,95)=*(0,114)intargfunc:t(0,94)=(0,95):t(0,97)=*(0,115)intintargfunc:t(0,96)=(0,97):t(0,99)=*(0,116)intobjargproc:t(0,98)=(0,99):t(0,101)=*(0,117)intintobjargproc:t(0,100)=(0,101)objobjproc:t(0,102)=(0,21)objobjargproc:t(0,103)=(0,34):t(0,105)=*(0,118)getreadbufferproc:t(0,104)=(0,105)getwritebufferproc:t(0,106)=(0,105):t(0,108)=*(0,119)getsegcountproc:t(0,107)=(0,108):t(0,110)=*(0,120)getcharbufferproc:t(0,109)=(0,110):t(0,111)=f(0,1):t(0,112)=f(0,9):t(0,113)=f(0,9):t(0,114)=f(0,1):t(0,115)=f(0,1):t(0,116)=f(0,9):t(0,117)=f(0,9):t(0,118)=f(0,9):t(0,119)=f(0,9):t(0,120)=f(0,9)__pyx_args:r(0,1)__pyx_kwds:r(0,1)___pyx_argnames.7073___pyx_k20__pyx_f_9_speedups_DOES_NOT_SUPPORT:f(0,1)__pyx_self:p(0,1)__pyx_args:p(0,1)__pyx_kwds:p(0,1)__pyx_v_obj:(0,1)__pyx_v_protocol:(0,1)__pyx_r:r(0,1)__pyx_argnames:V(0,121):t(0,121)=ar(0,5);0;2;(0,6)__pyx_args:r(0,1)__pyx_kwds:r(0,1)___pyx_argnames.7103__pyx_f_9_speedups_10metamethod___init__:f(0,9)__pyx_v_self:p(0,1)__pyx_args:p(0,1)__pyx_kwds:p(0,1)__pyx_v_func:(0,1)__pyx_r:r(0,9)int:t(0,9)__pyx_argnames:V(0,122)__pyx_v_self:r(0,1)__pyx_args:r(0,1)__pyx_kwds:r(0,1):t(0,122)=ar(0,5);0;1;(0,6)__pyx_tp_new_9_speedups_metamethod:f(0,1)t:p(0,123)a:p(0,1)k:p(0,1)o:r(0,1)t:r(0,123):t(0,123)=*(0,124)PyTypeObject:t(0,124)=(0,11)__pyx_tp_dealloc_9_speedups_metamethod:f(0,3)o:p(0,1)__pyx_obj_9_speedups_metamethod:T(0,125)=s12ob_refcnt:(0,9),0,32;ob_type:(0,10),32,32;func:(0,1),64,32;;o:r(0,1)__pyx_tp_traverse_9_speedups_metamethod:f(0,9)o:p(0,1)v:p(0,126)a:p(0,89)e:r(0,9):t(0,127)=*(0,128)visitproc:t(0,126)=(0,127):t(0,128)=f(0,9)o:r(0,1)__pyx_tp_clear_9_speedups_metamethod:f(0,9)o:p(0,1)o:r(0,1)___Pyx_Import___pyx_b___pyx_m__Pyx_Import:f(0,1)name:p(0,1)from_list:P(0,1)__import__:r(0,1)empty_list:(0,1)module:r(0,1)global_dict:r(0,1)empty_dict:(0,1)list:(0,1)___Pyx_GetExcValue__Pyx_GetExcValue:f(0,1)type:(0,1)value:(0,1)tb:(0,1)result:r(0,1)tstate:(0,129):t(0,129)=*(0,130)PyThreadState:t(0,130)=(0,131)_ts:T(0,131)=s84next:(0,132),0,32;interp:(0,133),32,32;frame:(0,134),64,32;recursion_depth:(0,9),96,32;tracing:(0,9),128,32;use_tracing:(0,9),160,32;c_profilefunc:(0,135),192,32;c_tracefunc:(0,135),224,32;c_profileobj:(0,1),256,32;c_traceobj:(0,1),288,32;curexc_type:(0,1),320,32;curexc_value:(0,1),352,32;curexc_traceback:(0,1),384,32;exc_type:(0,1),416,32;exc_value:(0,1),448,32;exc_traceback:(0,1),480,32;dict:(0,1),512,32;tick_counter:(0,9),544,32;gilstate_counter:(0,9),576,32;async_exc:(0,1),608,32;thread_id:(0,36),640,32;;:t(0,132)=*(0,131):t(0,133)=*(0,137):t(0,134)=*(0,138):t(0,136)=*(0,139)Py_tracefunc:t(0,135)=(0,136)PyInterpreterState:t(0,137)=(0,140)_frame:T(0,138)=s336ob_refcnt:(0,9),0,32;ob_type:(0,10),32,32;ob_size:(0,9),64,32;f_back:(0,134),96,32;f_code:(0,141),128,32;f_builtins:(0,1),160,32;f_globals:(0,1),192,32;f_locals:(0,1),224,32;f_valuestack:(0,142),256,32;f_stacktop:(0,142),288,32;f_trace:(0,1),320,32;f_exc_type:(0,1),352,32;f_exc_value:(0,1),384,32;f_exc_traceback:(0,1),416,32;f_tstate:(0,129),448,32;f_lasti:(0,9),480,32;f_lineno:(0,9),512,32;f_restricted:(0,9),544,32;f_iblock:(0,9),576,32;f_blockstack:(0,143),608,1920;f_nlocals:(0,9),2528,32;f_ncells:(0,9),2560,32;f_nfreevars:(0,9),2592,32;f_stacksize:(0,9),2624,32;f_localsplus:(0,144),2656,32;;:t(0,139)=f(0,9)_is:T(0,140)=s36next:(0,145),0,32;tstate_head:(0,132),32,32;modules:(0,1),64,32;sysdict:(0,1),96,32;builtins:(0,1),128,32;codec_search_path:(0,1),160,32;codec_search_cache:(0,1),192,32;codec_error_registry:(0,1),224,32;dlopenflags:(0,9),256,32;;:t(0,141)=*(0,146):t(0,142)=*(0,1):t(0,143)=ar(0,5);0;19;(0,147):t(0,144)=ar(0,5);0;0;(0,1):t(0,145)=*(0,140)PyCodeObject:t(0,146)=(0,148)PyTryBlock:t(0,147)=(0,149):T(0,148)=s64ob_refcnt:(0,9),0,32;ob_type:(0,10),32,32;co_argcount:(0,9),64,32;co_nlocals:(0,9),96,32;co_stacksize:(0,9),128,32;co_flags:(0,9),160,32;co_code:(0,1),192,32;co_consts:(0,1),224,32;co_names:(0,1),256,32;co_varnames:(0,1),288,32;co_freevars:(0,1),320,32;co_cellvars:(0,1),352,32;co_filename:(0,1),384,32;co_name:(0,1),416,32;co_firstlineno:(0,9),448,32;co_lnotab:(0,1),480,32;;:T(0,149)=s12b_type:(0,9),0,32;b_handler:(0,9),32,32;b_level:(0,9),64,32;;___Pyx_Raise__Pyx_Raise:f(0,3)type:P(0,1)value:p(0,1)tb:p(0,1)___Pyx_AddTraceback___pyx_filename___pyx_lineno__Pyx_AddTraceback:f(0,3)funcname:P(0,6)py_srcfile:(0,1)py_funcname:r(0,1)py_globals:(0,1)empty_tuple:r(0,1)empty_string:(0,1)py_code:(0,141)py_frame:(0,150):t(0,150)=*(0,151)PyFrameObject:t(0,151)=(0,138)___pyx_f__pyx_tp_descr_get_9_speedups_metamethod:f(0,1)o:p(0,1)i:p(0,1)c:p(0,1)r:(0,1)i:r(0,1)c:r(0,1)___pyx_f_9_speedups_buildClassicMRO__pyx_f_9_speedups_buildClassicMRO:f(0,1)__pyx_v_cls:P(0,152)__pyx_v_list:p(0,153)__pyx_v_i:(0,9):t(0,152)=*(0,154):t(0,153)=*(0,155)PyClassObject:t(0,154)=(0,156)PyListObject:t(0,155)=(0,157):T(0,156)=s32ob_refcnt:(0,9),0,32;ob_type:(0,10),32,32;cl_bases:(0,1),64,32;cl_dict:(0,1),96,32;cl_name:(0,1),128,32;cl_getattr:(0,1),160,32;cl_setattr:(0,1),192,32;cl_delattr:(0,1),224,32;;:T(0,157)=s16ob_refcnt:(0,9),0,32;ob_type:(0,10),32,32;ob_size:(0,9),64,32;ob_item:(0,142),96,32;;__pyx_v_tmp:r(0,1)__pyx_r:r(0,1)__pyx_2:r(0,9)___pyx_f_9_speedups_buildECMRO__pyx_f_9_speedups_buildECMRO:f(0,1)__pyx_v_cls:p(0,1)__pyx_v_list:p(0,153)__pyx_v_i:r(0,1)__pyx_r:r(0,1)__pyx_1:r(0,9)__pyx_2:r(0,1)__pyx_3:(0,1)___pyx_argnames.7684___pyx_k24__pyx_f_9_speedups_extClassMRO:f(0,1)__pyx_self:p(0,1)__pyx_args:p(0,1)__pyx_kwds:p(0,1)__pyx_v_ob:(0,1)__pyx_v_extendedClassic:(0,1)__pyx_v_mro:r(0,1)__pyx_r:r(0,1)__pyx_1:r(0,1)__pyx_2:r(0,9)__pyx_argnames:V(0,158):t(0,158)=ar(0,5);0;2;(0,6)__pyx_args:r(0,1)__pyx_kwds:r(0,1)___pyx_f_9_speedups__adapt___pyx_v_9_speedups___conform___pyx_v_9_speedups___adapt___pyx_v_9_speedups__marker__pyx_f_9_speedups__adapt:f(0,1)__pyx_v_obj:p(0,1)__pyx_v_protocol:p(0,1)__pyx_v_default:p(0,1)__pyx_v_meth:r(0,1)__pyx_v_result:(0,1)__pyx_v_err:(0,1)__pyx_r:r(0,1)__pyx_1:r(0,9)__pyx_2:r(0,1)__pyx_3:(0,1)__pyx_4:(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:(0,1)name:r(0,1)name:(0,1)___pyx_argnames.7479___pyx_k22__pyx_f_9_speedups_Protocol__call__:f(0,1)__pyx_self:p(0,1)__pyx_args:p(0,1)__pyx_kwds:p(0,1)__pyx_v_self:(0,1)__pyx_v_ob:(0,1)__pyx_v_default:(0,1)__pyx_r:r(0,1)__pyx_1:r(0,1)__pyx_argnames:V(0,159):t(0,159)=ar(0,5);0;3;(0,6)__pyx_args:r(0,1)__pyx_kwds:r(0,1)___pyx_argnames.7431___pyx_k21__pyx_f_9_speedups_adapt:f(0,1)__pyx_self:p(0,1)__pyx_args:p(0,1)__pyx_kwds:p(0,1)__pyx_v_obj:(0,1)__pyx_v_protocol:(0,1)__pyx_v_default:(0,1)__pyx_r:r(0,1)__pyx_1:r(0,1)__pyx_argnames:V(0,160):t(0,160)=ar(0,5);0;3;(0,6)__pyx_args:r(0,1)__pyx_kwds:r(0,1)___pyx_argnames.7567___pyx_k23__pyx_f_9_speedups_classicMRO:f(0,1)__pyx_self:p(0,1)__pyx_args:p(0,1)__pyx_kwds:p(0,1)__pyx_v_ob:(0,1)__pyx_v_extendedClassic:(0,1)__pyx_v_mro:r(0,1)__pyx_r:r(0,1)__pyx_1:r(0,9)__pyx_2:r(0,1)__pyx_3:(0,1)__pyx_4:r(0,1)__pyx_argnames:V(0,161):t(0,161)=ar(0,5);0;2;(0,6)__pyx_args:r(0,1)__pyx_kwds:r(0,1)name:r(0,1)name:r(0,1)___pyx_argnames.7740___pyx_k25___pyx_v_9_speedups___ECType__pyx_f_9_speedups_getMRO:f(0,1)__pyx_self:p(0,1)__pyx_args:p(0,1)__pyx_kwds:p(0,1)__pyx_v_ob:(0,1)__pyx_v_extendedClassic:(0,1)__pyx_r:r(0,1)__pyx_2:(0,1)__pyx_3:r(0,1)__pyx_4:r(0,1)__pyx_argnames:V(0,162):t(0,162)=ar(0,5);0;2;(0,6)__pyx_args:r(0,1)__pyx_kwds:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)___pyx_argnames.7828___pyx_v_9_speedups___mro__pyx_f_9_speedups_Protocol__adapt__:f(0,1)__pyx_self:p(0,1)__pyx_args:p(0,1)__pyx_kwds:p(0,1)__pyx_v_self:(0,1)__pyx_v_obj:(0,1)__pyx_v_i:(0,9)__pyx_v_cls:(0,1)__pyx_v_err:r(0,1)__pyx_v_mro:(0,1)__pyx_v_get:(0,1)__pyx_v_factory:(0,1)__pyx_r:r(0,1)__pyx_1:(0,9)__pyx_2:(0,1)__pyx_3:(0,1)__pyx_4:(0,1)__pyx_6:(0,1)__pyx_argnames:V(0,163):t(0,163)=ar(0,5);0;2;(0,6)__pyx_args:r(0,1)__pyx_kwds:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)init_speedups:F(0,3)__pyx_1:r(0,1)__pyx_2:r(0,1)__pyx_3:r(0,9)__pyx_4:r(0,1)t:r(0,164)t:r(0,165)t:r(0,165)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1)name:r(0,1):t(0,164)=*(0,166):t(0,165)=*(0,167)__Pyx_InternTabEntry:t(0,166)=(0,168)__Pyx_StringTabEntry:t(0,167)=(0,169):T(0,168)=s8p:(0,142),0,32;s:(0,6),32,32;;:T(0,169)=s12p:(0,142),0,32;s:(0,6),32,32;n:(0,36),64,32;;__pyx_tp_descr_set_9_speedups_metamethod:f(0,9)o:p(0,1)i:p(0,1)v:p(0,1)__pyx_1:r(0,1)__pyx_2:r(0,1)__pyx_3:(0,1)name:r(0,1)__pyx_1:r(0,1)__pyx_2:r(0,1)__pyx_3:(0,1)__pyx_1:r(0,1)__pyx_2:r(0,1)__pyx_3:(0,1)__pyx_1:r(0,1)__pyx_2:r(0,1)__pyx_3:(0,1)name:r(0,1)__pyx_1:r(0,1)__pyx_2:r(0,1)__pyx_3:(0,1)__pyx_1:r(0,1)__pyx_2:r(0,1)__pyx_3:(0,1)__pyx_1:r(0,1)__pyx_2:r(0,1)__pyx_3:(0,1)name:r(0,1)__pyx_1:r(0,1)__pyx_2:r(0,1)__pyx_3:(0,1)name:r(0,1)__pyx_m:S(0,1)__pyx_b:S(0,1)__pyx_lineno:S(0,9)__pyx_filename:S(0,6)char:t(0,8)__pyx_f:S(0,170):t(0,170)=*(0,6)__pyx_mdoc:S(0,171)__pyx_ptype_9_speedups_metamethod:S(0,123)__pyx_v_9_speedups__marker:S(0,1)__pyx_v_9_speedups___conform:S(0,1)__pyx_v_9_speedups___adapt:S(0,1)__pyx_v_9_speedups___mro:S(0,1)__pyx_v_9_speedups___ECType:S(0,1)__pyx_k19:S(0,1)__pyx_k20:S(0,1)__pyx_k21:S(0,1)__pyx_k22:S(0,1)__pyx_k23:S(0,1)__pyx_k24:S(0,1)__pyx_k25:S(0,1)__pyx_k11:S(0,172)__pyx_k15:S(0,173)__pyx_k16:S(0,174)__pyx_k17:S(0,175)__pyx_k18:S(0,176)__pyx_n___all__:S(0,1)__pyx_n_exc_info:S(0,1)__pyx_n_AdaptationFailure:S(0,1)__pyx_n_ExtensionClass:S(0,1)__pyx_n___class:S(0,1)__pyx_n_NO_ADAPTER_NEEDED:S(0,1)__pyx_n_DOES_NOT_SUPPORT:S(0,1)__pyx_n_adapt:S(0,1)__pyx_n_Protocol__call__:S(0,1)__pyx_n_classicMRO:S(0,1)__pyx_n_extClassMRO:S(0,1)__pyx_n_getMRO:S(0,1)__pyx_n_Protocol__adapt__:S(0,1)__pyx_n_metamethod:S(0,1)__pyx_n_sys:S(0,1)__pyx_n_ImportError:S(0,1)__pyx_n_object:S(0,1)__pyx_n_False:S(0,1)__pyx_k11p:S(0,1)__pyx_doc_9_speedups_NO_ADAPTER_NEEDED:S(0,177)__pyx_doc_9_speedups_DOES_NOT_SUPPORT:S(0,178)__pyx_n_AttributeError:S(0,1)__pyx_k26p:S(0,1)__pyx_k26:S(0,179)__pyx_k27p:S(0,1)__pyx_k27:S(0,180)__pyx_n_TypeError:S(0,1)__pyx_n_tb_next:S(0,1)__pyx_k28p:S(0,1)__pyx_k28:S(0,181)__pyx_doc_9_speedups_adapt:S(0,182)__pyx_doc_9_speedups_Protocol__call__:S(0,183)__pyx_k29p:S(0,1)__pyx_k29:S(0,184)__pyx_n___bases__:S(0,1)__pyx_n___mro__:S(0,1)__pyx_n__Protocol__adapters:S(0,1)__pyx_n_get:S(0,1)__pyx_intern_tab:S(0,185)__pyx_string_tab:S(0,186)__pyx_methods_9_speedups_metamethod:S(0,187)__pyx_tp_as_number_metamethod:S(0,63)__pyx_tp_as_sequence_metamethod:S(0,64)__pyx_tp_as_mapping_metamethod:S(0,65)__pyx_tp_as_buffer_metamethod:S(0,70)__pyx_methods:S(0,188)__pyx_filenames:S(0,189)__pyx_type_9_speedups_metamethod:G(0,124):t(0,171)=ar(0,5);0;39;(0,8):t(0,172)=ar(0,5);0;18;(0,8):t(0,173)=ar(0,5);0;11;(0,8):t(0,174)=ar(0,5);0;9;(0,8):t(0,175)=ar(0,5);0;9;(0,8):t(0,176)=ar(0,5);0;7;(0,8):t(0,177)=ar(0,5);0;43;(0,8):t(0,178)=ar(0,5);0;40;(0,8):t(0,179)=ar(0,5);0;19;(0,8):t(0,180)=ar(0,5);0;19;(0,8):t(0,181)=ar(0,5);0;11;(0,8):t(0,182)=ar(0,5);0;155;(0,8):t(0,183)=ar(0,5);0;22;(0,8):t(0,184)=ar(0,5);0;19;(0,8):t(0,185)=ar(0,5);0;25;(0,166):t(0,186)=ar(0,5);0;5;(0,167):t(0,187)=ar(0,5);0;0;(0,74):t(0,188)=ar(0,5);0;8;(0,74):t(0,189)=ar(0,5);0;0;(0,6)PK˃95-\OOprotocols/adapters.py"""Basic Adapters and Adapter Operations""" __all__ = [ 'NO_ADAPTER_NEEDED','DOES_NOT_SUPPORT', 'Adapter', 'minimumAdapter', 'composeAdapters', 'updateWithSimplestAdapter', 'StickyAdapter', 'AdaptationFailure', 'bindAdapter', ] from types import FunctionType,ClassType,MethodType try: PendingDeprecationWarning except NameError: class PendingDeprecationWarning(Warning): 'Base class for warnings about features which will be deprecated in the future.' class AdaptationFailure(NotImplementedError,TypeError): """A suitable implementation/adapter could not be found""" # Fundamental Adapters def NO_ADAPTER_NEEDED(obj, protocol=None): """Assume 'obj' implements 'protocol' directly""" return obj def DOES_NOT_SUPPORT(obj, protocol=None): """Prevent 'obj' from supporting 'protocol'""" return None try: from _speedups import NO_ADAPTER_NEEDED, DOES_NOT_SUPPORT except ImportError: pass class Adapter(object): """Convenient base class for adapters""" def __init__(self, ob): self.subject = ob class StickyAdapter(object): """Adapter that attaches itself to its subject for repeated use""" attachForProtocols = () def __init__(self, ob): self.subject = ob # Declare this instance as a per-instance adaptation for the # given protocols provides = list(self.attachForProtocols) from protocols.api import declareAdapter declareAdapter(lambda s: self, provides, forObjects=[ob]) # Adapter "arithmetic" def minimumAdapter(a1,a2,d1=0,d2=0): """Shortest route to implementation, 'a1' @ depth 'd1', or 'a2' @ 'd2'? Assuming both a1 and a2 are interchangeable adapters (i.e. have the same source and destination protocols), return the one which is preferable; that is, the one with the shortest implication depth, or, if the depths are equal, then the adapter that is composed of the fewest chained adapters. If both are the same, then prefer 'NO_ADAPTER_NEEDED', followed by anything but 'DOES_NOT_SUPPORT', with 'DOES_NOT_SUPPORT' being least preferable. If there is no unambiguous choice, and 'not a1 is a2', TypeError is raised. """ if d1=maxargs: newAdapter = lambda ob: adapter(ob,proto) newAdapter.__adapterCount__ = getattr( adapter,'__adapterCount__',1 ) newAdapter.__unbound_adapter__ = adapter from warnings import warn warn("Adapter %r to protocol %r needs multiple arguments" % (adapter,proto), PendingDeprecationWarning, 6) return newAdapter return adapter def updateWithSimplestAdapter(mapping, key, adapter, depth): """Replace 'mapping[key]' w/'adapter' @ 'depth', return true if changed""" new = adapter old = mapping.get(key) if old is not None: old, oldDepth = old new = minimumAdapter(old,adapter,oldDepth,depth) if old is new and depth>=oldDepth: return False mapping[key] = new, depth return True PK86jR\protocols/adapters.pyc; Ec @s,dZddddddddd g Zd klZlZlZyeWn)ej od efd YZnXde e fd YZ e dZ e dZydkl Z lZWnej onXdefdYZdefdYZdddZdZdZdZdS(s%Basic Adapters and Adapter OperationssNO_ADAPTER_NEEDEDsDOES_NOT_SUPPORTsAdaptersminimumAdapterscomposeAdapterssupdateWithSimplestAdapters StickyAdaptersAdaptationFailures bindAdapter(s FunctionTypes ClassTypes MethodTypesPendingDeprecationWarningcBstZdZRS(sNBase class for warnings about features which will be deprecated in the future.(s__name__s __module__s__doc__(((s7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pysPendingDeprecationWarnings cBstZdZRS(s4A suitable implementation/adapter could not be found(s__name__s __module__s__doc__(((s7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pysAdaptationFailures cCs|SdS(s+Assume 'obj' implements 'protocol' directlyN(sobj(sobjsprotocol((s7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pysNO_ADAPTER_NEEDEDscCstSdS(s(Prevent 'obj' from supporting 'protocol'N(sNone(sobjsprotocol((s7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pysDOES_NOT_SUPPORTs(sNO_ADAPTER_NEEDEDsDOES_NOT_SUPPORTcBstZdZdZRS(s"Convenient base class for adapterscCs ||_dS(N(sobsselfssubject(sselfsob((s7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pys__init__.s(s__name__s __module__s__doc__s__init__(((s7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pysAdapter*s cBstZdZfZdZRS(s<Adapter that attaches itself to its subject for repeated usecsE|_ti}dkl}|d|d|gdS(N(sdeclareAdaptercsS(N(sself(ss(sself(s7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pysBss forObjects(sobsselfssubjectslistsattachForProtocolssprovidess protocols.apisdeclareAdapter(sselfsobsdeclareAdaptersprovides((sselfs7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pys__init__8s  (s__name__s __module__s__doc__sattachForProtocolss__init__(((s7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pys StickyAdapter2s icCs||jo|Sn||jo|Snt|d|t|d|jo|Snt|dd}t|dd}||jo|Sn||jo|Sn|tjp |tjo|Sn|tjp |tjo|Snt d||||dS(spShortest route to implementation, 'a1' @ depth 'd1', or 'a2' @ 'd2'? Assuming both a1 and a2 are interchangeable adapters (i.e. have the same source and destination protocols), return the one which is preferable; that is, the one with the shortest implication depth, or, if the depths are equal, then the adapter that is composed of the fewest chained adapters. If both are the same, then prefer 'NO_ADAPTER_NEEDED', followed by anything but 'DOES_NOT_SUPPORT', with 'DOES_NOT_SUPPORT' being least preferable. If there is no unambiguous choice, and 'not a1 is a2', TypeError is raised. s__unbound_adapter__s__adapterCount__isAmbiguous adapter choiceN( sd1sd2sa1sa2sgetattrsa1ctsa2ctsNO_ADAPTER_NEEDEDsDOES_NOT_SUPPORTs TypeError(sa1sa2sd1sd2sa2ctsa1ct((s7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pysminimumAdapterUs$   %  cstjp tjotSntjoSntjoSnd}tddtdd|_|SdS(s:Return the composition of 'baseAdapter'+'extendingAdapter'cs+|}|tj o|SndS(N(s baseAdaptersobsNonesextendingAdapter(sob(sextendingAdapters baseAdapter(s7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pys newAdapters  s__adapterCount__iN(s baseAdaptersDOES_NOT_SUPPORTsextendingAdaptersNO_ADAPTER_NEEDEDs newAdaptersgetattrs__adapterCount__(s baseAdapters baseProtocolsextendingAdapters newAdapter((s baseAdaptersextendingAdapters7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pyscomposeAdapters|s  %c s~d} }d}xt|t o|ot|to&| |itj 7} |i }d}qt|t t fo!| d7} |i }|d8}q|i }|d8}qWt|todkl}||\}} }}|o|t| }nt|| jo\d} tdd| _| _dkl}|dftd | SqvnSd S( sEBackward compatibility: wrap 'adapter' to support old 2-arg signatureii i(s getargspeccs |S(N(sadaptersobsproto(sob(sadaptersproto(s7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pysss__adapterCount__(swarns2Adapter %r to protocol %r needs multiple argumentsiN(smaxargssadaptersfstriess isinstances FunctionTypes MethodTypesim_selfsNonesim_funcs ClassTypestypes__init__s__call__sinspects getargspecsargssvarargssvarkwsdefaultsslens newAdaptersgetattrs__adapterCount__s__unbound_adapter__swarningsswarnsprotosPendingDeprecationWarning( sadaptersprotos getargspecsdefaultssargssfswarnstriessvarkws newAdaptersvarargssmaxargs((sadaptersprotos7build/bdist.darwin-8.9.1-i386/egg/protocols/adapters.pys bindAdapters8          cCs|}|i|}|tj oG|\}}t||||}||jo ||jot Sqin||f||UsN(sproperty(sfunc((sfuncs5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pys metamethodSs(sExtensionClassccsg}|i}|i}|d|xF|o>|}|Vt|}x|iD]}|||qRWq(W|o t Vt VndS(Ni( sstacksinsertspushspopsobsclsslensps __bases__sbsextendedClassics InstanceTypesobject(sobsextendedClassicsbspopspspushsstackscls((s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pys classicMRO^s      cCsGt|tot||Snt|to |iSn|fSdS(N(s isinstancesobs ClassicTypess classicMROsextendedClassicstypes__mro__(sobsextendedClassic((s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pysgetMROls  (s metamethodsgetMROs classicMROcst}|ijo}|intx\D]B}|jo/gi}D]}||i qi~PqHqHWt d|tdt fdY}|SdS(NsNot sub/supertypes:stheSupercstZdZRS(Ncstx]D]U}||joB||}y |i}Wntj o |Sq\X|SqqWti ||SdS(N( smrosdsnamesdescrs__get__sAttributeErrorsobstypsobjects__getattribute__sself(sselfsnamesdescrsd(stypsobsmro(s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pys__getattribute__s    (s__name__s __module__s__getattribute__((sobsmrostyp(s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pystheSupers(stypesobs starttypes__mro__smrostypsitersclssappends_[1]s__dict__s TypeErrorsobjectstheSuper(stypsobstheSupers_[1]smros starttypescls((stypsobsmros5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pys supermeta~s      *  cCsdkl}|dtdgi}|D]!}|tj o||q+q+~}g}xl|D]d}x[|D](}t ||o ||j oPqoqoW||jo|i |n|i|qbW|SdS(s DEPRECATED(swarnsAprotocols.advice.minimalBases is deprecated; please do not use itiN( swarningsswarnsDeprecationWarningsappends_[1]sclassesscs ClassTypes candidatessmsns issubclasssremove(sclassess_[1]scsmsnswarns candidates((s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pys minimalBasess   8  (srefcBsAtZdZdZdZdZdZdZdZRS(s/Like a weakref, but for non-weakrefable objectssreferentcCs ||_dS(N(sreferentsself(sselfsreferent((s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pys__init__scCs |iSdS(N(sselfsreferent(sself((s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pys__call__scCst|iSdS(N(shashsselfsreferent(sself((s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pys__hash__scCs|i|jSdS(N(sselfsreferentsother(sselfsother((s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pys__eq__scCsd|iSdS(Ns StrongRef(%r)(sselfsreferent(sself((s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pys__repr__s( s__name__s __module__s__doc__s __slots__s__init__s__call__s__hash__s__eq__s__repr__(((s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pys StrongRefs     cGs5yt||SWntj ot|SnXdS(swReturn either a weakref or a StrongRef for 'ob' Note that extra args are forwarded to weakref.ref() if applicable.N(srefsobsargss TypeErrors StrongRef(sobsargs((s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pysmkRefs (!s __future__s generatorssnewsinstancemethodstypess ClassTypes FunctionTypes InstanceTypessyss__all__s peak.utils decoratorssNonesaddClassAdvisorsadd_assignment_advisors getFrameInfosdetermineMetaclasssisClassAdvisors metamethodsExtensionClasss ImportErrors ClassicTypessFalses classicMROsgetMROs _speedupss supermetas minimalBasessweakrefsrefsobjects StrongRefsmkRef(s minimalBasessisClassAdvisors__all__s metamethods StrongRefs generatorssaddClassAdvisorsgetMROs decoratorss InstanceTypes getFrameInfosdetermineMetaclassssyssmkRefs ClassicTypessrefs classicMROsadd_assignment_advisorsinstancemethodsExtensionClasss ClassTypes supermetas FunctionType((s5build/bdist.darwin-8.9.1-i386/egg/protocols/advice.pys?s6   *&         ' ) PKOk6%$zcprotocols/api.py"""Adapter and Declaration API""" __all__ = [ 'adapt', 'declareAdapterForType', 'declareAdapterForProtocol', 'declareAdapterForObject', 'advise', 'declareImplementation', 'declareAdapter', 'adviseObject', ] _marker = object() from sys import _getframe, exc_info, modules from types import ClassType ClassTypes = ClassType, type from adapters import NO_ADAPTER_NEEDED, DOES_NOT_SUPPORT, AdaptationFailure from adapters import bindAdapter from peak.util.decorators import decorate_class, frameinfo from interfaces import IOpenProtocol, IOpenProvider, IOpenImplementor from interfaces import Protocol, InterfaceClass def adapt(obj, protocol, default=_marker): """PEP 246-alike: Adapt 'obj' to 'protocol', return 'default' If 'default' is not supplied and no implementation is found, the result of 'factory(obj,protocol)' is returned. If 'factory' is also not supplied, 'NotImplementedError' is then raised.""" if isinstance(protocol,ClassTypes) and isinstance(obj,protocol): return obj try: _conform = obj.__conform__ except AttributeError: pass else: try: result = _conform(protocol) if result is not None: return result except TypeError: if exc_info()[2].tb_next is not None: raise try: _adapt = protocol.__adapt__ except AttributeError: pass else: try: result = _adapt(obj) if result is not None: return result except TypeError: if exc_info()[2].tb_next is not None: raise if default is _marker: raise AdaptationFailure("Can't adapt", obj, protocol) return default try: from _speedups import adapt except ImportError: pass # Fundamental, explicit interface/adapter declaration API: # All declarations should end up passing through these three routines. def declareAdapterForType(protocol, adapter, typ, depth=1): """Declare that 'adapter' adapts instances of 'typ' to 'protocol'""" adapter = bindAdapter(adapter,protocol) adapter = adapt(protocol, IOpenProtocol).registerImplementation( typ, adapter, depth ) oi = adapt(typ, IOpenImplementor, None) if oi is not None: oi.declareClassImplements(protocol,adapter,depth) def declareAdapterForProtocol(protocol, adapter, proto, depth=1): """Declare that 'adapter' adapts 'proto' to 'protocol'""" adapt(protocol, IOpenProtocol) # src and dest must support IOpenProtocol adapt(proto, IOpenProtocol).addImpliedProtocol(protocol, bindAdapter(adapter,protocol), depth) def declareAdapterForObject(protocol, adapter, ob, depth=1): """Declare that 'adapter' adapts 'ob' to 'protocol'""" adapt(protocol,IOpenProtocol).registerObject(ob,bindAdapter(adapter,protocol),depth) # Bootstrap APIs to work with Protocol and InterfaceClass, without needing to # give Protocol a '__conform__' method that's hardwired to IOpenProtocol. # Note that InterfaceClass has to be registered first, so that when the # registration propagates to IAdaptingProtocol and IProtocol, InterfaceClass # will already be recognized as an IOpenProtocol, preventing infinite regress. IOpenProtocol.registerImplementation(InterfaceClass) # VERY BAD!! IOpenProtocol.registerImplementation(Protocol) # NEVER DO THIS!! # From this line forward, the declaration APIs can work. Use them instead! # Interface and adapter declarations - convenience forms, explicit targets def declareAdapter(factory, provides, forTypes=(), forProtocols=(), forObjects=() ): """'factory' is an IAdapterFactory providing 'provides' protocols""" for protocol in provides: for typ in forTypes: declareAdapterForType(protocol, factory, typ) for proto in forProtocols: declareAdapterForProtocol(protocol, factory, proto) for ob in forObjects: declareAdapterForObject(protocol, factory, ob) def declareImplementation(typ, instancesProvide=(), instancesDoNotProvide=()): """Declare information about a class, type, or 'IOpenImplementor'""" for proto in instancesProvide: declareAdapterForType(proto, NO_ADAPTER_NEEDED, typ) for proto in instancesDoNotProvide: declareAdapterForType(proto, DOES_NOT_SUPPORT, typ) def adviseObject(ob, provides=(), doesNotProvide=()): """Tell an object what it does or doesn't provide""" for proto in provides: declareAdapterForObject(proto, NO_ADAPTER_NEEDED, ob) for proto in doesNotProvide: declareAdapterForObject(proto, DOES_NOT_SUPPORT, ob) # And now for the magic function... def advise(**kw): kw = kw.copy() frame = _getframe(1) kind, module, caller_locals, caller_globals = frameinfo(frame) if kind=="module": moduleProvides = kw.setdefault('moduleProvides',()) del kw['moduleProvides'] for k in kw: raise TypeError( "Invalid keyword argument for advising modules: %s" % k ) adviseObject(module, provides=moduleProvides ) return elif kind != "class": raise SyntaxError( "protocols.advise() must be called directly in a class or" " module body, not in a function or exec." ) classProvides = kw.setdefault('classProvides',()) classDoesNotProvide = kw.setdefault('classDoesNotProvide',()) instancesProvide = kw.setdefault('instancesProvide',()) instancesDoNotProvide = kw.setdefault('instancesDoNotProvide',()) asAdapterForTypes = kw.setdefault('asAdapterForTypes',()) asAdapterForProtocols = kw.setdefault('asAdapterForProtocols',()) protocolExtends = kw.setdefault('protocolExtends',()) protocolIsSubsetOf = kw.setdefault('protocolIsSubsetOf',()) factoryMethod = kw.setdefault('factoryMethod',None) equivalentProtocols = kw.setdefault('equivalentProtocols',()) map(kw.__delitem__,"classProvides classDoesNotProvide instancesProvide" " instancesDoNotProvide asAdapterForTypes asAdapterForProtocols" " protocolExtends protocolIsSubsetOf factoryMethod equivalentProtocols" .split()) for k in kw: raise TypeError( "Invalid keyword argument for advising classes: %s" % k ) def callback(klass): if classProvides or classDoesNotProvide: adviseObject(klass, provides=classProvides, doesNotProvide=classDoesNotProvide ) if instancesProvide or instancesDoNotProvide: declareImplementation(klass, instancesProvide=instancesProvide, instancesDoNotProvide=instancesDoNotProvide ) if asAdapterForTypes or asAdapterForProtocols: if not instancesProvide: raise TypeError( "When declaring an adapter, you must specify what" " its instances will provide." ) if factoryMethod: factory = getattr(klass,factoryMethod) else: factory = klass declareAdapter(factory, instancesProvide, forTypes=asAdapterForTypes, forProtocols=asAdapterForProtocols ) elif factoryMethod: raise TypeError( "'factoryMethod' is only used when declaring an adapter type" ) if protocolExtends: declareAdapter(NO_ADAPTER_NEEDED, protocolExtends, forProtocols=[klass] ) if protocolIsSubsetOf: declareAdapter(NO_ADAPTER_NEEDED, [klass], forProtocols=protocolIsSubsetOf ) if equivalentProtocols: declareAdapter( NO_ADAPTER_NEEDED, equivalentProtocols, forProtocols=[klass] ) declareAdapter( NO_ADAPTER_NEEDED, [klass], forProtocols=equivalentProtocols ) return klass decorate_class(callback) PK86v_i&&protocols/api.pyc; (Ec@srdZddddddddgZeZd klZlZlZd kl Z e e fZ d k l Z lZlZd k lZd klZlZdklZlZlZdklZlZedZydklZWnej onXddZddZddZei eei efffdZ!ffdZ"ffdZ#dZ$dS(sAdapter and Declaration APIsadaptsdeclareAdapterForTypesdeclareAdapterForProtocolsdeclareAdapterForObjectsadvisesdeclareImplementationsdeclareAdapters adviseObject(s _getframesexc_infosmodules(s ClassType(sNO_ADAPTER_NEEDEDsDOES_NOT_SUPPORTsAdaptationFailure(s bindAdapter(sdecorate_classs frameinfo(s IOpenProtocols IOpenProvidersIOpenImplementor(sProtocolsInterfaceClasscCsKt|to t||o|Sny |i}Wntj on[Xy%||}|tj o|SnWn1t j o%t di tj oqnXy |i }Wntj on[Xy%||}|tj o|SnWn1t j o%t di tj oq nX|tjotd||n|SdS(sPEP 246-alike: Adapt 'obj' to 'protocol', return 'default' If 'default' is not supplied and no implementation is found, the result of 'factory(obj,protocol)' is returned. If 'factory' is also not supplied, 'NotImplementedError' is then raised.is Can't adaptN(s isinstancesprotocols ClassTypessobjs __conform__s_conformsAttributeErrorsresultsNones TypeErrorsexc_infostb_nexts __adapt__s_adaptsdefaults_markersAdaptationFailure(sobjsprotocolsdefaults_conformsresults_adapt((s2build/bdist.darwin-8.9.1-i386/egg/protocols/api.pysadapt*s8            (sadapticCsgt||}t|ti|||}t|tt }|t j o|i |||ndS(s>Declare that 'adapter' adapts instances of 'typ' to 'protocol'N( s bindAdaptersadaptersprotocolsadapts IOpenProtocolsregisterImplementationstypsdepthsIOpenImplementorsNonesoisdeclareClassImplements(sprotocolsadapterstypsdepthsoi((s2build/bdist.darwin-8.9.1-i386/egg/protocols/api.pysdeclareAdapterForType[s  cCs6t|tt|ti|t|||dS(s3Declare that 'adapter' adapts 'proto' to 'protocol'N(sadaptsprotocols IOpenProtocolsprotosaddImpliedProtocols bindAdaptersadaptersdepth(sprotocolsadaptersprotosdepth((s2build/bdist.darwin-8.9.1-i386/egg/protocols/api.pysdeclareAdapterForProtocolhs cCs)t|ti|t|||dS(s0Declare that 'adapter' adapts 'ob' to 'protocol'N(sadaptsprotocols IOpenProtocolsregisterObjectsobs bindAdaptersadaptersdepth(sprotocolsadaptersobsdepth((s2build/bdist.darwin-8.9.1-i386/egg/protocols/api.pysdeclareAdapterForObjectnsc Csxxq|D]i}x|D]}t|||qWx|D]}t|||q5Wx|D]}t |||qVWqWdS(s>'factory' is an IAdapterFactory providing 'provides' protocolsN( sprovidessprotocolsforTypesstypsdeclareAdapterForTypesfactorys forProtocolssprotosdeclareAdapterForProtocols forObjectssobsdeclareAdapterForObject( sfactorysprovidessforTypess forProtocolss forObjectssobsprotocolsprotostyp((s2build/bdist.darwin-8.9.1-i386/egg/protocols/api.pysdeclareAdapter~scCsFx|D]}t|t|qWx|D]}t|t|q(WdS(s>Declare information about a class, type, or 'IOpenImplementor'N(sinstancesProvidesprotosdeclareAdapterForTypesNO_ADAPTER_NEEDEDstypsinstancesDoNotProvidesDOES_NOT_SUPPORT(stypsinstancesProvidesinstancesDoNotProvidesproto((s2build/bdist.darwin-8.9.1-i386/egg/protocols/api.pysdeclareImplementationscCsFx|D]}t|t|qWx|D]}t|t|q(WdS(s.Tell an object what it does or doesn't provideN(sprovidessprotosdeclareAdapterForObjectsNO_ADAPTER_NEEDEDsobsdoesNotProvidesDOES_NOT_SUPPORT(sobsprovidessdoesNotProvidesproto((s2build/bdist.darwin-8.9.1-i386/egg/protocols/api.pys adviseObjectsc s|i}td}t|\} }}}| djoR|i df} |d=x|D]}t d|q]Wt |d| dSn| djotdn|i df|i d f|i d f|i d f|i d f|i d f|i df|i df |i dt|i dft|idix|D]}t d|q}W d}t|dS(NismodulesmoduleProvidess1Invalid keyword argument for advising modules: %ssprovidessclasss`protocols.advise() must be called directly in a class or module body, not in a function or exec.s classProvidessclassDoesNotProvidesinstancesProvidesinstancesDoNotProvidesasAdapterForTypessasAdapterForProtocolssprotocolExtendssprotocolIsSubsetOfs factoryMethodsequivalentProtocolssclassProvides classDoesNotProvide instancesProvide instancesDoNotProvide asAdapterForTypes asAdapterForProtocols protocolExtends protocolIsSubsetOf factoryMethod equivalentProtocolss1Invalid keyword argument for advising classes: %scsKp ot|dd npot|ddnpoU ot dnot |}n|}t |ddnot dnot td|gnot t|gdno0t td|gt t|gdn|SdS( NsprovidessdoesNotProvidesinstancesProvidesinstancesDoNotProvidesLWhen declaring an adapter, you must specify what its instances will provide.sforTypess forProtocolss;'factoryMethod' is only used when declaring an adapter type(s classProvidessclassDoesNotProvides adviseObjectsklasssinstancesProvidesinstancesDoNotProvidesdeclareImplementationsasAdapterForTypessasAdapterForProtocolss TypeErrors factoryMethodsgetattrsfactorysdeclareAdaptersprotocolExtendssNO_ADAPTER_NEEDEDsprotocolIsSubsetOfsequivalentProtocols(sklasssfactory( sasAdapterForTypessprotocolExtendssasAdapterForProtocolssequivalentProtocolssinstancesProvides factoryMethodsinstancesDoNotProvides classProvidessprotocolIsSubsetOfsclassDoesNotProvide(s2build/bdist.darwin-8.9.1-i386/egg/protocols/api.pyscallbacks6   (skwscopys _getframesframes frameinfoskindsmodules caller_localsscaller_globalss setdefaultsmoduleProvidessks TypeErrors adviseObjects SyntaxErrors classProvidessclassDoesNotProvidesinstancesProvidesinstancesDoNotProvidesasAdapterForTypessasAdapterForProtocolssprotocolExtendssprotocolIsSubsetOfsNones factoryMethodsequivalentProtocolssmaps __delitem__ssplitscallbacksdecorate_class(skwsframesmodules classProvidessclassDoesNotProvidesasAdapterForTypesscaller_globalss caller_localssinstancesDoNotProvidesasAdapterForProtocolssmoduleProvidessprotocolExtendsskindsequivalentProtocolssinstancesProvidesks factoryMethodscallbacksprotocolIsSubsetOf(( s classProvidessclassDoesNotProvidesasAdapterForTypessinstancesDoNotProvidesasAdapterForProtocolssprotocolExtendssequivalentProtocolssinstancesProvides factoryMethodsprotocolIsSubsetOfs2build/bdist.darwin-8.9.1-i386/egg/protocols/api.pysadvises<     '3N(%s__doc__s__all__sobjects_markerssyss _getframesexc_infosmodulesstypess ClassTypestypes ClassTypessadapterssNO_ADAPTER_NEEDEDsDOES_NOT_SUPPORTsAdaptationFailures bindAdapterspeak.util.decoratorssdecorate_classs frameinfos interfacess IOpenProtocols IOpenProvidersIOpenImplementorsProtocolsInterfaceClasssadapts _speedupss ImportErrorsdeclareAdapterForTypesdeclareAdapterForProtocolsdeclareAdapterForObjectsregisterImplementationsdeclareAdaptersdeclareImplementations adviseObjectsadvise(sdeclareAdapterForTypesdeclareAdapterForObjectsDOES_NOT_SUPPORTsdeclareImplementationsdeclareAdapters IOpenProvidersAdaptationFailures frameinfosdeclareAdapterForProtocolsdecorate_classsadaptsInterfaceClasssadvisesNO_ADAPTER_NEEDEDs_markers bindAdapters ClassTypess adviseObjectsProtocols__all__sIOpenImplementors ClassTypesmoduless _getframesexc_infos IOpenProtocol((s2build/bdist.darwin-8.9.1-i386/egg/protocols/api.pys?s0     )     PK˃95 Kprotocols/classic.py"""Declaration support for Python built-in types""" __all__ = ['ProviderMixin'] from types import FunctionType, ModuleType, InstanceType, ClassType from adapters import * from api import declareImplementation, advise, declareAdapterForObject, adapt from interfaces import * from new import instancemethod from advice import getMRO, metamethod, mkRef class ProviderMixin: """Mixin to support per-instance declarations""" advise( instancesProvide=[IOpenProvider, IImplicationListener] ) def declareProvides(self,protocol,adapter=NO_ADAPTER_NEEDED,depth=1): registry = self.__dict__.get('__protocols_provided__') if registry is None: self.__protocols_provided__ = registry = {} if updateWithSimplestAdapter(registry,protocol,adapter,depth): adapt(protocol,IOpenProtocol).addImplicationListener(self) return True declareProvides = metamethod(declareProvides) def newProtocolImplied(self, srcProto, destProto, adapter, depth): registry = self.__dict__.get('__protocols_provided__',()) if srcProto not in registry: return baseAdapter, d = regist