B ]2@sddlmZGdddZGdddeZGdddeZGdd d eZGd d d eZGd d d ZGdddeZ GdddeZ GdddZ GdddeZ GdddZ GdddeZGdddZGdddeZGdddZGd d!d!eZGd"d#d#eZGd$d%d%ZGd&d'd'eZGd(d)d)ZGd*d+d+eZGd,d-d-eZGd.d/d/ZGd0d1d1eZGd2d3d3ZGd4d5d5ZGd6d7d7eZGd8d9d9Zd:S);)property_nondatac@seZdZd.ddZddZdd ZeeZd d Zd d Z ddZ ddZ ddZ ddZ ddZd/ddZd0ddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd1d*d+Zd2d,d-ZdS)3 ClassifierNFc Cs||_||_|dk r||_|j|g|_|rNx4|D]}|j|jO_q4Wn|j|jjjgO_x|D]}|j rjd}PqjW||_ |r|j j |_ dS)NT) modnamecliImpSet immnodesetZsuper_classifiersUseUnity classifierwith_referrersViewcall_with_referrers) selfrrrsupersdependsr sdrrJ/opt/alt/python37/lib64/python3.7/site-packages/guppy/heapy/Classifiers.py__init__s   zClassifier.__init__cCs||S)Nr)rxfrrrr!szClassifier.call_with_referrerscCs|S)N)get_cli)rrrr_get_cli&szClassifier._get_clicCs|j||S)N)ralt)rkindrrrrget_alt,szClassifier.get_altcs.djjfdd}|j|S)Nz %s.dictofcsjtjS)N)r_er_by_ ByDictOwnerr)rrrr4sz'Classifier.get_dictof..)rr mker_memoizedr dictof)rrerr)rrr get_dictof0s  zClassifier.get_dictofcCs ||S)N)family)rkrrrget_kind9szClassifier.get_kindcCs&|\}}}||k r"td||S)Nz1get_kindarg: argument with classifier %r expected)get_ckc ValueError)rrclakacmprrr get_kindarg=s  zClassifier.get_kindargcCsd|jjj|jfS)Nz%s%s)rr reprefixr)rrrr get_reprnameEszClassifier.get_reprnamecOs|||}t||fS)N)CallableSoKind)rr#argskwdsr&rrr get_sokindHs zClassifier.get_sokindcs&ddfdd|jDfS)Nz %s.sokind%scsg|]}d|qS)z(%s))get_userkindargrepr).0r&)rrr Psz-Classifier.get_sokindrepr..)r/joinkinds)rsokindr)rrget_sokindreprLszClassifier.get_sokindreprr4cCs|S)N) get_byname)rctxrrr get_tabheaderSszClassifier.get_tabheadercCs|jS)N)brief)rr*r=rrrget_tabrenderingXszClassifier.get_tabrenderingcOs |j||S)N)r%)rr1r2rrr get_userkind]szClassifier.get_userkindcCs|jS)N)arg)rrrrrget_userkindargaszClassifier.get_userkindargcCst||S)N)reprrC)rrrrrr5dszClassifier.get_userkindargreprcCsLg}xB||D]4\}}||}|jjj||jd}|||fqW|S)N)r#) partition_clir'rr idsetr#append)riterableitemsr&vrrr partitiongs  zClassifier.partitioncs&|||jjfddDS)Ncsg|]}||fqSrr)r6r&)eprrr7ssz,Classifier.partition_cli..)rrZ epartitionZ get_domain)rar)rLrrEos zClassifier.partition_clics.|}fdd|D}jjj|ddS)Ncsg|]\}}|qSr)r')r6r&rJ)rrrr7wsz%Classifier.relimg..)Z maximized)rErr union)rXpr9r)rrrelimgus zClassifier.relimg==cs|fddS)Ncsj|S)N)rZselect)rM)br,rrrr }z'Classifier.select_cli..)r)rrMrTr,r)rTr,rr select_clizszClassifier.select_clicCs|jj||j||}|S)N)rr rFrVnodes)rrPr&rrrrr select_idsszClassifier.select_ids)NrrF)r4)r4)rS)N)__name__ __module__ __qualname__rrrrrrr$r'r-r/r3r;r>r@rArCr5rKrErRrVrYrrrrrs*     rc@s<eZdZddZddZddZddZd d ZeeZ d S) SoKindcs8|_|j_|_jjjfdd|D_dS)Ncsg|]}j|qSr)r r-)r6r)rrrr7sz#SoKind.__init__..)r#r r9rrr clikinds)rr#r9r)rrrs  zSoKind.__init__cCsJt|tsdS|j|jkrdS|jjj|j}|jjj|j}||kS)NF) isinstancer]r rr rOr9)rotherrMrTrrr__eq__s  z SoKind.__eq__cCs tt|S)N)hashrD)rrrr__hash__szSoKind.__hash__cCs |j|S)N)r r;)rrrr__repr__szSoKind.__repr__cCs |j|S)N)r#refdby)rrrr _get_refdbyszSoKind._get_refdbyN) rZr[r\rrarcrdrfpropertyrerrrrr]s  r]c@seZdZddZdS)r0cOs"|j||}||j|j|fS)N)r# __class__r9)rr1r2r&rrr__call__s zCallableSoKind.__call__N)rZr[r\rirrrrr0sr0c@seZdZddZdS)SoNoKindcCsd|jjjjdfS)Nz%s%ssonokind)r rr r.)rrrrrdszSoNoKind.__repr__N)rZr[r\rdrrrrrjsrjc@s8eZdZdZddZddZeeZddZeeZ dS) QuickSoKind)r r^cCs||_||_dS)N)r r^)rr r^rrrrszQuickSoKind.__init__cCs|jjS)N)r r#)rrrr_get_erszQuickSoKind._get_ercstfddjDS)Ncsg|]}j|qSr)r r')r6r&)rrrr7sz*QuickSoKind._get_kinds..)tupler^)rr)rr _get_kindsszQuickSoKind._get_kindsN) rZr[r\ __slots__rrmrgr#ror9rrrrrls rlc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)IdentityFamilycCs||jj||_dS)N) defrefiningr Anythingr )rrr rrrrszIdentityFamily.__init__cCs.||jkr|j|jkS|jjdk o,|jj|kS)N)famrBsupercl)rrMrTrrr_ge_ATOMs  zIdentityFamily._ge_ATOMcCs*||jkr|j|jkS|jdk o(|j|kS)N)rtrBru)rrMrTrrr_le_ATOMs  zIdentityFamily._le_ATOMcCs ||jkS)N)rB)rrMrTrrr c_containsszIdentityFamily.c_containscCs|jj|j|jg@S)N)rr rFrWrB)rrMrTrrr_and_IDszIdentityFamily._and_IDcCsdtt|jS)Nz)hexidrB)rrMrrr c_get_briefszIdentityFamily.c_get_briefcCsd|j|j|fS)Nz%s(%s))r r/r5)rrMrrrc_reprszIdentityFamily.c_reprN) rZr[r\rrvrwrxryr|r}rrrrrqsrqc@s>eZdZddZddZdddZdd Zd d Zd d ZdS) ByIdentitycCs(t||||j|t||_dS)N)rrhvZcli_idfam_mixin_argatomrqr%)rrrrrrrszByIdentity.__init__cCsdS)Nzobject identityr)rrrrr<szByIdentity.get_bynamer4cCsdS)NzObject Identityr)rr=rrrr>szByIdentity.get_tabheadercCs||jj|S)N)r'rrobj_at)rZaddressrrrrAszByIdentity.get_userkindcCs t|jS)N)r{rB)rrrrrrCszByIdentity.get_userkindargcCst||S)N)rzrC)rrrrrr5szByIdentity.get_userkindargreprN)r4) rZr[r\rr<r>rArCr5rrrrr~s  r~c@s,eZdZddZddZddZddZd S) ByIdentitySetcCs$t||||j|jj|_dS)N)rrrZ cli_idsetr rFr%)rrrrrrrszByIdentitySet.__init__cCsdS)Nzby identity setr)rrrrr< szByIdentitySet.get_bynamecCs||jj|gS)N)r%rrr )rZnoderrrrA szByIdentitySet.get_userkindcCs,||}|jjdd|D}||S)NcSsg|] \}}|qSrr)r6r&rJrrrr7sz(ByIdentitySet.relimg..)rErrZimmnodeset_unionr%)rrPrQr&rrrrRs zByIdentitySet.relimgN)rZr[r\rr<rArRrrrrrsrc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)PyObjectFamilycCs ||_dS)N)r )rrr rrrrszPyObjectFamily.__init__cCsdS)NTr)rrMrTrrrrxszPyObjectFamily.c_containscCsdS)NzKind: Name/Value/Addressr)rrMrrrc_get_idpart_headersz"PyObjectFamily.c_get_idpart_headercCsdS)Nr4r)rrMrrrc_get_idpart_label sz!PyObjectFamily.c_get_idpart_labelcsfdd}|S)Ncs$jj|}|jdd}|S)Nz<1 >)rr isor?lstriprstrip)rrX)rrrrender$sz2PyObjectFamily.c_get_idpart_render..renderr)rrMrr)rrc_get_idpart_render#s z"PyObjectFamily.c_get_idpart_rendercCsdS)Nz r)rrMrrrr|*szPyObjectFamily.c_get_briefcCsd|jjjdfS)Nz%s%srs)rr r.)rrMrrrr}-szPyObjectFamily.c_reprcCs|S)Nr)rrMrTrrrry0szPyObjectFamily._and_IDN) rZr[r\rrxrrrr|r}ryrrrrrsrc@s:eZdZdZddZddZdddZd d Zd d Zd S)ByUnityzXbyunity Classify by . The classification returned for every object is .cCs.tj||||j|gd|t||_dS)N)r)rrrZcli_nonerrr%)rrrrrrr;s zByUnity.__init__cCsdS)NZunityr)rrrrr<BszByUnity.get_bynamer4cCsdS)Nzr)rr=rrrr>EszByUnity.get_tabheadercGs |jjjS)N)rr rs)rr1rrrrAHszByUnity.get_userkindcCsdS)Nr)rrrrrrCKszByUnity.get_userkindargN)r4) rZr[r\__doc__rr<r>rArCrrrrr6s  rc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)IndiSizeFamilycCs||jj||_dS)N)rrr rsr )rrr rrrrPszIndiSizeFamily.__init__cCst|}|jj||S)N)intrZ AtomFamilyri)rrMrrrriTszIndiSizeFamily.__call__cCs|j||S)N)r r)rrMrrrrc_altXszIndiSizeFamily.c_altcCs|j|jj|kS)N)rBr rclassify)rrMrTrrrrx[szIndiSizeFamily.c_containscCs|j|jS)N)r summary_strrB)rrMrrr c_get_render^szIndiSizeFamily.c_get_rendercCs d|jS)Nz )rB)rrMrrrr|aszIndiSizeFamily.c_get_briefcCsd||jfS)Nz )rB)rrMrrrrc_get_brief_altdszIndiSizeFamily.c_get_brief_altcCsd|j|jfS)Nz%s(%s))r r/rB)rrMrrrr}gszIndiSizeFamily.c_reprN) rZr[r\rrirrxrr|rr}rrrrrOsrc@s<eZdZdZddZddZddZdd d Zdd d Zd S) ByIndiSizezjbyindisize Classify by . The classification will be individual memory size of the object.cCs t||||t||_dS)N)rrrrr%)rrrrrrrpszByIndiSize.__init__cCsdS)Nzindividual sizer)rrrrr<tszByIndiSize.get_bynamecCs|jjiS)N)rrZ cli_indisize)rrrrrwszByIndiSize.get_clir4cCsdS)NzIndividual Sizer)rr=rrrr>zszByIndiSize.get_tabheadercCs|rd|jSd|jSdS)Nz%dz%9d)rB)rr*r=rrrr@}s zByIndiSize.get_tabrenderingN)r4)r4) rZr[r\rrr<rr>r@rrrrrks  rc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS) TypeFamilycCs$||jj||_|||_dS)N)rrr rsr fam_Familyrange)rrr rrrrszTypeFamily.__init__cCst|tstd|||S)NzArgument should be a type.)r_type TypeErrorSet)rrMrrrris zTypeFamily.__call__cCs|j||S)N)r r)rrMrrrrrszTypeFamily.c_altcCst||jkS)N)rrB)rrMrTrrrrxszTypeFamily.c_containscCs|j|jS)N)rrrB)rrMrrrrszTypeFamily.c_get_rendercCs|jt|j|jS)N)rrrrB)rrMrrrr|szTypeFamily.c_get_briefcCs$ddddd|}d|||fS)Nzstrict subtypeZsubtypeZ supertypezstrict supertype)=rz <%s of %s>)r|)rrMrrrrrrs zTypeFamily.c_get_brief_altcCs |j|S)N)r get_repr)rrMrrrr}szTypeFamily.c_reprN) rZr[r\rrirrxrr|rr}rrrrrs rc@sJeZdZdZddZddZddZdd Zdd d Zd dZ ddZ dS)ByTypezMbytype Classify by . The classification will be the type of the object.cCs(t||||j|t||_dS)N)rrrZcli_typerrr%)rrrrrrrszByType.__init__cCsHyt|jj|d}Wn&tk r<t|jj|}YnX||S)NType)getattrrtypesAttributeErrorbuiltinslowerrA)rrtyrrrget_attr_for_ers zByType.get_attr_for_ercCsdS)Nrr)rrrrr<szByType.get_bynamecCsD|j}|}||jjkr.d||jj|fSd|||fSdS)Nz%s.%sz%s(%r))rBr/r invtypemodrC)rrtZrnrrrrs  zByType.get_reprr4cCsdS)Nrr)rr=rrrr>szByType.get_tabheadercCs|j|}||S)N)rtc_adaptr%)rrrrrrAs zByType.get_userkindcCs|jj|jS)N)rr tc_reprrB)rrrrrrCszByType.get_userkindargN)r4) rZr[r\rrrr<rr>rArCrrrrrs rc@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)OwnedDictFamilycCs||jtdS)N)Z defrefidisr rdict)rrrrrrszOwnedDictFamily.__init__cCs|jS)N)rB)rrMrrr_get_ownerkindszOwnedDictFamily._get_ownerkindcCs||j|S)N)rBr)rrMrrrrrszOwnedDictFamily.c_altcs|}|jjjkr(jjjjS|fdd}|S|jjj krxjjjj fdd}|SjjjjSdS)Ncs4jj|jj}d|kr0d|dd}|S)N.z..)rr rownerstheonesplit)rZret) ownrenderrrrrsz,OwnedDictFamily.c_get_render..rendercsjj|jjS)N)rr rrr)r) modrenderrrrrs) rrr NothingrDictZ get_renderZfam_Typer ModuleTypeModule)rrMr+rr)rrrrrs zOwnedDictFamily.c_get_rendercCs*||}||jjjkrdSd|jSdS)Nzdict (no owner)zdict of )rrr rr?)rrMr+rrrr|s zOwnedDictFamily.c_get_briefcCsX|j\}}}|dkr.|jd\}}}|jjj}|j|jjjkrN|j }|||fS)Nz==r) rBr(biperr#r"r rr r notownedtag)rrMr*r&r,Zdoclarrr c_get_ckcs zOwnedDictFamily.c_get_ckccCs ||S)N)r|)rrMrTrrr c_get_str_forszOwnedDictFamily.c_get_str_forcsT|}|jjjk r6|j|fdd}|Sjjjjj }|j|SdS)Ncsjj|jjS)N)rr rrr)r) owner_renderrrrr sz3OwnedDictFamily.c_get_idpart_render..render) rrr rrtr_parentZSpecrr)rrMr+rrTr)rrrrs  z#OwnedDictFamily.c_get_idpart_rendercCs0||}||jjjkrdSd|j|SdS)NzAddress*LengthzOwner )rrr rrtr)rrMr+rrrrs z#OwnedDictFamily.c_get_idpart_headercCs,||}t|}|dr$d|}d|S)N~z(%s)z %s.dictof)rrD startswith)rrMr+Zrarrrr}s   zOwnedDictFamily.c_reprN) rZr[r\rrrrr|rrrrr}rrrrrs  rc@s`eZdZddZddZddZddZd d Zdd d ZdddZ ddZ ddZ ddZ dS)rcCsjtj||||gd||_|jj|_|jj|_|j|_|j |_ |j |_ |j gg|_ |j gg|_dS)N)r)rrownerclassifierrrZdict_ownership ownershipr"r%notdict dictofnothingrr notdicttagr)rrrrrrrr s  zByDictOwner.__init__cCsd|jS)Nz [dict of] %s)rr<)rrrrr<0szByDictOwner.get_bynamecCs |j|j|jj|j|j}|S)N)rZ cli_dictofrrrrr)rrrrrr3szByDictOwner.get_clicCs6||jkr|jS||jkr |jS||j|SdS)N)rrrrr%rr')rr&rrrr'8s   zByDictOwner.get_kindcCs2||jkr|jS||jkr |jS|j|jSdS)N)rrrrrr-rB)rrrrrr-@s   zByDictOwner.get_kindargr4cCsd|j|S)Nz Dict of %s)rr>)rr=rrrr>HszByDictOwner.get_tabheadercCs:||jkr|j}n$||jkr"d}nd|j|j|}|S)Nzdict (no owner)zdict of )rr?rrr@rB)rrr=rXrrrr@Ks  zByDictOwner.get_tabrenderingcCs0|dkr|jS||jjjkr"|jS||SdS)N)rrr rrr%)rr&rrrrAUs zByDictOwner.get_userkindcCs,||jkrdS||jkr"|jjjS|jSdS)N)rrrr rrB)rrrrrrC]s    zByDictOwner.get_userkindargcCs|||j}|jj}|j}xN|jD]D}||}|sL|jj|||}|r&|d}|dk r&||q&W|jj |S)Nr) rErWrrZ mutnodesetrrZupdate_dictownersaddr rF)rrPrQnsZdrgr&rrJrrrres   zByDictOwner.ownersN)r4)r4) rZr[r\rr<rr'r-r>r@rArCrrrrrrs  rc@s\eZdZdZddZddZddZdd Zd d Zdd dZ dddZ ddZ ddZ dS)ByClassOrDictOwnerabyclodo Classify by . The classification is performed as follows: 1. If the object is not a dictionary, the classification will be the type of the object. 2. The object is a dictionary. The referrers of the object are searched to find one that 'owns' the dictionary. That is, typically, that the dict is the __dict__ attribute of the owner. If no such owner is found, the type 'dict' will be the classification. If an owner is found, a special object that indicates the classification of the owner will be returned. The classification of the owner will be done by class. (As byclass.)cCsV|j}|j}||@j}|j}tj|||d|g|gd||_|j|_|j|_||_dS)N)rrr) rr"r rrsuprMrad)rrrrMrrrrrrrs  zByClassOrDictOwner.__init__cCsdS)Nz[dict of] classr)rrrrr<szByClassOrDictOwner.get_bynamecCs|jjS)N)rr)rrrrrszByClassOrDictOwner.get_clicCs0|\}}||jjkr |j|S|j|SdS)N)rrrMr')rZxxx_todo_changemer+kdrrrr's  zByClassOrDictOwner.get_kindcCs<|j|jjkr t}|j|}n|j|}|jj}||fS)N)rtrr%rr-rMr)rrr+rrrrr-s  zByClassOrDictOwner.get_kindargr4cCsdS)NzKind (class / dict of class)r)rr=rrrr>sz ByClassOrDictOwner.get_tabheaderNcCsy||dkr>|dk r>|dkr&|jjj}n |j|}|j|S|dk rv|dkrv|j|}|tkrjtd|j |StWntk rtdYnXdS)Nrz dictof= dictof=()) rUniSetrrrArrrrr')rrr"ZdorrrrAs      zByClassOrDictOwner.get_userkindcCsN|j|jjkr<|j|jjjkr$d}n|jj|j}d|S|jj |SdS)Nz()z dictof=%s) rtrr%rBrrrrr5r )rrrrrrr5s z&ByClassOrDictOwner.get_userkindargreprcCs |j|S)N)rr)rrPrrrrszByClassOrDictOwner.owners)r4)NN) rZr[r\rrr<rr'r-r>rAr5rrrrrrus    rc@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)RetClaSetFamilycCs||jj||_dS)N)rrr rsr )rrr rrrrszRetClaSetFamily.__init__cCs.||jkr|j|jkS|jjdk o,|jj|kS)N)rtrBru)rrMrTrrrrvs  zRetClaSetFamily._ge_ATOMcCs*||jkr|j|jkS|jdk o(|j|kS)N)rtrBru)rrMrTrrrrws  zRetClaSetFamily._le_ATOMcCs|jjjjj||S)N)rBr r#rer)rrMrrrrrszRetClaSetFamily.c_altcCs|jjjj|dS)NF)rBr#rer r@)rrMrrr_get_arg_briefszRetClaSetFamily._get_arg_briefcCsd||S)Nz)r)rrMrrrr|szRetClaSetFamily.c_get_briefcCs$ddddd|}d|||fS)Nz by less thanz by at mostz by at leastz by more than)rz<=z>=rz)r)rrMrrrrrrs zRetClaSetFamily.c_get_brief_altcCs|j|jjdfS)Nz==)r rBr^)rrMrrrrszRetClaSetFamily.c_get_ckccCs d|jS)Nz %r.refdby)rB)rrMrrrr}szRetClaSetFamily.c_reprcCs0t|tstd|jjj}||f}t||S)NzSoKind expected)r_r]rr r#rer0)rsokr#r9rrrr:s    zRetClaSetFamily.sokindN) rZr[r\rrvrwrrr|rrr}r:rrrrrs rc@sNeZdZddZddZddZddZd d Zdd d ZddZ ddZ dS) ByRetClaSetcCs8tj|||dd||_||_|jt||_||_dS)NT)r ) rrrgreferrer_classifierrrrr%r)rrrrrdocrrrrs zByRetClaSet.__init__cCsdS)Nzreferrer kindsr)rrrrr< szByRetClaSet.get_bynamecCsi}|jj|j|jj|S)N)rrZcli_rcsrrr)rmemorrrrszByRetClaSet.get_clicCs`|jjdkr|j}n||jjjkr(d}n|f}g}x|D]}||j|q8W|jj |S)NORr) rtopnamerBrr rrGrr-rr )rr&ksZrksrrrget_inverted_refkinds  z ByRetClaSet.get_inverted_refkindcCs"|r|t|j|S|jjSdS)N)r%rlrrZ refdbynothing)rr&rrrr' szByRetClaSet.get_kindr4cCs d|j|}|rd|}|S)NzReferrers by %sz{%s})rr>)rr=Zthrrrr>&szByRetClaSet.get_tabheadercsDfdd|jjD}|d|}r8d|}n|s@d}|S)Ncsg|]}j|qSr)rr@)r6r)r=rrrr7-sz0ByRetClaSet.get_tabrendering..z, z{%s}z )rBr9sortr8)rr*r=ZrsrXr)r=rrr@,s    zByRetClaSet.get_tabrenderingcGsd}g}xf|D]^}t|trZ|j|jk r@td|jj|jjf||j|dkrl|}q||j |qWt |dks|dkrt |j|j j |}n|}||S)Nz:Expected a SoKind with the %r classifier, argument had %r.rN)r_r]r rr)rextendr^rGr-lenrlrrr r%)rr1Zfirstsokr^rBrrrrrA7s"    zByRetClaSet.get_userkindN)r4) rZr[r\rr<rrr'r>r@rArrrrrs   rc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS) InRelFamilycCs||_||jjdS)N)r rrr rs)rrr rrrrSszInRelFamily.__init__cCs,tdd|D}tdd|D}||kS)NcSsg|] }|dfqS)rr)r6rrrrr7\sz(InRelFamily._eq_args..cSsg|] }|dfqS)rr)r6rrrrr7]s)r)rrMrTrrr_eq_argsWszInRelFamily._eq_argscCs2||jkr||j|jS|jjdk o0|jj|kS)N)rtrrBru)rrMrTrrrrv`s zInRelFamily._ge_ATOMcCs.||jkr||j|jS|jdk o,|j|kS)N)rtrrBru)rrMrTrrrrwfs zInRelFamily._le_ATOMcCs|j||S)N)r r)rrMrrrrrlszInRelFamily.c_altcCsd|j|dS)Nz)r r@)rrMrrrr|oszInRelFamily.c_get_briefcCsd|j|j|fS)Nz%s(%s))r r/r5)rrMrrrr}rs zInRelFamily.c_reprN) rZr[r\rrrvrwrr|r}rrrrrRs rc@s`eZdZddZddZddZddZd d Zd d ZdddZ dddZ ddZ ddZ dS)ByInRelcCs*tj|||dd||_|t||_dS)NT)r )rrrrrr%)rrrrrrrrxszByInRel.__init__cCs.|jjj}|j}||j|j}|jdddS)Nr4F)Zsafe)rrPathZ rel_tablerZrelatorZstra)rrXPrrrrr_rel2str}s zByInRel._rel2strcsjjj}|}fdd}|dr0|dd}|drr|ddd}djji}t||}||j|}n||dr|dd}|dd  r||j |}n|d r|d dd}t|i}||j |}n|d r|d dd}t|i}||j |}nt|drF|ddd}t |}||j|}n@|drz|ddd}t |}||j|}n td|nf|dr|dd}|dr|ddd}t |}||j|}n ||j|}n td||S)Ncsjjjj|jf|S)N)rrZheapycZRelationcode)Rr1)rrrmkrelszByInRel._str2rel..mkrel_rN[]Zhprrz f_locals[ z f_locals [ zkeys()[z__dict__.keys()[zCant make a relation of %r.z->z f_valuestack[ )rrrrrr evalZ R_INDEXVALreplaceisalnumZ R_ATTRIBUTEZ R_LOCAL_VARZR_CELLrZ R_INDEXKEYZ R_HASATTR SyntaxErrorZR_STACKZ R_INTERATTR)rrrZorgsrZlocrXZrelr)rr_str2relsP                   zByInRel._str2relcCsdS)Nz referred viar)rrrrr<szByInRel.get_bynamecCsi}i}|jj|j||S)N)rrZ cli_inrelr)rZmemokindZmemorelrrrrszByInRel.get_clicCs ||S)N)r%)rr&rrrr'szByInRel.get_kindr4cCs$|sdSd}|dkrd|}|SdS)Nz Referred Via:z Referred Viaandz{%s}r)rr=rXrrrr>s zByInRel.get_tabheadercCs||}|dkrd|}|S)Nrz{%s})r5)rrr=rXrrrr@s zByInRel.get_tabrenderingcsfdd|DS)Ncsg|]}|qSr)r)r6r)rrrr7sz(ByInRel.get_userkind..)r')rr1r)rrrAszByInRel.get_userkindcs&fdd|jD}|d|S)Ncsg|]}t|qSr)rDr)r6r)rrrr7sz/ByInRel.get_userkindargrepr..z, )rBrr8)rrrMr)rrr5szByInRel.get_userkindargreprN)r4)r4) rZr[r\rrrr<rr'r>r@rAr5rrrrrws1 rc@sHeZdZddZddZddZddZd d Zdd d ZdddZ dS) AndClassifiercCs@|dkr dddd|D}tj|||d||d||_dS)Nz(%s)z & cSsg|] }|jqSr)r)r6rrrrr7sz*AndClassifier.__init__..)rrr)r8rrr1)rrrr1rrrrs   zAndClassifier.__init__cCsdddd|jDS)Nz<%s>z & cSsg|] }|qSr)r<)r6rrrrr7sz,AndClassifier.get_byname..)r8r1)rrrrr<szAndClassifier.get_bynamecCs$i}|jjtdd|jD|S)NcSsg|] }|jqSr)r)r6rrrrr7sz)AndClassifier.get_cli..)rrZcli_andrnr1)rrrrrrszAndClassifier.get_clicCs>g}x(t||jD]\}}|||qW|jjj|S)N)zipr1rGr'rrZfam_AndZ_cons)rr&rZkiZcirrrr'szAndClassifier.get_kindcCsdddd|jDS)Nz(%s)z & cSsg|] }|qSr)r/)r6rrrrr7sz.AndClassifier.get_reprname..)r8r1)rrrrr/szAndClassifier.get_reprnamer4cCs.dddd|jD}|dkr*d|}|S)Nz%sz & cSsg|]}|dqS)r)r>)r6rrrrr7sz/AndClassifier.get_tabheader..rz(%s))r8r1)rr=rXrrrr>szAndClassifier.get_tabheadercCsTg}x0t|j|jD]\}}||d}||qWd|}|dkrPd|}|S)Nrz & z(%s))rrBr1r@rGr8)rr*r=ZssrMZclrrXrrrr@s  zAndClassifier.get_tabrenderingN)r4)r4) rZr[r\rr<rr'r/r>r@rrrrrs rc@s4eZdZddZddZddZddZd d Zd S) ModuleFamilycCs$||jj||_|||_dS)N)rrr rsr rr)rrr rrrrszModuleFamily.__init__cCs ||jkS)N)rB)rrMrTrrrrxszModuleFamily.c_containscCs|j|jS)N)rrrB)rrMrrrr szModuleFamily.c_get_rendercCs|jt|j|jS)N)rrrrB)rrMrrrr| szModuleFamily.c_get_briefcCsd|j|j|fS)Nz%s(%s))r r/r5)rrMrrrr}s zModuleFamily.c_reprN)rZr[r\rrxrr|r}rrrrrs rc@sHeZdZddZddZddZddZdd d Zdd dZddZ d S)ByModulecsnfdd}|j|jjjj|jjjj|d}t ||||jjj_ d_ | t _|jj_dS)Ncsjd7_|S)NrN)nc)r)rrrrsz#ByModule.__init__..classifyr)rZcli_user_definedr rr rrrBrr not_modulerrrr%rr)rrrrrr)rrrs  zByModule.__init__cCsdS)Nmoduler)rrrrr<%szByModule.get_bynamecCs|dkr|jS||SdS)N)rr%)rr&rrrr'(szByModule.get_kindcCs(||jkrdS|j|jkst|jSdS)N)rrtr%AssertionErrorrB)rrrrrr-.s zByModule.get_kindargr4cCsdS)Nrr)rr=rrrr>5szByModule.get_tabheaderNcCs|dkr|dkr|jS|dkrXy|jjjjj|}Wqftk rTtd|YqfXn|jj|}t ||j st dt ||dk r|j |krtd||j f||S)Nz(No module %r in View.target.sys.modules.z3The specified object is not of module type, but %r.z,The specified module has not name %r but %r.)rrrtargetsysmodulesKeyErrorr)rr_rrrrZr%)rratmrrrrA8s  zByModule.get_userkindcCsT||jkrdS|j}|j}d|}|jjjj||k rL|dtt |7}|SdS)Nr4z%rz, at=%s) rrBrZrZ_rootrrgetrzr{)rrrrrrrrr5Ks zByModule.get_userkindargrepr)r4)NN) rZr[r\rr<r'r-r>rAr5rrrrrs  rc@s,eZdZddZddZddZddZd S) AltFamilycCs|dkrtd|||_dS)N)rz<=z==z!=rz>=zNo such comparison symbol: %r)r)altcode)rrrrrrrXs zAltFamily.__init__cCs|jj|j|jS)N)rBrtrr)rrMrrrr|]szAltFamily.c_get_briefcCs6t|j}|ddkr&|j|d<ntdt|S)Nrz==zJCan not make alternative kind, non-equality comparison on underlying kind.)listrBr(rr)rn)rrMckcrrrr`s   zAltFamily.c_get_ckccCsdt|j|jfS)Nz %s.alt(%r))rDrBr)rrMrrrr}iszAltFamily.c_reprN)rZr[r\rr|rr}rrrrrWs rc@s$eZdZddZddZddZdS) FindexFamilycCs$||jj||_|||_dS)N)rrr rsr rr)rrr rrrrnszFindexFamily.__init__cCsBd|jkrt|jjks$ndSd|jj|jj|jfSdS)Nrzz%s / %d)rBrr r9r?)rrMrrrr|ss zFindexFamily.c_get_briefcCsd|j|jfS)Nz%s(%d))r r/rB)rrMrrrr}yszFindexFamily.c_reprN)rZr[r\rr|r}rrrrrmsrc@s.eZdZddZddZddZd dd Zd S) ByFindexcCsJdd|D|_dd|jD}tj||||d||_|t||_dS)NcSsg|]}|j|qSr)rtr)r6r&rrrr7sz%ByFindex.__init__..cSsg|] }|dqS)rr)r6rrrrr7s)r)altsrrr9rrr%)rrrr9rrrrr~s zByFindex.__init__cCs,tdd|jD}i}|jj||}|S)NcSsg|]\}}}|j||fqSr)r)r6r*r&r,rrrr7sz$ByFindex.get_cli..)rnr rrZ cli_findex)rr rrrrrrszByFindex.get_clicCs d|jfS)Nz"index of first matching kind of %s)r9)rrrrr<szByFindex.get_bynamer4cCsdS)NzFirst Matching Kind / Indexr)rr=rrrr>szByFindex.get_tabheaderN)r4)rZr[r\rrr<r>rrrrr}src@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ d9ddZ ddZ ddZd:ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8ZdS); _GLUECLAMP_) z_parent:ImpSetz _parent:Viewz_parent.View:hvz_parent:UniSetz _parent.UniSet:fam_mixin_argatomz _parent:Usez_root.guppy.etc.etc:str2intz_root:rez _root:typesz_root:builtinscOs|jj|f||S)N)rfam_EquivalenceRelation)r constructorr1r2rrrrsz_GLUECLAMP_._er_by_cCs|jt|ddS)NClodo)r)rr)rrrr _get_Clodosz_GLUECLAMP_._get_ClodocCs|jt|ddS)NZId)r)rr~)rrrr_get_Idsz_GLUECLAMP_._get_IdcCs|jt|ddS)NZIdset)r)rr)rrrr _get_Idsetsz_GLUECLAMP_._get_IdsetcCs|jt|ddS)Nr)r)rr)rrrr _get_Modulesz_GLUECLAMP_._get_ModulecCs|jt|ddS)Nr )r)rr)rrrr _get_Unitysz_GLUECLAMP_._get_UnitycCs ||jS)N) mker_refdbyr )rrrr_get_Rcssz_GLUECLAMP_._get_RcscCs6t|dkr|jSdd|D}d}|jt|||S)NrcSsg|] }|jqSr)r )r6r#rrrr7sz(_GLUECLAMP_.mker_and..)rr rr r)rZersZ classifiersrrrrmker_ands  z_GLUECLAMP_.mker_andNcs,dkrdjjfddS)Nz %s.dictofcstjS)N)rrr r)r#rrrrr sz)_GLUECLAMP_.mker_dictof..)r rr!)rr#rr)r#rrr mker_dictofs  z_GLUECLAMP_.mker_dictofcCsiS)Nr)rrrr _get_memo_ersz_GLUECLAMP_._get_memo_ercCs(|j|}|dkr$||j|<}|S)N)Zmemo_err)rrrrJrrrr!s z_GLUECLAMP_.mker_memoizedcs,dkrdjjfddS)Nz %s.refdbyc s.tjjjdjjjfS)Nz%s Classify by <%s> of referrers. This classifier uses the %r classifier to classify the referrers of the object. The classifications of the referrers are collected in a set. This set becomes the classification of the object. )rrrrr r<rr)r#rrrrr sz)_GLUECLAMP_.mker_refdby..)r rr!)rr#rr)r#rrrrs  z_GLUECLAMP_.mker_refdbycCs|t|dS)NZSize)rr)rrrr _get_Sizesz_GLUECLAMP_._get_SizecCs|t|dS)Nr)rr)rrrr _get_Typesz_GLUECLAMP_._get_TypecCs|j}|t|d|jS)NZVia)rrrr)rrrrr_get_Vias z_GLUECLAMP_._get_Viac Cst|tr|St|ts tdd|}|}|dr@|dsHt||dd}| d}t |dkrvt||d}| |d}|j |}|d krt |dkrt|d}n t |d krt||d krt|yt|j|d }Wn&tk rt|j|}YnXt||s8td ||dd ksNt||d d}t |dkrrt|d|dd} |d} |j| krtd||| f|j| krtd||| f|S)Nz"type, class or basestring expectedzString argument to tc_adapt should be of form '' or '' or ''. I got: %rrr rrrr)rclassrz%s object expectedrNrz,The %s %r has wrong __module__, expected %r.z*The %s %r has wrong __name__, expected %r.)r_rstrrrendswithr)rrrrZstr2intrrrr capitalizerrrr8r[rZ) rr&errrrZaddrrrnamesZ modulenameZtcnamerrrrsX           z_GLUECLAMP_.tc_adaptcCs4t|trd}ntdd||j|jtt|fS)Nrz type expectedz<%s %s.%s at %s>)r_rrr[rZrzr{)rr&rrrrr)s z_GLUECLAMP_.tc_reprcs$dddddfdd}|S)NcSs|S)Nr)r&rrrr ;rUz&_GLUECLAMP_._get_alt..cSs|S)Nr)r&rrrr <rU)z==z!=cs.|}|dkr&t|}||<||S)N)rrr)rr,rM)altmemorrrr?s   z!_GLUECLAMP_._get_alt..altr)rrr)r#rr_get_alt9s z_GLUECLAMP_._get_altcCs ||S)N)findex)rrrrrrGsz_GLUECLAMP_.bipercCs |tS)N)rr)rrrr _get_dictofJsz_GLUECLAMP_._get_dictofcCs||jjS)N)r"r r)rrrr_get_dictofnothingMsz_GLUECLAMP_._get_dictofnothingcCsBi}x8t|jjjD]"\}}|dr|dd||<qW|S)Nr)rr_module__dict__rIr)rrr&rJrrr_get_invtypemodPs  z_GLUECLAMP_._get_invtypemodcCs |jjjS)N)r rr)rrrr _get_notdictWsz_GLUECLAMP_._get_notdictc Gs$|t|dddd|D|S)Nz findex(%s)z, cSsg|] }t|qSr)rD)r6r&rrrr7^sz&_GLUECLAMP_.findex..)rrr8)rr9rrrr%Zs z_GLUECLAMP_.findexcCs|jjS)N)rkre)rrrr_get_refdbynothingbsz_GLUECLAMP_._get_refdbynothingcGsd}g}|stdxl|D]d}|}|dkr8|d}n|d|k rTtdt||ddkrptdt|||dqWt||j|S) z sokind(0..*:Kind+) -> SetOfKind Nz$At least one argument must be given.rz&Kind at index %d has wrong classifier.rz==z'Kind at index %d has wrong comparision.rN)r)r(rrGrlrr )rr9r*r^rrrrrr:es     z_GLUECLAMP_.sokindcCs t|jdS)Nr)rjr )rrrr _get_sonokindzsz_GLUECLAMP_._get_sonokind)N)N)rZr[r\Z _imports_rrrrrrrrrrr!rrrrrrr$rr&r'r+r,r%r-r:r.rrrrr s8   8r N)Zguppy.etc.Descriptorrrobjectr]r0rjrlrqr~rrrrrrrrrrrrrrrrrrrrr rrrrs:    $'PVZ6M%`)C