t4 d Z ddlZddlmZmZmZmZmZ ddlm Z m
Z
mZmZm
Z
ddlmZ g dZdd Zd
ZddZd
ZddZd ZddZddZddZd ZddZddZddZddZdS )z=
Methods for detecting objects leading to pickling failures.
N)ismethod
isfunctionistracebackisframeiscode )parent referenceatparentschildren)trace)baditems
badobjectsbadtypescodeerrorsfreevars getmodule
globalvars
nestedcode
nestedglobals outermostreferredglobalsreferrednestedr varnamesFc ddl m} || | }|s|s|S ddl}ddlm} || d }|t | v r|ndS )zget the module of the objectr )r Nr )getnameT)force)inspectr builtinssourcer varskeys)object _filenamer getmodmoduler! r names ]/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/dill/detect.pyr r s ++++++
VFI
&
&F
)U)6MOOO76&&&DtH~~22444488$> c t | r| j j pi }nt | r
| j pi }ndS | }ddlm} || d \ }}n# t $ r g d}}Y nw xY wd | fd|D }|D ]+\ }} || ||fk r|c S # t $ r Y (w xY wdS )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) enclosing c 3 . K | ]\ }}|v ||fV d S N ).0r) objr s r*