
    Ri.                       d Z ddlmZ ddlZddlZddlZddlmZ ddlmZ ddl	Z
ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZ erDddlZddlmZ ddlmZ ddlmZ ddl m!Z!  G d de      Z" G d de      Z# G d de      Z$ddd fZ%ddlm&Z&  ejN                  e(      Z) G d d      Z* G d d      Z+dUdZ,i dd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdDd(d(dGdHdIdJdKdLZ- ej\                  dMdNj_                  e-      z        Z0e
jb                  jd                  f	 	 	 	 	 	 	 	 	 dVdOZ3ddPdQ	 	 	 	 	 	 	 	 	 dWdRZ2	 	 	 	 	 	 dXdSZ4dYdTZ5y)Zz$Builder superclass for all builders.    )annotationsN)datetime)TYPE_CHECKING)write_mo)read_po)SphinxError)__)logging)_StrPath)SEP_last_modified_time)Iterator)Protocol)Locale)BuildEnvironmentc                  *    e Zd Z	 	 	 d	 	 	 	 	 	 	 ddZy)DateFormatterc                     y N )selfdateformatlocales       H/home/agent/.friday_env/lib/python3.12/site-packages/sphinx/util/i18n.py__call__zDateFormatter.__call__   s    
     N)...)r   zdt.date | Noner   strr   str | Locale | Nonereturnr   __name__
__module____qualname__r   r   r   r   r   r      s8     $'*-		 	 	 (		
 	r   r   c                  0    e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 ddZy)TimeFormatterc                     y r   r   )r   timer   tzinfor   s        r   r   zTimeFormatter.__call__'        r   N....)
r(   z$dt.time | dt.datetime | float | Noner   r   r)   dt.tzinfo | Noner   r   r    r   r!   r   r   r   r&   r&   &   sE     :='**-	6	 	 %		
 (	 	r   r&   c                  0    e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 ddZy)DatetimeFormatterc                     y r   r   )r   r   r   r)   r   s        r   r   zDatetimeFormatter.__call__0   r*   r   Nr+   )
r   z dt.date | dt.time | float | Noner   r   r)   r,   r   r   r    r   r!   r   r   r   r.   r.   /   sE     :='**-	6	 	 %		
 (	 	r   r.   	Formatterc                 *    t         t        z  t        z  S r   )r   r&   r.   r   r   r   r0   r0   8   s    ]]25FFFr   )UTCc                      e Zd ZdZ	 	 	 	 	 	 	 	 d
dZedd       Zedd       Zedd       Zedd       Z	ddZ
dddZy	)CatalogInfo)base_dirdomaincharsetc                @    t        |      | _        || _        || _        y r   )r   r5   r6   r7   )r   r5   r6   r7   s       r   __init__zCatalogInfo.__init__B   s     !*r   c                     | j                    dS )Nz.por6   r   s    r   po_filezCatalogInfo.po_fileI       ++c""r   c                     | j                    dS )Nz.mor;   r<   s    r   mo_filezCatalogInfo.mo_fileM   r>   r   c                4    | j                   | j                  z  S r   )r5   r=   r<   s    r   po_pathzCatalogInfo.po_pathQ       }}t||++r   c                4    | j                   | j                  z  S r   )r5   r@   r<   s    r   mo_pathzCatalogInfo.mo_pathU   rC   r   c                    | j                   j                          xs+ t        | j                         t        | j                        k  S r   )rE   existsr   rB   r<   s    r   is_outdatedzCatalogInfo.is_outdatedY   s:    <<&&(( 
-0CDLL0QQ	
r   c           	        t        | j                  | j                        5 }	 t        ||      }	 d d d        t        | j                  d      5 }	 t        ||       d d d        y # t        $ r?}t
        j                  t        d      | j                  |dd       Y d }~d d d        y d }~ww xY w# 1 sw Y   xY w# t        $ r7}t
        j                  t        d      | j                  |dd       Y d }~d }~ww xY w# 1 sw Y   y xY w)	N)encodingzreading error: %s, %si18nnot_readabletypesubtypewbzwriting error: %s, %snot_writeable)
openrB   r7   r   	Exceptionloggerwarningr	   rE   r   )r   r   	use_fuzzyfile_popoexcfile_mos          r   r   zCatalogInfo.write_mo^   s   $,,6 	'
Wf-	 $,,% 
		"i0
	 
	  ./LL*   	 		 	   ./LL+   
	 
	s^   B2A'DB>'	B/0-B*B2*B//B22B;>	C>-C94D9C>>DD
N)r5   str | os.PathLike[str]r6   r   r7   r   r    None)r    r   )r    r   )r    bool)F)r   r   rV   r]   r    r\   )r"   r#   r$   	__slots__r9   propertyr=   r@   rB   rE   rH   r   r   r   r   r4   r4   ?   s    /I.8;FI	 # # # # , , , ,

r   r4   c                  b    e Zd ZdZ	 	 	 	 	 	 	 	 	 	 ddZedd       Zed	d       Zed
d       Zy)CatalogRepositoryz"A repository for message catalogs.c                N    t        |      | _        || _        || _        || _        y r   )r   basedir_locale_dirslanguagerJ   )r   rc   locale_dirsre   rJ   s        r   r9   zCatalogRepository.__init__|   s&      ('  r   c              #    K   | j                   sy | j                  D ]b  }| j                  |z  | j                   z  dz  }|j                         r| j                  |z   Dt        j                  t        d      |       d y w)NLC_MESSAGESzlocale_dir %s does not exist)re   rd   rc   rG   rT   verboser	   )r   
locale_dirlocale_paths      r   rf   zCatalogRepository.locale_dirs   sr     }}++ 	PJ,,3dmmCmSK!!#llZ//r"@A;O	Ps   B Bc              #     K   | j                   D ]a  }|| j                  z  dz  }|j                  d      D ]9  }|j                  |      }t	        d |j
                  d d D              r4||f ; c y w)Nrh   z*.poc              3  >   K   | ]  }|j                  d         yw).N)
startswith).0parts     r   	<genexpr>z,CatalogRepository.pofiles.<locals>.<genexpr>   s     Lts+Ls   )rf   re   rglobrelative_toanyparts)r   rj   rk   abs_pathrel_paths        r   pofileszCatalogRepository.pofiles   s     ** 	,J$t}}4}DK'--f5 ,#//<Ls8KLL!8++,	,s   A2A4c              #     K   | j                   D ]=  \  }}|j                  d      j                         }t        ||| j                         ? y w)N )rz   with_suffixas_posixr4   rJ   )r   rc   filenamer6   s       r   catalogszCatalogRepository.catalogs   sJ     !% 	>GX))"-668Fgvt}}==	>s   AAN)
rc   r[   rf   z	list[str]re   r   rJ   r   r    r\   )r    zIterator[_StrPath])r    z#Iterator[tuple[_StrPath, _StrPath]])r    zIterator[CatalogInfo])	r"   r#   r$   __doc__r9   r_   rf   rz   r   r   r   r   ra   ra   y   sx    ,
!'
! 
! 	
!
 
! 

! 	P 	P , , > >r   ra   c                ^    t        |t              r|S |r| j                  t              d   S | S )z'Convert docname to domain for catalogs.r   )
isinstancer   	partitionr   )docname
compactions     r   docname_to_domainr      s0    *c"  %a((r   z%aEEEz%AEEEEz%bMMMz%BMMMMz%cmediumz%-ddz%dddz%-HHz%HHHz%-Ihz%Ihhz%-jDz%jDDDz%-mMz%mMMz%-Mmz%MmmasssWWeWYYyyyyzzzZZZ%)z%pz%-Sz%Sz%Uz%wz%-Wz%W%x%Xz%yz%Yz%Zz%zz%%z(%s)|c                v   t        | d      st        j                  j                  }|sd}	  || ||      S # t        t        j
                  j                  f$ r0 t        j                  t        d      |dd        || |d      cY S t        $ r' t        j                  t        d      |dd       |cY S w xY w)	Nr)   en)r   zInvalid Babel locale: %r.rK   babelrM   z[Invalid date format. Quote the string by single quote if you want to output it directly: %s)hasattrr   datesformat_date
ValueErrorcoreUnknownLocaleErrorrT   rU   r	   AttributeError)r   r   r   	formatters       r   babel_format_dater      s     4"KK++	 vf55

556 4*+	 	 	
 vd33 
8  	 	
 
s   
7 AB8	,B87B8F)r   
local_timec          	        |Xt        j                  d      }|'t        j                  t	        |      t
              }d}nt        j                  t
              }|r|j                  d       }g }t        j                  |       }|D ]  }|t        v rt        j                  |d      }|dk(  rt        j                  j                  }	n:|dk(  rt        j                  j                  }	nt        j                  j                   }	|j#                  t%        ||||	             |j#                  |        dj'                  |      S )NSOURCE_DATE_EPOCH)tzFr|   r   r   )r   r   )osgetenvr   fromtimestampfloatr2   now
astimezonedate_format_resplitdate_format_mappingsgetr   r   r   format_timeformat_datetimeappendr   join)
r   r   re   r   source_date_epochresulttokenstokenbabel_formatfunctions
             r   r   r     s    | II&9:())%0A*BsKD J<<3'D $'F!!&)F !((/33E2>L } ;;22$ ;;22 ;;66MM!,x8 MM% +!. 776?r   c                   t         j                  j                  |       \  }}t         j                  j                  |      }t         j                  j                  |j                  j
                        }	 |j                  j                  j                  |||xr	 |t        z   t         j                  j                  |      |xr	 |t        z   |j                  j                        S # t        $ r}d|}t        |      |d }~ww xY w)N)rootextpathbasenamedocpathre   z"Invalid figure_language_filename: )r   r   splitextdirnamecurrent_documentr   configfigure_language_filenamer   r   r   re   KeyErrorr   )r   envr   r   r   r   rY   msgs           r   get_image_filename_for_languager   <  s       *ID#ggood#Gggooc22::;G(zz2299*Ws]WW%%d+-#ZZ(( : 
 	
  (23':#C'(s   6A1C( (	D1DDc                    t        | |      }|j                  |      \  }}t        j                  j	                  |      r|S | S r   )r   
relfn2pathr   r   rG   )r   r   
translated_abspaths        r   search_image_for_languager   Q  s;    03?J
+JAw	ww~~gr   )r   r   r   z
bool | strr    r   )
r   zdt.datetimer   r   r   r   r   r0   r    r   )
r   r   r   zdatetime | Nonere   r   r   r]   r    r   )r   r[   r   r   r    r   )r   r   r   r   r    r   )6r   
__future__r   r   os.pathrer   typingr   babel.datesr   babel.messages.mofiler   babel.messages.pofiler   sphinx.errorsr   sphinx.localer	   sphinx.utilr
   sphinx.util._pathlibr   sphinx.util.osutilr   r   dtcollections.abcr   r   
babel.corer   sphinx.environmentr   r   r&   r.   r0   r2   	getLoggerr"   rT   r4   ra   r   r   compiler   r   r   r   r   r   r   r   r   r   <module>r      sk   * " 	  	     * ) %   ) 7(!3  H  G 			8	$7 7t*> *>Z&5&6& 	5& 	6	&
 	8& 
3& 	4& 
3& 	4& 
3& 	4& 
3& 	5& 
3& 	4&  
3!&" 	4#&$   K& P FSXX.B%CCD !;;22	(
(( ( 	(
 	(\ !22 2 	2
 2 	2j($(	( 	(*r   