
    uYfv+                     \   d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlZd dlmZmZ d dlmZmZmZmZmZmZmZmZ  G d d      Z edd	
      Z ed      Z  G d d	ee!ee          Z" ed      Z# G d de	e#         Z$ G d de$eeeeeef      e"eeeeeef            Z%y)    N)abstractmethod)AnyDictGenericIteratorListOptionalSequenceSupportsIndexTypeVarUnionoverload)CompilerFlagsinfer_flags)_UNSETUNSET	BaseInstrInstrLabel	SetLinenoTryBeginTryEndc                       e Zd ZddZddZdedefdZede	fd       Z
e
j                  de	ddfd	       Z
dd
dee   ddfdZedddedefd       Zy)BaseBytecodereturnNc                     d| _         d| _        d| _        d| _        d| _        | j                  | _        d| _        t        | _        g | _	        g | _
        t        d      | _        y )Nr      z<module>z<string>)argcountposonlyargcountkwonlyargcountfirst_linenonamequalnamefilenamer   	docstringcellvarsfreevarsr   _flagsselfs    Q/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/bytecode/bytecode.py__init__zBaseBytecode.__init__"   s]     			"38 $&#%%21%5    c                    |j                   | _         |j                  | _        |j                  | _        |j                  | _        |j                  | _        |j
                  | _        |j                  | _        |j                  | _        |j                  | _        t        |j                        | _
        t        |j                        | _        y N)r   r   r    flagsr!   r"   r#   r$   r%   listr&   r'   )r*   bytecodes     r+   _copy_attr_fromzBaseBytecode._copy_attr_from4   s     ))'77&55^^
$11MM	 )) ))!++X../X../r-   otherc                    t        |       t        |      ury| j                  |j                  k7  ry| j                  |j                  k7  ry| j                  |j                  k7  ry| j                  |j                  k7  ry| j
                  |j
                  k7  ry| j                  |j                  k7  ry| j                  |j                  k7  ry| j                  |j                  k7  ry| j                  |j                  k7  ry| j                  |j                  k7  ry| j                  |j                  k7  ry| j                         |j                         k7  ryy)NFT)typer   r   r    r0   r!   r$   r"   r#   r%   r&   r'   compute_stacksizer*   r4   s     r+   __eq__zBaseBytecode.__eq__A   s   :T%[(==ENN*5#8#88%"6"66::$ 2 22==ENN*99

"==ENN*>>U__,==ENN*==ENN*!!#u'>'>'@@r-   c                     | j                   S r/   )r(   r)   s    r+   r0   zBaseBytecode.flags`   s    {{r-   valuec                 H    t        |t              st        |      }|| _        y r/   )
isinstancer   r(   )r*   r;   s     r+   r0   zBaseBytecode.flagsd   s    %/!%(Er-   )is_asyncr>   c                &    t        | |      | _        y r/   )r   r0   )r*   r>   s     r+   update_flagszBaseBytecode.update_flagsj   s     x0
r-   Tcheck_pre_and_postrB   c                    t         r/   NotImplementedError)r*   rB   s     r+   r7   zBaseBytecode.compute_stacksizen   s    !!r-   r   N)r2   r   r   N)__name__
__module____qualname__r,   r3   r   boolr9   propertyr   r0   setterr	   r@   r   intr7    r-   r+   r   r   !   s    6$0C D > }   \\= T  
 :> 1 1$ 1 >B "t "s " "r-   r   T_BaseBytecodeList)boundUc                        e Zd ZdZededefd       Zedede	defd       Z fdZdedef fdZ
dd	Zdee   f fd
Zd Z xZS )rP   z8List subclass providing type stable slicing and copying.indexr   c                      y r/   rN   r*   rT   s     r+   __getitem__z_BaseBytecodeList.__getitem__z       r-   r*   c                      y r/   rN   rV   s     r+   rW   z_BaseBytecodeList.__getitem__~   rX   r-   c                     t         |   |      }t        |t              r" t	        |       |      }|j                  |        |S r/   )superrW   r=   slicer6   r3   )r*   rT   r;   	__class__s      r+   rW   z_BaseBytecodeList.__getitem__   s?    #E*eU#DJu%E!!$'r-   c                 d     t        |       t        | 	               }|j                  |        |S r/   )r6   r[   copyr3   )r*   newr]   s     r+   r_   z_BaseBytecodeList.copy   s,    d4j(D!
r-   c                 h   g }d}| j                   }t        |       D ]  \  }}t        |t              r|j                  }|j                  |       4t        |t              sE|||_        O|j                  t        u r||_        i|j                  v|j                  } t        |      D ]  }| |=  y)zFCheck that all the element of the list are valid and remove SetLineno.N)	r!   	enumerater=   r   linenoappendr   r   reversed)r*   
lineno_pos
set_linenocurrent_linenoposinstris          r+   legalizez_BaseBytecodeList.legalize   s    

**#D/ 	.JC%+"\\
!!#&eY/%)&-)!&	. *% 	AQ	r-   c              #   b   K   t         |          }|D ]  }| j                  |       |  y wr/   )r[   __iter___check_instr)r*   instructionsrj   r]   s      r+   rn   z_BaseBytecodeList.__iter__   s6     w')! 	Ee$K	s   ,/c                     t               r/   rD   r*   rj   s     r+   ro   z_BaseBytecodeList._check_instr   s    !##r-   rF   )rG   rH   rI   __doc__r   r   rR   rW   rO   r\   r_   rl   r   rn   ro   __classcell__r]   s   @r+   rP   rP   w   s    B 1   ! E a  1  0(1+ $r-   Vc                   (    e Zd ZdefdZdedefdZy)
_InstrListr   c                    g }i }g }i }g }d}t        |       D ]k  \  }}t        |t              r|j                  d|z         |||<   1t        |t              ro|j                  |t        |             t        |j                  t              sJ |j                  |j                  t        |      f       |j                  |       t        |t              r!|j                  d||j                     f       t        |t              ret        |j                  t              rK|j                  }	t        j                  |j                  d|j                        }|j                  |	|f       |j                  |       |dz  }n |D ]  \  }	}||	   |_         |D ]5  \  }	}||   }t        |t              sJ d||   ||	   |j                   f||<   7 |S )Nr   zlabel_instr%sr   )locationr   r   )rb   r=   r   rd   r   
setdefaultlentargetr   entryr   arg	_bytecodeConcreteInstrr"   rz   
push_lasti)
r*   rp   labelsjumps
try_begins	try_jumpsoffsetrT   rj   target_labels
             r+   _flatz_InstrList._flat   s   *,
	%dO 	LE5%'##Oe$;< &uE8,%%eS_=!%,,666  %,,L0A!BC##E*E6*##Xz%++/F$GHeU+
599e0L#(99L%33

AE LL,!67##E*!'	* $) 	-L%|,EI	- $- 	L% 'EeX...5!|$  	#L	 r-   r4   c                 z    t        |t              st        |      }| j                         |j                         k(  S r/   )r=   rx   r   r8   s     r+   r9   z_InstrList.__eq__   s-    %,u%Ezz|u{{},,r-   N)rG   rH   rI   r   r   r   rJ   r9   rN   r-   r+   rx   rx      s"    +t +Z-C -D -r-   rx   c                   D    e Zd Z	 ddeeeeeee	f      ddfdZ
deeeeeee	f      f fdZdeddfdZdeddf fd	Ze	 	 ddej&                  dededd fd       Zd
ddedefdZ	 	 dd
d
ddee   dee   dededej&                  f
dZ	 	 ddee   deddfdZ xZS )Bytecoderp   r   Nc                     t         j                  |        g | _        |D ]  }| j                  |        | j	                  |       y r/   )r   r,   argnamesro   extend)r*   rp   rj   s      r+   r,   zBytecode.__init__   sB     	d##%! 	%Ee$	%L!r-   c              #      K   t         |          }d}|D ]I  }| j                  |       t        |t              r|rt        d      d}nt        |t              rd}| K y w)NFz.TryBegin pseudo instructions cannot be nested.T)r[   rn   ro   r=   r   RuntimeErrorr   )r*   rp   seen_try_beginrj   r]   s       r+   rn   zBytecode.__iter__   sh     w')! 	Ee$%*!&'WXX!%E6*!&K	s   A A#rj   c                     t        |t        t        t        t        t
        f      s!t        dt        |      j                  z        y )NzPBytecode must only contain Label, SetLineno, and Instr objects, but %s was found)	r=   r   r   r   r   r   
ValueErrorr6   rG   rr   s     r+   ro   zBytecode._check_instr  sA    %%E8V!LM#%)%[%9%9:  Nr-   r2   c                 h    t         |   |       t        |t              r|j                  | _        y y r/   )r[   r3   r=   r   r   )r*   r2   r]   s     r+   r3   zBytecode._copy_attr_from  s,    )h)$--DM *r-   Tcodeprune_caches#conserve_exception_block_stackdepthc                 f    t         j                  j                  |       }|j                  ||      S )N)r   r   )r   ConcreteBytecode	from_codeto_bytecode)r   r   r   concretes       r+   r   zBytecode.from_code  s8     --77=##%0S $ 
 	
r-   rA   rB   c                d    t         j                  j                  |       }|j                  |      S )NrA   )r   ControlFlowGraphfrom_bytecoder7   )r*   rB   cfgs      r+   r7   zBytecode.compute_stacksize   s-    ((66t<$$8J$KKr-   rB   compute_exception_stack_depthscompute_jumps_passes	stacksizer   c                   |t         j                  dk\  rF|rDt        j                  j	                  |       }|j                  ||      }|j                         } d}| j                  ||      }|j                  ||      S )N)      r   Fr   r   )r   r   )	sysversion_infor   r   r   r7   r   to_concrete_bytecodeto_code)r*   r   r   rB   r   r   bcs          r+   r   zBytecode.to_code$  s     ',J,,::4@C--#5/M . I ??$D-2*&&!5+I ' 
 zz+I  
 	
r-   z_bytecode.ConcreteBytecodec                 R    t        j                  |       }|j                  ||      S )Nr   )r   _ConvertBytecodeToConcreter   )r*   r   r   	converters       r+   r   zBytecode.to_concrete_bytecodeA  s2    
 88>	--!5+I . 
 	
r-   )rN   )TF)NN)NT)rG   rH   rI   r
   r   r   r   r   r   r   r,   r   rn   r   ro   r   r3   staticmethodtypesCodeTyperJ   r   rM   r7   r	   r   r   rt   ru   s   @r+   r   r      s`    TV"uUE8VY%NOP" 
"(5x)R#ST # $ . . .
  "49	
nn	
	
 .2	
 
		
 	
 ?C Lt Ls L /3#'

 $(/3
&sm
 C=

 !
 )-
 

> /3/3	
&sm	
 )-	
 
&		
r-   r   )&r   r   abcr   typingr   r   r   r   r   r	   r
   r   r   r   r   r2   r   bytecode.flagsr   r   bytecode.instrr   r   r   r   r   r   r   r   r   rO   rR   r1   rP   rv   rx   r   rN   r-   r+   <module>r      s    
       5	 	 	O" O"d C*+CL8$dGAJ 8$v CL4-a 4-n^
uUE8VY>?@eE5(FIEFG^
r-   