§
    'ê[fV!  ã                   óN   — d dl Z d dlmZ d dlmZ d dlmZ  G d„ de¦  «        ZdS )é    N)Úwarn)ÚElementTree)ÚCorpusReaderc                   óX   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zˆ xZS )ÚBCP47CorpusReaderu~  
    Parse BCP-47 composite language tags

    Supports all the main subtags, and the 'u-sd' extension:

    >>> from nltk.corpus import bcp47
    >>> bcp47.name('oc-gascon-u-sd-fr64')
    'Occitan (post 1500): Gascon: PyrÃ©nÃ©es-Atlantiques'

    Can load a conversion table to Wikidata Q-codes:
    >>> bcp47.load_wiki_q()
    >>> bcp47.wiki_q['en-GI-spanglis']
    'Q79388'

    c                 ó2  •— t          ¦   «                              ||¦  «         i | _        |                      d¦  «        5 }|                      |                     ¦   «                              d¦  «        ¦  «        | _        ddd¦  «         n# 1 swxY w Y   |                      d¦  «        5 }|                      t          j
        |¦  «                             d¦  «        ¦  «        | _        ddd¦  «         n# 1 swxY w Y   |                      ¦   «          dS )zRead the BCP-47 databasez!iana/language-subtag-registry.txtz%%
Nzcldr/common-subdivisions-en.xmlz+localeDisplayNames/subdivisions/subdivision)ÚsuperÚ__init__ÚlangcodeÚopenÚ	data_dictÚreadÚsplitÚdbÚsubdiv_dictÚetÚparseÚiterfindÚsubdivÚ
morphology)ÚselfÚrootÚfileidsÚfpÚ	__class__s       €úL/var/www/piapp/venv/lib/python3.11/site-packages/nltk/corpus/reader/bcp47.pyr
   zBCP47CorpusReader.__init__    s^  ø€ å‰Œ×Ò˜˜wÑ'Ô'Ð'ØˆŒØ�YŠYÐ:Ñ;Ô;ð 	>¸rØ—n’n R§W¢W¡Y¤Y§_¢_°VÑ%<Ô%<Ñ=Ô=ˆDŒGð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>à�YŠYÐ8Ñ9Ô9ð 	¸RØ×*Ò*Ý”˜‘”×%Ò%Ð&SÑTÔTñô ˆDŒKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	�ŠÑÔÐÐÐs&   Á A BÂBÂBÂ,A C8Ã8C<Ã?C<c                 ó  — |                       d¦  «        5 }|                      |                     ¦   «                              ¦   «                              d¦  «        dd…         ¦  «        | _        ddd¦  «         dS # 1 swxY w Y   dS )z:Load conversion table to Wikidata Q-codes (only if needed)z-cldr/tools-cldr-rdf-external-entityToCode.tsvÚ
é   N)r   Ú	wiki_dictr   Ústripr   Úwiki_q)r   r   s     r   Úload_wiki_qzBCP47CorpusReader.load_wiki_q,   sÅ   € à�YŠYÐFÑGÔGð 	LÈ2ØŸ.š.¨¯ª©¬¯ªÑ):Ô):×)@Ò)@ÀÑ)FÔ)FÀqÀrÀrÔ)JÑKÔKˆDŒKð	Lð 	Lð 	Lñ 	Lô 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Løøøð 	Lð 	Lð 	Lð 	Lð 	Lð 	Ls   –AA=Á=BÂBc                 ó.   — d„ d„ |D ¦   «         D ¦   «         S )z7Convert Wikidata list of Q-codes to a BCP-47 dictionaryc                 ó^   — i | ]*}|d          |d                               d¦  «        d         “Œ+S )r   r   ú/éÿÿÿÿ©r   )Ú.0Úpairs     r   ú
<dictcomp>z/BCP47CorpusReader.wiki_dict.<locals>.<dictcomp>3   sC   € ð 
ð 
ð 
àð �ŒG�T˜!”W—]’] 3Ñ'Ô'¨Ô+ð
ð 
ð 
ó    c                 ó\   — g | ])}|                      ¦   «                              d ¦  «        ‘Œ*S )ú	)r!   r   )r)   Úlines     r   ú
<listcomp>z/BCP47CorpusReader.wiki_dict.<locals>.<listcomp>5   s.   € ÐDÐDÐD°d˜Ÿš™œ×+Ò+¨DÑ1Ô1ÐDÐDÐDr,   © )r   Úliness     r   r    zBCP47CorpusReader.wiki_dict1   s1   € ð
ð 
àDÐD¸eÐDÑDÔDð
ñ 
ô 
ð 	
r,   c                 ó   — d„ |D ¦   «         S )z2Convert the CLDR subdivisions list to a dictionaryc                 ó4   — i | ]}|j         d          |j        “ŒS )Útype)ÚattribÚtext)r)   Úsubs     r   r+   z1BCP47CorpusReader.subdiv_dict.<locals>.<dictcomp>:   s#   € Ð@Ð@Ð@°�”
˜6Ô" C¤HÐ@Ð@Ð@r,   r1   )r   Úsubdivss     r   r   zBCP47CorpusReader.subdiv_dict8   s   € à@Ð@¸Ð@Ñ@Ô@Ð@r,   c           
      óà  — t           j        t           j        t           j        t           j        t           j        dœ| _        d}d}d}d}t          j        |dz  › d�¦  «        t          j        |dz  › ¦  «        t          j        |› |dz  › �¦  «        t          j        d|d	z  › d
|dz  › d�¦  «        t          j        |dz  › |dz   dz  › �¦  «        t          j        |› ¦  «        dœ| _        d S )N)ÚlanguageÚextlangÚscriptÚregionÚvariantz[0-9]z[a-z]z[A-Z]z[a-zA-Z0-9]é   ú?ú(é   z)|(ú)é   )r;   r<   r=   r>   r?   Ú	singleton)ÚstrÚlowerÚtitleÚupperÚcasingÚreÚcompileÚformat)r   ÚdigÚlowÚupÚalnums        r   r   zBCP47CorpusReader.morphology<   sð   € åœ	Ý”yÝ”iÝ”iÝ”yð
ð 
ˆŒð ˆØˆØˆØˆåœ
 c¨!¡e ; ; ;Ñ/Ô/Ý”z S¨¡U *Ñ-Ô-Ý”j B ¨¨A©  Ñ0Ô0Ý”jÐ!6 R¨¡TÐ!6Ð!6¨c°!©eÐ!6Ð!6Ð!6Ñ7Ô7Ý”z U¨1¡WÐ"=¨u°S©y¸!©mÐ"=Ð"=Ñ>Ô>Ýœ s HÑ-Ô-ð
ð 
ˆŒˆˆr,   c                 óP  — |d                               dd¦  «                             ¦   «         | _        i }i |d<   dD ]}i |d         |<   Œ|dd…         D �]O}d„ |                     ¦   «                              d	¦  «        D ¦   «         }|d         d         }|d         d         }||vri ||<   i }|d
d…         D ]˜}	t	          |	¦  «        d
k    r,|	\  }
}|
|vr|g||
<   nM||
                              |¦  «         n1||
         dxx         d|	d                              ¦   «         z   z  cc<   d|vr"|dk    r|
dk    r|| j        ||
         d         <   Œ™|D ],}
t	          ||
         ¦  «        dk    r||
         d         ||
<   Œ-d|v r||d         |         |<   �ŒD|||         |<   �ŒQ|S )z;Convert the BCP-47 language subtag registry to a dictionaryr   z
File-Date:Ú Ú
deprecated)r;   r<   r=   r>   r?   Ú	redundantÚgrandfatheredr   Nc                 ó8   — g | ]}|                      d ¦  «        ‘ŒS )ú: r(   )r)   Úfields     r   r0   z/BCP47CorpusReader.data_dict.<locals>.<listcomp>a   s$   € ÐPÐPÐP¨E�e—k’k $Ñ'Ô'ÐPÐPÐPr,   r   rC   r'   Ú Ú
Deprecatedr;   ÚDescription)Úreplacer!   Úversionr   ÚlenÚappendr   )r   ÚrecordsÚdicÚlabelÚrecordÚfieldsÚtypÚtagÚ	subfieldsrZ   ÚkeyÚvals               r   r   zBCP47CorpusReader.data_dictQ   s	  € à˜q”z×)Ò)¨,¸Ñ;Ô;×AÒAÑCÔCˆŒØˆØˆˆLÑð
ð 		*ð 		*ˆEð (*ˆC�Ô˜eÑ$Ð$Ø˜a˜b˜b”kð 	*ñ 	*ˆFØPÐP°V·\²\±^´^×5IÒ5IÈ$Ñ5OÔ5OÐPÑPÔPˆFØ˜”)˜A”,ˆCØ˜”)˜A”,ˆCØ˜#ˆ~ˆ~Ø��C‘ØˆIØ   œð <ð <�Ý�u‘:”: ’?�?Ø!&‘J�S˜#Ø )Ð+Ð+Ø*-¨˜	 #™˜à! #œ×-Ò-¨cÑ2Ô2Ð2Ð2à˜c”N 2Ð&Ð&Ô&¨#°°a´·²Ñ0@Ô0@Ñ*@Ñ@Ð&Ð&Ñ&à ¨Ð.Ð.Ø˜zÒ)Ð)Ø˜}Ò,Ð,à8;�D”M )¨C¤.°Ô"4Ñ5øØ ð 7ð 7�Ý�y ”~Ñ&Ô&¨!Ò+Ð+Ø%.¨s¤^°AÔ%6�I˜c‘NøØ˜vÐ%Ð%Ø.7��LÔ! #Ô& sÑ+Ñ+à )��C”˜‘‘Øˆ
r,   c                 óF   — t          |¦  «        t          k    r|d         }|S )zReturn only first valuer   )r5   Úlist)r   rk   s     r   Úval2strzBCP47CorpusReader.val2str   s!   € å�‰9Œ9�ÒÐà�a”&ˆCØˆ
r,   c                 óF   — |d         › }dD ]}||v r|d||         › �z  }Œ|S )zConcatenate subtag valuesr;   )r<   r=   r>   r?   Ú	extensionrY   r1   )r   Ú	lg_recordÚnamerd   s       r   Úlang2strzBCP47CorpusReader.lang2str†   sG   € à˜JÔ'Ð)ˆØLð 	0ð 	0ˆEØ˜	Ð!Ð!ØÐ/˜Y uÔ-Ð/Ð/Ñ/�øØˆr,   c                 ó²  — |                      d¦  «        }i }g d¢}|�r8|�r5|                     d¦  «        }d}|�rk|                     d¦  «        } | j        |         |¦  «        }| j        |                              |¦  «        �r|| j        |         v rRd}|                      | j        |         |         d         ¦  «        }|dk    r||v r||xx         d|z   z  cc<   n|||<   n¾|| j        d	         |         v r¦d}d
|›d|› d�}	d| j        d	         |         |         v r;| j        d	         |         |         d         }
|	d|                      |
¦  «        › d�z  }	|                      | j        d	         |         |         d         ¦  «        ||<   t          |	¦  «         n|�°k|s©|dk    r2|d         dk    r&|d         }|| j        v r| j        |         }nqd|› d�}nj|› d 	                    d„ |D ¦   «         ¦  «        › � 
                    ¦   «         }| j        d                              |¦  «        sd|› d�}t          |¦  «         ||d<   g }|r|�°5|S )z8Convert a BCP-47 tag to a dictionary of labelled subtagsÚ-)r;   r<   r=   r>   r?   r?   r   FTr]   r?   rY   rU   úThe r[   z code is deprecatedúPreferred-Valuez', prefer 'ú'ÚuÚsdr   z<Unknown subdivision: Ú>rT   c                 ó   — g | ]}d |z   ‘ŒS )ru   r1   )r)   Úexts     r   r0   z/BCP47CorpusReader.parse_tag.<locals>.<listcomp>·   s   € Ð-IÐ-IÐ-I¸#¨c°#©gÐ-IÐ-IÐ-Ir,   rF   z<Invalid extension: rp   )r   ÚpoprK   rN   Ú	fullmatchr   rn   r   r   ÚjoinrH   )r   rh   ÚsubtagsÚlangÚlabelsÚsubtagÚfoundrd   ÚvalstrÚnoteÚpreferrz   r}   s                r   Ú	parse_tagzBCP47CorpusReader.parse_tagŽ   sÊ  € à—)’)˜C‘.”.ˆØˆØRÐRÐRˆØñ )	˜&ñ )	Ø—[’[ ‘^”^ˆFØˆEØñ ØŸ
š
 1™œ�Ø+˜œ UÔ+¨FÑ3Ô3�Ø”;˜uÔ%×/Ò/°Ñ7Ô7ñ Ø ¤¨¤Ð/Ð/Ø $˜Ø!%§¢¨d¬g°e¬n¸VÔ.DÀ]Ô.SÑ!TÔ!T˜Ø  IÒ-Ð-°%¸4°-°-Ø  ˜K˜KœK¨4°&©=Ñ8˜K˜K™K˜Kà*0˜D ™KØØ 4¤7¨<Ô#8¸Ô#?Ð?Ð?Ø $˜ØK fÐKÐK°ÐKÐKÐK˜Ø,°´¸Ô0EÀeÔ0LÈVÔ0TÐTÐTØ%)¤W¨\Ô%:¸5Ô%AÀ&Ô%IØ 1ô&˜Fð !Ð$I°$·,²,¸vÑ2FÔ2FÐ$IÐ$IÐ$IÑI˜DØ&*§l¢lØ œG LÔ1°%Ô8¸Ô@ÀÔOñ'ô '˜˜U™õ ˜T™
œ
˜
Øð1 ñ ð2 ð Ø˜S’=�= W¨Q¤Z°4Ò%7Ð%7Ø  œ�BØ˜Tœ[Ð(Ð(Ø"œk¨"œo˜˜à=°sÐ=Ð=Ð=˜˜à#ÐL R§W¢WÐ-IÐ-IÀÐ-IÑ-IÔ-IÑ%JÔ%JÐLÐL×RÒRÑTÔT�CØœ; {Ô3×=Ò=¸fÑEÔEð "Ø;°SÐ;Ð;Ð;˜Ý˜S™	œ	˜	Ø$'��[Ñ!Ø�ðS ð )	˜&ñ )	ðT ˆr,   c                 óL  — dD ]Þ}d}|| j         |         v r#| j         |         |         d         › }d|›d|› �}n“|| j         d         |         v r~| j         d         |         |         d         › }d|›d|› d�}d| j         d         |         |         v r:| j         d         |         |         d         }|d	|                      |¦  «        ›�z  }|rt          |¦  «         |c S Œß	 |                      |                      |¦  «        ¦  «        S #  t          d
|›d�¦  «         Y dS xY w)z×
        Convert a BCP-47 tag to a colon-separated string of subtag names

        >>> from nltk.corpus import bcp47
        >>> bcp47.name('ca-Latn-ES-valencia')
        'Catalan: Latin: Spain: Valencian'

        )rV   rW   Nr]   rv   z	 code is rU   z and deprecatedrw   z	, prefer zTag z was not recognized)r   rn   r   rs   r‰   )r   rh   rd   rk   r‡   rˆ   s         r   rr   zBCP47CorpusReader.name¿   sj  € ð 4ð 	ð 	ˆEØˆCØ�d”g˜e”nÐ$Ð$Øœ œ¨Ô,¨]Ô;Ð=�Ø5˜cÐ5Ð5¨eÐ5Ð5��Ø˜œ Ô-¨eÔ4Ð4Ð4Øœ Ô.¨uÔ5°cÔ:¸=ÔIÐK�ØD˜cÐDÐD¨eÐDÐDÐD�Ø$¨¬°Ô(=¸eÔ(DÀSÔ(IÐIÐIØ!œW \Ô2°5Ô9¸#Ô>Ð?PÔQ�FØÐ@¨¯ª°VÑ(<Ô(<Ð@Ð@Ñ@�DØð Ý�T‘
”
�
Ø�
�
�
ðð	Ø—=’= §¢°Ñ!4Ô!4Ñ5Ô5Ð5øð	ÝÐ2˜Ð2Ð2Ð2Ñ3Ô3Ð3Ø�4�4øøøs   Ã#'D ÄD#)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r#   r    r   r   r   rn   rs   r‰   rr   Ú__classcell__)r   s   @r   r   r      sÑ   ø€ € € € € ðð ð 
ð 
ð 
ð 
ð 
ðLð Lð Lð

ð 
ð 
ðAð Að Að
ð 
ð 
ð*,ð ,ð ,ð\ð ð ðð ð ð/ð /ð /ðbð ð ð ð ð ð r,   r   )	rL   Úwarningsr   Ú	xml.etreer   r   Únltk.corpus.readerr   r   r1   r,   r   ú<module>r“      s„   ðð 
€	€	€	Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à +Ð +Ð +Ð +Ð +Ð +ðKð Kð Kð Kð K˜ñ Kô Kð Kð Kð Kr,   