
    daf6                        d dl Z d dlZd dlZd dlZdZej                  j                  e      Zej                  j                  ej                  j                  ej                  j                  e                  Z
ej                  j                  e
dd      Zh dZg dZg dZd Zd	 Zd
 Z G d d      Ze j(                  d        Zde dZdZd Zd Zd Zd ZddZddZedk(  r e        yy)    Nz&Tools/build/generate_global_objects.pyIncludeinternal>   ATTRNAMEACTIONDUNDERRDUNDERSPECIAL)`defaultignoreWarningMessage_showwarnmsg_warn_unawaited_coroutinedefaultactionfiltersonceregistry	__bytes____reversed__
__module____name____qualname____doc____annotations____abs____add__	__aiter____and__	__anext__	__await____bool____call____contains____del____delattr__
__delete____delitem____eq__	__float____floordiv____ge____get____getattr____getattribute____getitem____gt____hash____iadd____iand____ifloordiv____ilshift____imatmul____imod____imul__	__index____init____int__
__invert____ior____ipow____irshift____isub____iter____itruediv____ixor____le____len__
__lshift____lt__
__matmul____mod____mul____ne____neg____new____next____or____pos____pow____radd____rand____repr____rfloordiv____rlshift____rmatmul____rmod____rmul____ror____rpow____rrshift__
__rshift____rsub____rtruediv____rxor____set____setattr____setitem____str____sub____truediv____xor__
__divmod____rdivmod__
__buffer____release_buffer__)z'(PyObject *)&_Py_SINGLETON(bytes_empty)z'(PyObject *)&_Py_SINGLETON(tuple_empty)z2(PyObject *)&_Py_SINGLETON(hamt_bitmap_node_empty)z5(PyObject *)&_Py_INTERP_SINGLETON(interp, hamt_empty)z1(PyObject *)&_Py_SINGLETON(context_token_missing)c               #     K   dD ]  } t         j                  j                  t        |       }t        j                  |      D ]A  \  }}}|D ]6  } | j                  d      st         j                  j                  ||        8 C  y w)N)ModulesObjectsParserPCProgramsPython)z.cz.h)ospathjoinROOTwalkendswith)namerootdirname_filess        :/root/Python-3.12.4/Tools/build/generate_global_objects.py
iter_filesr~      sz     L 2ww||D$'!# 	2GQ 2}}\2ggll7D112	22s   BBc            	   #     K   t        j                  d      } t        j                  d      }t               D ]  }	 t        |d      }|5  t        |d      D ]h  \  }}| j                  |      D ]  }|j                         \  }|d |||f  |j                  |      D ]  }|j                         \  }}	||	|||f   j 	 d d d         y # t        $ r Y w xY w# 1 sw Y   xY ww)Nz\b_Py_ID\((\w+)\)z#\b_Py_DECLARE_STR\((\w+), "(.*?)"\)utf-8encoding   )recompiler~   openFileNotFoundError	enumeratefinditergroups)
id_regex	str_regexfilenameinfilelnolinem
identifiervarnamestrings
             r}   iter_global_stringsr      s    zz./H

ABIL ?	(W5F  	?&vq1 ?	T!**40 @A"#((*KJ$dHc4??@ #++D1 ?A&'hhjOGV!68S$>>?	?	? 	?? ! 			? 	?sA   8C)CC)
A8CC)	CC)CC)C&	"C)c              #   L   K   | D ]  }|j                         |k(  r y |  y wN)rstrip)linesmarkerr   s      r}   iter_to_markerr      s+      ;;=F"
s   "$c                   h    e Zd Zd Zej
                  d        Zd Zej
                  dddd       Zy)Printerc                 0    d| _         || _        dg| _        y )Nr   F)levelfilecontinuation)selfr   s     r}   r9   zPrinter.__init__   s    
	"G    c              #   ~   K   | j                   }	 | xj                   dz  c_         d  || _         y # || _         w xY wwNr   )r   )r   
save_levels     r}   indentzPrinter.indent   s2     ZZ
	$JJ!OJ#DJDJs   =1 =	:=c                     d}| j                   d   r|rd| nd| }| j                  j                  d| j                  z  ||f       y )N
z \\z    )r   r   
writelinesr   )r   argeols      r}   writezPrinter.write   sL    R !$Cu+Bse*C		fTZZ/c:;r   Nr   c             #   :  K   || j                   d   }| j                   j                  |       | j                  |dz          | j                         5  d  d d d        | j                   j	                          | j                  d|z          y # 1 sw Y   8xY ww)Nr   z {})r   appendr   r   pop)r   prefixsuffixr   s       r}   blockzPrinter.block   s     ,,R0L  .

6D=![[] 		

3< 	 	s   ABB7BBB) )	r   r   r   r9   
contextlibcontextmanagerr   r   r    r   r}   r   r      sG    $
 $ $< 	!t 	! 	!r   r   c              #      K   t        j                         }| |j                         }||k7  r)t        | dd      5 }|j	                  |       ddd       yt        d|         y# 1 sw Y   yxY ww)z5Like open() but only write to the file if it changed.wr   r   Nz# not changed: )ioStringIOgetvaluer   r   print)r   origoutfiletexts       r}   open_for_changesr      sq      kkmG
MDt|(C'2 	 gMM$	  	  	z*+	  	 s   <A4A(A4(A1-A4z&/* The following is auto-generated by z. */z/* End auto-generated code */c                    t         j                  j                  t        d      }t	        |      5 }|j                         }d d d        t        j                         j                               }dj                  t        |t                    }t        |t              D ]  } dj                  |      }t        ||      5 }	t        |	      }
|
j                  |       |
j                  t               |
j                  dd      5  |
j                  dd      5  t!        |j#                         d       D ]  \  }}|
j                  d	| d
| d        	 d d d        |	j                  d       |
j                  dd      5  t!        |       D ].  }|j%                         sJ |       |
j                  d| d       0 	 d d d        |
j                  dd      5  |
j                  d       |
j                  d       d d d        |
j                  dd      5  |
j                  d       |
j                  d       d d d        d d d        |
j                  t               |
j                  |       d d d        y # 1 sw Y   9xY w# 1 sw Y   1xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   rxY w# 1 sw Y   vxY w# 1 sw Y   y xY w)Nzpycore_global_strings.hr   zstruct _Py_global_strings;structz
 literals;c                     | d   S r   r   xs    r}   <lambda>z)generate_global_strings.<locals>.<lambda>   s
    1Q4 r   keyzSTRUCT_FOR_STR(, "z")z identifiers;zSTRUCT_FOR_ID()z ascii[128];zPyASCIIObject _ascii;zuint8_t _data[2];z latin1[128];zPyCompactUnicodeObject _latin1;)rr   rs   rt   INTERNALr   readiterr   
splitlinesr   STARTENDr   r   r   r   sorteditemsisidentifier)identifiersstringsr   r   r   r   beforer{   afterr   printerliteralrx   s                r}   generate_global_stringsr      sr   ww||H&?@H 
h 6{{}))+,EYY~eU34FE3' IIeE 
(D	) W'"fe]]6< 	3x6 J%+GMMO%P JMGTMMOD6WIR"HIJJ MM$x9 <";/ <D,,.44.MMN4&":;<< x8 356123 x9 3?@123	3 	ce)  J J< <3 33 3	3 	3	 s   I8AKJ6=J+J6=J?J6#J<J6#J*9J6.K8JJ
J6JJ6J'#J6*J3/J66J?	;KKc                 `
   d }d }t        t        j                  j                  t        d            5 }|D ]_  }|j                  d      rt        |j                         d         }1|j                  d      sCt        |j                         d         } n t        	 d d d        |r|sJ t        j                  j                  t        d      }t        |      5 }|j                         }d d d        t        j                         j                               }dj                  t        |t                    }	t        |t              D ]  }
 dj                  |      }t!        ||      5 }g }t#        |      }|j%                  |	       |j%                  t               |j'                  dd	      5  t)        | |      D ],  }|j%                  d
| d       |j+                  d| d       . 	 d d d        |j%                  d       |j'                  dd	      5  t)        d      D ],  }|j%                  d| d       |j+                  d| d       . 	 d d d        |j%                  d       |j'                  dd	      5  t-        |j/                         d       D ]2  \  }}|j%                  d| d| d       |j+                  d| d       4 	 d d d        |j%                  d       |j'                  dd	      5  t-        |       D ]C  }|j1                         sJ |       |j%                  d| d       |j+                  d| d       E 	 d d d        |j%                  d       |j'                  dd	      5  t)        d      D ]-  }|j%                  d |d!d       |j+                  d"| d       / 	 d d d        |j%                  d       |j'                  d#d	      5  t)        dd      D ]  }d$g}t3        |      j5                  d%      D ]  }|j+                  d&|d!        |j+                  d$       |j%                  d'|d!d(dj                  |       d       |j+                  d)| d*        	 d d d        |j%                  t               |j%                  |       |cd d d        S # 1 sw Y   !xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   MxY w# 1 sw Y   xY w# 1 sw Y   y xY w)+Nzpycore_global_objects.hz#define _PY_NSMALLPOSINTSr   z#define _PY_NSMALLNEGINTSzpycore_runtime_init_generated.hr   z#define _Py_small_ints_INITTr   z_PyLong_DIGIT_INIT(z),z;(PyObject *)&_Py_SINGLETON(small_ints)[_PY_NSMALLNEGINTS + ]r   z!#define _Py_bytes_characters_INIT   z_PyBytes_CHAR_INIT(z-(PyObject *)&_Py_SINGLETON(bytes_characters)[z#define _Py_str_literals_INITc                     | d   S r   r   r   s    r}   r   z'generate_runtime_init.<locals>.<lambda>8  s
    qt r   r   z	INIT_STR(r   z"),z(PyObject *)&_Py_STR(r   z #define _Py_str_identifiers_INITzINIT_ID(z(PyObject *)&_Py_ID(z#define _Py_str_ascii_INIT   z_PyASCIIObject_INIT("\x02xz*(PyObject *)&_Py_SINGLETON(strings).ascii[z#define _Py_str_latin1_INIT"r   z\xz_PyUnicode_LATIN1_INIT("\xz", z+(PyObject *)&_Py_SINGLETON(strings).latin1[z - 128])r   rr   rs   rt   r   
startswithintsplitNotImplementedErrorr   r   r   r   r   r   r   r   r   r   r   ranger   r   r   r   chrencode)r   r   nsmallposintsnsmallnegintsr   r   r   r   r   r   r{   r   r   immortal_objectsr   ir   rx   utf8cs                       r}   generate_runtime_initr     s   MM	bggll8%>?	@ &F 	&D:; #DJJL$4 5!<= #DJJL$4 5	& &% & ]** ww||H&GHH 
h 6{{}))+,EYY~eU34FE3' IIeE 
(D	) ) W'"fe]]8t]L 	lM>=9 l 3A3b9: ''*efgehhi(jkl	l 	b]]>T]R 	^3Z ^ 3A3b9: ''*WXYWZZ[(\]^	^ 	b]]:]N 	I!'^!L I	$s7)3?@ ''*?vQ(GHI	I 	b]]=D]Q 	H{+ H((*0D0*b12 ''*>tfA(FGH	H
 	b]]7d]K 	[3Z [ 83sCD ''*TUVTWWX(YZ[	[ 	b]]8t]L 	b3_ buQw/ /AKK#aW./C  ;Ac7#bggdm_TVWX ''*UVWUXX_(`ab	b 	ceS)  ) 1& & 	l 	l
	^ 	^
	I 	I
	H 	H	[ 	[
	b 	b?)  ) s   AR=8%R=S
,AT$3=S1,T$;S$,T$AS1,T$AS>,T$<T ,T$,BT/T$=S
SS!	T$$S.	)T$1S;	6T$>T	T$T	T$T!	T$$T-c                    t         j                  j                  t        d      }t	        |      5 }|j                         }d d d        t        j                         j                               }dj                  t        |t                    }t        |t              D ]  } dj                  |      }t        ||      5 }	t        |	      }
|
j                  |       |
j                  t               |
j                  d       |
j                  d      5  |
j                  d       t!        |       D ]9  }|
j                  d| d       |
j                  d       |
j                  d	       ; 	 d d d        |
j                  t               |
j                  |       d d d        y # 1 sw Y   gxY w# 1 sw Y   ExY w# 1 sw Y   y xY w)
Nz pycore_unicodeobject_generated.hr   static inline voidz8_PyUnicode_InitStaticStrings(PyInterpreterState *interp)zPyObject *string;zstring = &_Py_ID();z/assert(_PyUnicode_CheckConsistency(string, 1));z*_PyUnicode_InternInPlace(interp, &string);)rr   rs   rt   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   s               r}   #generate_static_strings_initializerr   T  s   ww||H&HIH 
h 6{{}))+,EYY~eU34FE3' IIeE 
(D	) W'"fe*+]]UV 	MMM-/K( M  1!B78 OQ JLM	M 	ce  	M 	M s1   F&AF?AF3/.F?&F03F<	8F??Gc                    t         j                  j                  t        d      }t	        |      5 }|j                         }d d d        t        j                         j                               }dj                  t        |t                    }t        |t              D ]  } dj                  |      }t        ||      5 }t        |      }	|	j                  |       |	j                  t               |	j                  d       |	j                  d       |	j                  d      5  |	j                  d       |	j                  d       | D ]  }
|	j                  d|
 d	        |	j                  d
       t         D ]  }
|	j                  d|
 d	        	 d d d        |	j                  d       |	j                  t               |	j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   VxY w# 1 sw Y   y xY w)Nz&pycore_global_objects_fini_generated.hr   z#ifdef Py_DEBUGr   z8_PyStaticObjects_CheckRefcnt(PyInterpreterState *interp)z/* generated runtime-global */z(// (see pycore_runtime_init_generated.h)z_PyStaticObject_CheckRefcnt(r   z/* non-generated */z#endif  // Py_DEBUG)rr   rs   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   NON_GENERATED_IMMORTAL_OBJECTS)generated_immortal_objectsr   r   r   r   r   r{   r   r   r   refs              r}   !generate_global_object_finalizersr   t  s   ww||H&NOH 
h 6{{}))+,EYY~eU34FE3' IIeE 
(D	) W'"fe'(*+]]JL 	FMM:;MMDE1 F <SEDEFMM/05 F <SEDEF	F 	+,ce#  	F 	F s1   GA%G8&A0G,?G8G),G5	1G88Hc            
          t        t              } i }t               D ]K  ^}}}||t        vs| j	                  |       #||vr|||<   -|||   k7  s6t        d|d|d||          | |fS )Nzstring mismatch for z (z != )setIDENTIFIERSr   IGNOREDadd
ValueError)r   r   rx   r   r{   s        r}   get_identifiers_and_stringsr    s    k"KG/1 cfq>7"%W$"&( #7xr&4PWX\P]O`!abbc r   c                  |    t               \  } }t        | |       t        | |      }t        | |       t	        |       y r   )r  r   r   r   r   )r   r   r   s      r}   mainr    s9    68KK1!6{G!L'W=%&@Ar   __main__)returnztuple[set[str], dict[str, str]])r	  N)r   r   os.pathrr   r   SCRIPT_NAMErs   abspath__file__rz   ru   rt   r   r  r  r   r~   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   r}   <module>r     s    	  	677??8$	wwrwwrwwx'@AB77<<i4jX" 2?& !  !F 	, 	, 1TB%!HE P@D $B zF r   