Xׯd.XddlZGddeZGddZeZdS)NcVeZdZd dZdZedZdddggddfdZd d Zd Z dS) DefineModuleNc||_||_||_||_g|_|pg|_t jt jd|_ dS)zzDefine a GRT module. Must be called before any function declaration as wbmodule = DefineModule('modname') app.PluginN) nameauthorversion description functions implementsgrtListOBJECT _pluginList)selfrr r r r s ..\wb.py__init__zDefineModule.__init__sR    %#)r(3:|<<c"t||SN)getattr)rrs r __getitem__zDefineModule.__getitem__1stT"""rc>tjjjjdzS)Nz /modules/data)rrootwbregistryappDataDirectoryrs rmoduleDataDirectoryz DefineModule.moduleDataDirectory5s X[ ! 2? BBr standalonezPlugin:ToBeDefinedc 2f d} | S)aDecorator to declare a Plugin, used in addition to @wbexport Usage: @wbmodule.plugin("db.utils.mangleNames", caption="Mangle Names", description="Mangles all object names in current catalog beyond recognition.", input= [wbinputs.currentCatalog()], groups=["Menu/Catalog"]) @wbmodule.export(grt.INT, grt.classes.db_Catalog) def mangleNames(catalog): return 1 c dd jDvr] jdtjtjdffgf fdfd jvr jdtj} |_|_ |_ |_ |_ j|_ |jj|_D]#}||_|j|$D]}|j| r|jd zd|_d|_ j||S) N getPluginInfocg|] }|d Sr.0xs r z=DefineModule.plugin..setup_plugin..H&D&D&Dqt&D&D&DrrcjSrrrsrz;DefineModule.plugin..setup_plugin..L d6FrPluginInterfacezMenu/dr)r appendrLISTrr classes app_PluginrcaptionaccessibilityNamer pluginType moduleName__code__co_namemoduleFunctionNameowner inputValuesgroupsrating showProgressr) fnplugigr8r7r r@inputr pluginMenurtypes r setup_pluginz)DefineModule.plugin..setup_pluginFs&D&DT^&D&D&DDDn##_033:|:T/U.0/2.F.F.F.F%HIII#$/99/(():;;;+((**DDI!DL%6D ")D !DO!YDO%'[%8D # ) )ag%%a(((( $ $k  #### 5k  !3444DK D    # #D ) ) )Irr') rrr7r rIrGr@rHr8rJs ````````` rpluginzDefineModule.plugin=sT             >r selectedTextcfd}|S)NcddjDvr]jdtjtjdffgffdfdjvrjdtj}|_|_ d|_ j|_ |j j |_r?tj}|_|j||jdd|_d |_j|tjd tjfgf}j|j j ||f|S) Nr$cg|] }|d Sr&r'r(s rr+zCDefineModule.exportFilter..setup_plugin..jr,rrcjSrr.rsrr/zADefineModule.exportFilter..setup_plugin..nr0rr1r!Filterr2rtext)r r3rr4rr r5r6rr7r9r:r;r<r=app_PluginInputDefinitionr?r@rArBrSTRING)rCrDarg signaturer7rGrrs rrJz/DefineModule.exportFilter..setup_pluginhs&D&DT^&D&D&DDDn##_033:|:T/U.0/2.F.F.F.F%HIII#$/99/(():;;;+((**DDI!DL)DO!YDO%'[%8D # -k;;== '',,, K  x ( ( (DK D    # #D ) ) ) fcj%9$:;I N ! !2;#6 2"F G G GIrr')rrr7rGrJs```` r exportFilterzDefineModule.exportFiltergs6        <rctjtjtjtjtjtjgfd}|S)a]Decorator to declare an exported Module function. Usage: @wbmodule.export(grt.INT, grt.classes.db_Table, (grt.LIST, grt.STRING)) def dostuff(arg1, arg2): return 1 Declares the function dostuff as returning an integer and having the 1st arg a db.Table and the 2nd a list of strings. ct|jjkr6td|jj|jjtfzg}t tdzD];}|dkr}n |dz }|t jkr t j}n|t j kr t j }t|tkr|\}}|t jt j fvrtd||fz|tt jvs*t|ddtt jvr@t jt|t"ur|n|jddf}n| vrtd||fz||f}n|t jt jt jt jt j t jfvrnpt|t"kr1| vr-|t jvrtd t#|zt j|jddf}|dkr||||jj|dz |f=|d|ddf} j|jj||f|S) Nz>module function '%s' has %i arguments, but @export declares %irzcargument %i has invalid specification (type %s is not a container type and takes no extra argument)__name___.zOargument %i has invalid specification (%s it not a valid content type or class)z%%s not a valid GRT type specification)lenr; co_argcount TypeErrorr<rangerrr4DictDICTrItupledirr5rrstrr[replaceINTDOUBLErTr3 co_varnamesr ) rCarglistrErU containertype contenttyperVargtypes returntyper typenamess r set_typesz&DefineModule.export..set_typess 8}} 777^bdbmbuwyxCxOQTU]Q^Q^b__```G3x==?++ D Da ac]###(??#ce##,/* { 38(<<<!#HJKMZI[#[\\\#ck"2"222w{JX\7]7]adehepaqaq7q7q # 4 ;L;LPS;S;SKKYdYmYuYuvy{~YY A++ 11!"suvyDuE#EFFF#[137CJ CHchPSPZ[[[II$$I)=)=3ckCYCY GC PQQQj#,"6"6sC"@"@Aas#### 7! rs. bbbbb4bbbj@@@@@@@@H )++r