
    hd                      S r SSKJr  / SQrSrSSKrSSKJr  SSKJr	  \r
SSKrSSKrSqS	q\R                  S
:  r\R                  S:  r\R                  S:  r\R                  S:  rSSKrSSKJrJr  SSKJrJr  SSKJr  SSKJr    SSKJ!r"   SSKJ$r%  SSK&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.  \/r0\1r2\1" \35      r4\1" \55      r6\7r8\1r9\:r;SSK&J<r=J>r>  SSKJ?r?J@r@JArAJBrBJCrC  SSKDrESSKFrFSSKGrGSSKHrHSSKIrISSKJJKrKJLrLJMrM  SSKNJOrO  SSKPJQrQJRrR  SSKSJTrT  SSKUJVrVJWrW  S	rXSSKYrZ\[" \ZR                  R                  5      r] SSK^r^Sr_\`" \^S5      (       + raSqbSqcSqd \ZR                  R                  5       R                  S5      (       d  \#" S5      eSqbSqcSqdS  rg[        (       a
  S! rhS" riS# rjO	S$ rhS% riS& rjSS'K&JkrkJlrlJmrmJnrnJoroJprp  \1" S( " S5      R                  S   5      rr\1" \T" \sS)S*95      rt\1" \u" \v\w" 5       5      5      rx\1" \V" S5      5      ry\1" \W" S+5      5      rz SS,KSJ{r|  \}" \|\15      (       d  Sr|S- r~\R                  S.:H  r\~" S/SS09r\~" S1S2S09r\(       a  SO\~" S3S2S09r\~" S/S2S09r\~" S4S2S09r SS5KJr  \~" S1S2\S69r\(       a  SO\~" S3S2\S69r\~" S/S2\S69r\~" S4S2\S69rSS7KJr  S=rrSS8KJr  SS9KJr   \rSrS:rSSKrSSKr " S< S=\5      rSS>KJr  SS?KJrJr  SrSrS)rS@ rSSA jrSSB jrSSC jrSSD jr " SE SF\5      r " SG SH\\A5      r " SI SJ\\B5      r " SK SL\\C5      r " SM SN\5      r " SO SP\5      r \GRh                  GRQ                  5       rSQ rSR rSS rSST jrSU r\" \" 5       5      r\GRw                  \t\x\y\zSV.5        \R                  SW:  a  \GRw                  SX\r05        \O" 5       r\\\\\\\\\SY.	r\GRw                  \1" 0 GR}                  5       5      \1" 0 GR                  5       5      \1" 0 GR                  5       5      \1" \GR}                  5       5      \1" \GR                  5       5      \1" \GR                  5       5      SZ.5        \(       a  \\S['   \(       a
  \\S\'   \\S]'    \R                  S^:  a'  \a(       d   SS_K&Jr  \1" \" \" \\s45      5      5      \S`'     SSKr\GR                  \Sa'   \GRw                  \5        \" \GR                  5       5      rC\" Sb \GR                  5        5       5      rSc rSd rSe r  SSf jr " Sg Sh5      r/ SiQr\ H*  u  rrr\`" \'\5      (       d  M  \r\GR                  5       r  O   \" \5      GR                  / SjQ5      rSk rSl rSm r\%(       a  Sn rSo rSp rSq rSr rSs r " St Su\5      r " Sv Sw\5      r " Sx Sy\5      r\" 5       r0 r \\=" \5      \-  L rCSr\" Sz5      rSS{ jrS| rSS} jrS~ rSS jrS rSS jrS rS rS rSS jrS rSS jrS rS\GR                  S4S jr\" \'5      S 5       rS r\" \5      S 5       r\(       d  \(       a  S rOS r\\O4 HW  r\" 5       r\" \5       HA  u  rr\1" G\ " \\5      " 5       5      GrG\\GRh                  ;  d  M0  \\GRh                  G\'   MC     MY     CCCGCC\" \25      S 5       Gr\" \GR                  5      S 5       Gr\%(       a  \" \%5      S 5       Gr\" \5      S 5       Gr\" \ 5      S 5       GrS GrS Gr	\" \5      \" \5      \" \5      \" \5      S 5       5       5       5       Gr
\(       a  \" \5      S 5       Gr
\(       a;  \" \5      \" \5      \" \5      S 5       5       5       Gr
\(       a  \" \5      S 5       Gr
\(       a  \" \5      S 5       Gr\" \5      S 5       Gr\|b  SSKSGJGr  \" \|5      S 5       Gr\" \x5      S 5       Gr\a(       a  \" \)5      S 5       GrO\" \)5      S 5       Gr\a(       d<  \" \o5      \" \k5      \" \n5      \" \m5      \" \l5      S 5       5       5       5       5       GrO\" \o5      \" \k5      S 5       5       Gr\" \r5      S 5       Gr\(       a  \" \=5      S 5       GrO\" \=5      S 5       Gr\" \85      S 5       Gr\" \;5      \" \45      \" \65      S 5       5       5       GrS GrSS jGr\" \K5      S 5       Gr\" \L5      \" \M5      S 5       5       GrS GrS Gr\" \-5      S 5       GrS GrS Gr\" \95      SS j5       Gr\" G\ 5      \" \HGRB                  5      S 5       5       Gr"\" G\#5      \" G\$5      \" \HGRJ                  5      \" \HGRL                  5      S 5       5       5       5       Gr'\" \(5      S 5       Gr(\_(       Ga,  \`" \^S5      (       Ga  \^GRR                  GRT                  Gr+\^GRX                  \^GRZ                  \^GRX                  4G\+Gl.        \^GR^                  G\+Gl0        \^GRR                  GRb                  Gr2\^GR^                  \^GRZ                  4G\2Gl.        \^GRX                  G\2Gl0        \^GRR                  GRf                  Gr4\^GR^                  4G\4Gl.        \^GRX                  G\4Gl0        \^GRR                  GRj                  Gr6\^GR^                  4G\6Gl.        \^GRX                  G\6Gl0        \^GRR                  GRn                  Gr8\^GR^                  4G\8Gl.        \^GRZ                  G\8Gl0        \^GRR                  GRr                  Gr:\^GR^                  \^GRZ                  4G\:Gl.        \^GRv                  G\:Gl0        \^GRR                  GRx                  Gr=\^GR^                  \^GRX                  4G\=Gl.        \^GRR                  GR|                  Gr?\^GR^                  \^GRX                  4G\?Gl.        \^GRR                  GR                  GrA\^GR^                  \^GRZ                  4G\AGl.        \^GRR                  GR                  GrC\^GR^                  \^GRX                  4G\CGl.        SGrDG\+" \^GR                  " G\+\^GRX                  5      \^GRZ                  " G\D5      S5      GrF\1" G\F5      GrG\" G\G5      S 5       GrHG\G\S'   G\G\S'   \GR                  G\G5        OSGrF\`" \IS5      (       a  \" \IGR                  5      S 5       GrK\`" \IS5      (       a   \" \1" \IGR                  5      5      S 5       GrM\`" \IS5      (       a   \" \1" \IGR                  5      5      S 5       GrO\`" \IS5      (       a  \" \IGR                  5      S 5       GrQSS jGrRS GrSSS jGrTS GrUBBCg! \# a    Sr" GN<f = f! \# a    Sr% GNDf = f! \# a    S	r_S	ra GNf = f! \# a     GNjf = f! \# a    Sr| GNf = f! \# a    S=r=r=rr GNf = f! \ a    S	r\1" \5      rO! \ a    Sr Of = fS;r GNf = f! \# a     G	Nf = f! \v a    S	r GNf = f)aK  
dill: a utility for serialization of python objects

The primary functions in `dill` are :func:`dump` and
:func:`dumps` for serialization ("pickling") to a
file or to a string, respectively, and :func:`load`
and :func:`loads` for deserialization ("unpickling"),
similarly, from a file or from a string. Other notable
functions are :func:`~dill.dump_module` and
:func:`~dill.load_module`, which are used to save and
restore module objects, including an intepreter session.

Based on code written by Oren Tirosh and Armin Ronacher.
Extended to a (near) full set of the builtin types (in types module),
and coded to the pickle interface, by <mmckerns@caltech.edu>.
Initial port to python3 by Jonathan Dobson, continued by mmckerns.
Tested against "all" python types (Std. Lib. CH 1-15 @ 2.7) by mmckerns.
Tested against CH16+ Std. Lib. ... TBD.
    )annotations)dumpdumpsloadloadscopyPickler	UnpicklerregisterpicklepicklescheckDEFAULT_PROTOCOLHIGHEST_PROTOCOLHANDLE_FMODECONTENTS_FMODE
FILE_FMODEPickleErrorPickleWarningPicklingErrorPicklingWarningUnpicklingErrorUnpicklingWarningdillN   )adapter)traceFi  i  	i  
i )_Picklerr
   )GLOBALPOP)LockType)RLock)_ExceptHookArgs)_ThreadHandle)CodeTypeFunctionType
MethodTypeGeneratorTypeTracebackType	FrameType
ModuleTypeBuiltinMethodType)MappingProxyType	new_class)r   r   r   r   r   )ReferenceType	ProxyTypeCallableProxyType)OrderedDict)EnumEnumMeta)partial)
itemgetter
attrgetterT	pythonapinumpyzNo module named 'numpy'c                 (    SSK Jq  SSK Jq  SSK Jq  g)Nr   )ufunc)ndarray)dtypeT)r9   r;   NumpyUfuncTyper<   NumpyArrayTyper=   
NumpyDType     D/home/james-whalen/.local/lib/python3.13/site-packages/dill/_dill.py__hook__rD   q   s    -/)rB   c                    [        S U R                   5       5      (       a  g[        5         U R                  [        R                  Ld  U R
                  [        R
                  La  gg)Nc              3  V   #    U  H  oR                   UR                  4S :g  v   M!     g7f))r9   r<   N
__module____name__.0cs     rC   	<genexpr>*ndarraysubclassinstance.<locals>.<genexpr>y   s#     \K[aajj)-AAK[   ')FT)all__mro__rD   __reduce_ex__r?   
__reduce__obj_types    rC   ndarraysubclassinstancerV   x   sO    \8K[K[\\\
!!)E)EE&&n.G.GGrB   c                :    [        S U R                   5       5      $ )Nc              3  V   #    U  H  oR                   UR                  4S :H  v   M!     g7f))r9   r;   NrG   rJ   s     rC   rM   numpyufunc.<locals>.<genexpr>   s#     ^M]LL!**-1CCM]rO   )anyrQ   rT   s    rC   
numpyufuncr[      s    ^XM]M]^^^rB   c                |    [        S U R                   5       5      (       a  g[        5         U [        [        5      L $ )Nc              3  V   #    U  H  oR                   UR                  4S :g  v   M!     g7f))r9   r=   NrG   rJ   s     rC   rM   numpydtype.<locals>.<genexpr>   s#     ZIYAajj)-??IYrO   F)rP   rQ   rD   typer@   rT   s    rC   
numpydtyper`      s1    ZIYIYZZZ
4
+++rB   c                    gNFrA   objs    rC   rV   rV      s    UrB   c                    grb   rA   rc   s    rC   r[   r[          rB   c                    grb   rA   rc   s    rC   r`   r`      rf   rB   )GetSetDescriptorTypeClassMethodDescriptorTypeWrapperDescriptorTypeMethodDescriptorTypeMemberDescriptorTypeMethodWrapperTypec                   ^  U 4S j$ )Nc                   > T$ NrA   )yxs    rC   <lambda><lambda>.<locals>.<lambda>   s    QrB   rA   rr   s   `rC   rs   rs      s    ;rB      base__repr__)_lru_cache_wrapperc                     UR                  S[        R                  5      nU" [        R                  /U Q70 UD6n[        U5      nUR                  5         U$ )Nopen)pop__builtin__r|   osdevnullr_   close)argskwargsr|   fts        rC   get_file_typer      sG    ::fk../DRZZ)$)&)AQAGGIHrB   
emscriptenrb)	bufferingrzr+bwb)r|   )r   r|   )BytesIO)socket)_reduce_socket)exitquitget_ipythonrA   c                  @    \ rS rSrSrSS jrS rS rS rS r	S	 r
S
rg)Sentinel   z@
Create a unique sentinel object that is pickled as a constant.
Nc                    Xl         Uc2  [        R                  " 5       R                  R                  S   U l        g X l        g )NrI   )nameinspectcurrentframef_back	f_globalsrH   )selfr   module_names      rC   __init__Sentinel.__init__   s3    	%224;;EEjQDO)OrB   c                :    U R                   S-   U R                  -   $ )N.rH   r   r   s    rC   ry   Sentinel.__repr__   s    $tyy00rB   c                    U $ rp   rA   r   s    rC   __copy__Sentinel.__copy__       rB   c                    U $ rp   rA   )r   memos     rC   __deepcopy__Sentinel.__deepcopy__   r   rB   c                    U R                   $ rp   r   r   s    rC   rS   Sentinel.__reduce__       yyrB   c                    U R                   $ rp   r   )r   protocols     rC   rR   Sentinel.__reduce_ex__   r   rB   r   rp   )rI   rH   __qualname____firstlineno____doc__r   ry   r   r   rS   rR   __static_attributes__rA   rB   rC   r   r      s%    *1rB   r   )_shims)ReduceGetattrc                v    UR                  S[        R                  S   5      n[        [	        U /UQ70 UD6US9$ )zz
Use pickling to 'copy' an object (i.e. `loads(dumps(obj))`).

See :func:`dumps` and :func:`loads` for keyword arguments.
ignore)r   )r}   r
   settingsr   r   )rd   r   kwdsr   s       rC   r   r      s;     XXh	 2 28 <=Fs*T*T*6::rB   c                    SSK J n  Uc  US   O
[        U5      nUR                  5       nUR                  [	        X4US95        [        X40 UD6R                  U 5        g)zG
Pickle an object to a file.

See :func:`dumps` for keyword arguments.
r   r   Nr   )byreffmoderecurse)r   intr   updatedictr	   r   )	rd   filer   r   r   r   r   r   _kwdss	            rC   r   r      sU     #'/'7x
#S]HIIKE	LLE@AD$e$))#.
rB   c                R    [        5       n[        XXX440 UD6  UR                  5       $ )a  
Pickle an object to a string.

*protocol* is the pickler protocol, as defined for Python *pickle*.

If *byref=True*, then dill behaves a lot more like pickle as certain
objects (like modules) are pickled by reference as opposed to attempting
to pickle the object itself.

If *recurse=True*, then objects referred to in the global dictionary
are recursively traced and pickled, instead of the default behavior
of attempting to store the entire global dictionary. This is needed for
functions defined via *exec()*.

*fmode* (:const:`HANDLE_FMODE`, :const:`CONTENTS_FMODE`,
or :const:`FILE_FMODE`) indicates how file handles will be pickled.
For example, when pickling a data file handle for transfer to a remote
compute service, *FILE_FMODE* will include the file contents in the
pickle and cursor position so that a remote method can operate
transparently on an object with an open file handle.

Default values for keyword arguments can be set in :mod:`dill.settings`.
)StringIOr   getvalue)rd   r   r   r   r   r   r   s          rC   r   r     s(    0 :DHU<t<==?rB   c                :    [        U 4SU0UD6R                  5       $ )zK
Unpickle an object from a file.

See :func:`loads` for keyword arguments.
r   )r
   r   )r   r   r   s      rC   r   r   #  s"     T1&1D16688rB   c                0    [        U 5      n[        X140 UD6$ )aL  
Unpickle an object from a string.

If *ignore=False* then objects whose class is defined in the module
*__main__* are updated to reference the existing class in *__main__*,
otherwise they are left to refer to the reconstructed type, which may
be different.

Default values for keyword arguments can be set in :mod:`dill.settings`.
)r   r   )strr   r   r   s       rC   r   r   +  s     C=D%%%rB   c                  $    \ rS rSrSS jrS rSrg)MetaCatchingDictiC  Nc                0     X   $ ! [          a    Us $ f = frp   )KeyError)r   keydefaults      rC   getMetaCatchingDict.getD  s#    	9 	N	s    c                L    [        U[        5      (       a  [        $ [        5       erp   )
issubclassr_   	save_typer   )r   r   s     rC   __missing__MetaCatchingDict.__missing__J  s    c4  *rB   rA   rp   )rI   rH   r   r   r   r   r   rA   rB   rC   r   r   C  s    rB   r   c                      \ rS rSrSrg)r   iP  rA   NrI   rH   r   r   r   rA   rB   rC   r   r   P      rB   r   c                      \ rS rSrSrg)r   iS  rA   Nr   rA   rB   rC   r   r   S  r   rB   r   c                      \ rS rSrSrg)r   iV  rA   Nr   rA   rB   rC   r   r   V  r   rB   r   c                      \ rS rSr% Sr\" \R                  R                  5       5      rS\	S'    Sr
SSKJr  S rSS	 jr\R                  R                  \l        S
 r\R                  R                  \l        Srg)r	   iZ  z1python's Pickler extended to interpreter sessionsz?typing.Dict[type, typing.Callable[[Pickler, typing.Any], None]]dispatchFr   r   c                z   [         R                  nUR                  SS 5      nUR                  SS 5      nUR                  SS 5      n[        R                  " X/UQ70 UD6  [
        U l        0 U l        Uc  US   OUU l        SU l	        Uc  US   OUU l
        Uc  US   OUU l        [        5       U l        Xl        g )Nr   r   r   F)r	   r   r}   StockPicklerr   _main_module_main_diff_cache_byref	_strictio_fmode_recurser2   	_postproc_file)r   r   r   r   r   r   r   r   s           rC   r   Pickler.__init__g  s    ##'4('4(88It,d84848!
+1>hw'v+1>hw'v/7/?+X$
rB   c                   [        U5      n[        (       a  U[         L dw  U[        R                  ;   dc  [	        U5      (       a  [        U5      S 5       n[        U5      (       a  [        U5      S 5       n[        U5      (       a  [        U5      S 5       n[        (       a  U[        L a  S[        -  n[        U5      e[        R                  " XU5        g )Nc           	         [         R                  " U SU5        [        US[        USS 5      5      n[        R                  " XUS9  [         R                  " U S5        g )NzNu: %sr   rI   r   # Nu)loggerr   getattrr   save_globalpicklerrd   r   s      rC   save_numpy_ufunc&Pickler.save.<locals>.save_numpy_ufunc~  sK    LL(C8"3ZQU8VWD ,,WELL&1rB   c                    [         R                  " U SU5        U R                  [        UR                  4US9  [         R                  " U S5        g )NzDt: %src   z# Dt)r   r   save_reduce_create_dtypemetar_   r   rd   s     rC   save_numpy_dtype&Pickler.save.<locals>.save_numpy_dtype  s?    LL(C8''(9CHH;C'PLL&1rB   c                    [         R                  " U SUR                  UR                  5        [	        USS 5      nUR                  5       u  p4nU R                  [        X4XR4US9  [         R                  " U S5        g )NzNu: (%s, %s)__dict__rc   r   )r   r   shaper=   r   rS   r   _create_array)r   rd   npdictr   r   states         rC   save_numpy_array&Pickler.save.<locals>.save_numpy_array  sf    LL.#))SYYO$S*d;F%(^^%5NAU''u7LRU'VLL&1rB   z;Can't pickle %s: attribute lookup builtins.generator failed)r_   r?   r	   r   r[   r   r`   rV   GENERATOR_FAILr(   r   r   save)r   rd   save_persistent_idrU   r   r   r  msgs           rC   r  Pickler.savew  s    9>8t#3x7CSCS7S (##(# $ (##(# $ 'x00(# $ >h-7OR__C$$$%78rB   c                \    [         R                  " U 5        [        R                  " X5        g rp   )r   trace_setupr   r   r   rd   s     rC   r   Pickler.dump  s    4 $$rB   )r   r   r   r   r   r   r   r   NT)rI   rH   r   r   r   r   r   r   r   __annotations___sessionr   r   r  r   r   rA   rB   rC   r	   r	   Z  sr    ;|4499;< M = H" /9b  $$,,DL%  $$,,DLrB   r	   c                  p    \ rS rSrSrSSKJr  SrS rS rS r	\
R                  R                  \	l        S	rg
)r
   i  zBpython's Unpickler extended to interpreter sessions and more typesr   r   Fc                    X4S:X  a  U R                   R                  $ X4S:X  a  [        S 5      $ US:X  a  Sn[        R                  " XU5      $ )N)r~   __main__)r~   NoneTypez	dill.dill
dill._dill)r   r   r_   StockUnpickler
find_class)r   moduler   s      rC   r  Unpickler.find_class  sQ    >88::&&&^:::[ <&((t<<rB   c                    [         R                  nUR                  SS 5      n[        R                  " U /UQ70 UD6  [
        U l        Uc  US   U l        g UU l        g )Nr   )r	   r   r}   r  r   r   r   _ignore)r   r   r   r   r  s        rC   r   Unpickler.__init__  sR    ##((8T*4t4t4!
-4_x)'rB   c                2   [         R                  " U 5      n[        U5      R                  [	        [
        SS5      :X  aA  U R                  (       d0  [	        U R                  [        U5      R                  5      Ul	        U$ U$ ! [        [        4 a     U$ f = f)NrI   r  )r  r   r_   rH   r   r   r  r   rI   	__class__AttributeError	TypeErrorr  s     rC   r   Unpickler.load  sv    !!$'97<Z#PP<<%,TZZc9K9K%LS] 
s
 'y174
 8s   .B BB)r  r   N)rI   rH   r   r   r   r   r  r  r   r   r  r   rA   rB   rC   r
   r
     s5    L"H=J "&&..DLrB   r
   c                *    U[         R                  U '   g)zBexpose :attr:`~Pickler.dispatch` table for user-created extensionsNr	   r   r   funcs     rC   r   r     s    GQ
rB   c                   ^  U 4S jnU$ )zHdecorator to register types to Pickler's :attr:`~Pickler.dispatch` tablec                .   > U [         R                  T'   U $ rp   r%  )r'  r   s    rC   proxyregister.<locals>.proxy  s    "rB   rA   )r   r*  s   ` rC   r   r     s     LrB   c                     [        [        R                  R                  5       5       HR  u  pUR                  [
        :X  d  M  [        R                  U 	 U [        ;   d  M8  [        U    [        R                  U '   MT     g)z7drop dill-registered types from pickle's dispatch tableN)listr   r   itemsrH   rI   pickle_dispatch_copy)r_   r'  s     rC   _revert_extensionr0    sZ    <006689
??h&%%d+++.B4.H%%d+	 :rB   c                j    U q [         (       a  [        c
   SSKJn  Uqggg! [         a    SSKn Nf = f)z
Reduces size of pickles by only including object which have changed.

Decreases pickle size but increases CPU time needed.
Also helps avoid some unpickleable objects.
MUST be called at start of script, otherwise changes will not be recorded.
Nr   )diffr   )	_use_diffr2   ImportError)onds     rC   use_diffr8    s<     IyT\	#  "y  		s   ! 22c               #  F  #    SS K n [        [        [        R                  R                  5       5      [        U R                  R                  5       5      -   5      R                  5       nU H1  u  p#[        USS 5      S:X  d  M  [        U5      [        L d  M,  X#4v   M3     g 7f)Nr   rH   builtins)typesr   r-  r~   r   r.  r   r_   )r;  r7  r   values       rC   _create_typemapr=    s     T+&&,,./%..&&()* 	++057 
5,-;K4'*  s   A=B!B!
B!)PartialType	SuperTypeItemGetterTypeAttrGetterTypei CellType)	FileTypeBufferedRandomTypeBufferedReaderTypeBufferedWriterTypeTextWrapperTypePyBufferedRandomTypePyBufferedReaderTypePyBufferedWriterTypePyTextWrapperType)DictKeysTypeDictValuesTypeDictItemsTypeOdictKeysTypeOdictValuesTypeOdictItemsTypeExitType	InputType
OutputTypei )GenericAliasGenericAliasIteratorTypeHKEYTypec              #  ,   #    U  H
  u  pX!4v   M     g 7frp   rA   )rK   kvs      rC   rM   rM   P  s     <#;41#;s   c                .    [         R                  " U 5      $ rp   )marshalr   )strings    rC   
_unmarshalr^  R  s    ==  rB   c                    [         U    $ rp   )_reverse_typemapr   s    rC   
_load_typera  U  s    D!!rB   c                    U " U6 $ rp   rA   )typeobjr   s     rC   _create_typerd  X  s    D>rB   c                    [        X=(       d
    [        5       X#U5      nUb  UR                  R                  U5        Ub  Xgl        SUR
                  ;  a  [        5       S   UR
                  S'   U$ )N__builtins__)r&   r   r   r   __kwdefaults____globals__globals)fcodefglobalsfname	fdefaultsfclosurefdictfkwdefaultsr'  s           rC   _create_functionrq  [  si     1465XNDU#) T---+29^+D(KrB   c                  F    \ rS rSrSrS rS rS rS r\	S 5       r
S rS	rg
)matchik  a	  
Make avaialable a limited structural pattern matching-like syntax for Python < 3.10

Patterns can be only tuples (without types) currently.
Inspired by the package pattern-matching-PEP634.

Usage:
>>> with match(args) as m:
>>>     if   m.case(('x', 'y')):
>>>         # use m.x and m.y
>>>     elif m.case(('x', 'y', 'z')):
>>>         # use m.x, m.y and m.z

Equivalent native code for Python >= 3.10:
>>> match args:
>>>     case (x, y):
>>>         # use x and y
>>>     case (x, y, z):
>>>         # use x, y and z
c                    Xl         S U l        g rp   )r<  _fields)r   r<  s     rC   r   match.__init__  s    
rB   c                    U $ rp   rA   r   s    rC   	__enter__match.__enter__  r   rB   c                    grb   rA   )r   exc_infos     rC   __exit__match.__exit__  s    rB   c                V    [        U R                  5      [        U5      :w  a  gXl        g)zjust handles tuple patternsFT)lenr<  r   )r   r   s     rC   case
match.case  s#    tzz?c$i' 	rB   c                    U R                   c.  [        [        U R                  U R                  5      5      U l         U R                   $ rp   )ru  r   zipr   r<  r   s    rC   fieldsmatch.fields  s3     <<DIItzz :;DL||rB   c                     U R                   U   $ rp   )r  r   items     rC   __getattr__match.__getattr__  s    {{4  rB   )ru  r   r<  N)rI   rH   r   r   r   r   rx  r|  r  propertyr  r  r   rA   rB   rC   rs  rs  k  s4    (  
!rB   rs  ))      aco_endlinetablezargcount posonlyargcount kwonlyargcount nlocals stacksize flags code consts names varnames filename name qualname firstlineno linetable endlinetable columntable exceptiontable freevars cellvars)r  r  co_exceptiontablezargcount posonlyargcount kwonlyargcount nlocals stacksize flags code consts names varnames filename name qualname firstlineno linetable                          exceptiontable freevars cellvars)r  r  pco_qualnamezargcount posonlyargcount kwonlyargcount nlocals stacksize flags code consts names varnames filename name qualname firstlineno linetable                                         freevars cellvars)r  
   co_linetablezargcount posonlyargcount kwonlyargcount nlocals stacksize flags code consts names varnames filename name          firstlineno linetable                                         freevars cellvars)r     co_posonlyargcountzargcount posonlyargcount kwonlyargcount nlocals stacksize flags code consts names varnames filename name          firstlineno lnotab                                            freevars cellvars)r     co_kwonlyargcountzargcount                 kwonlyargcount nlocals stacksize flags code consts names varnames filename name          firstlineno lnotab                                            freevars cellvars)codelnotab	linetableendlinetablecolumntableexceptiontablec                 	  ^ [        U S   [        5      (       d  U tpOSn[        U 5       nUR                  S5      (       a  [        S:X  a  [        / U S S Q[        U S   S5      (       a  U S   R                  5       OU S   PU SS Q[        U S   S5      (       a  U S   R                  5       OU S   P[        U S	   S5      (       a  U S	   R                  5       OU S	   PU S
   PU S   P76 sS S S 5        $ UR                  mGOUR                  S5      (       a  [        S:X  a~  [        / U S S Q[        U S   S5      (       a  U S   R                  5       OU S   PU SS Q[        U S   S5      (       a  U S   R                  5       OU S   PU S	   PU S
   P76 sS S S 5        $ UR                  mGO*UR                  S5      (       a  [        S:X  d
  [        S:X  a~  [        / U S S Q[        U S   S5      (       a  U S   R                  5       OU S   PU SS Q[        U S   S5      (       a  U S   R                  5       OU S   PU S   PU S	   P76 sS S S 5        $ UR                  m[        S:  a  UR                  TS'   GO[U(       a  UOUR                  TS'   GOAUR                  S5      (       a  [        S:X  a~  [        / U S S Q[        U S   S5      (       a  U S   R                  5       OU S   PU SS Q[        U S   S5      (       a  U S   R                  5       OU S   PU S   PU S   P76 sS S S 5        $ UR                  mOUR                  S5      (       au  [        S:X  a^  [        / U S S Q[        U S   S5      (       a  U S   R                  5       OU S   PU SS QS U SS  5       QU S   PU S   P76 sS S S 5        $ UR                  mO[        S5      eS S S 5        TR                  SS5        TR                  SU5        TR                  SS5        TR                  STS    5        TR                  S!S5        TR                  S"S 5        TR                  S#S 5        U4S$ j[         5       n [        U 6 $ ! , (       d  f       N= f)%Nr   rB   )argcountposonlyargcountkwonlyargcountnlocals	stacksizeflagsr  constsnamesvarnamesfilenamer   qualnamefirstlinenor  r  freevarscellvarsr     encoder              )r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  )r  r  r  r  r  r  r  r  r  r  r  r   r  LNOTAB_OR_LINETABLEr  r  r  r     r  r  )r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r        )r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  c              3  h   #    U  H(  n[        US 5      (       a  UR                  5       OUv   M*     g7fr  N)hasattrr  )rK   r  s     rC   rM   _create_code.<locals>.<genexpr>   s'     UAGAx$8$8ahhja?s   02      z$pattern match for code object failedr  r  r   r  r  r  c              3     >#    U  H;  nU[         ;   a'  [        TU   S 5      (       a  TU   R                  5       OTU   v   M=     g7fr  )ENCODE_PARAMSr  r  )rK   rY  r  s     rC   rM   r    sH      "  #$}"4H9U9UF1I[abc[dd s   AA)
isinstancer   rs  r  CODE_VERSIONr%   r  r  r  r  r   
setdefaultCODE_PARAMS)r   LNOTABmr  s      @rC   _create_coder    s   d1gs##	t66 
  
 v% "1X(/Q(B(BDGNN$Q !BZ *1b8)D)DDHOO%$r(	
 *1b8)D)DDHOO%$r( H H 
" XXFVV 
  
 z) "1X(/Q(B(BDGNN$Q !BZ *1b8)D)DDHOO%$r(	
 H H3 
B XXFVV 
  
 v%)> "1X(/Q(B(BDGNN$Q !BZ *1b8)D)DDHOO%$r(	
 H HS 
b XXFv%&'&;&;{#-369N9Nx VV 
  
 u$ "1X(/Q(B(BDGNN$Q !BZ *1b8)D)DDHOO%$r(	
 H H{ 
J XXFVV 
  
 z) "1X(/Q(B(BDGNN$Q !BZ VbQSU	
 H H[ 
j XXF!"HIIo 
t '+
h'
k3'
j&.1
&,
nd+
mT*" "DT?I 
s.   CQ;6B"Q;"B,Q;CQ;7BQ;Q;;
R	c                .    Uc  0 nUc  SnU " U/UQ70 UD6$ )NrA   rA   )ftypeobjr'  r   r   s       rC   _create_ftyper    s+    ||D(4(4((rB   c                    U (       d"  [         R                  S   R                  S5      $ U S:X  a  [         R                  S   $ [         R                  U    $ )NrA   rA   )typingTuple	copy_with)argzr   s     rC   _create_typing_tupler    sD    ||B))"--u}||B<<rB   c                P    SSK Jn  U" U 5      nU(       a  UR                  5         U$ )Nr   )_make_thread_handle)	threadingr  	_set_done)identdoner   r  handles        rC   _create_thread_handler  $  s#    1$U+rB   c                p    SSK Jn  U" 5       nU (       a!  UR                  S5      (       d  [        S5      eU$ )Nr   )LockFCannot acquire lock)r  r  acquirer   )lockedr   r  locks       rC   _create_lockr  +  s/    6D||E""!"788KrB   c                    [        5       nUb  UR                  X45        U(       a   UR                  5       (       d  [        S5      eU$ )Nr  )	RLockType_acquire_restore	_is_ownedr   )countownerr   r  s       rC   _create_rlockr  3  s?    ;Dun-T^^%%344KrB   c                   [         R                  [         R                  [         R                  S.nU [	        UR                  5       5      ;   a  X   n	GOU S:X  a  [        R                  " 5       n	GOU S:X  a  SS Kn
U
R                  U5      n	GO [        R                  R                  U 5      nU(       d*  U(       a  [        SU -  5      eSU;   a  U[        :w  a  Sn SnO[        R                  R                  U 5      nX,:  a  U(       a  [!        S5      eU["        :X  a  Un U[        :X  aA  U" U S	U;   a  UOS	5      n	U	R%                  U5        S	U;  a  U	R'                  5         U" X5      n	OU S:X  a  SS Kn
U
R                  U5      n	OU["        :X  a  S	U;   d  S
U;   a  [        R(                  nSU;   a  U[        R*                  -  nOU[        R,                  -  n[        R.                  " [        R0                  " X5      U5      n	[3        U	SU	5      n[3        USU5      nXl        U	R4                  U :X  d   eO	U" X5      n	 U(       a  U	R'                  5         U	$ US:  a  U[<        :w  a  U	R?                  U5        U	$ ! [         a    Sn GNf = f! [6        [        4 a$    [         R8                  " 5       S   n[;        U5      ef = f)N)z<stdin>z<stdout>z<stderr>z	<tmpfile>z<fdopen>r   Fz)[Errno 2] No such file or directory: '%s'r   zinvalid buffer sizewrr   +bufferrawr   ) sys	__stdin__
__stdout__
__stderr__r-  keysr   tmpfiletempfileTemporaryFilepathexists	ExceptionFileNotFoundErrorr   getsize
ValueErrorr   writer   O_CREATO_RDWRO_WRONLYfdopenr|   r   r   IOErrorr{  r   r   seek)r   modepositionclosedr|   strictior   fdatar  r   r  r  current_sizer  r   errs                   rC   _create_filehandler  <  sZ    }}(EtEJJL!!K		JJL		""4(	WW^^D)F '(SVZ(Z[[*!4!L77??40L" !677.('	'
"sd{t<d?GGIT(A#**40.(4K3$;

$;RYY&ER[[(EIIbggd2D9Ax+Aua(vv~%~$ 		 H 
Q5L0	xHk  	F	\ *+ 	',,.#C!#&&	's2   I? "A
J -J 	B0J :J ?JJ4Kc                p    [        U 5      nU(       a  UR                  5         U$ UR                  U5        U$ rp   )r   r   r  r<  r  r	  r   s       rC   _create_stringir    s.    AqwwyH &&
HrB   c                    [        5       nU(       a  UR                  5         U$ UR                  U 5        UR                  U5        U$ rp   )r   r   r   r  r  s       rC   _create_stringor    s9    
Aqwwy H 	wwu~vvhHrB   c                       \ rS rSrS rS rSrg)_itemgetter_helperi  c                    / U l         g rp   r.  r   s    rC   r   _itemgetter_helper.__init__  s	    
rB   c                :    U R                   R                  U5        g rp   )r.  appendr  s     rC   __getitem___itemgetter_helper.__getitem__  s    

$rB   r  N)rI   rH   r   r   r   r  r   rA   rB   rC   r  r    s    rB   r  c                  $    \ rS rSrSS jrS rSrg)_attrgetter_helperi  Nc                    Xl         X l        g rp   attrsindex)r   r!  r"  s      rC   r   _attrgetter_helper.__init__  s    

rB   c                    [         R                  U S5      n[         R                  U S5      nUc  [        U5      nUR                  U5        OSR	                  X#   U/5      X#'   [        U 5      " X#5      $ )Nr!  r"  r   )object__getattribute__r  r  joinr_   )r   attrr!  r"  s       rC   r&  #_attrgetter_helper.__getattribute__  sf    ''g6''g6=JELL88U\4$89ELDz%''rB   r   rp   )rI   rH   r   r   r   r&  r   rA   rB   rC   r  r    s    (rB   r  c                      \ rS rSrS rSrg)_dictproxy_helperi  c                    U$ rp   rA   )r   r  s     rC   __ror___dictproxy_helper.__ror__  s    rB   rA   N)rI   rH   r   r   r-  r   rA   rB   rC   r+  r+    s    rB   r+  _CELL_EMPTYc                @   ^ U [         La  U mU4S jR                  S   $ )Nc                    > T $ rp   rA   )r<  s   rC   rs   _create_cell.<locals>.<lambda>  s    ErB   r   )r/  __closure__)contentsr<  s    @rC   _create_cellr5    s!    {"&&q))rB   c                N    SSK Jn  U c  SSKJn  U" U" 5       /UQ76 $ U" U /UQ76 $ )Nr   )refUserDict)weakrefr7  collectionsr9  )rd   r   r7  r9  s       rC   _create_weakrefr<    s-    
{(8:%%%s?T?rB   c                p    SSK Jn  U c%  U(       a
  U" S /UQ76 $ SSKJn  U" U" 5       /UQ76 $ U" U /UQ76 $ )Nr   )r*  c                    U $ rp   rA   ru   s    rC   rs   #_create_weakproxy.<locals>.<lambda>  s    1rB   r8  )r:  r*  r;  r9  )rd   callabler   r*  r9  s        rC   _create_weakproxyrA    sA    
{E*4t44(XZ'$''trB   c                    [        U 5      $ rp   )eval)repr_strs    rC   
_eval_reprrE    s    >rB   c                n    U " U6 nUR                  U5        Ub  UR                  R                  U5        U$ rp   )__setstate__r   r   )r   r   r  r  arrays        rC   r  r    s6    tHE	uf%LrB   c                b    [         SL a
  [        5         U c  [         $ [        [        U 5      5      $ )NT)r@   rD   r_   )scalar_types    rC   r   r     s*    T8:
;'((rB   c                X    [        US-   U -   SS9nUb  U$ SS KnUR                  XX2S9nU$ )Nr   Tsafer   )defaultsr  )_import_moduler;  
namedtuple)r   
fieldnames
modulenamerN  class_r;  r   s          rC   _create_namedtuplerT    s@    J,t3$?Ft(VAHrB   c                   Sn UR                  S5      n[        SUR                  S5      S-   5       HA  nUR                  SU5      n [	        US   5      nWn	USS   H  n
[        X5      n	M     U	nSn  O    U(       a/  [        WU5      (       a  U$ [        [        U5      < SU< S35      e[        XU5      n[        X5        U$ ! [
         a     N}f = f! [         a     Nkf = f)	NFutf8r   r   r   Tz object exists at z% but a PyCapsule object was expected.)decoderanger  rsplit
__import__r5  r   r  _PyCapsule_IsValidr   r_   _PyCapsule_New_PyCapsule_SetContext)pointerr   context
destructor
attr_foundunameir  r  rd   r(  capsules               rC   _create_capsulere    s    JF#q%++c*1,-ALLa(E#E!H- Cab	c( "GJ . gt,,N_cdk_lnrstt !
;g/'    s<   AC 	CC 6C 
CC CC 
C%$C%c                    UR                  S5      S   n[        US-   U-   S-   5      $ ! [         aV     U R                  n[	        U5      [
        L a  X1   nO-[        X5      nO!! [        [        4 a    [        X5      n Of = fUs $ f = f)N'r  z.__dict__["z"])	splitrC  r  r   r_   DictProxyTyper   r!  r   )objclassr   rD  r(  s       rC   _getattrrk  	  s    ~~c"1%D&t+D011 		*$$DDz]*zx-) 	*8)D	*	s>   '* 
B
"A$B
A$#B
$B?B
BB
	B
c                H    [        XS 5      =(       d    [        [        U5      $ rp   )r   r~   )r   r   s     rC   	_get_attrrm    s    4t$BT(BBrB   c                    U R                  S5      (       a  [        R                  U    $ SU ;   ao  U R                  S5      nSR	                  US S 5      nUS   n[        [        US S U/5      U5      n[        U[        [        45      (       a  U$ [        U S S U/5      $ [        U 5      $ ! [        [        [        4 a    U(       a   g e f = f)Nz__runtime__.r   r   )
startswithr  modulesrh  r'  r   rZ  r  r+   r_   r5  r!  r   )import_namerM  r.  r  rd   	submodules         rC   rO  rO    s    !!.11;;{++K%%c*EXXeCRj)F)C
64u EsKI)j$%788  k4u==k**2 s#   (B+ A%B+ B+  
B+ +C	Cc                    UR                  S5       H1  nUS:X  a  [        SR                  X5      5      e U n[        X5      n M3     U W4$ ! [         a    [        SR                  X5      5      ef = f)Nr   z<locals>z&Can't get local attribute {!r} on {!r}z Can't get attribute {!r} on {!r})rh  r!  formatr   )rd   r   subpathparents       rC   _getattributerw  1  s    ::c?j  !I"(&"35 5	5F#'C # ;  	5 !C"(&"35 5	5s   A%A0c                p   [        U SS 5      nUS;   d@  U(       a:  [        USS9(       a+  UR                  (       a  X!R                  R                  :X  a  g[        U S5      (       a%  [        USS9n [        X0R                  5      u  pEX@L $ [        US-   U R                  -   SS9nX@L $ ! [         a     gf = f)	NrH   )r  NFchildr   TrL  r   )
r   is_dillr  r   rI   r  rO  rw  r   r!  )rd   r   r   r  found_s         rC   _locate_functionr~  >  s    #|T2K((u5':J:J{^k^k^t^tOtsN##$7	$V-=-=>HE< {S03<<?dK|	  		s   1B( (
B54B5c                >    UR                  5        H	  u  p#X0U'   M     g rp   r  )destsourcerY  rZ  s       rC   	_setitemsr  O  s    Q rB   c           	        U[         R                  L a  [        U5      nUc
  [        U SS9nU(       a  Uc  / n[	        U5      U R
                  ;   ar  [        US5      (       a)  UR                  < S[        USUR                  5      < S3OSn[        R                  " SU< S	U< S
3[        5        U R                  U5        g X@R
                  [	        U5      '   U R                  " USU06  U(       Ga  U R
                  R                  [	        U5      5      n[!        U5       H  nUS   ["        L a  US   u  pxU(       a  U R%                  U R'                  U R(                  [	        U5         S   5      5        [*        R,                  S:  a)  U R/                  [1        UR3                  5       5      5        O9U R/                  [1        UR3                  5       5      US9  OM  U R                  " U6   U R%                  [4        5        M     g g )NTry  rH   r   r    r4  Cannot pickle : z<has recursive self-references that trigger a RecursionError.rd   r   r   i rc   )r   
NO_DEFAULTr   r{  idr   r  rH   r   rI   warningswarnr   r   r   r}   reversedr  r   r   r   r  
hexversion_batch_setitemsiterr.  r    )	r   	reductionis_pickler_dillrd   postproc_listr   postprocr  r  s	            rC   _save_with_postprocr  T  s   
g   Y!'6
  M c7g'''^efikw^x^xs~~wsNCLL/YZ  ADMMpsuyz  }L  M$%2"S'" ,, $$((C1!(+I|y(  )|MM'++gll2d8.DQ.G"HI~~	1//V\\^0DE//V\\^0D#/N ##Y/MM## , rB   c                $   [         R                  " U SU5        [        US5      (       a  UR                  UR                  UR
                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                   UR"                  UR$                  UR&                  UR(                  UR*                  UR,                  UR.                  4nGO?[        US5      (       Ga  [0        R2                  " 5          [4        (       d  [0        R6                  " S[8        S9  UR                  UR                  UR
                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                   UR"                  UR$                  UR*                  UR,                  UR.                  4nS S S 5        GO[        US5      (       a  UR                  UR                  UR
                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                   UR"                  UR$                  UR,                  UR.                  4nGO;[        US5      (       a  UR                  UR                  UR
                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR"                  UR$                  UR,                  UR.                  4nGOk[        US5      (       a  UR                  UR
                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR"                  UR                  UR,                  UR.                  4nOUR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  UR"                  UR                  UR,                  UR.                  4nU R;                  [<        WUS	9  [         R                  " U S
5        g ! , (       d  f       N;= f)NzCo: %sr  r  r   )categoryr  r  r  rc   z# Co)r   r   r  	co_lnotabco_argcountr  r  
co_nlocalsco_stacksizeco_flagsco_code	co_constsco_namesco_varnamesco_filenameco_namer  co_firstlinenor  r  co_columntabler  co_freevarsco_cellvarsr  catch_warningsOLD312a7filterwarningsDeprecationWarningr   r  r   rd   r   s      rC   	save_coder    s   
LL(C(s%&&MMOOS33!!3>>33C3CLL#++s}}cllOOS__ckk3?? 0 0#2E2E 5 5sOO	
 
)	*	*$$&8'';MN!7!7%%s~~s7G7Gckk3==#,,#++s""C$4$4c6K6KD '& 
m	$	$MM3??C,B,B!!3>>33C3CLL#++s}}cllOOS__ckk3?? 0 0#//OO
 
n	%	%MMOOS33!!3>>33C3CLL#++s}}cllOOS__ckk 0 0#//OO
 
*	+	+OOS33!!3>>33C3CLL#++s}}cllOOS__ckksOO
 OOS22CNNcllCKKLL#//3??KK++S]]OOS__
 d4
LL&!
g '&s   <C8V
Vc                H    S[        U 5      R                  [        U 5      4-  $ )z3Make a short string representation of a dictionary.z<%s object at %#012x>)r_   rI   r  rc   s    rC   
_repr_dictr    s     "d3i&8&8"S'%BBBrB   c                d   [        U SS9(       a  XR                  R                  :X  av  U R                  (       a  U R                  (       dT  [
        R                  " U S[        U5      5        U R                  [        SS5      5        [
        R                  " U S5        g [        U SS9(       dh  U[        R                  :X  aT  [
        R                  " U S[        U5      5        U R                  [        SS5      5        [
        R                  " U S	5        g S
U;   a  U[        R                  :w  a  [        US
   5      [        L aw  U[        [        US
   S5      SS 5      L aZ  [
        R                  " U S[        U5      5        U R                  [        SUS
   -  S5      5        [
        R                  " U S5        g [
        R                  " U S[        U5      5        [        U SS9(       a  U R                  (       a  SU l        [        R                   " X5        [
        R                  " U S5        g )NFry  zD1: %szc__builtin__
__main__
zUTF-8z# D1zD3: %szc__main__
__dict__
z# D3rI   Tr   zD4: %szc%s
__dict__
z# D4zD2: %sz# D2)r{  r   r   r  _first_passr   r   r  r   bytesr   r_   r   r   rO  r   	save_dictr   s     rC   save_module_dictr    s   we$0F0F)F!!g&9&9Wh
38e6@AWf%$ # gU+#9N9N2NWh
38e3W=>Wf%  
s	sl&;&;;S_%,w~c*odCZQUVVWh
38e-J?IJWf%  	Wh
387%(W-=-="'Gw,Wf%
rB   c           
     X    S nS Vs/ s H  nX!" [        X5      5      4PM     sn$ s  snf )Nc                   ^  U 4S jnU$ )Nc                   > [         R                  " U SU5        UR                  [        -  nU R	                  TU4US9  [         R                  " U S5        g )Nz
Dkvi: <%s>rc   z# Dkvi)r   r   mapping_dictproxy_helper_instancer   )r   rd   r  r'  s      rC   _save_dict_viewLsave_dict_view.<locals>.save_dict_view_for_function.<locals>._save_dict_view  sG    WlC8++(BB##D7*##>Wh/rB   rA   )r'  r  s   ` rC   save_dict_view_for_function3save_dict_view.<locals>.save_dict_view_for_function  s    0
 #"rB   )r  valuesr.  )r   )dicttyper  funcnames      rC   save_dict_viewr    s>    	# 8
7 2783NOP7
 	
 
s   'c                >   ^  U 4S jnU 4S jnU 4S jnSU4SU4SU44$ )Nc                   > [         R                  " U SU5        [        R                  " TR                  [        U5      45      nU R                  TR                  U4US9  [         R                  " U S5        g )NzDk: <%s>rc   z# Dk)r   r   r   r   fromkeysr-  r   r  r   rd   dict_constructorr  s      rC   save_dict_keys&save_dict_view.<locals>.save_dict_keys  s[    LL*c2%}}X->->cM0@/BLLL&)rB   c                   > [         R                  " U SU5        [        R                  " T[	        U5      45      nU R                  TR                  U4US9  [         R                  " U S5        g )NzDv: <%s>rc   z# Dv)r   r   r   r   	enumerater   r  r  s      rC   save_dict_values(save_dict_view.<locals>.save_dict_values  sV    LL*c2%}}X	#7HI2B1D#NLL&)rB   c                   > [         R                  " U SU5        U R                  TR                  T" U5      4US9  [         R                  " U S5        g )NzDi: <%s>rc   z# Di)r   r   r   r.  )r   rd   r  s     rC   save_dict_items'save_dict_view.<locals>.save_dict_items  sA    LL*c2#0@cJLL&)rB   r  r  r.  rA   )r  r  r  r  s   `   rC   r  r    s7    	*	*	* ^$'(o&
 	
rB   c           	        [        X5      (       df  [        R                  " U SU5        U R                  [        UR
                  UR                  UR                  4US9  [        R                  " U S5        g [        R                  " U SU5        [        US[        USS 5      5      n[        R                  " XUS9  [        R                  " U S5        g )	NzC1: %src   z# C1zC2: %sr   rI   r   z# C2)r~  r   r   r   	ClassTyperI   	__bases__r   r   r   r   r   s      rC   save_classobjr  *  s    C))Wh,Icmm(+(6;> 	 	@ 	Wf% 	 	Wh,sNGCT,JK  D9Wf%
rB   c                |   UR                   n[        UR                  5       5      [        L aS  [        R
                  " U SU5        [        R                  " XUR                  5       S9  [        R
                  " U S5        g UR                  [        L aS  U(       a  US:X  aF  [        R
                  " U SU5        U R                  [        U4US9  [        R
                  " U S5        g [        R
                  " U SU5        [        R                  " U /UR                  5       Q7S	U06  [        R
                  " U S
5        g )NzGa0: %sr   z# Ga0r  zGa1: %src   z# Ga1zGa2: %srd   z# Ga2)__args__r_   rS   r   r   r   r   r   
__origin__tupler   r  r  s      rC   save_generic_aliasr  9  s    <<DCNN$Wi-  CNN4DEWg&  
5	 $$%-Wi-04'sCWg&
  	Wi-  E3>>+;EEWg&
rB   c                    [         R                  " U SU5        U R                  [        UR                  UR                  5       4US9  [         R                  " U S5        g )NzTh: %src   z# Th)r   r   r   r  r  is_doner   s     rC   save_thread_handler  K  sI    Wh,1CIIs{{}3MSVWWf%rB   c                    [         R                  " U SU5        U R                  [        UR	                  5       4US9  [         R                  " U S5        g )NzLo: %src   z# Lo)r   r   r   r  r  r   s     rC   	save_lockr  R  s@    
LL(C(szz|o3?
LL&!
rB   c                   [         R                  " U SU5        UR                  5       n[        UR	                  S5      S   R	                  5       S   R                  S5      5      n[        UR	                  S5      S   R	                  5       S   5      nU R                  [        X44US9  [         R                  " U S5        g )	NzRL: %szcount=r   r   >zowner=rc   z# RL)r   r   ry   r   rh  rstripr   r  )r   rd   r   r  r  s        rC   
save_rlockr  Y  s    
LL(C(A!!$**,Q/66s;<E!!$**,Q/0E~3?
LL&!
rB   c                    [         R                  " U SU5        U R                  " [        U5      6   [         R                  " U S5        g )NzSo: %sz# So)r   r   r   reduce_socketr   s     rC   save_socketr  d  s6    
LL(C(s+,
LL&!
rB   c                T   UR                   (       a  SnOVUR                  5         U[        R                  [        R                  [        R
                  4;   a  SnOUR                  5       n[        U SS9(       aH  U R                  [        :X  a4  U" UR                  S5      nUR                  5       nUR                  5         OSn[        U SS9(       a  U R                  nU R                  nOSnSnU R                  [        UR                  UR                   UUR                   X&Xu4US9  g )	Nr   r   Try  r   r4  Frc   )r	  flushr  r  r  r  tellr{  r   r   r   readr   r   r   r  r  )r   rd   open_r  r   r  r
  r   s           rC   
_save_filer  j  s    
zz		3>>3>>3==AAHxxzHwd#*(D#((C 		wd#$$*SXXsxx-0ZZ-2-;@C  E rB   c                    [         R                  " U SU5        [        X[        5      n[         R                  " U S5        U$ NzFi: %sz# Fir   r   r  r|   r   rd   r   s      rC   	save_filer    s3    
 LL(C(7&A
LL&!HrB   c                    [         R                  " U SU5        [        X[        5      n[         R                  " U S5        U$ r  r  r  s      rC   r  r    s1    Wh,wT*Wf%rB   c                    [         R                  " U SU5        [        X[        5      n[         R                  " U S5        U$ r  r   r   r  _openr  s      rC   r  r    s3     	Wh,wU+Wf%rB   c                    [         R                  " U SU5        [        X[        5      n[         R                  " U S5        U$ r  r  r  s      rC   r  r    s1    LL(C07/ALL&)HrB   c                   [         R                  " U SU5        UR                  (       a  SnSnOUR                  5       o!R	                  5       nU R                  [        X#UR                  4US9  [         R                  " U S5        g NzIo: %sr4  r   rc   z# Io)r   r   r	  r   r  r   r  r   rd   r<  r  s       rC   save_stringir    m    Wh,::E1LLNExxzHOe.1jj.:?B 	 	DWf%rB   c                   [         R                  " U SU5        UR                  (       a  SnSnOUR                  5       o!R	                  5       nU R                  [        X#UR                  4US9  [         R                  " U S5        g r  )r   r   r	  r   r  r   r  r  s       rC   save_stringor    r  rB   )	lru_cachec                r   [         R                  " U SU5        [        (       a  UR                  5       nUR                  4nOUR                  5       nUS   US   4nU[        R                  :w  a  [        [        USS9nO[        nU R                  XAR                  4US9  [         R                  " U S5        g )NzLRU: %smaxsizetypedT)is_callablerc   z# LRU)r   r   OLD39
cache_infor  cache_parametersr  __defaults__r   r   __wrapped__)r   rd   r   r   wrappers        rC   save_lru_cacher    s    Wi-5^^%FNN$D))+F9%vg7D9)))Y$?GGGoo%7SAWg&rB   c                    [         R                  " U SU5        U R                  [        UR                  UR
                  4US9  [         R                  " U S5        g )NzSu: %src   z# Su)r   r   r   super__thisclass____self__r   s     rC   
save_superr	    sG    
LL(C( 1 13<<@cJ
LL&!
rB   c                   [        UR                  SS 5      nUb  [        U5      [        La  [        UR                  UR
                  5      U:X  a[  [        R                  " U SU5        U R                  [         UR                  UR
                  4US9  [        R                  " U S5        g [        R                  " U SU5        U R                  [        UR                  UR                  4US9  [        R                  " U S5        g )N__code__zMe2: %src   z# Me2Me1: %s# Me1)
r   __func__r_   r%   r  rI   r   r   r   r'   )r   rd   r  s      rC   save_instancemethod0r    s    s||Z6T
( :#,,5<LL)S1#,,)E3OLL'*Wi-Js||(D#NWg&rB   c                    [         R                  " U SU5        U R                  [        UR                  UR
                  4US9  [         R                  " U S5        g )Nr  rc   r  )r   r   r   r'   r  r  r   s     rC   r  r    sE    Wi-Js||(D#NWg&rB   c                    [         R                  " U SU5        U R                  [        UR                  UR
                  UR                  5       4US9  [         R                  " U S5        g NzWr: %src   z# Wrr   r   r   rk  __objclass__rI   ry   r   s     rC   save_wrapper_descriptorr    sZ     	Wh,Hs'7'7'*||~'7<? 	 	AWf%rB   c                    [         R                  " U SU5        U R                  [        UR                  UR
                  UR                  5       4US9  [         R                  " U S5        g r  r  r   s     rC   r  r    sZ     	Wh,Hs'7'7'*||~'7<? 	 	AWf%rB   c                    UR                   n[        U SS9(       a  [        U5      U R                  ;   a  U R                  [        U5         nO-[        [        U R                  R!                  5       5      S 5      nUbn  [        R                  " U SU5        U R	                  [
        ["        4US9  UR%                  [        R&                  USU445        [        R                  " U S5        g [        R                  " U S	U5        U R	                  [
        U4US9  [        R                  " U S
5        g ! [         a    [        R                  " U SU5        U R	                  [
        [        R                  4US9  U R	                  [        R                  US45        U R                  [        5        [        R                  " U S5         g f = f)NzCe3: %src   cell_contentsz# Ce3Try  zCe2: %sz# Ce2zCe1: %sz# Ce1)r  r  r   r   r   r5  r   r/  _delattrr   r    r{  r  r   nextr  r  	_CELL_REFr  _setattr)r   rd   r   r  s       rC   	save_cellr    st   ( wd#a5G%%%((A/H D!2!2!9!9!;<dCHLL)S1 ylDOOV__sOQ.GHILL'*
LL)S)qd4
LL'"
O  Wi- 	L6+=+=*?SI 	FOOc?-CDcWg&%s   D3 3BG
	G
c                    [         R                  " U S[        U5      5        U[        -  nU R	                  [
        U4US9  [         R                  " U S5        g NzMp: %src   z# Mp)r   r   r  r  r   ri  )r   rd   r  s      rC   save_dictproxyr   >  sI    Wh
3822MG:3?Wf%rB   c                    [         R                  " U S[        U5      5        U R                  [        UR                  5       4US9  [         R                  " U S5        g r  )r   r   r  r   ri  r   r   s     rC   r   r   F  sD    Wh
38MCHHJ=cBWf%rB   c                    [         R                  " U SU5        U R                  [        UR                  UR
                  UR                  4US9  [         R                  " U S5        g )NzSl: %src   z# Sl)r   r   r   slicestartstopstepr   s     rC   
save_slicer'  M  sK    
LL(C(		388SXX>CH
LL&!
rB   c                    [         R                  " U SU5        U R                  [        UR	                  5       4US9  [         R                  " U S5        g )NzSi: %src   z# Si)r   r   r   rE  ry   r   s     rC   save_singletonr)  T  sC     LL(C(
S\\^$53?
LL&!
rB   c                *   [        U 5      n[        U 5      nX!:X  a  [        U 5      $  [	        UR                  S5      R                  S5      S   SS9nU$ ! [         a    [        S5      s $ f = f! [         a    [        (       d.  [	        UR                  S5      R                  S5      S   SS9n U$ [        [        R                  " 5       5      nU H!  n[        U5      U:X  d  M  [        U5      s  s $    S[        U 5      -  n[        U5      ef = f)z.get memory address of proxy's reference objectNr  z at r   r  rw   z)Cannot reference object for proxy at '%s')reprr   ReferenceErrorr  r   r  rh  r  IS_PYPYr  gcget_objects)rd   _repr_straddressobjects_objr
  s          rC   _proxy_helperr5  ]  s    IEC }RWn&dkk#&,,V4R8rB N  $x
  	&w%,,s+11&9"=BGG N 2>>+,G:%bh   >3GC %%	&s/   A +A0 A-,A-0A D30D'D6Dc                   / SQnU H  nU [        U5      :X  d  M  Us  $    U(       a$  [        UR                  R                  5       5      nO[        [        R
                  " 5       5      nU H  nU [        U5      :X  d  M  Us  $    [        U 5      n [        SU -  5      e! [         a    [        S[        U 5      -  5      ef = f)zCget object located at the given memory address (inverse of id(obj)))NTFz"'%s' is not a valid memory addresszCannot reference object at '%s')
r  r  r   r  r.  r/  hexr"  r   r,  )r2  r  specialrd   r3  s        rC   _locate_objectr9  r  s    !Gbgcz v--/0)*'bgcz  w< :WD
EE  M<s7|KLLMs   B "Cc                    U" 5       n[         R                  " U SU5        U R                  [        U4US9  [         R                  " U S5        g )NzR1: %src   z# R1)r   r   r   r<  r   rd   refobjs      rC   save_weakrefr=    sA    UF
LL(C(&<
LL&!
rB   c                    [         R                  " U SU-  5        [        [        U5      5      nU R	                  [
        U[        U5      4US9  [         R                  " U S5        g )NzR2: %rrc   z# R2)r   r   r9  r5  r   rA  r@  r;  s      rC   save_weakproxyr?    sU     LL(S.)M#./F)FHSM+BL
LL&!
rB   c                &  ^ ^ [        T S5      (       d  gT R                  c  g/ SQn[        R                  R                  m[        U U4S jU 5       5      =(       d5    T R                  R                  [        5      =(       d    ST R                  ;   $ )N__file__TF)base_prefixbase_exec_prefixexec_prefixprefixreal_prefixc           	   3    >#    U  H  n[        [        U5      (       d  M  TR                  R                  [	        [        U5      5      =(       d5    T" TR                  5      R                  T" [	        [        U5      5      5      v   M     g 7frp   )r  r  rA  ro  r   )rK   r   r  rps     rC   rM   %_is_builtin_module.<locals>.<genexpr>  sl      
 sD!FFOO&&wsD'9: F&//"--bd1C.DEFs   BA,Bzsite-packages)r  rA  r   r  realpathrZ   endswithEXTENSION_SUFFIXES)r  r  rH  s   ` @rC   _is_builtin_modulerM    s    6:&&tu XE			B 	 
 
 	
 	. ??##$67	. foo-	rB   c                p    [        U SS 5      S L=(       d!    U [        R                  R                  5       ;   $ )N
__loader__)r   r  rp  r  )r  s    rC   _is_imported_modulerP    s-    6<.d:\fHZHZH\>\\rB   c                    [        U5      n[        U SS9=(       a    XR                  L nUR                   S;  a  U(       a  U(       a  [
        R                  " U SU5        [        U5      (       a  UR                   OS	UR                   -  nUR                   R#                  5       nS
 H  nUR%                  US 5        M     [&         H7  n[)        UR+                  U5      SS5      R-                  S5      (       d  M5  Xg	 M9     U R                  [        U4XS9  [
        R                  " U S5        g UR                   S:X  a@  [
        R                  " U SU5        U R/                  USS9  [
        R                  " U S5        g [
        R                  " U SU5        U R                  [        UR                   4US9  [
        R                  " U S5        g )N)rd   r  z# M2zM1: %src   z# M1Try  )r:  r   r  z__runtime__.%s)rf  rO  rH   r4  IPythonr  zM2: %s_dillr   )rI   rh  r2  whats_changedr   r   r   infor  r   rO  RuntimeErrorrM  r{  r   rP  r   r   r}   IPYTHON_SINGLETONSr   r   ro  r   )r   rd   changedbuiltin_modis_session_mainmod_name	main_dictr  s           rC   save_moduler]    sw   $ )-!'6O3--;OLL BB;"LL(C0':3'?'?s||EUX[XdXdEdH))+I6dD) 7*9==.bALLYWW! + VLL&)  \\\)LL(C0'2LL&)
  LL(C0SILL&)
rB   c                `   [        U R                  5      S:X  a  U R                  S   R                  nO90 n[        U R                  5       H  nUR	                  UR                  5        M      / n[
        R                  U5       H4  u  px XG   n	XL a&  [        US5      (       a  UR                  U5        M2  M4  M6     U H  n[
        R                  X5        M     [        [        U 5      [        5      (       a$  UR                  SS5        UR                  SS5        X4$ ! [         a     M  f = f)zDRetrieve a copy of the dict of a class without the inherited methodsr   r   r   r   N__weakref__)r  r  r   r  r   r   r.  r  r  r   r}   r   r_   )
clsclsdictr!  r  inherited_dictrx   	to_remover   r<  
base_values
             rC   _get_typedict_typere    s   
3==Qq)22S]]+D!!$--0 ,Izz'*	'-J"wun'E'E  & (F" +   $s)T""J%M4(>  		s   
*D
D-,D-c                  ^ [        [        S5      (       aC  [        R                  " U 5      u  n    nU R                  mUR	                  U4S jU 5       5        OQ[        U S5      (       a4  U R
                  nU R                  mUR	                  U4S jU 5       5        O[        SU 5      eSU;   a9  UR                  SS 5        UR                  SS 5        UR                  SS 5        X4$ UR                  SS 5        X4$ )	N	_get_dumpc              3  8   >#    U  H  nTU" 5       44v   M     g 7frp   rA   rK   regr   s     rC   rM   $_get_typedict_abc.<locals>.<genexpr>  s     FXch1Xs   _abc_registryc              3  .   >#    U  H
  nTU44v   M     g 7frp   rA   ri  s     rC   rM   rk    s     D8Ch/8s   zCannot find registry of ABC %s
_abc_cache_abc_negative_cache	_abc_impl)r  abcrg  r   extendrl  r   r}   )rd   _dictr!  r  registryr}  r   s         @rC   _get_typedict_abcru    s    sK  !mmC01a<<FXFF	o	&	&$$<<D8DD<cBB%		/4(		,%		'. < 			+t$<rB   c           	        U[         ;   aM  [        R                  " U SU5        U R                  [        [         U   4US9  [        R                  " U S5        g UR
                  [        4:X  GaS  [        S Vs/ s H  n[        X5      PM     sn5      (       Ga(  [        R                  " U SU5        [        US[        USS 5      5      nUR                  U:w  a  Uc  / nUR                  [        USU445        UR                  (       d3  [        U [        UR                  UR                   UR"                  44XS9  OmUR                    Vs/ s H#  oUUR                  ;   d  M  UR                  U   PM%     nn[        U [        UR                  UR                   UR"                  U44XS9  [        R                  " U S	5        g U[%        S 5      L aH  [        R                  " U S
U5        U R'                  [(        S-   5        [        R                  " U S5        g U[*        L aJ  [        R                  " U S
U5        U R                  [$        [,        4US9  [        R                  " U S5        g U[.        L aJ  [        R                  " U S
U5        U R                  [$        [0        4US9  [        R                  " U S5        g U[2        L aH  [        R                  " U S
U5        U R'                  [(        S-   5        [        R                  " U S5        g U[4        L aH  [        R                  " U S
U5        U R'                  [(        S-   5        [        R                  " U S5        g [        U SS 5      n[7        U5      [        U SS5      ;   n[9        X5      (       + n	U(       Gd  U(       Gd  U	(       Ga  Uc  / n[        R                  " U SU5        [;        XR<                  R?                  5       S U5      u  pU
RA                  SS5      n[%        U5      [B        :X  a  U4nU H  nU
RE                  US 5        M     [G        U[H        RJ                  5      (       a=  [        R                  " U SU5        [M        XX5      u  p[        R                  " U S5        [        USS 5      nUb3  URO                  5        H  u  nnUR                  [        XU445        M!     Ub  UR                  [        USU445        [        US5      (       d3  [        U [P        [%        U5      UR                  UR
                  U
44XS9  ONS[%        U5      0nU
(       a  [S        [T        U
S9nOS n[        U [V        UR                  URX                  UU44XS9  [        R                  " U S5        g [        US[        USS 5      5      n[        R                  " U SU5        U	(       a  [Z        R\                  " SU< S3[^        SS9  U(       a1  [Z        R\                  " SU< S UR"                  < SU< S!3[^        SS9  [`        Rb                  " XUS"9  [        R                  " U S#5        g s  snf s  snf )$NzT1: %src   z# T1)ru  _asdict_make_replacezT6: %sr   rI   rd   r  z# T6zT7: %ss   __builtin__
NoneType
z# T7s   enum
EnumMeta
s   threading
ExceptHookArgs
r   r   rA   zT2: %s	__slots__zABC: %sz# ABC__orig_bases__	metaclass)r  z# T2zT4: %szCannot locate reference to r   r  )
stacklevelr  r  z= has recursive self-references that trigger a RecursionError.r   z# T4)2_typemapr   r   r   ra  r  r  rP   r  r   rI   r  setattr_field_defaultsr  rT  ru  rH   r_   r   r   NotImplementedTypeNotImplementedEllipsisTypeEllipsisr4   ExceptHookArgsTyper  r~  re  r   r   r   r   r}   r  rq  ABCMetaru  r.  rd  r>  r  r.   r|  r  r  r   r   r   )r   rd   r  r(  obj_namefieldrN  r   obj_recursiveincorrectly_namedrs  r!  slotsr   r  rY  rZ  	_metadict_dict_updates                      rC   r   r     sf   
hWh, 	J#(8cBWf%l k 
5(	"sKs+tKs4GC,>Ks+t'u'uWh,3Z0NO<<8#$ "  'C+J!KL""*<s||S[[Z]ZhZh>i)jps  R@CluX[XkXkOk2++E2Hl*<s||S[[Z]ZhZhjr>s)tz}  \Wf% 
T
	Wh,f99:Wf%| { 
"	"Wh,D>"3=Wf%t s 
	Wh,D8+37Wf%l k 
Wh,f223Wf%d c 
"	"Wh,f==>Wf%\ W (D1377K#DD 0 >>m0A$ " LL(C0-c<<3D3D3Fm\LE
 IIk2.EE{c!		$%  #s{{++Wi50URWg.sND9H !KKMDAq!(('CA;)?@ * #$$g^X/N%OP3 011#GlIs||S]]E= .:  c	 #.y#GL#'L#GiLL#"4"4i: .: LL&), ) sNGCT4RSHLL(C0 8;=# 
 36R# 	 $$WALL&)
k ,u ms   7Y
Y!Yc                    [         R                  " U SU5        U R                  [        U5      UR                  UR
                  UR                  UR                  4US9  [         R                  " U S5        g )NzPr: %src   z# Pr)r   r   r   r_   fgetfsetfdelr   r   s     rC   save_propertyr    sY     LL(C(S	CHHchh#++#N  !
LL&!rB   c                    [         R                  " U SU5        UR                  nU R                  [	        U5      U4US9  [         R                  " U S5        g )NzCm: %src   z# Cm)r   r   r  r   r_   )r   rd   	orig_funcs      rC   save_classmethodr    sH    
 LL(C(I S	I<S9
LL&!rB   c           	     z   [        X5      (       Gd  [        UR                  5      [        La  [	        USS 5      nUc  [
        R                  n[        USS9nSn [        X1R                  5      u  pV[	        USS 5      UL a  SnU(       aG  [        R                  " U SU5        U R                  [        WS4US9  [        R                  " U S5        g [        R                  " U S	U5        [	        U S
S 5      n[	        U SS 5      n[	        U SS 5      n	[	        U S[
        5      n
/ nU(       a  SSKJn  U" USSS9nSUR                   0nOUR"                  nU	(       a(  XR$                  L a  [	        U SU
5      R$                  nUnOEUb4  UR                   b'  [	        [        UR                   S5      SS 5      UL a  UnOSUR                   0nUbq  XLam  UR'                  5        Vs1 s H  n[)        U5      iM     nnU H&  nUU;   d  M  UU   R+                  [,        X445          O   UR+                  [,        X445        UR.                  n0 nS H  n[	        UUS 5      nUc  M  UUU'   M     UR                  UR                  :w  a  UR                  US'   SU;  d  UR                   US   :w  a  UR                   US'   UR$                  n[        U5      [0        La  UUS'   S nU(       a  UU4n[3        U [4        UR                  XR                  UR6                  U4U4XS9  U(       a{  [9        [;        UR'                  5       5      S 5      nU(       aQ  U(       aJ  U HD  n[<        USU44n UR?                  U5        U R                  " U6   U RC                  [D        5        MF     [        R                  " U S5        g [        R                  " U SU5        [	        US[	        USS 5      5      n[F        RH                  " XUS9  [        R                  " U S5        g ! [         a     GNf = fs  snf ! [@         a     M  f = f)NrH   TrL  Fr  zF3: %src   z# F3zF1: %sr   r   _main_modified_original_mainr   )
globalvars)r   builtinrI   r   r   )r   rg  r  r   rz  r  z# F1zF2: %sr   z# F2)%r~  r_   r  r%   r   r~   rI   rO  rw  r   r!  r   r   r   detectr  rH   rh  r   r  r  r  r  r3  r   r  rq  r  r  r  r  remover  r   r    r   r   )r   rd   r   r  _pypy_builtinr|  r}  r   r   r  r  r  r  
globs_copyglobsgglob_idsstack_elementclosure
state_dict	fattrnamefattrr  topmost_postproccellpossible_postprocr   s                              rC   save_functionr    s   C))X- "#|T:K")22#Kd;F!M(1A1AB5*d3s:$(M Wh4##GeZ-@c#JWf-Wh,7J5G[$7	 *:DA *:KH*#CtDJ  0EJ *0G0G"G$Wg~FOO
"'CNN,FN3>>4@*dSWaa"#S^^4!e&= (2'8'8':;':!1':H;!* H,m,33Y@S4TU "+
 $$i%1D%EF//
IICD1E (-
9% J s||+),)9)9J~&U"cnnj8I&I'*~~J|$;d"%*Jz"E:%EG&6e\\33C3C9
 & 	9 #D)9)9);$<dC+#D)04#2N(O%!(//0AB
 ''):;MM#& $ 	Wf% 	 	Wh,sNGCT,JK  D9Wf%
C " X <N & ! !s*   )P !P'(P,
P$#P$,
P:9P:s   dill._dill._testcapsulec                    [         R                  " U SU5        [        U5      n[        X5      n[	        U5      n[        U5      nU R                  [        X2XE4US9  [         R                  " U S5        g )NzCap: %src   z# Cap)r   r   _PyCapsule_GetName_PyCapsule_GetPointer_PyCapsule_GetContext_PyCapsule_GetDestructorr   re  )r   rd   r   r^  r_  r`  s         rC   save_capsuler  :  sc    Wi-!#&'2',-c2
OgW-QWZ[Wg&rB   PyCapsuleType_HAS_DEFAULT_FACTORY_CLASSc                    [         R                  " U SU5        U R                  [        S-   5        [         R                  " U S5        g )Nz	DcHDF: %ss!   dataclasses
_HAS_DEFAULT_FACTORY
z# DcHDFr   r   r   r   r   s     rC   *save_dataclasses_HAS_DEFAULT_FACTORY_CLASSr  P  s2    Wk3/fEEFWi(rB   MISSINGc                    [         R                  " U SU5        U R                  [        S-   5        [         R                  " U S5        g )NzDcM: %ss   dataclasses
MISSING
z# DcMr  r   s     rC   save_dataclasses_MISSING_TYPEr  W  s2    Wi-f889Wg&rB   KW_ONLYc                    [         R                  " U SU5        U R                  [        S-   5        [         R                  " U S5        g )Nz	DcKWO: %ss   dataclasses
KW_ONLY
z# DcKWOr  r   s     rC   save_dataclasses_KW_ONLY_TYPEr  ^  s2    Wk3/f889Wi(rB   _FIELD_BASEc                    [         R                  " U SU5        U R                  [        S-   UR                  R                  5       -   S-   5        [         R                  " U S5        g )NzDcFB: %ss   dataclasses
   
z# DcFB)r   r   r   r   r   r  r   s     rC   save_dataclasses_FIELD_BASEr  e  sG    Wj#.f//#((//2CCeKLWh'rB   c                   U(       a  [         4nO[        [        [        [        [
        4n [        U 40 UD6n [        UR                  5       U R                  5       :H  5      n[        US5      (       a  UR                  5       R                  5       nU(       a  gU(       dI  [        U5      [        U 5      :H  nU(       a  U$ [!        [        U5      5      [!        [        U 5      5      :H  $ g! [        [        4 aC    [        R                  " S5        XP:H  n[        R                  (       a  [        R                  S	  Nf = f! U a     gf = f)aq  
Quick check if object pickles with dill.

If *exact=True* then an equality test is done to check if the reconstructed
object matches the original object.

If *safe=True* then any exception will raised in copy signal that the
object is not picklable, otherwise only pickling errors will be trapped.

Additional keyword arguments are as :func:`dumps` and :func:`loads`.
r   r   toarrayTF)r  r"  AssertionErrorNotImplementedErrorr   r   r   boolrP   r!  r  r  filtersr  r  r_   r+  )rd   exactrM  r   
exceptionspikresults          rC   r   r   n  s    9,Z1DmUde
3$	9#'')swwy01F
 69%%^^%))+F$#Y$s)+Ff}S	?d49o55 	* 	9##H-ZFX%5%5a%8	9  sA   E *C+ #6E &E (E +AD>;E =D>>E E
	E
c                   UR                  SS5      nUR                  SS5      nUc  SSKnUR                  n[        U[        5        SSKnSn [        U /UQ70 UD6nSnU(       a  U(       a  [        S5        U< S[        U5      < S	3n	UR                  U	R                  SS
5      5      (       d  SOSn	U(       a  [        U	5        g! U(       a  U(       a  [        S5        f f f = f)a  
Check pickling of an object across another process.

*python* is the path to the python interpreter (defaults to sys.executable)

Set *verbose=True* to print the unpickled object in the other process.

Additional keyword arguments are as :func:`dumps` and :func:`loads`.
verboseFpythonNr   TzDUMP FAILEDz" -c import dill; print(dill.loads(z))rv   SUCCESSzLOAD FAILED)r}   r  
executabler  r   
subprocessr   printr+  callrh  )
rd   r   r   r  r  r  r  failr4  r
  s
             rC   r   r     s     hhy%(GXXh%F~vsD!S(4(4(G-  9?T

KC%??399T!+<==)=Cc

 G-  4s   C	 	C&c                    USL d  [        U R                  S5      (       d  SU R                  ;   $ [        U R                  R	                  5       ;   $ )z#check the dill-ness of your picklerFmror   )r  r   rH   r	   r  )r   rz  s     rC   r{  r{    sF    ~WW%6%6>>++++g''++---rB   c                     [         R                  R                  5        H  u  p U[        R                  U '   M     g! [         a     [
        R                  " [        SU 5         MG  f = f)z1extend pickle with all of dill's registered typeszskip: %sN)r	   r   r.  r   r  r   r   r   r&  s     rC   _extendr    sZ     ""((*	1'+L!!!$ +
   	1LL*a0	1s   =&A'&A')NNNNrp   r  )NNNNN)F)FF(V  r   
__future__r   __all__rH   r  r   r   r   _tracelogr   r  r2  r3  r  OLD38r  OLD310r  r:  r~   r   r   r   r
   r  r   r    _threadr!   r"   r  r#   r  r5  r$   ThreadHandleTyper;  r%   r&   r'   r(   r)   r*   r+   r,   
memoryview
BufferTyper_   r  r  r  r  r  r#  	SliceTypeTypeTyperX  
XRangeTyper-   ri  r.   r   r   r   r   r   r  r   r\  r.  rq  dataclassesr:  r/   r0   r1   r;  r2   enumr3   r4   	functoolsr5   operatorr6   r7   r  importlib.machinery	importlibr  	machineryrL  ctypes
HAS_CTYPESr  r-  r>   r@   r?   
PathFinder	find_specrD   rV   r[   r`   rh   ri   rj   rk   rl   rm   r3  rB  r   r>  r  r  r"  r?  r@  rA  rz   LRUCacheTyper  r   platform
IS_PYODIDErC  rG  rD  rE  rF  _pyior|   r  rK  rH  rI  rJ  ior   r   rS  rT  r   
SocketTypemultiprocessing.reductionr   r  __IPYTHON__
IS_IPYTHONrR  rW  	NameErrorr   r   r  r%  r   r4  r   r   r   r   r   r   r   r   r   r   r   r   r   Warningr   r   r   r	   r   r/  r   r0  r8  r=  r`  r   rr   _incedental_reverse_typemapr  r  r.  rU  r  r-  winregrW  set_incedental_typesr  r^  ra  rd  rq  rs  ALL_CODE_PARAMSversionnew_attrparamsr  rh  r  intersectionr  r  r  r  r  r  r  r  r  r  r  r  r+  r  __dMAPPING_PROXY_TRICKr  r/  r5  r<  rA  rE  r  r   rT  re  rk  rm  rO  rw  r~  r  r  r  r  r  r  r  
__dicttype__obj
__funcname
__savefuncr   __tviewr  _GenericAliasr  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r   r'  r)  r5  r9  r=  r?  rM  rP  r]  re  ru  r   r  abstractpropertyr  staticmethodclassmethodabstractstaticmethodabstractclassmethodr  r  r8   PyCapsule_Newr\  c_void_pc_char_pargtypes	py_objectrestypePyCapsule_GetPointerr  PyCapsule_GetDestructorr  PyCapsule_GetContextr  PyCapsule_GetNamer  PyCapsule_IsValidr[  c_boolPyCapsule_SetContextr]  PyCapsule_SetDestructor_PyCapsule_SetDestructorPyCapsule_SetName_PyCapsule_SetNamePyCapsule_SetPointer_PyCapsule_SetPointer_testcapsule_namecast_testcapsuler  r  addr  r  r  r  r  r  r  r  r   r   r{  r  rA   rB   rC   <module>r(     s!  ( # 
  % # 	 
		)	#	)	#
..9
$NNY&  H   &=9< < <
	H~.) 	
 > b b   	 
  ? ? #   + 9..AAB J&+..G 
	))+55g>>344NJN >	_, 3%% 
 &*66q9:73Q'(y)+./	jm$j,-< ,%%L \\\)
+r2'T]5B-O "426 "426 b#%cReD#-4=RT[`3a(%H(%H # 	J ' EJH8  v ,  #
  
;89&0t 	G[ 		m] 		 	S-l S-j	 	@ $,,113 
I" )*    $$	  >>IH  -,,,&000*
   " "O299;'"((*%!&&(^AHHJ'1779o$  .6
+/8,0:-	 >>Yw">B4UY\_[aHbCc>d :;	.4oo
+   3 43::<= <#3#9#9#;<<!" =A<@ +! +!Z "1GXvx""lln	 "1
 K --XZjX) EN ( (  /0  
 -"47Q"QR  	}%*
)< C("
 =AgFXFXhl /x 
(A AFC 
$ 4 %
$
2 J LE"0"<
Jwuj134'***(2GW% #= z7J 
)  
&

       
(  
) 6 
(	
	
	/      ! " "#"#  ! $ $ 	&	'	 
(	 i	 	 j	 	 #l   
)  j   j  "#"#"##$'( ) % $ $ $
 "#"# $ $ 
(* *X m  m  
)  
*	,	
   *F  
-  
)	
  &] 
*+ +b2* 
(| || 
(	#

"   " 
,	+	#
"
"#	#
!
!"" # $  " 
,o ob '&+..%%33N%QN#--N",,AA&,&6&6%H"$*OO!%//GG)/)9)9(;%'-$",,AA&,&6&6%8"$*OO!));;#)#3#3"5!'));;#)#3#3V__"E!'",,AA&,&6&6%H"%//GG)/)9)96??(K%));;#)#3#3V__"E",,AA&,&6&6%H"2!NFOO4)*L
 &Mm' ' 4A0(5_%-(L ;455k445) 6)
 ;	""d;&&'(' )'
 ;	""d;&&'() ))
 ;&&k%%&( '(#J'T. 	)XaD    D  JG  		Z  L4  b]aaa,a/CFZb  JJ%h%	N  		V    s   
w w 8w <w0 w= //x 5x! 4y	 y wwww
w-,w-0w:9w:=x	x	xx!y)x21y2x=:y<x==yy	yyy"!y"