
    uYf                        d Z ddlZddlZddlZddlZ	 ddlZdZn# e$ r dZY nw xY w eedd           Z	i Z
i Z eeeeeeef          Z ed e
ej        ej        ej        efD                       Zd Zedededededededej        dej        dej        di
fd	Zdd
Zd ZddZ d Z!e"Z"d Z#e#e_"         e$ed          re`% eej        &                                          D ]Z' ee'            e             dS )z@
Module to show if an object has changed since it was memorised
    NTFgetrefcountc                     dS )Nr    )xs    C:\Users\Admin\Desktop\cercetare\experiment de trasmitere a informatiei din viitor in prezent\qiskit_env\Lib\site-packages\dill/__diff.py<lambda>r      s    1     c              #   4   K   | ]}t          |          V  d S N)id).0is     r   	<genexpr>r   !   s8       % %!1 % % % % % %r	   c                     t          |           t          v st          |           t           u r| t          v rdS t          | dd          S )zQ
    Gets all the attributes of an object though its __dict__ or return None
    N__dict__)typebuiltins_typesgetattr)objs    r   	get_attrsr   %   sG     CyyN""
s))t

~ 5 53
D)))r	   c                 &   	 | j         }n# t          $ r t          |           }Y nw xY wt          }||v r,||         r" || d          r|                                 S | S dS t
          r6|t          j        t          j        j	        j
        fv r| j        r	| j        r| S g S  || d          rc || d          rW || d          rK ||d          r? ||d          r3 ||d          r'd||<    || d          r|                                 S | S d||<   dS )z9
    Gets all the items in a sequence or return None
    copy__contains____iter____len__TFN)	__class__AttributeErrorr   hasattrr   	HAS_NUMPYnumpyndarraymacoreMaskedConstantshapesize)r   cacheo_typehsattrs       r   get_seqr*   /   s{      cF= 	vc6"" "xxzz!J	 	 
 v%-1M!NNN9 	 	JI	^	$	$ 	Z)@)@ 	6#y!!	&,fV^&D&D	6&*%%	*0&*C*C	 f6#v 	88::
fts   
 &&c                 
   t          |           }|t          v r|r	|t          v rdS t           t          |           }|d}n-t	          fd|                                D                       }t          |           }|d}n_t          |d          r.t	          fd|                                D                       }n!t          |d          sd}nfd|D             }||ft          |<   | t          |<   t          | fd|                                D              |_t          |d          r"fd|                                D              dS t          |d          rfd	|D              dS  |           dS dS )
z
    Adds an object to the memo, and recursively adds all the objects
    attributes, and if it is a container, its items. Use force=True to update
    an object already in the memo. Updating is not recursively done.
    Nc              3   8   K   | ]\  }}| |          fV  d S r   r   r   keyvalueid_s      r   r   zmemorise.<locals>.<genexpr>_   s4      EEZS%SSZZ(EEEEEEr	   itemsc              3   J   K   | ]\  }} |           |          fV  d S r   r   r-   s      r   r   zmemorise.<locals>.<genexpr>e   s<      HH
Uss3xxE

+HHHHHHr	   r   c                 &    g | ]} |          S r   r   )r   r   r0   s     r   
<listcomp>zmemorise.<locals>.<listcomp>i   s!    $$$Q##a&&$$$r	   c                 ,    g | ]\  }} |          S r   r   )r   r.   r/   mems      r   r4   zmemorise.<locals>.<listcomp>o   s%    000
UU000r	   c                 B    g | ]\  }} |           |          fS r   r   )r   r.   itemr6   s      r   r4   zmemorise.<locals>.<listcomp>s   sB     ) ) )d c#hhD		" ) ) )r	   c                 &    g | ]} |          S r   r   )r   r8   r6   s     r   r4   zmemorise.<locals>.<listcomp>w   s!    )))tT)))r	   )
r   memo	dont_memor   dictr1   r*   r   	id_to_objmemorise)	r   forceobj_idgattrs_idsseq_idr0   r6   s	          @@r   r>   r>   Q   s    WWF~~e~v':':
C#AyEEEE17799EEEEEAy	G		 %HHHHaggiiHHHHHQ	"" %$$$$!$$$V#DLIf
C}0000aggii0000}1g 	) ) ) )ggii) ) ) ) ) ) q)$$ ))))q))))))#a&&&&& }r	   c                       t           j        t          j        t          c  fdt	          t                                                     D              d S )Nc                 `    g | ]*\  }} |          d k      |           |          f+S )   r   )r   r0   r   itopmpsrcs      r   r4   z release_gone.<locals>.<listcomp>}   sJ       hc3C1 d3iiCr	   )r=   popr:   r   listr1   )rH   rI   rJ   s   @@@r   release_gonerM   {   sh    M48[MD"c     $y/@/@*A*A      r	   c                    |rdt           j        v rt           `|i }t          |           }||v r|rt	          ||                   S ||         S |t
          v ri dg||<   |rdS ||         S |t          vr#|rdS t          dt          |           z             i df||<   t          }t          }t          |           i }n{t          |         d         }|j        }	t          fd|D                       }                                D ]1\  }
} ||           |	|
d          k    s |||dd          r|||
<   2t          |           }d}|t          |d          rt          |         d	         }t!          |          t!          |          k    rd}nt          | d
          rc|j        }	|                                D ]F\  }
} ||           |	 ||
                    k    s ||
|dd          s |||dd          rd} nGn7t#          ||          D ]&\  }} ||          |k    s |||dd          rd} n'||f||<   |r|p|S ||fS )aG  
    Check an object against the memo. Returns a list in the form
    (attribute changes, container changed). Attribute changes is a dict of
    attribute name to attribute value. container changed is a boolean.
    If simple is true, just returns a boolean. None for either item means
    that it has not been checked yet
    _NFTzObject not memorised r   c              3   (   K   | ]}|v|d fV  d S r   r   )r   r.   attrss     r   r   z whats_changed.<locals>.<genexpr>   s1      KKc#U:J:JDz:J:J:J:JKKr	   r      r1   )builtinsr   rO   r   anyr;   r:   RuntimeErrorstrwhats_changedr   getr<   r1   r*   r   lenzip)r   seensimplefirstr@   chngdr0   changed	obj_attrsobj_getr.   or1   seq_diffobj_seqr8   r   jrQ   s                     @r   rW   rW      s     (###
<DWWF~~ 	%tF|$$$F| E{V 	5F|	t		 	C46SABBB;DLE
C cNNE}LO	-KKKKYKKKKKkkmm 	! 	!FCs1vvd++++uuQdE/J/J+  CLLEHy 9 9v,q/JJ#g,,&&HHS'"" 	kG"[[]]  	T3t99C 1 111eCtU33 2eD$e44 2  $HE	 2 E7++  13q66Q;;%%4u"="=;#HE  H$DL #"("Hr	   c                  $    d|d<   t          | i |S )NTr\   )rW   )argskwdss     r   has_changedri      s    DN$'$'''r	   c                  8   t          t          j                                                  }t	          | i |}t          t          j                                                                      |          }|D ]!}t          t          j        |                    "|S )zn
    Replaces the default __import__, to allow a module to be memorised
    before the user can change it
    )setsysmoduleskeys
__import__
differencer>   )rg   rh   beforemodafterms         r   _impru      s    
 !!##$$F
d
#d
#
#C  ""##..v66E ! !Q    Jr	   rO   )F)NFT)(__doc__rS   osrl   typesr    r   ImportErrorr   r   r:   r=   rk   rV   rL   r<   	frozensetintr   rm   path_importer_cacheenvironr;   r   tupler   
ModuleTypeFunctionTypeBuiltinFunctionTyper*   r>   rM   rW   ri   ro   ru   r   rO   valuesrr   r   r	   r   <module>r      s     				 



 LLLII   III gc=**55
 
	c4sIs;<<C % %ck33JZ $ % % % % %	* * * UIudD#tdE4u(%1CU15:    D' ' ' 'T  K K K K\( ( ( 

 
 
  
78S 
 4""$$%%  CHSMMMM s    %%