
    h'                         S SK r S SKJs  Jr  S SKJr  S SKJr  S r	S r
S rS rS rS	 rS
 rSrS rS rS r\S:X  a  \" 5         gg)    N)data_filenameparse_registryc                     [        S5      n[        U SU  S35      n[        R                  " [        USS95      nU S:X  a  US   S   S	   nU$ US   U    nU$ )
Nz*cldr-json/cldr-json/cldr-core/supplemental/z.jsonutf-8encodingaliasessupplementalmetadataalias)r   jsonloadopen)datanamecldr_supp_pathfilenamefulldatadatas        N/home/james-whalen/.local/lib/python3.13/site-packages/langcodes/build_data.pyread_cldr_supplementalr      ss    "#OPN/q
%@AHyyh9:H9'
3G< K '1K    c                  f    0 n [        5        H   nUS   S:X  d  M  SU;   d  M  US   XS   '   M"     U $ )NTypelanguagezSuppress-ScriptSubtagr   scriptsentrys     r   #read_iana_registry_suppress_scriptsr!      sA    G!=J&+<+E',->'?G(O$ " Nr   c                  z    [        5       n [        5        H"  nUS   S:X  d  M  U R                  US   5        M$     U $ )Nr   scriptr   )setr   addr   s     r   read_iana_registry_scriptsr&      s9    eG!=H$KKh( " Nr   c                  f    0 n [        5        H   nUS   S:X  d  M  SU;   d  M  US   XS   '   M"     U $ )Nr   r   Macrolanguager   r   )macrosr    s     r   !read_iana_registry_macrolanguagesr*   "   s?    F!=J&?e+C&+O&<F?# " Mr   c                      0 n [        5        HF  nUS   S:X  a  SU;   a  US   XS   '   M  SU;   d  M&  SU;   d  M.  US   XS   R                  5       '   MH     U $ )Nr   r   zPreferred-Valuer   Tag)r   lower)replacementsr    s     r   read_iana_registry_replacementsr/   *   sl    L!=J&+<+E,12C,DLx)e^ 1U :167H1ILu++-. " r   c                     [        U S3U S9  [        U5       H  nX#   n[        SU< SU< S3U S9  M     [        SU S9  g )N = {file    z: ,})printsorted)outfilenamedkeyvalues        r   write_python_dictr>   6   sL    	TF%.w'aySG2eYa(w7  
#Gr   c                     [        U S3U S9  [        [        U5      5       H  n[        SU< S3U S9  M     [        SU S9  g )Nr1   r2   r4   r5   r6   )r7   r8   r$   )r9   r:   sr<   s       r   write_python_setrA   >   s@    	TF%.w'c!f~SG1oG, 	#Gr   z*# This file is generated by build_data.py.c            	         / n S H  n[        SU S35      n[        R                  " [        U5      R	                  5       5      nUR                  S5      nU H  nUR                  R                  5       R                  5        HR  nSU;   a8  US   S:X  d   eUS S nUS   nUS   n	U S	U S
U	 S3n
U R                  U
5        MA  U R                  U5        MT     M     M     SR                  U 5      nSU S3$ )N)r   regionr#   variantzcldr/common/validity/z.xmlz./idValidity/id~[-]|z^(z)$)r   ET
fromstringr   readfindalltextstripsplitappendjoin)validity_optionscodetypevalidity_pathrootmatchesmatchitemprefixrange_start	range_endoptionoptionss               r   read_validity_regexrb   H   s   ?%(=hZt&LM}}T-05578,,01E

((*002$;8s?*?!#2YF"&r(K $RI &xqQykCF$++F3$++D1 3 	 @ hh'(Gyr   c                  \   [        S5      n [        R                  " [        U 5      R	                  5       5      nUR                  S5      n0 nU H  nUR                  nUS   R                  S5      S-   nUS:  d  M.  UR                  S5      S:X  a  US   US	   4/nOUS   US	   4US	   US   4/nU Hq  u  pUR                  U0 5      n
[        US
   5      X'   US:X  d  U	S:X  d  M5  US:X  a  SnU	S:X  a  Sn	X:w  d  ML  UR                  U0 5      n
[        US
   5      S-   X'   Ms     M     U$ )Nz)cldr/common/supplemental/languageInfo.xmlzE./languageMatching/languageMatches[@type="written_new"]/languageMatchdesired_      onewaytrue	supporteddistanceshsr)r   rM   rN   r   rO   rP   attribcountget
setdefaultint)language_info_pathrY   rZ   tag_distancesr[   attribsn_partspairsrd   rj   desired_distances              r   read_language_distancesry   ]   se   &'RS==016689DllOG M,,)$**3/!3Q;{{8$.!),gk.BCD Y')=>[)79+=> ).$#0#;#;GR#H .1'*2E.F + d?i4&7$"& D($(	++8+C+CGR+P(69'*:M6NQR6R(3/ ). H r   c            
      R   [        5       n [        5       n[        5       n[        5       n[	        5       n[        S5      n[        S5      n0 nSSSSSSS	.n0 n	0 n
S
 H  nX[   nUS:X  a  X7U'   SX{   S'   O0 X{'   UR                  5        H  u  pUR                  5       nUS   R                  5       S   nUS   S:X  a  XU'   M:  US:X  a  SnOUS:X  a  SnOUS:X  a  SnOUS:X  a  SnXU   U'   US:X  d  Ml  US   S:X  a'  X;   a  [        SR                  UUX   S95      eXU'   M  US   S:X  d  M  XU'   M     M     [        5       n[        SSS S!9 n[        [        US"9  [        S#US"9  [        US$U 5        [        US%US   5        [        US&U5        [        US'U	5        [        US(US)   5        [!        US*U5        [        US+US,   5        [        US-U5        [        US.U
5        [        US/U5        [        US0U5        [        S1U< S23US"9  S S S 5        g ! , (       d  f       g = f)3Nr   likelySubtagstglindhebyidjavhbs)tliniwjijwrl   )languageAliasscriptAliasterritoryAliasr   undrY   _replacementr   _reasonmacrolanguagenornomolmotwitwbihbhoverlongzP{code!r} is an alpha3 for {replacement!r}, which already has an alpha3: {orig!r})codereplacementorigbibliographiczdata_dicts.pywr   r	   r2   z
import re
DEFAULT_SCRIPTSLANGUAGE_REPLACEMENTSLANGUAGE_ALPHA3LANGUAGE_ALPHA3_BIBLIOGRAPHICSCRIPT_REPLACEMENTSr   ALL_SCRIPTSTERRITORY_REPLACEMENTSr   MACROLANGUAGESNORMALIZED_MACROLANGUAGESLIKELY_SUBTAGSLANGUAGE_DISTANCESzVALIDITY = re.compile())r!   r&   r*   r/   ry   r   itemsr-   rS   
ValueErrorformatrb   r   r7   GENERATED_HEADERr>   rA   )lang_scriptsall_scriptsmacrolanguagesiana_replacementslanguage_distances
alias_datalikely_subtagsr.   alpha3_mappingalpha3_biblionorm_macrolanguages
alias_typer   r   r=   r   validity_regexr9   s                     r   
build_datar      s   68L,.K68N7902'	2J+O<NL N MH
(('8$/4L$V,')L$"==?KD ::<D  /557:KY?2,7D) 5="&KU]"&KU]"&KU]"&K1<Z(.0Y':5&8",!CCI6)-0;)7)D DJ D"#  7;{3y)_<59k2W + Ij )*N 
osW	5W-m'*'#4lC,l?.K	
 	'#4nE'#BMR'#8,}:UV-=-|<L/M	
 	'#3^D'#>@ST'#3^D'#79KL&~&8:I% 
6	5	5s   C H
H&__main__)r   xml.etree.ElementTreeetreeElementTreerM   langcodes.utilr   langcodes.registry_parserr   r   r!   r&   r*   r/   r>   rA   r   rb   ry   r   __name__ r   r   <module>r      sg     " " ( 4	 @ *+\cJL zL r   