
    O&i\                     h   d Z ddlZddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlm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mZmZ ddlmZm Z m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m$Z$ ddl9m:Z:m;Z;m<Z<m=Z=m>Z> ddl?m@Z@  e8jA        eB          ZC ejD        d          ZE G d de          ZF G d de          ZG G d de          ZH G d d e          ZIeeGeeJeKeKeLf         f         ZMd!d"iZNdZOd#ZPd$ZQ G d% d&e          ZRd'e$j$        j%        d(eKd)eSfd*ZT G d+ d,e-          ZU G d- d.          ZV G d/ d0e          ZW G d1 d2e5          ZXd3e+d4eKd)eeK         fd5ZYd3e+d6e/d)dfd7ZZd3e+d)eeKef         fd8Z[dS )9z$The CheckExternalLinksBuilder class.    N)deepcopy)datetimetimezone)parsedate_to_datetime)
HTMLParser)path)PriorityQueueQueue)Thread)	AnyDict	GeneratorList
NamedTupleOptionalTupleUnioncast)unquoteurlparse
urlunparse)nodes)Response)ConnectionError	HTTPErrorTooManyRedirects)Sphinx)DummyBuilder)Config)BuildEnvironment)__)SphinxPostTransform)
encode_uriloggingrequests)darkgray	darkgreenpurplered	turquoise)get_node_linez([a-z]+:)?//c                   :    e Zd ZU eed<   eed<   ee         ed<   dS )	HyperlinkuridocnamelinenoN)__name__
__module____qualname__str__annotations__r   int     f/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/builders/linkcheck.pyr-   r-   $   s4         	HHHLLLSMr8   r-   c                   0    e Zd ZU eed<   ee         ed<   dS )CheckRequest
next_check	hyperlinkN)r1   r2   r3   floatr5   r   r-   r7   r8   r9   r;   r;   *   s/         	""""""r8   r;   c                   L    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   dS )CheckResultr.   r/   r0   statusmessagecodeN)r1   r2   r3   r4   r5   r6   r7   r8   r9   r@   r@   /   sF         	HHHLLLKKKKKKLLL
IIIIIr8   r@   c                   $    e Zd ZU eed<   eed<   dS )	RateLimitdelayr<   N)r1   r2   r3   r>   r5   r7   r8   r9   rE   rE   8   s'         LLLr8   rE   Acceptz/text/html,application/xhtml+xml;q=0.9,*/*;q=0.8   g      N@c                   @     e Zd ZdZdeddf fdZdededdfdZ xZS )	AnchorCheckParserz9Specialized HTML parser that looks for a specific anchor.search_anchorreturnNc                 d    t                                                       || _        d| _        d S NF)super__init__rK   found)selfrK   	__class__s     r9   rP   zAnchorCheckParser.__init__K   s,    *


r8   tagattrsc                 H    |D ]\  }}|dv r|| j         k    r
d| _         d S d S )N)idnameT)rK   rQ   )rR   rT   rU   keyvalues        r9   handle_starttagz!AnchorCheckParser.handle_starttagQ   sF     	 	JCn$$$2D)D)D!
	 	r8   )	r1   r2   r3   __doc__r4   rP   r   r[   __classcell__rS   s   @r9   rJ   rJ   H   sz        CCc d      3 s t        r8   rJ   responseanchorrL   c                    t          |          }|                     dd          D ]I}t          |t                    r|                                }|                    |           |j        r nJ|                                 |j        S )zReads HTML data from a response object `response` searching for `anchor`.
    Returns True if anchor was found, False otherwise.
    i   T)
chunk_sizedecode_unicode)rJ   iter_content
isinstancebytesdecodefeedrQ   close)r_   r`   parserchunks       r9   check_anchorrl   X   s     v&&F &&$t&LL  eU## 	#LLNNEE< 	E	
LLNNN<r8   c                   |    e Zd ZdZdZ ed          ZddZdeddfdZ	d	e
d
e
de
dede
ddfdZdeddfdZddZdS )CheckExternalLinksBuilderz+
    Checks for broken external links.
    	linkcheckzCLook for any errors in the above output or in %(outdir)s/output.txtrL   Nc                 J    d| _         i | _        t          j        d           d S )Nr   g      @)broken_hyperlinks
hyperlinkssocketsetdefaulttimeout)rR   s    r9   initzCheckExternalLinksBuilder.initr   s(    !"02 %%%%%r8   resultc                    | j                             |j        d          }||j        |j        |j        |j        |j        d}|                     |           |j        dk    rd S |j        dk    r|j        dk    rd S |j        r(t          
                    d|j        |j        d           |j        d	k    rt|j        r<t          
                    t          d
          |j        z   dz   |j        z              d S t          
                    t          d
          |j        z              d S |j        dk    rYt          
                    t          d          |j        z              |                     d|j        ||j        |j                   d S |j        dk    r9t          
                    t          d          |j        z   |j        z              d S |j        dk    r| j        j        s| j        j        rBt                              t%          d          |j        |j        |j        |j        f           nGt          
                    t'          d          |j        z   t'          d|j        z             z              |                     d|j        ||j        |j        dz   |j        z              | xj        dz  c_        d S |j        dk    r$	 dt*          fdt*          fdt*          fdt,          fdt*          fd|j                 \  }}n# t.          $ r dt*          }}Y nw xY w||d<   | j        j        rBt                              d|j        z   dz   |z   dz   |j        z   |j        |j        f           nEt          
                     |d          |j        z    |d|z   dz   |j        z             z              |                     d|z   |j        ||j        |j        dz   |j        z              d S t5          d |j        z            )!NF)filenamer0   rA   rC   r.   info	uncheckedworkingoldz(%16s: line %4d) T)nonlignoredz
-ignored- z: localz
-local-   z
ok        brokenzbroken link: %s (%s))locationz
broken    z - rH   
redirectedpermanentlyz
with Foundzwith See Othertemporarily)i-  i.  i/  i3  i4  zwith unknown codetextz
redirect  z to zredirected zUnknown status %s.)envdoc2pathr/   r0   rA   rC   r.   rB   write_linkstatloggerry   r&   write_entryr'   appquietwarningiserrorwarningr!   r)   rq   r(   r*   KeyErrorconfiglinkcheck_allowed_redirects
ValueError)rR   rv   rx   linkstatr   colors         r9   process_resultz(CheckExternalLinksBuilder.process_resultx   sE   8$$V^U;; (FM$mV["N, , 	H%%%=K''F=I%%&.E*A*AF= 	WKK+V^V]QUKVVV=I%%~ AH\22VZ?$FWXXXXXH\22VZ?@@@@@]g%%KK..;<<<WfnhvzZZZZZ]i''KK	,//&*<v~MNNNNN]h&&x~ Z!8 Zr"8996:v~)/(G  I I I I C--
:SAW=X=XXYYYXv~x#Z$.?A A A""a'""""]l**	<'0&/*F3'3'0  +ee  < < <2Fe<#HV{6 K|fj85@4G&P%~ .9?8W  Y Y Y Y EE,//&*<!E%$,"7&."HIIJ K K K]T16>8#]FJ,?&.,PR R R R R 1FMABBBs   9L L! L!whatr/   rx   liner.   c           
      R    | j                             |d|d|d|d           d S )N:z: [z] 
)txt_outfilewrite)rR   r   r/   rx   r   r.   s         r9   r   z%CheckExternalLinksBuilder.write_entry   s8    XXXtttTTT333OPPPPPr8   datac                     | j                             t          j        |                     | j                             d           d S )Nr   )json_outfiler   jsondumps)rR   r   s     r9   r   z(CheckExternalLinksBuilder.write_linkstat   s@    
4 0 0111%%%%%r8   c                 "   t          | j        | j                  }t                              d           t          j        | j        d          }t          j        | j        d          }t          |dd          5 | _	        t          |dd          5 | _
        |                    | j                  D ]}|                     |           	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | j        rd| j        _        d S d S )N z
output.txtzoutput.jsonwzutf-8)encodingrH   )HyperlinkAvailabilityCheckerr   r   r   ry   r   joinoutdiropenr   r   checkrr   r   rq   r   
statuscode)rR   checkeroutput_textoutput_jsonrv   s        r9   finishz CheckExternalLinksBuilder.finish   s   .txEEBi\::i];;+sW555 	,9I+sW555	,9=9J!--88 , ,##F++++,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,
 ! 	$"#DH	$ 	$s6   ;C/8CC/C	C/C	 C//C36C3rL   N)r1   r2   r3   r\   rX   r!   epilogru   r@   r   r4   r6   r   dictr   r   r7   r8   r9   rn   rn   j   s          DR ( ) )F& & & &6C[ 6CT 6C 6C 6C 6CpQ Qc QS Q QQ!%Q Q Q Q&4 &D & & & &$ $ $ $ $ $r8   rn   c                   t    e Zd ZdededdfdZddZddZdee	e
f         deeddf         fd	Zd
e	defdZdS )r   r   r   rL   Nc                     || _         || _        i | _        t                      | _        g | _        t                      | _        d | j         j        D             | _	        d S )Nc                 6    g | ]}t          j        |          S r7   recompile.0xs     r9   
<listcomp>z9HyperlinkAvailabilityChecker.__init__.<locals>.<listcomp>   s     NNNA"*Q--NNNr8   )
r   r   rate_limitsr
   rqueueworkersr	   wqueuelinkcheck_ignore	to_ignore)rR   r   r   s      r9   rP   z%HyperlinkAvailabilityChecker.__init__   sS    13*/''%'3@??NN1MNNNr8   c                     t          | j        j                  D ]\}t          | j        | j        | j        | j        | j                  }|                                 | j	        
                    |           ]d S N)ranger   linkcheck_workers HyperlinkAvailabilityCheckWorkerr   r   r   r   startr   append)rR   _ithreads      r9   invoke_threadsz+HyperlinkAvailabilityChecker.invoke_threads   sx    566 	( 	(B5dh6:k4;6:6FH HF LLNNNL''''	( 	(r8   c                     | j                                          | j        D ]0}| j                             t	          t
          d           d           1d S rN   )r   r   r   putr;   CHECK_IMMEDIATELY)rR   _workers     r9   shutdown_threadsz-HyperlinkAvailabilityChecker.shutdown_threads   sY    | 	J 	JGKOOL):DAA5IIII	J 	Jr8   rr   c           	   #     K   |                                   d}|                                D ]u}|                     |j                  r&t	          |j        |j        |j        ddd          V  B| j                            t          t          |          d           |dz  }vd}||k     r&| j                                        V  |dz  }||k     &|                                  d S )Nr   r~   r   FrH   )r   valuesis_ignored_urir.   r@   r/   r0   r   r   r;   r   r   getr   )rR   rr   total_linksr=   dones        r9   r   z"HyperlinkAvailabilityChecker.check   s     #**,, 	! 	!I""9=11 !!)-1BIDT"+R4 4 4 4 4 4 ->	 J JERRRq [  +//#####AID [   	r8   r.   c                 D    t          fd| j        D                       S )Nc              3   B   K   | ]}|                               V  d S r   )match)r   patr.   s     r9   	<genexpr>z>HyperlinkAvailabilityChecker.is_ignored_uri.<locals>.<genexpr>   s-      <<c399S>><<<<<<r8   )anyr   )rR   r.   s    `r9   r   z+HyperlinkAvailabilityChecker.is_ignored_uri   s(    <<<<T^<<<<<<r8   r   )r1   r2   r3   r    r   rP   r   r   r   r4   r-   r   r@   r   boolr   r7   r8   r9   r   r      s        O, Of O O O O O( ( ( (J J J J
 S)^ 4  ;PTVZCZ9[        &=# =$ = = = = = =r8   r   c                   p     e Zd ZdZdededddddeeef         d	d
f fdZ	ddZ
ded	ee         fdZ xZS )r   z;A worker class for checking the availability of hyperlinks.r   r   r   zQueue[CheckResult]r   zQueue[CheckRequest]r   rL   Nc                 4   || _         || _        || _        || _        || _        d | j         j        D             | _        d | j         j        D             | _        d | j         j	        D             | _
        t                                          d           d S )Nc                 6    g | ]}t          j        |          S r7   r   r   s     r9   r   z=HyperlinkAvailabilityCheckWorker.__init__.<locals>.<listcomp>  s6     N N N#$  "z!}} N N Nr8   c                 6    g | ]}t          j        |          S r7   r   )r   docs     r9   r   z=HyperlinkAvailabilityCheckWorker.__init__.<locals>.<listcomp>  s6     "V "V "V&) #%*S// "V "V "Vr8   c                 @    g | ]\  }}t          j        |          |fS r7   r   )r   pattern	auth_infos      r9   r   z=HyperlinkAvailabilityCheckWorker.__init__.<locals>.<listcomp>  s8     4 4 4:L'9bj))95 4 4 4r8   T)daemon)r   r   r   r   r   linkcheck_anchors_ignoreanchors_ignorelinkcheck_exclude_documentsdocuments_excludelinkcheck_authauthrO   rP   )rR   r   r   r   r   r   rS   s         r9   rP   z)HyperlinkAvailabilityCheckWorker.__init__   s    &N N(,(LN N N"V "V-1[-T"V "V "V4 424 4 4	 	%%%%%r8   c           
         
 i  j         j        r j         j        d<   dt          t          t          f         f fddt          t          t          t
          f         f
 fddt          dt          dt          f fd
dt          dt          t          t          t
          f         f fd	}	  j                                        }	 |\  }d S \  }}n# t          $ r
 |\  }}}Y nw xY wd S t                    j        }	  j        |         j        }n# t          $ r Y nw xY w|t          j                    k    r\t          j        t"                      j                            t'          |          d            j                                          ||          \  }}}	|dk    r;t*                              t/          d          z   t/          d          z              n, j                            t3          |||||	                      j                                         )NtimeoutrL   c                     t                    } | j        d| j        | j        d| j        ddg}|D ]M}|j        j        v r=t          t                    }|                    j        j        |                    |c S Ni S )N:///*)r   schemenetlocr   linkcheck_request_headersr   DEFAULT_REQUEST_HEADERSupdate)url
candidatesuheadersrR   r.   s       r9   get_request_headerszAHyperlinkAvailabilityCheckWorker.run.<locals>.get_request_headers  s    3--C'*zzz3::>(+


CJJJ?J
   # #===&'>??GNN4;#H#KLLL"NNN >
 Ir8   c                     dv r=                     dd          \  } }j        D ]}|                    |          rd } nn} d }	 |                     d           n# t          $ r t          |           } Y nw xY wj        D ]\  }}|                              r nd }             d<   	 |rzj        j        rnt          j
        | fdj        |d}|                                 t          |t          |                    }|st          t          d          |z            n	 t          j        | fdj        |d}|                                 ny# t"          t$          t&          f$ r_}t)          |t$                    r|j        j        d	k    r t          j
        | fdj        |d}|                                 Y d }~nd }~ww xY wt/          |           j        }	 j        |= n# t4          $ r Y n w xY w# t$          $ r}|j        j        d
k    rY d }~dS |j        j        d	k    rb                    |j                  }	|	/j                            t=          |	          d           Y d }~dS dt?          |          dfcY d }~S |j        j        dk    rdt?          |          dfcY d }~S dt?          |          dfcY d }~S d }~wt          $ r}dt?          |          dfcY d }~S d }~ww xY w|j         !                    d          | !                    d          k    rdS |j         }
|r|
d|z   z  }
 | |
          rdS |j"        r|j"        d         j        }d|
|fS d|
dfS )N#rH   asciir   T)streamr   r   zAnchor '%s' not found)allow_redirectsr   r   i  i  )r{   z - unauthorizedr   F)rate-limitedr   r   r   r   i  r~   r   r{   r   r   r   )#splitr   r   encodeUnicodeErrorr#   r   r   linkcheck_anchorsr%   r   raise_for_statusrl   r   	Exceptionr!   headr   r   r   re   r_   status_coder   r   r   r   
limit_rater   r   r;   r4   r   rstriphistory)req_urlr`   rexr   r   r_   rQ   errr   r<   new_urlrC   allowed_redirectr   r=   kwargsrR   r.   s               r9   	check_uriz7HyperlinkAvailabilityCheckWorker.run.<locals>.check_uri  s   czz"%))C"3"3.  Cyy(( !% .w'''' . . .$W--. '+i ! !"==%% E !	 !4 3 5 5F93 4dk; 4'|G  FD1: F  F>D F  FH--///(76??CCE  N'+B(C(Cf(LMMMN4 $,= $;$8<)$; $;39$; $; !113333 ,Y8HI 4 4 4%c955 "#,:RVY:Y:Y! $,< $J7;{5>$J $JBH$J $J !113333333346 "'**1(00   D+  1 1 1<+s22::::::\-44!%!>!>J!-Z(K(KUSSS444444#SXXq0000000\-44$c#hh1111111#SXXq0000000 - - -S1,,,,,,,- |""3''7>>#+>+>>>''", ,sV|+G##GW55 4++% 4#+B/;D'$66'!33s   A A:9A:1A<H ./E H G5AG
H GH ,G6 6
HH
L K'AKKL !K:L  KL L $K;5L ;L r   r  c                     j         j                                        D ]2\  }}|                    |           r|                    |          r dS 3dS )NTF)r   r   itemsr   )r   r  from_urlto_urlrR   s       r9   r  z>HyperlinkAvailabilityCheckWorker.run.<locals>.allowed_redirect~  s\    $(K$K$Q$Q$S$S     &>>#&&  6<<+@+@  445r8   r/   c                 <   j         D ]+}|                    |           r|  d|j         d}d|dfc S ,t          	          dk    s	                    d          rdS 	                    d          sst
                              	          rdS t          j        j        	                    |                     }t          j
        t          j        |	                    rdS d	S t          j        j                  D ]}             \  }}}|d
k    r n|||fS )Nz	 matched z! from linkcheck_exclude_documentsr~   r   )r   zmailto:ztel:)rz   r   r   )zhttp:zhttps:r  )r   r   r   r   )r   r   r   len
startswithuri_rer   dirnamer   r   existsr   r   r   linkcheck_retries)
r/   doc_matcherry   srcdir_rA   rC   r  rR   r.   s
          r9   r   z3HyperlinkAvailabilityCheckWorker.run.<locals>.check  s`     $5 . .$$W-- ." 6 6[-@ 6 6 6  %dA----. 3xx1}}/G H H}))^^$788 	/<<$$ /--!\$(*;*;G*D*DEEF{49VS#9#9:: ///. 4;899  %.Y[["dX%%E & D$''r8   TFr  z-rate limited-   z | sleeping...)r   linkcheck_timeoutr   r4   r   r6   r   r   r   r   r   r   r   r<   r   timesleepQUEUE_POLL_SECSr   r;   	task_doner   ry   r&   r   r@   )rR   r   check_requestr<   r/   r0   r   rA   ry   rC   r  r  r   r=   r  r.   s   `         @@@@@@r9   runz$HyperlinkAvailabilityCheckWorker.run
  s   ;( 	> $ =F9	T#s(^ 	 	 	 	 	 	 	^	45c3/ ^	4 ^	4 ^	4 ^	4 ^	4 ^	4 ^	4 ^	4 ^	4 ^	4 ^	4@	# 	 	 	 	 	 	 	 		(3 	(5c3#7 	( 	( 	( 	( 	( 	( 	( 	(@#	$ KOO--MA(5%
I$E'0$Wff A A A3@0
C&&&A {c]])F
 "-f5@

   DIKK'' 
?+++Z C CUKKK%%'''!&wFD$''H%899C?(K[B\B\\]]]]C&&$PT U UVVVK!!###G#	$s*   C# C# #C76C7D& &
D32D3r_   c                    d }|j                             d          }|r	 t          |          }t          j                    |z   }n# t          $ rr 	 t          |          }t          j        |          }|t          j        t          j
                  z
                                  }n# t          t          f$ r Y nw xY wY nw xY wt          |j                  j        }|j| j        j        }	 | j        |         }|j        }	d|	z  }||k    r|	|k     r|}n# t(          $ r
 t*          }Y nw xY w||k    rd S t          j                    |z   }t-          ||          | j        |<   |S )NzRetry-Afterg       @)r   r   r>   r'  r   r   r   	timestampnowr   utctotal_seconds	TypeErrorr   r   r   r   linkcheck_rate_limit_timeoutr   rF   r   DEFAULT_DELAYrE   )
rR   r_   r<   retry_afterrF   untilr   	max_delay
rate_limitlast_wait_times
             r9   r  z+HyperlinkAvailabilityCheckWorker.limit_rate  s   
&**=99 	11k** "Y[[50

  
Q 
Q 
Q	Q1+>>E "*!3E!:!:J"X\(,%?%??NNPPEE ":.    D	
Q (,''.@I&!-f5
 ",!1n,9$$))C)C%E  & & &%& y  tu,J#,UJ#?#? sH   A 
CB( AC(B<9C;B<<CC-D D)(D)r   )r1   r2   r3   r\   r    r   r   r4   rE   rP   r,  r   r   r>   r  r]   r^   s   @r9   r   r      s        EE&, &f &FZ &.&=A#y.=Q&VZ& & & & & &"~$ ~$ ~$ ~$@$8 $ $ $ $ $ $ $ $ $r8   r   c                   &    e Zd ZdZdZdeddfdZdS )HyperlinkCollector)ro      r  rL   Nc                 R    t          t           j        j                  }|j        dt
          dt          j        dd f fd} j        	                    t          j
                  D ]}d|vr|d         } |||            j        	                    t          j                  D ]/}|d                             d          }|rd|v r |||           0 j        	                    t          j                  D ])}|                    d	          }|rd|v r |||           *d S )
Nr.   noderL   c                     j                             d|           }|r|} t          |          }t          | j        j        |          }| vr|| <   d S d S )Nlinkcheck-process-uri)r   emit_firstresultr+   r-   r   r/   )r.   r>  newurir0   uri_inforr   rR   s        r9   add_uriz'HyperlinkCollector.run.<locals>.add_uri  sk    X../FLLF "4((F dh&6??H*$$"*
3 %$r8   refurir   ?r   source)r   rn   r   builderrr   r4   r   Elementdocumentfindall	referenceimager   raw)	rR   r  rH  rD  refnoder.   imgnoderawnoderr   s	   `       @r9   r,  zHyperlinkCollector.run  sj   0$(2BCC'
	+ 	+EM 	+d 	+ 	+ 	+ 	+ 	+ 	+ 	+ },,U_== 	" 	"Gw&&(#CGC!!!! },,U[99 	& 	&G,'++C00C &u||W%%% },,UY77 	& 	&G++h''C &u||W%%%	& 	&r8   )r1   r2   r3   buildersdefault_priorityr   r,  r7   r8   r9   r;  r;    sA        H&C &D & & & & & &r8   r;  r   r.   c                     t          |          }|j        dk    rP|j        rI|j                            d          }|s-d|j         }t	          |                    |                    S dS )zRewrite anchor name of the hyperlink to github.com

    The hyperlink anchors in github.com are dynamically generated.  This rewrites
    them before checking and makes them comparable.
    z
github.comzuser-content-)fragmentN)r   hostnamerU  r  r   _replace)r   r.   parsedprefixedrU  s        r9   rewrite_github_anchorrZ    sq     c]]F,&&6?&?--o>> 	B8v88Hfooxo@@AAA4r8   r   c                    t          | j        j                                                  D ]\  }}	 t	          j        |          | j        j        t	          j        |          <   nO# t          j        $ r=}t                              t          d          |j
        |j                   Y d}~nd}~ww xY w| j        j                            |           # | j        j                            |           w xY wdS )zFCompile patterns in linkcheck_allowed_redirects to the regexp objects.z=Failed to compile regex in linkcheck_allowed_redirects: %r %sN)listr   r   r  r   r   errorr   r   r!   r   msgpop)r   r   r   r   excs        r9   #compile_linkcheck_allowed_redirectsra  &  s   SZCIIKKLL < <W	<FHjQXFYFYCJ22:c??CCx 	1 	1 	1NN2]^^;1 1 1 1 1 1 1 1	1
 J266s;;;;CJ266s;;;;< <s/   3A&%C&B253B-(C-B22C!C6c                    |                      t                     |                     t                     |                     dg d           |                     dg d           |                     di d           |                     dg d           |                     di d           |                     ddd           |                     d	d dt
          g           |                     d
dd           |                     ddd           |                     ddgd           |                     ddd           |                     d           |                     dt          d           ddddS )Nr   Fr   r   r   r   r"  rH   r&  r      r	  Tr   z^!r3  g     r@r@  zconfig-initedr<  )prioritybuiltin)versionparallel_read_safeparallel_write_safe)	add_builderrn   add_post_transformr;  add_config_valuer6   	add_eventconnectra  )r   s    r9   setuprn  3  s   OO-...-...+R7776EBBB6EBBB)2u5554b%@@@,a777,dEC5AAA,a777,dE::: 3dVUCCC7FFFMM)***KK!DsKSSS "#  r8   )\r\   r   r   rs   r'  copyr   r   r   email.utilsr   html.parserr   osr   queuer	   r
   	threadingr   typingr   r   r   r   r   r   r   r   r   urllib.parser   r   r   docutilsr   r%   r   requests.exceptionsr   r   r   sphinx.applicationr   sphinx.builders.dummyr   sphinx.configr   sphinx.environmentr    sphinx.localer!   !sphinx.transforms.post_transformsr"   sphinx.utilr#   r$   sphinx.util.consoler&   r'   r(   r)   r*   sphinx.util.nodesr+   	getLoggerr1   r   r   r  r-   r;   r@   rE   r>   r4   r6   CheckRequestTyper   r   r)  r4  rJ   r   rl   rn   r   r   r;  rZ  ra  rn  r7   r8   r9   <module>r     s   * *  				         ' ' ' ' ' ' ' ' - - - - - - " " " " " "       & & & & & & & &       W W W W W W W W W W W W W W W W W W W W W W 6 6 6 6 6 6 6 6 6 6             L L L L L L L L L L % % % % % % . . . . . .             / / / / / /       A A A A A A 5 5 5 5 5 5 5 5 5 5 K K K K K K K K K K K K K K + + + + + +		8	$	$	N	#	#    
   # # # # #: # # #
    *       
    uUCc-A'BBC  ?       
    8,5 s t    $Z$ Z$ Z$ Z$ Z$ Z$ Z$ Z$z,= ,= ,= ,= ,= ,= ,= ,=^x x x x xv x x xv#& #& #& #& #&, #& #& #&Lv C HSM    
<V 
<V 
< 
< 
< 
< 
<v $sCx.      r8   