
    Fel%                    z   d Z ddlm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 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mZmZ e	rddlmZ ddlmZ  ej@                  e!      Z" G d de      Z# G d de#      Z$ G d d      Z%dKd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-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d;ddd>d?d@dAdBdCZ' ejP                  dDdEjS                  e'      z        Z*ejV                  jX                  f	 	 	 dLdFZ-ddG	 	 	 	 	 	 	 dMdHZ,	 	 	 	 	 	 dNdIZ.dOdJZ/y)Pz$Builder superclass for all builders.    )annotationsN)datetimetimezone)path)TYPE_CHECKINGCallable
NamedTuple)write_mo)read_po)SphinxError)__)logging)SEP
canon_pathrelpath)	Generator)BuildEnvironmentc                  ,    e Zd ZU ded<   ded<   ded<   y)LocaleFileInfoBasestrbase_dirdomaincharsetN)__name__
__module____qualname____annotations__     2/usr/lib/python3/dist-packages/sphinx/util/i18n.pyr   r      s    MKLr   r   c                  f    e Z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)CatalogInfoc                     | 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                V    t        j                  | j                  | j                        S N)r   joinr   r(   r&   s    r    po_pathzCatalogInfo.po_path-       yy55r   c                V    t        j                  | j                  | j                        S r-   )r   r.   r   r+   r&   s    r    mo_pathzCatalogInfo.mo_path1   r0   r   c                    t        j                  | j                         xs? t        j                  | j                        t        j                  | j                        k  S r-   )r   existsr2   getmtimer/   r&   s    r    is_outdatedzCatalogInfo.is_outdated5   sC    DLL)) FMM$,,'$--*EE	G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                  |       Y d }~d d d        y d }~ww xY w# 1 sw Y   xY w# t        $ r4}t
        j                  t        d      | j                  |       Y d }~d }~ww xY w# 1 sw Y   y xY w)N)encodingzreading error: %s, %swbzwriting error: %s, %s)
openr/   r   r   	Exceptionloggerwarningr   r2   r
   )r'   locale	use_fuzzyfile_popoexcfile_mos          r    r
   zCatalogInfo.write_mo:   s    $,,6 	'Wf-	 $,,% 	OO"i0	O 	O	  r"9:DLL#N	 		 	  Or"9:DLL#NNO	O 	Os^   B/A'C;B;'	B,0*B'B/'B,,B//B8;	C8*C3.C;3C88C;;DN)returnr   )rD   bool)F)r>   r   r?   rE   rD   None)
r   r   r   propertyr(   r+   r/   r2   r6   r
   r   r   r    r"   r"   #   s\    # # # # 6 6 6 6G
Or   r"   c                  Z    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                <    || _         || _        || _        || _        y r-   )basedir_locale_dirslanguager8   )r'   rK   locale_dirsrM   r8   s        r    __init__zCatalogRepository.__init__L   s    '  r   c              #  <  K   | j                   sy | j                  D ]|  }t        j                  | j                  |      }t        j                  || j                   d      }t        j
                  |      r| ^t        j                  t        d      |       ~ y w)NLC_MESSAGESzlocale_dir %s does not exist)	rM   rL   r   r.   rK   r4   r<   verboser   )r'   
locale_dirlocale_paths      r    rN   zCatalogRepository.locale_dirsS   sw     }}++ 	PJ4<<<J))J}MK{{;'  r"@A;O	Ps   BBc              #  ~  K   | j                   D ]  }t        j                  || j                  d      }t	        j
                  |      D ]o  \  }}}|D ]%  }|j                  d      s|j                  |       ' |D ]:  }|j                  d      st        j                  ||      }|t        ||      f < q  y w)NrQ   .r$   )
rN   r   r.   rM   oswalk
startswithremoveendswithr   )	r'   rS   rK   rootdirnames	filenamesdirnamefilenamefullpaths	            r    pofileszCatalogRepository.pofiles`   s     ** 	BJii
DMM=IG-/WWW-= 	B)h	' 1G))#. 01 !* BH((/#'99T8#<%wx'AAAB	B	Bs   A#B=&)B=-B=c              #     K   | j                   D ]?  \  }}t        t        j                  |      d         }t	        ||| j
                         A y w)Nr   )rb   r   r   splitextr"   r8   )r'   rK   r`   r   s       r    catalogszCatalogRepository.catalogso   sI     !% 	>GXh 7 :;Fgvt}}==	>s   AAN)
rK   str | os.PathLike[str]rN   z	list[str]rM   r   r8   r   rD   rF   )rD   zGenerator[str, None, None])rD   z&Generator[tuple[str, str], None, None])rD   z"Generator[CatalogInfo, None, None])	r   r   r   __doc__rO   rG   rN   rb   re   r   r   r    rI   rI   I   sb    ,!!*-!26! 
P 
P B B > >r   rI   c                `    t        |t              r|S |r| j                  t        d      d   S | S )z'Convert docname to domain for catalogs.   r   )
isinstancer   splitr   )docname
compactions     r    docname_to_domainrn   v   s0    *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)|c                $   t        | d      st        j                  j                  }	  || ||      S # t        t        j
                  j                  f$ r  || |d      cY S t        $ r$ t        j                  t        d      |       |cY S w xY w)Ntzinfo)r>   enz[Invalid date format. Quote the string by single quote if you want to output it directly: %s)hasattrbabeldatesformat_date
ValueErrorcoreUnknownLocaleErrorAttributeErrorr<   r=   r   )dateformatr>   	formatters       r    babel_format_dater      s     4"KK++	vf55

556 4vd33 r B CDJ	Ls   
3 .B#)BB)r   c          	        |xt        j                  d      }|/t        j                  t	        |      t
        j                        }n2t        j                  t
        j                        j                         }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)tz r   r   )r>   r   )rW   getenvr   fromtimestampfloatr   utcnow
astimezonedate_format_rerk   date_format_mappingsgetr   r   r   format_timeformat_datetimeappendr   r.   )	r   r   rM   source_date_epochresulttokenstokenbabel_formatfunctions	            r    r   r      s    | II&9:())%0A*Bx||TD<<8<<0;;=DF!!&)F !((/33E2>L
 } ;;22$ ;;22 ;;66MM+D,x6>@ A MM% #!& 776?r   c                   t        j                  |       \  }}t        j                  |      }t        j                  |j                        }	 |j                  j
                  j                  |||xr	 |t        z   t        j                  |      |xr	 |t        z   |j                  j                        S # t        $ r}d|}t        |      |d }~ww xY w)N)r\   extr   basenamedocpathrM   z"Invalid figure_language_filename: )r   rd   r_   rl   configfigure_language_filenamer   r   r   rM   KeyErrorr   )r`   envr\   r   r_   r   rB   msgs           r    get_image_filename_for_languager      s     h'ID#ll4 Gll3;;'G(zz2299*Ws]]]4(-#ZZ(( : 
 	
  (23':#C'(s   A'B6 6	C?CCc                t    t        | |      }|j                  |      \  }}t        j                  |      r|S | S r-   )r   
relfn2pathr   r4   )r`   r   
translated_abspaths        r    search_image_for_languager      s7    03?J
+JAw{{7r   )rl   r   rm   z
bool | strrD   r   )
r   r   r   r   r>   r   r   r   rD   r   )r   r   r   zdatetime | NonerM   r   rD   r   )r`   rf   r   r   rD   r   )r`   r   r   r   rD   r   )0rg   
__future__r   rW   rer   r   r   typingr   r   r	   babel.datesr   babel.messages.mofiler
   babel.messages.pofiler   sphinx.errorsr   sphinx.localer   sphinx.utilr   sphinx.util.osutilr   r   r   collections.abcr   sphinx.environmentr   	getLoggerr   r<   r   r"   rI   rn   r   compiler.   r   r   r   r   r   r   r   r   r    <module>r      s   * " 	 	 '  6 6  * ) %   7 7)3 
		8	$ #O$ #OL*> *>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 -2KK,C,C!)HK& -1!!)!<?!!H($(	( 	(*r   