
    ^h
                        % S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	  SSKJ
r  SSKJr  \	" \5      rS0 0rS	\S
'   \R$                  " S\R&                  5      rS rSS jrSS jrSS jrg)z)Server functions for loading translations    )annotationsN)defaultdict)dirname)join)Anynbjszdict[str, Any]TRANSLATIONS_CACHEzW
(?P<lang>[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})?)
(\s*;\s*q\s*=\s*
  (?P<qvalue>[01](.\d+)?)
)?c                   [        [        5      nU R                  S5       H  n[        R	                  UR                  5       5      nU(       d  M/  UR                  SS5      u  pEUR                  SS5      nUc  SO
[        U5      nUS:X  a  Mm  X   R                  U5        M     / n[        UR                  5       5       H  u  pxUR                  [        U5      5        M!     U$ )zParses the 'Accept-Language' HTTP header.

Returns a list of language codes in *ascending* order of preference
(with the most preferred language last).
,langqvalue-_g      ?r   )r   listsplit_accept_lang_rematchstripgroupreplacefloatappendsorteditemsextend)	accept_langby_qpartmr   r   resr   langss	            V/home/james-whalen/.local/lib/python3.13/site-packages/jupyter_server/i18n/__init__.pyparse_accept_lang_headerr#   "   s     tD!!#&!!$**,/wwvx0||C%E&MQ;D! ' C4::<(

6%=! )J    c                    [        [        [        U SS5      SS9nU   [        R                  " U5      nSSS5        WS   U   $ ! [         a+  nUR                  [        R
                  :w  a  e 0 s SnA$ SnAff = f! , (       d  f       NN= f)z(Load translations from an nbjs.json fileLC_MESSAGESz	nbjs.jsonzutf-8)encodingNlocale_data)openpjoinI18N_DIROSErrorerrnoENOENTjsonload)languagedomainfedatas        r"   r0   r0   ;   sx    x=+FQXY 
yy| 
v&&  77ell"	
 
s(   A A=
A: A5/A:5A:=
Bc                `    [         U   n X    $ ! [         a    [        X5      nX2U '   Us $ f = f)zFLoad translations for one language, using in-memory cache if available)r	   KeyErrorr0   )r1   r2   domain_cacher5   s       r"   cached_loadr9   I   s@    %f-L%% H%!%Xs    --c                    [        U 5      n0 nU H5  nUS:X  a  UR                  5         M  UR                  [        XA5      5        M7     SS0US'   XU0S.$ )zbCombine translations for multiple accepted languages.

Returns data re-packaged in jed1.x format.
enr2   r    )r2   r(   )r#   clearupdater9   )accept_languager2   
lang_codescombinedr1   s        r"   combine_translationsrB   T   s^    
 */:J!HtNNOOK9:  f%HRLh-?@@r$   )r   )__doc__
__future__r   r-   r/   recollectionsr   os.pathr   r   r*   typingr   __file__r+   r	   __annotations__compileVERBOSEr   r#   r0   r9   rB    r$   r"   <module>rN      sn    / "   	 #  ! 8 '-b\ N 1 **
 JJ2'Ar$   