
    }c$'                        d Z ddlZddlZddlZddlmZmZ ddlmZ ddlmZm	Z	m
Z
mZmZmZ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m Z  erddl!m"Z"  ej#        e$          Z% G d de          Z& G d de&          Z' G d d          Z(de)dee*e)f         de)fdZ+i ddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d=d!d!d@dAdBdCdDdEZ, ej-        dFdG.                    e,          z            Z/ej0        j1        fdHedIe)dJe)dKe	de)f
dLZ2dTdIe)dHedMe)de)fdNZ1dOe)dPdQde)fdRZ3dOe)dPdQde)fdSZ4dS )Uz$Builder superclass for all builders.    N)datetimetimezone)path)TYPE_CHECKINGCallable	GeneratorList
NamedTupleTupleUnion)write_mo)read_po)RemovedInSphinx70Warning)SphinxError)__)logging)SEP
canon_pathrelpath)BuildEnvironmentc                   .    e Zd ZU eed<   eed<   eed<   dS )LocaleFileInfoBasebase_dirdomaincharsetN)__name__
__module____qualname__str__annotations__     0lib/python3.11/site-packages/sphinx/util/i18n.pyr   r      s+         MMMKKKLLLLLr"   r   c                       e Zd Zedefd            Zedefd            Zedefd            Zedefd            Zde	fdZ
dded	e	dd
fdZd
S )CatalogInforeturnc                     | j         dz   S )N.por   selfs    r#   po_filezCatalogInfo.po_file#       {U""r"   c                     | j         dz   S )Nz.mor)   r*   s    r#   mo_filezCatalogInfo.mo_file'   r-   r"   c                 @    t          j        | j        | j                  S N)r   joinr   r,   r*   s    r#   po_pathzCatalogInfo.po_path+       y555r"   c                 @    t          j        | j        | j                  S r1   )r   r2   r   r/   r*   s    r#   mo_pathzCatalogInfo.mo_path/   r4   r"   c                     t          j        | j                   p3t          j        | j                  t          j        | j                  k     S r1   )r   existsr6   getmtimer3   r*   s    r#   is_outdatedzCatalogInfo.is_outdated3   s@    DL))) FM$,''$-*E*EE	Gr"   Flocale	use_fuzzyNc                 @   t          | j        | j                  5 }	 t          ||          }nQ# t          $ rD}t
                              t          d          | j        |           Y d }~d d d            d S d }~ww xY w	 d d d            n# 1 swxY w Y   t          | j        d          5 }	 t          |||           nE# t          $ r8}t
                              t          d          | j        |           Y d }~nd }~ww xY wd d d            d S # 1 swxY w Y   d S )N)encodingzreading error: %s, %swbzwriting error: %s, %s)
openr3   r   r   	Exceptionloggerwarningr   r6   r   )r+   r;   r<   file_popoexcfile_mos          r#   r   zCatalogInfo.write_mo8   s   $,666 	'Wf--   r"9::DL#NNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $,%% 	OO"i0000 O O Or"9::DL#NNNNNNNNO	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	Osr   B/B
A=.A8'B8A==BBB-D/C D
D.C>9D>DDDD)F)r   r   r   propertyr   r,   r/   r3   r6   boolr:   r   r!   r"   r#   r%   r%   !   s       # # # # X# # # # # X# 6 6 6 6 X6 6 6 6 6 X6GT G G G G
O Os Ot O O O O O O Or"   r%   c            
           e Zd ZdZdedee         dededdf
dZedeeddf         fd	            Z	edee
eef         ddf         fd
            Zedeeddf         fd            ZdS )CatalogRepositoryz"A repository for message catalogs.basedirlocale_dirslanguager>   r&   Nc                 >    || _         || _        || _        || _        d S r1   )rL   _locale_dirsrN   r>   )r+   rL   rM   rN   r>   s        r#   __init__zCatalogRepository.__init__J   s#    '  r"   c              #     K   | j         sd S | j        D ]x}t          j        | j        |          }t          j        || j         d          }t          j        |          r|V  Pt                              t          d          |           yd S )NLC_MESSAGESzlocale_dir %s does not exists)	rN   rP   r   r2   rL   r8   rB   verboser   )r+   
locale_dirlocale_paths      r#   rM   zCatalogRepository.locale_dirsQ   s      } 	F+ 	Q 	QJ4<<<J)J}MMK{;'' Q     r"ABBKPPPP	Q 	Qr"   c              #   n  K   | j         D ]}t          j        || j        d          }t	          j        |          D ]x\  }}}|D ],}|                    d          r|                    |           -|D ]@}|                    d          r)t          j        ||          }|t          ||          fV  Ayd S )NrS   .r(   )
rM   r   r2   rN   oswalk
startswithremoveendswithr   )	r+   rU   rL   rootdirnames	filenamesdirnamefilenamefullpaths	            r#   pofileszCatalogRepository.pofiles^   s      * 	B 	BJi
DM=IIG-/WW-=-= 	B 	B)h	' 1 1G))#.. 1 000 ) B BH((// B#'9T8#<#<%wx'A'AAAAAB	B	B 	Br"   c              #      K   | j         D ]D\  }}t          t          j        |          d                   }t	          ||| j                  V  Ed S )Nr   )rd   r   r   splitextr%   r>   )r+   rL   rb   r   s       r#   catalogszCatalogRepository.catalogsm   s_      !% 	> 	>GXh 7 7 :;;Fgvt}======	> 	>r"   )r   r   r   __doc__r   r	   rQ   rH   r   rM   r   rd   r%   rg   r!   r"   r#   rK   rK   G   s       ,,! !$s) !!*-!26! ! ! ! 
QYsD$7 
Q 
Q 
Q X
Q B5c?D$#>? B B B XB >)Kt$;< > > > X> > >r"   rK   docname
compactionr&   c                 z    t          |t                    r|S |r!|                     t          d          d         S | S )z'Convert docname to domain for catalogs.   r   )
isinstancer   splitr   )ri   rj   s     r#   docname_to_domainro   t   s@    *c""  }}S!$$Q''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)|dateformatr;   	formatterc                 f   |t          j        dt                     d}t          | d          st          j        j        }	  || ||          S # t          t          j        j	        f$ r  || |d          cY S t          $ r- t                              t          d          |           |cY S w xY w)Nz=The locale argument for babel_format_date() becomes required.entzinfo)r;   z[Invalid date format. Quote the string by single quote if you want to output it directly: %s)warningswarnr   hasattrbabeldatesformat_date
ValueErrorcoreUnknownLocaleErrorAttributeErrorrB   rC   r   )r   r   r;   r   s       r#   babel_format_dater      s     U.	0 	0 	0 4"" ,K+	yvf5555
56 4 4 4yvd333333   r B C CDJ	L 	L 	Ls   A )B0:3B0/B0rN   c           	         |ht          j        d          }|"t          j        t	          |                    }n0t          j        t          j                                                  }|t          j
        dt                     d}g }t                              |           }|D ]}|t          v rt                              |d          }|dk    rt           j        j        }n)|dk    rt           j        j        }nt           j        j        }|                    t-          ||||                     |                    |           d                    |          S )NSOURCE_DATE_EPOCHz9The language argument for format_date() becomes required.r    r   r   )r;   r   )rY   getenvr   utcfromtimestampfloatnowr   utc
astimezoner   r   r   date_format_rern   date_format_mappingsgetr   r   r   format_timeformat_datetimeappendr   r2   )	r   r   rN   source_date_epochresulttokenstokenbabel_formatfunctions	            r#   r   r      sn    ; I&9:: 	;,U3D-E-EFFDD<--88::D Q.	0 	0 	0F!!&))F ! !(( 	!/33E2>>L
 } 7 ;2$ 7 ;2 ;6MM+D,x6>@ @ @ A A A A MM%    776??r"   rb   envr   c                 h   |j         j        }t                      }t          j        |           \  |d<   |d<   t          j        |d                   }|r.|                    t          j                  s|t          j        z  }t          j        |j                  }|r.|                    t          j                  s|t          j        z  }||d<   t          j	        |d                   |d<   ||d<   |j         j
        |d<   	  |j        di |S # t          $ r}t          d|z            |d }~ww xY w)	Nr^   extr   basenamedocpathrN   z$Invalid figure_language_filename: %rr!   )configfigure_language_filenamedictr   rf   ra   r]   sepri   r   rN   r   KeyErrorr   )rb   r   filename_formatru   ra   r   rF   s          r#   get_image_filename_for_languager      s:   j9OA-11AfIqxl1V9%%G w''11 48l3;''G w''11 48AfIM!F),,AjMAiLJ'AjMQ%%***** Q Q Q@3FGGSPQs   D 
D1D,,D1c                     t          | |          }|                    |          \  }}t          j        |          r|S | S r1   )r   
relfn2pathr   r8   )rb   r   
translated_abspaths        r#   search_image_for_languager      sC    03??J
++JAw{7 r"   )NN)5rh   rY   rer   r   r   r   typingr   r   r   r	   r
   r   r   babel.datesr   babel.messages.mofiler   babel.messages.pofiler   sphinx.deprecationr   sphinx.errorsr   sphinx.localer   sphinx.utilr   sphinx.util.osutilr   r   r   sphinx.environmentr   	getLoggerr   rB   r   r%   rK   r   rI   ro   r   compiler2   r   r   r   r   r   r   r!   r"   r#   <module>r      s   * * 				 				  ' ' ' ' ' ' ' '       U U U U U U U U U U U U U U U U U U     * * * * * * ) ) ) ) ) ) 7 7 7 7 7 7 % % % % % %             7 7 7 7 7 7 7 7 7 7 4333333 
	8	$	$       #O #O #O #O #O$ #O #O #OL*> *> *> *> *> *> *> *>Zs dCi0@ S    &5&6& 	5& 	6	&
 	8& 
3& 	4& 
3& 	4& 
3& 	4& 
3& 	5& 
3& 	4&  
3!&" 	4#&$   K& & & P FSXX.B%C%CCDD -2K,C H c 3 !)HK   .$ $ $8 $c $S $ $ $ $NQc Q8J Qs Q Q Q Q( 2D       r"   