
    zi_                       d Z ddlmZ ddl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 ddlmZmZ ddlmZ ddlmZmZmZ dd	lmZmZmZmZ dd
lmZ ddlmZmZ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)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4 er"ddl5m6Z6m7Z7 ddlm8Z8m9Z9 ddl*m:Z: ddl;m<Z< ddl=m>Z>  e)j?        e@          ZA ejB        d          ZCddiZDdZEdZFdZG G d de"          ZH G d d e&          ZIdPd,ZJ G d- d.e          ZK G d/ d0          ZL G d1 d2e          ZM G d3 d4e          ZN G d5 d6e          ZOdQd:ZPdRd?ZQ G d@ dAe	          ZRdSdFZS G dG dHe          ZTdTdJZUdUdMZVdVdOZWdS )Wz$The CheckExternalLinksBuilder class.    )annotationsN)
HTMLParser)path)PriorityQueueQueue)Thread)TYPE_CHECKING
NamedTuplecast)unquoteurlparseurlsplit
urlunparse)nodes)ConnectionError	HTTPErrorSSLErrorTooManyRedirects)DummyBuilder)__)SphinxPostTransform)
encode_uriloggingrequests)darkgray	darkgreenpurplered	turquoise)rfc1123_to_epoch)get_node_line)	GeneratorIterator)AnyCallable)Response)Sphinx)Configz([a-z]+:)?//Acceptz/text/html,application/xhtml+xml;q=0.9,*/*;q=0.8   g      N@c                  T    e Zd ZdZdZ ed          ZddZddZdd
Z	d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.txtreturnNonec                J    d| _         i | _        t          j        d           d S )Nr   g      @)broken_hyperlinks
hyperlinkssocketsetdefaulttimeout)selfs    d/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/sphinx/builders/linkcheck.pyinitzCheckExternalLinksBuilder.init?   s(    !"02 %%%%%    c                   t          | 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)encodingr*   )HyperlinkAvailabilityCheckerconfigloggerinfor   joinoutdiropentxt_outfilejson_outfilecheckr2   process_resultr1   app
statuscode)r5   checkeroutput_textoutput_jsonresults        r6   finishz CheckExternalLinksBuilder.finishE   s{   .t{;;Bi\::i];;+sW555 	,9I+sW555	,9=9J!--88 , ,##F++++,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,
 ! 	$"#DH	$ 	$s6   5C)8CC)C	C)C	C))C-0C-rM   CheckResultc                   | 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)filenamelinenostatuscodeurir@   	uncheckedworkingoldz(%16s: line %4d) T)nonlignoredz
-ignored- z: localz
-local-   z
ok        brokenzbroken link: %s (%s))locationz
broken    z - r*   
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doc2pathdocnamerR   rS   rT   rU   messagewrite_linkstatr?   r@   r   write_entryr   rH   quietwarningiserrorwarningr   r   r1   r   r   KeyErrorr>   linkcheck_allowed_redirects
ValueError)r5   rM   rQ   linkstatra   colors         r6   rG   z(CheckExternalLinksBuilder.process_resultS   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!datadictc                    | j                             t          j        |                     | j                             d           d S )N
)rE   writejsondumps)r5   rp   s     r6   rf   z(CheckExternalLinksBuilder.write_linkstat   s@    
4 0 0111%%%%%r8   whatstrrd   rQ   lineintrU   c           
     R    | j                             | d| d| d| d           d S )N:z: [z] rs   )rD   rt   )r5   rw   rd   rQ   ry   rU   s         r6   rg   z%CheckExternalLinksBuilder.write_entry   s@    (EETEEdEEcEEEFFFFFr8   Nr.   r/   )rM   rO   r.   r/   )rp   rq   r.   r/   )rw   rx   rd   rx   rQ   rx   ry   rz   rU   rx   r.   r/   )__name__
__module____qualname____doc__namer   epilogr7   rN   rG   rf   rg    r8   r6   r,   r,   7   s          DR ( ) )F& & & &$ $ $ $6C 6C 6C 6Cp& & & &G G G G G Gr8   r,   c                      e Zd ZdZdZd	dZdS )
HyperlinkCollector)r-      kwargsr$   r.   r/   c                t   t          t          | j        j                  }|j        }| j        j        }| j                            t          j
                  D ]&}d|v r |d         }t          | j        ||||           '| j                            t          j                  D ];}|d                             d          }|rd|v rt          | j        ||||           <| j                            t          j                  D ]5}|                    d          }|rd|v rt          | j        ||||           6d S )Nrefuri
candidates?://source)r   r,   rH   builderr2   rb   rd   documentfindallr   	reference_add_uriimagegetraw)	r5   r   r   r2   rd   refnoderU   imgnoderawnodes	            r6   runzHyperlinkCollector.run   sO   0$(2BCC'
(" },,U_== 	F 	FG7""h'3WEEE },,U[99 	F 	FG,'++C00C Fu||3WEEE },,UY77 	F 	FG++h''C Fu||3WEEE	F 	Fr8   N)r   r$   r.   r/   )r~   r   r   buildersdefault_priorityr   r   r8   r6   r   r      s9        HF F F F F Fr8   r   rH   r'   rU   rx   nodenodes.Elementr2   dict[str, Hyperlink]rd   r.   r/   c                    |                      d|          x}r|}	 t          |          }n# t          $ r d}Y nw xY w||vr/t          ||| j                            |          |          ||<   d S d S )Nlinkcheck-process-uri)emit_firstresultr!   rm   	Hyperlinkrb   rc   )rH   rU   r   r2   rd   newurirR   s          r6   r   r      s    %%&=sCCCv t$$    *#C#'2B2B72K2KVTT
3 s   , ;;c                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )r   rx   rU   rd   docpathrz   rR   Nr~   r   r   __annotations__r   r8   r6   r   r      s4         HHHLLLLLLKKKKKr8   r   c                  6    e Zd ZddZdd	Zdd
ZddZddZdS )r=   r>   r(   r.   r/   c                    || _         i | _        t                      | _        g | _        t                      | _        |j        | _        t          t          t          j        | j         j                            | _        d S N)r>   rate_limitsr   rqueueworkersr   wqueuelinkcheck_workersnum_workerslistmaprecompilelinkcheck_ignore	to_ignore)r5   r>   s     r6   __init__z%HyperlinkAvailabilityChecker.__init__   sj    13*/''%'3@?? & 804S9=9U6W 6W 1X 1Xr8   r2   r   "Generator[CheckResult, None, None]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   rZ   r:   Fr*   )invoke_threadsvaluesis_ignored_urirU   rO   rd   rR   r   putCheckRequestCHECK_IMMEDIATELYr   r   shutdown_threads)r5   r2   total_links	hyperlinkdones        r6   rF   z"HyperlinkAvailabilityChecker.check   s     #**,, 	! 	!I""9=11 !!)-1BIDT"+R4 4 4 4 4 4 ->	 J JERRRq [  +//#####AID [   	r8   c                    t          | j                  D ]V}t          | j        | j        | j        | j                  }|                                 | j        	                    |           Wd S r   )
ranger    HyperlinkAvailabilityCheckWorkerr>   r   r   r   startr   append)r5   _ithreads      r6   r   z+HyperlinkAvailabilityChecker.invoke_threads   sr    ()) 	( 	(B5dk6:k4;6:6FH HF LLNNNL''''	( 	(r8   c                    | j                                          | j        D ]0}| j                             t	          t
          d           d           1d S NF)r   rA   r   r   r   r   )r5   _workers     r6   r   z-HyperlinkAvailabilityChecker.shutdown_threads   sY    | 	J 	JGKOOL):DAA5IIII	J 	Jr8   rU   rx   boolc                D    t          fd| j        D                       S )Nc              3  B   K   | ]}|                               V  d S r   match).0patrU   s     r6   	<genexpr>z>HyperlinkAvailabilityChecker.is_ignored_uri.<locals>.<genexpr>   s-      <<c399S>><<<<<<r8   )anyr   )r5   rU   s    `r6   r   z+HyperlinkAvailabilityChecker.is_ignored_uri   s(    <<<<T^<<<<<<r8   N)r>   r(   r.   r/   )r2   r   r.   r   r}   )rU   rx   r.   r   )r~   r   r   r   rF   r   r   r   r   r8   r6   r=   r=      s        	X 	X 	X 	X       &( ( ( (J J J J
= = = = = =r8   r=   c                  $    e Zd ZU ded<   ded<   dS )r   float
next_checkzHyperlink | Noner   Nr   r   r8   r6   r   r      s*         r8   r   c                  L    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   d	S )
rO   rx   rU   rd   rz   rR   rS   re   rT   Nr   r   r8   r6   rO   rO      sF         HHHLLLKKKKKKLLLIIIIIr8   rO   c                  L     e Zd ZdZd fdZd dZd!dZd"dZd#dZd$dZ	 xZ
S )%r   z;A worker class for checking the availability of hyperlinks.r>   r(   r   Queue[CheckResult]r   Queue[CheckRequest]r   dict[str, RateLimit]r.   r/   c                   || _         || _        || _        t          t	          t
          j        |j                            | _        t          t	          t
          j        |j	                            | _
        t          t	          t
          j        |j                            | _        d |j        D             | _        |j        | _        |j        | _        |j        | _        |  |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        t=          j                    | _         tC                      "                    d           d S )Nc                @    g | ]\  }}t          j        |          |fS r   )r   r   )r   pattern	auth_infos      r6   
<listcomp>z=HyperlinkAvailabilityCheckWorker.__init__.<locals>.<listcomp>  s8     / / /:L'9bj))95 / / /r8   T)daemon)#r   r   r   r   r   r   r   linkcheck_anchors_ignoreanchors_ignore linkcheck_anchors_ignore_for_urlanchors_ignore_for_urllinkcheck_exclude_documentsdocuments_excludelinkcheck_authauthlinkcheck_timeouttimeoutlinkcheck_request_headersrequest_headerslinkcheck_anchorscheck_anchorsrl   allowed_redirectslinkcheck_retriesretrieslinkcheck_rate_limit_timeoutrate_limit_timeout
user_agent
tls_verifytls_cacertsr   _Session_sessionsuperr   )r5   r>   r   r   r   	__class__s        r6   r   z)HyperlinkAvailabilityCheckWorker.__init__  sF    '59
F;<<6> 6>=A
FCDD>F >F#8<
F>??9A 9A/ /-/ / /	 ,2+C:@:Z#)#;F!'!C"4"("E + +!- )++%%%%%r8   c           
     h   	 | j                                         \  }}|| j                                         d S |\  }}}}|d S t	          |          j        }t          j        t                    5  | j	        |         j
        }d d d            n# 1 swxY w Y   |t          j                    k    r]t          j        t                     | j                             t          ||          d           | j                                          |                     |||          \  }}	}
|dk    r;t$                              t)          d          |z   t)          d          z              n,| j                            t-          |||||	|
                     | j                                          )NTFrate-limitedz-rate limited-   z | sleeping...)r   r   r   closer   netloc
contextlibsuppressrk   r   r   timesleepQUEUE_POLL_SECSr   r   	task_done_checkr?   r@   r   r   rO   )r5   r   r   rU   rd   _docpathrR   r  rS   r@   rT   s              r6   r   z$HyperlinkAvailabilityCheckWorker.run'  s   	$$(KOO$5$5!J	 ##%%%-6*C(F{c]])F$X.. A A
 "-f5@
A A A A A A A A A A A A A A A DIKK'' 
?+++Z C CUKKK%%'''!%Wc9!E!EFD$''H%899C?(K[B\B\\]]]]C&&$PT U UVVVK!!###=	$s   3BBBrd   rx   rU   r   r   tuple[str, str, int]c                .   | j         D ]+}|                    |          r| d|j         d}d|dfc S ,t          |          dk    s|                    d          rdS |                    d          s`t
                              |          rdS t          j        |j                  }t          j	        t          j
        ||                    rdS d	S d
\  }}}t          | j                  D ]$}	|                     ||          \  }}}|dk    r n%|||fS )Nz	 matched z! from linkcheck_exclude_documentsrZ   r   )#zmailto:ztel:)rV   r:   r   )zhttp:zhttps:rW   r:   r   )r\   r:   r   )r:   r:   r   r\   )r   r   r   len
startswithuri_rer   dirnamer   existsrA   r   r   
_check_uri)
r5   rd   rU   r   doc_matcherr@   src_dirrS   rT   _s
             r6   r  z'HyperlinkAvailabilityCheckWorker._checkH  sc     1 	* 	*K  )) * 2 2)< 2 2 2  !$))))* s88q==CNN+CDD=%%~~122 	#||C   *))l9#455G{49Wc2233 (''"? 'dt|$$ 	 	A!%i!@!@FD$!! " tT!!r8   r   r   anchorIterator[tuple[Callable, dict]]c              #  Z   K   |r|s| j         j        ddifV  | j         j        ddifV  d S )Nallow_redirectsTstream)r   headr   )r5   r   r  s      r6   _retrieval_methodsz3HyperlinkAvailabilityCheckWorker._retrieval_methodsh  sV        	@F 	@-$'8$&?????m(D!1111111r8   c           	        |                     d          \  }}}|rH|rF| j        D ]}|                    |          rd} n$| j        D ]}|                    |          rd} n	 |                    d           n# t
          $ r t          |          }Y nw xY w| j        D ]\  }}|                    |          r nd }t          || j	                  }	d}
d}dx}}| 
                    | j        |          D ]\  }}	  |d|||	| j        d|| j        | j        | j        fd5 }| j        r9|j        r2|r0t#          ||          s t%          t'          d|d                    d d d            n# 1 swxY w Y   |j        }|j        r|j        d         j        nd }|j                            d	          }|j         }|                                 ~ n# t4          $ r}d
t7          |          dfcY d }~c S d }~wt8          t:          f$ r}t7          |          }
Y d }~/d }~wt<          $ r}t7          |          }
|dk    rY d }~ dS |dk    rT|                     ||          x}r0| j         !                    tE          ||          d           Y d }~ dS d
|
dfcY d }~c S |dk    rY d }~ dS Y d }~d }~wt$          $ r}d
t7          |          dfcY d }~c S d }~ww xY wd
|
dfS tG          |          j$        }| j%        &                    |d            |'                    d          |'                    d          k    stQ          ||| j)                  rdS |d||fS d|dfS )Nr  r:   asciir   )urlr   headersr   )_user_agent	_tls_infozAnchor z
 not foundzRetry-Afterr\   r   i  )rW   unauthorizedr   i  F)r  r:   r   i  )rZ   zservice unavailabler   /r  r^   r   )*	partitionr   r   r   encodeUnicodeErrorr   r   _get_request_headersr   r   r   r   r   r   r   okcontains_anchor	Exceptionr   status_codehistoryr$  r   r#  raise_for_statusr   rx   r   r   r   
limit_rater   r   r   r   r  r   poprstrip_allowed_redirectr   )r5   rU   r   req_url	delimiterr  rexr   r   r$  error_messager0  response_urlretry_afterretrieval_methodr   responseredirect_status_codeerrr   r  s                        r6   r  z+HyperlinkAvailabilityCheckWorker._check_urio  s2   %(]]3%7%7"F 		 		*  99V$$ FE  6  Cyy)) !#
	*NN7#### 	* 	* 	* ))GGG	* #') 	 	GY}}S!!  I 'sD,@AA %''{(,(?(?@RTZ([([ >	. >	.$f8-%% i# L  	
 !%#0@A    
L * Lx{ Lv L$3Hf$E$EL'+IV+I+I+I(J(JKKK
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
L 
L '2KSK['ex'7';'G'Gae$&.22=AA"*,0))+++ - - -S1,,,,,,,,,#%56    !$C    #C #%%7777777 #%%%)__\;%O%OOz 5Z(K(KUSSS4444444#]A555555555 #%%>>>>>>>  - - -  S1,,,,,,,,,- ]A-- '"")VT***  %%)<)<<<$Wl%)%;= = = $#!-/CCCq00s   %A; ;BB?(G'AE4(G4E8	8G;E8	<AG
K(%G>6K(>K(H''K(4J=AJ=J="K(*J==K(
K#K(#K(r;  r<  float | Nonec                4   t           }d }|ru	 t          |          }t          j                    |z   }nN# t          $ rA 	 t	          |          }|t          j                    z
  }n# t          t
          f$ r Y nw xY wY nw xY wt          |          j        }|i| j        }	 | j	        |         }|j
        }d|z  }||cxk    r|k    rn n|}n# t          $ r
 t           }Y nw xY w||k    rd S t          j                    |z   }t          ||          | j	        |<   |S )Ng       @)DEFAULT_DELAYr   r  rm   r    	TypeErrorr   r  r   r   delayrk   	RateLimit)	r5   r;  r<  rE  r   r  	max_delay
rate_limitlast_wait_times	            r6   r3  z+HyperlinkAvailabilityCheckWorker.limit_rate  s{   
 	11k** "Y[[50

  	5 	5 	55!1+!>!>J '4EE #I.    D		5 ,''./I&!-f5
 ",!1n,95555~55555%E  & & &%& y  tu,J#,UJ#?#? sD   3 
A>A$A>$A85A>7A88A>=A>C CC)
r>   r(   r   r   r   r   r   r   r.   r/   r}   )rd   rx   rU   rx   r   r   r.   r  )r   r   r  rx   r.   r  )rU   rx   r   r   r.   r  )r;  rx   r<  rx   r.   rA  )r~   r   r   r   r   r   r  r   r  r3  __classcell__r   s   @r6   r   r     s        EE& & & & & &B$ $ $ $B" " " "@2 2 2 2p1 p1 p1 p1d# # # # # # # #r8   r   r   dict[str, dict[str, str]]dict[str, str]c                    t          |           }|j         d|j         |j         d|j         d| df}|D ]}||v ri t          ||         c S i S )Nr   r(  *)r   schemer  DEFAULT_REQUEST_HEADERS)rU   r   r#  r   us        r6   r,  r,    s     3--CZ00CJ00Z11CJ111J
  E ED-D1CDDDD  Ir8   r>  r&   r  r   c                2   t          t          |                    }|                     dd          D ]I}t          |t                    r|                                }|                    |           |j        r nJ|                                 |j        S )z<Determine if an anchor is contained within an HTTP response.i   T)
chunk_sizedecode_unicode)	AnchorCheckParserr   iter_content
isinstancebytesdecodefeedfoundr  )r>  r  parserchunks       r6   r.  r.    s     wv//F &&$t&LL  eU## 	#LLNNEE< 	E	
LLNNN<r8   c                  ,     e Zd ZdZd fdZdd
Z xZS )rV  z9Specialised HTML parser that looks for a specific anchor.search_anchorrx   r.   r/   c                d    t                                                       || _        d| _        d S r   )r   r   r`  r\  )r5   r`  r   s     r6   r   zAnchorCheckParser.__init__+  s,    *


r8   tagr$   attrsc                H    |D ]\  }}|dv r|| j         k    r
d| _         d S d S )N)idr   T)r`  r\  )r5   rb  rc  keyvalues        r6   handle_starttagz!AnchorCheckParser.handle_starttag1  sF     	 	JCn$$$2D)D)D!
	 	r8   )r`  rx   r.   r/   )rb  r$   rc  r$   r.   r/   )r~   r   r   r   r   rh  rJ  rK  s   @r6   rV  rV  (  sW        CC            r8   rV  r#  new_urlr   &dict[re.Pattern[str], re.Pattern[str]]c                b     t           fd|                                D                       S )Nc              3  r   K   | ]1\  }}|                               o|                               V  2d S r   r   )r   from_urlto_urlri  r#  s      r6   r   z$_allowed_redirect.<locals>.<genexpr>:  sX        Hf 	s5W 5 5     r8   )r   items)r#  ri  r   s   `` r6   r6  r6  8  sO          ""$$     r8   c                  $    e Zd ZU ded<   ded<   dS )rF  r   rE  r   Nr   r   r8   r6   rF  rF  A  s'         LLLr8   rF  
str | Nonec                    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   hostnamers  r  r   _replace)rH   rU   parsedprefixedrs  s        r6   rewrite_github_anchorrx  F  sq     c]]F,&&6?&?--o>> 	B8v88Hfooxo@@AAA4r8   r>   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)r   r>   rl   ro  r   r   errorr?   rj   r   r   msgr4  )rH   r>   r#  r   excs        r6   #compile_linkcheck_allowed_redirectsr}  U  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dict[str, Any]c                8   |                      t                     |                     t                     |                     dg d           |                     dg d           |                     di d           |                     dg d           |                     di d           |                     ddd           |                     d	d dt
          t          g           |                     d
dd           |                     ddd           |                     ddgd           |                     dddt          t          f           |                     ddd           | 	                    d           | 
                    dt          d           ddddS )Nr   Fr   rl   r   r   r   r*   r   r      r   Tr   z^!r   r   r   g     r@r   zconfig-initedr   )prioritybuiltin)versionparallel_read_safeparallel_write_safe)add_builderr,   add_post_transformr   add_config_valuerz   r   tupler   	add_eventconnectr}  )rH   s    r6   setupr  b  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,dEC<HHH,a777,dE::: 3dVUCCC;RPTVVV7FFFMM)***KK!DsKSSS "#  r8   )rH   r'   rU   rx   r   r   r2   r   rd   rx   r.   r/   )rU   rx   r   rL  r.   rM  )r>  r&   r  rx   r.   r   )r#  rx   ri  rx   r   rj  r.   r   )rH   r'   rU   rx   r.   rq  )rH   r'   r>   r(   r.   r/   )rH   r'   r.   r~  )Xr   
__future__r   r  ru   r   r3   r  html.parserr   osr   queuer   r   	threadingr   typingr	   r
   r   urllib.parser   r   r   r   docutilsr   requests.exceptionsr   r   r   r   sphinx.builders.dummyr   sphinx.localer   !sphinx.transforms.post_transformsr   sphinx.utilr   r   r   sphinx.util.consoler   r   r   r   r   sphinx.util.http_dater    sphinx.util.nodesr!   collections.abcr"   r#   r$   r%   r&   sphinx.applicationr'   sphinx.configr(   	getLoggerr~   r?   r   r  rQ  r   r	  rC  r,   r   r   r   r=   r   rO   r   r,  r.  rV  r6  rF  rx  r}  r  r   r8   r6   <module>r     s   * * " " " " " "      				   " " " " " "       & & & & & & & &       2 2 2 2 2 2 2 2 2 2 @ @ @ @ @ @ @ @ @ @ @ @       V V V V V V V V V V V V . . . . . .       A A A A A A 5 5 5 5 5 5 5 5 5 5              3 2 2 2 2 2 + + + + + + %33333333$$$$$$$$!!!!!!))))))$$$$$$		8	$	$	N	#	# ?   ZG ZG ZG ZG ZG ZG ZG ZGzF F F F F, F F F8U U U U    
   -= -= -= -= -= -= -= -=`         :      
    *   A A A A Av A A AH       "    
           
   
   
< 
< 
< 
<     r8   