bgS+dZddlZddlmZmZmZmZmZddlm Z m Z m Z m Z m Z ddlmZgdZdd Zd Zdd Zd ZddZdZddZddZddZdZddZddZddZddZdS)z= Methods for detecting objects leading to pickling failures. N)ismethod isfunction istracebackisframeiscode)parent referenceatparentschildren)trace)baditems badobjectsbadtypescodeerrorsfreevars getmodule globalvars nestedcode nestedglobals outermostreferredglobalsreferrednestedrvarnamesFcddlm}|||}|s|s|Sddl}ddlm}||d}|t |vr|ndS)zget the module of the objectr)rNr)getnameT)force)inspectrbuiltinssourcervarskeys)object _filenamergetmodmoduler!rnames \/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/dill/detect.pyrrs++++++ VFI & &F )U)6MOOO 76 & & &DtH~~22444488$>ct|r|jjpi}nt|r |jpi}ndS|}ddlm}||d\}}n#t$rgd}}YnwxYwd|fd|D}|D]+\}} ||||fkr|cS#t$rY(wxYwdS)zget outermost enclosing object (i.e. the outer function in a closure) NOTE: this is the object-equivalent of getsource(func, enclosing=True) Nr)getsourcelinesT) enclosingc3.K|]\}}|v ||fVdSN).0r)objrs r* zoutermost..3s/EEjtC Sz EEr+) r__func__ __globals__ritemsr"r- Exceptionjoin) func_globalsr-lineslnum_localsr)r4rs @r*rr s4 ~~=,2 D  #)r~~H&&&&&&$nTT:::tt d 775>>DEEEEHEEEGS ~c""uTl223JJJ2    D  Fs$A&&A76A7%B;; CCTc(t|}t|sgSt}|jD]N}|t|}|r8|||r!|tt |dz}Ot |S)zAget the code objects for any nested functions (e.g. in a closure)NTrecurse)rrset co_constsaddrlist)r;rBnestedcos r*rr<s ::D $<<" UUFnDD :x "XX  D JJrNNN C#jT&B&B&B"C"CC <<r+ct|r|j}t|r|j}t |r|j}t |r|j}t|r|SdS)z~get the code object for the given function or method NOTE: use dill.source.getsource(CODEOBJ) to get the source code N) rr6r__code__rtb_framerf_coderr;s r*rrIse ~~+dmt$- 4.$t}}(T[d d|| D[ Fr+cddl}t}t||D]}||D]}t |dd}t |dd|ur|| len(referrednested(func)), try calling func(). If possible, python builds code objects, but delays building functions until func() is called. rNr6rJrLco_code)gcrCr get_referrersgetattrrEhasattrrF)r;rBrPfuncsrHr4_s r*rrVsIII EEEw'' G G##B'' G GCZ..Aq*d++r11599S>>>>j$//255uyy~~~~h--33UYYs^^^^i(( FSBYY # G ;;r+ctrjtrjpdjjniSfd}t |S)zgget objects defined in enclosing code that are referred to by func returns a dict of {name:object}r2c3KtD])\}} |j}n#t$rYwxYw||jfV*dSr1)zip cell_contents ValueError)r)crYclosuresr;s r*get_cell_contentsz#freevars..get_cell_contentssr4** ( (GD!  !     ' ' ' ' '  ( (s " //)rr6r __closure__rJ co_freevarsdict)r;r]r\s` @r*rrus~~~+dmt$#)r}( (((((( !!## $ $$r+ct|}|tSddl}ddlm}|jdk}t }|d5}tj|dddn #1swxYwY| D]{}d|vru| dd  d d}|r*| | d d f| ||t|d tD]9} | r5|r3t| r$|t#| d:t|S)z.get the names of any globals found within funcNrr)capturei stdout_GLOBAL()zNULL + r/rDTrA)rrFsystemprb hexversionrCdisgetvalue splitlinessplitrEreplacerRtuplerupdater) r;rBrhrbCAN_NULLnamesoutliner)rHs r*rrs ::D |DFF]JJJ~*H EEE   c   ))++     ::c??2&,,S11!4D  $,,y"556666 $dK11::  :' :fRjj : LLr4888 9 9 9 ;;sA//A36A3cHt|||S)z@get the names of objects in the global scope referred to by func)rr$)r;rBbuiltins r*rrs dGW - - 2 2 4 44r+c t|r|j}t|rd|r3tt t ni |t}}|jpiD]W} |j }t|||pi}| | |H#t$rYTwxYw |j pi|s!| |jjnH| t!|j|D]@} |}||ur| t|d|Ant%|r|r3tt t ni |s|j}n{|j}tt!|}|D]@}||ur |}| t|d|AniSt) fd|DS)zdget objects defined in global scope that are referred to by func return a dict of {name:object}Tc34K|]}|v||fVdSr1r2)r3r)globss r*r5zglobalvars..s0EEttu}}eDk"}}}}EEr+)rr6rr#rsumcopyrCr^rYrrqrZr7rJco_namesrgetrco_namer`) r;rBrw orig_funcr4rY_varskey nested_funcrzs @r*rrs~~+dmt$+/6>Ys^^$$))+++B4 (.B $ $C $ # 1 #='7CCIr E""" U####       Y*0b111 D KK *3 4 4 4 4 KK i&899 : : :yy{{ D D#iinn )++ J{D'BBCCCC  D /6>Ys^^$$))+++B D=DD I}T**++Dyy{{ D D)###iinn  J{D'BBCCCC  D EEEEtEEE E EEs;C C  C c^t|}t|sdS|j|jfS)ztget names of variables defined by func returns a tuple (local vars, local vars referrenced by nested functions)r2)rr co_varnames co_cellvarsrMs r*rrs3 ::D $<<r  T- --r+ct|dsdt|dfDSt|ddr|n|}gfd|DdDS)z'get items in object that fail to pickle__iter__cg|]}||Sr1r2r3js r* zbaditems..sLLLaammmmr+rvaluesNc bg|]+}|vt|d,S)r)appendr)r3i_objexactsafes r*rzbaditems..s8KKKQd]]T[[Aad++,,]]]r+cg|]}||Sr1r2rs r*rzbaditems..s - - -!q}A}}}r+)rSrrRr)r4rrrs ``@r*rrs 3z " "MLLJs1U488:LLLL!#ht44 =#**,,,#C DKKKKKKcKKKK - -t - - --r+cddlmsrdSStfdtDS)zget objects that fail to picklerpicklesNc3K|]D}t||tt|dz fVEdSrN)rRrr3attrdepthrr4rrs r*r5zbadobjects..s}NNwwws4/@/@t'L'LN$ 73t#4#4U1WU4HHINNNNNNr+)dillrr`dirr4rrrrs````@r*rrs  73uT " "/44 NNNNNNNN3xxNNN O OOr+cddlmsrdStStfdt DS)z)get types for objects that fail to picklerrNc3K|]D}t||tt|dz fVEdSr)rRrrs r*r5zbadtypes..s}NNwwws4/@/@t'L'LN$T!2!2575FFGNNNNNNr+)rrtyper`rrs````@r*rrs  73uT " "/44Cyy NNNNNNNN3xxNNN O OOr+cNddlm}m}|s ||}|r||ksJd|d|t|t|ks*Jdt|dt|dS#t$r!ddl}|dcYSwxYwi}t|D]j} t|| } n1#t$r$ddl}|d|| <YAwxYw|| ||st| |dz |||| <k|S)z*get errors for objects that fail to pickler)rr|zUnpickling produces z instead of Nr) rrr|rr9rhexc_inforrRr) r4rrrrr|pikrh_dictr_attrs r*rrs""""""""  % %$s))C Gczzzz>Acc##F"zz99S )))):>s))))DIIIN*))4 % % % JJJ<<>>!$ $ $ $ % EC;; C%%EE    JJJ,,..+E$K H wuU4(( ; uQwuT::E$K Ls$A-A;;(B&%B&=C+C<;C<)NF)T)TF)FF)rFF)__doc__rkr rrrrrpointersr r r r r loggerr__all__rrrrrrrrrrrrrrr2r+r*rs FFFFFFFFFFFFFF>>>>>>>>>>>>>> B B B????   8        >%%%,,55552F2F2F2Fj.......OOOOOOOOr+