
    Feq                       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	Z	ddl
mZ ddlmZmZ ddlmZm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mZ ddl m!Z! ddl"m#Z#m$Z$ ddl%m&Z&m'Z' ddl(m)Z) erUddl*m+Z+ ddl,m-Z- ddlm.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4 ddlm5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z?m@Z@mAZA eBe0eCdf   eDe?f   ZE e#j                  eG      ZH G d d      ZId8dZJd9dZKd8dZLd:d ZM	 	 	 	 	 	 	 	 	 	 	 	 	 	 d;d!ZNd<d"ZO	 	 	 	 	 	 	 	 d=d#ZP	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d>d$ZQ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d?d%ZR	 	 	 	 	 	 	 	 d@d&ZSdAd'ZT	 	 	 	 	 	 	 	 dBd(ZU	 	 	 	 	 	 	 	 dCd)ZV	 	 	 	 	 	 dDd*ZW	 	 	 	 dEd+ZX G d, d-e&      ZY G d. d/e'      ZZ G d0 d1e!      Z[dFd2Z\dGd3Z]dHd4Z^dId5Z_eGd6k(  r0ddl#Z` e`j                           eb e_ej                  d7d             y)Ja  Insert links to objects documented in remote Sphinx documentation.

This works as follows:

* Each Sphinx HTML build creates a file named "objects.inv" that contains a
  mapping from object names to URIs relative to the HTML set's root.

* Projects using the Intersphinx extension can specify links to such mapping
  files in the `intersphinx_mapping` config value.  The mapping will then be
  used to resolve otherwise missing references to objects into links to the
  other documentation.

* By default, the mapping file is assumed to be at the same location as the
  rest of the documentation; however, the location of the mapping file can
  also be specified individually, e.g. if the docs should be buildable
  without Internet access.
    )annotationsN)path)TYPE_CHECKINGcast)urlsplit
urlunsplit)nodes)relative_path)pending_xref)INVENTORY_FILENAME)ExtensionError)___)ReferencesResolver)loggingrequests)CustomReSTDispatcher
SphinxRole)InventoryFile)Iterable)
ModuleType)IOAnyUnion)NodeTextElementsystem_message)Reporter)Sphinx)Config)Domain)BuildEnvironment)	InventoryInventoryItemRoleFunctionc                  V    e Zd ZdZddZed	d       Zed
d       Zedd       ZddZ	y)InventoryAdapterz!Inventory adapter for environmentc                    || _         t        |d      s4i | j                   _        i | j                   _        i | j                   _        y y )Nintersphinx_cache)envhasattrr)   intersphinx_inventoryintersphinx_named_inventory)selfr*   s     8/usr/lib/python3/dist-packages/sphinx/ext/intersphinx.py__init__zInventoryAdapter.__init__B   s=    s/0)+DHH&-/DHH*35DHH0 1    c                .    | j                   j                  S )aA  Intersphinx cache.

        - Key is the URI of the remote inventory
        - Element one is the key given in the Sphinx intersphinx_mapping
          configuration value
        - Element two is a time value for cache invalidation, a float
        - Element three is the loaded remote inventory, type Inventory
        )r*   r)   r.   s    r/   cachezInventoryAdapter.cacheL   s     xx)))r1   c                .    | j                   j                  S N)r*   r,   r3   s    r/   main_inventoryzInventoryAdapter.main_inventoryX   s    xx---r1   c                .    | j                   j                  S r6   )r*   r-   r3   s    r/   named_inventoryz InventoryAdapter.named_inventory\   s    xx333r1   c                    | j                   j                  j                          | j                   j                  j                          y r6   )r*   r,   clearr-   r3   s    r/   r;   zInventoryAdapter.clear`   s.    &&,,.,,224r1   N)r*   r"   returnNone)r<   dict[str, InventoryCacheEntry])r<   r#   )r<   zdict[str, Inventory])r<   r=   )
__name__
__module____qualname____doc__r0   propertyr4   r7   r9   r;    r1   r/   r'   r'   ?   sK    +6 	* 	* . . 4 45r1   r'   c                    t        t        |             }d|d   v r|d   j                  d      d   |d<   t        |      S )a  Returns *url* with basic auth credentials removed. Also returns the
    basic auth username and password if they're present in *url*.

    E.g.: https://user:pass@example.com => https://example.com

    *url* need not include basic auth credentials.

    :param url: url which may or may not contain basic auth credentials
    :type url: ``str``

    :return: *url* with any basic auth creds removed
    :rtype: ``str``
    @   )listr   splitr   )urlfragss     r/   _strip_basic_authrL   e   sC     #E
eAh8>>#&q)aer1   c               l   t        j                  | d|j                  |j                  |j                  |j
                  f      }|j                          |j                  |j                  _        t        j                  |j                  j                  d      |j                  _        |j                  S )u  Reads data from *url* with an HTTP *GET*.

    This function supports fetching from resources which use basic HTTP auth as
    laid out by RFC1738 § 3.1. See § 5 for grammar definitions for URLs.

    .. seealso:

       https://www.ietf.org/rfc/rfc1738.txt

    :param url: URL of an HTTP resource
    :type url: ``str``

    :return: data read from resource described by *url*
    :rtype: ``file``-like object
    T)streamtimeout_user_agent	_tls_info)decode_content)r   getintersphinx_timeout
user_agent
tls_verifytls_cacertsraise_for_statusrJ   raw	functoolspartialread)rJ   configrs      r/   _read_from_urlr_   z   s      	Sv/I/I!'!2!2 & 1 163E3EF	HA AEEI ""155::dCAEEJ55Lr1   c                    t        |       }|j                  | S t        |      }|j                  r6|j                   d|j                   d|j                   |d<   t        |      S |j                   d|j                   |d<   t        |      S )a5  Gets version of *url* with basic auth passwords obscured. This function
    returns results suitable for printing and logging.

    E.g.: https://user:12345@example.com => https://user@example.com

    :param url: a url
    :type url: ``str``

    :return: *url* with password removed
    :rtype: ``str``
    rF   :rG   )r   usernamerH   porthostnamer   )rJ   partsrK   s      r/   _get_safe_urlrf      s     SME~~
U::..)5>>*:!EJJ<HE!H %    ..)5>>*:;E!H%  r1   c                J   d|v rt        |      }	 d|v rt        || j                        }n*t        t	        j
                  | j                  |      d      }	 t        |d      rv|j                  }||k7  ret        j                  t        d      ||       ||t	        j                   |      t	        j                   |      dz   fv rt	        j                   |      }|5  	 t#        j$                  ||t&        j
                        }	 ddd       |S # t        $ r$}d||j                  t        |      f|_
         d}~ww xY w# t(        $ r}t)        d	|z        |d}~ww xY w# 1 sw Y   S xY w# t        $ r.}d
||j                  j*                  t        |      f|_
         d}~ww xY w)z6Fetch, parse and return an intersphinx inventory file.://)r]   rbz4intersphinx inventory %r not fetchable due to %s: %sNrJ   z)intersphinx inventory has moved: %s -> %s/z,unknown or unsupported inventory version: %rz3intersphinx inventory %r not readable due to %s: %s)rL   r_   r]   openr   joinsrcdir	Exception	__class__strargsr+   rJ   loggerinfor   dirnamer   load	posixpath
ValueErrorr?   )appuriinvferrnewinvinvdataexcs           r/   fetch_inventoryr      s    |$C<s3::6ATYYszz3/6A
1eUUFf}BJKSRXY3S 14<<3Ds3JKK,,v.C 	``',,QY^^D	` -  JC2  ` !ORU!UV\__`	`   I//S;sm   AD BE+ E%D>E+ 	D;D66D;>	EEEEE(#E+ (E+ +	F"4)FF"c                   ||j                   j                  dz  z
  }g }	 |D ]  }|st        j                  |t              }d|vs||vs||   d   |k  s4t        |      }	t        j                  t        d      |	       	 t        |||      }
|
so| ||
f||<    |g k(  ry	t        |      t        |      k  r8t        j                  t        d             |D ]  }t        j                  |   y	dj                  |D cg c]  }|d   |dd  z   c}      }t        j                  t        d      dz   |z          y	 	 |g k(  ry
t        |      t        |      k  r8t        j                  t        d             |D ]  }t        j                  |   y
dj                  |D cg c]  }|d   |dd  z   c}      }t        j                  t        d      dz   |z          y
# t        $ r&}|j                  |j                         Y d }~d }~ww xY wc c}w c c}w # |g k(  rw t        |      t        |      k  r8t        j                  t        d             |D ]  }t        j                  |   w dj                  |D cg c]  }|d   |dd  z   nc c}w c}      }t        j                  t        d      dz   |z          w xY w)NiQ rh   rG   z(loading intersphinx inventory from %s...zXencountered some issues with some of the inventories, but they had working alternatives:
r   zAfailed to reach any of the inventories with the following issues:TF)r]   intersphinx_cache_limitrv   rl   r   rf   rr   rs   r   r   rn   appendrq   lenwarning)namery   invsr4   rx   now
cache_timefailuresrz   safe_inv_urlr~   r|   failr{   issuess                  r/   fetch_inventory_groupr      s    szz99EAAJHM 	 CnnS*<= C3e#3uSz!}z7Q,S1BIJLY-c3<G !%sG!3E#J r>]SY&KK A B C  #T"# YYh?!qu?@FNN2 ; <>BCEKL M7	   r>]SY&KK A B C  #T"# YYh?!qu?@FNN2 ; <>BCEKL M# ! OOCHH-   @? r>]SY&KK A B C  #T"# YYh?!qu??@FNN2 ; <>BCEKL Ms`   5H *H G H 	H >H<H "H 	H)H
H 
HH A%KJ2Kc                   t        t        j                               }t        | j                  j                        }|j
                  }t        j                  j                         5 }g }| j                  j                  j                         D ]2  \  }\  }}|j                  |j                  t        ||||| |             4 t        j                  j                  |      D 	cg c]  }	|	j!                          }
}	ddd       t#        
      r|j%                          g }g }|j                         D ]/  \  }}}|r|j                  ||f       |j                  ||f       1 t'        |      |z   D ]Y  \  }}|r||j(                  |<   |j+                         D ]0  \  }}|j,                  j/                  |i       j1                  |       2 [ yyc c}	w # 1 sw Y   xY w)z3Load all intersphinx mappings into the environment.N)inttimer'   builderr*   r4   
concurrentfuturesThreadPoolExecutorr]   intersphinx_mappingvaluesr   submitr   as_completedresultanyr;   sortedr9   itemsr7   
setdefaultupdate)rx   r   inventoriesr)   poolr   r   ry   r   r{   updated
named_valsunnamed_vals_expiryr~   typeobjectss                    r/   load_mappingsr      s   
diik
C"3;;??3K8C8I8I				.	.	0 	QD "%!?!?!F!F!H 	D+3NN4;;%tS$8I3PS 	 (2'9'9'F'Fw'OP!188:PP	Q 7| 
&7&>&>&@ 	5"D'7!!4/2##T7O4		5
 $J/,> 	PMD'4;++D1!( Pg**55dB?FFwOP	P#  Q	Q 	Qs   'A=G$G;GGG c           	        |\  }}}}d|vr4|j                  d      r#t        j                  t        |d   d      |      }|rt	        d      ||fz  }	nt	        d      |fz  }	t        j                  ddd||	      }
|j                  d	      r|
j                  |       |
S |d
k(  s| j                  dk(  r|d   dk(  rz|j                         }|U|j                  |dz         rA|
j                  |j                  |t        |      dz   d  |t        |      dz   d               |
S |
j                  |       |
S |
j                  |j                  ||             |
S )Nrh   refdoc.z(in %s v%s)z(in %s) F)internalrefurireftitlerefexplicit-stdreftypekeywordra   rG   )rS   rv   rl   r
   r   r	   	referencer   r   astext
startswithro   r   )domaininv_namedatanodecontnodeprojversionry   dispnamer   newnodetitles               r/   _create_element_from_resultr   &  s\    $( D'3CDHHX.nn]4>3?E]#tWo5Y<4')oob"uS8TGxxx  N 
S[[E!d9o&B!E$4$4X^$DNN8--eCMA4E4F.G.3CMA4E4F.GI J N	 NN8$ N 	x))(H=>Nr1   c                   
 |D ]u  }||vr|||   v r	||   |   }nN|dk(  rH|j                         
t        t        
fd||   j                                     }	|	r||   |	d      }neft	        || |||      c S  y )Nzstd:termc                *    | j                         k(  S r6   )lower)ktarget_lowers    r/   <lambda>z8_resolve_reference_in_domain_by_target.<locals>.<lambda>T  s    	\8Q r1   r   )r   rH   filterkeysr   )r   	inventoryr   objtypestargetr   r   objtyper   insensitive_matchesr   s             @r/   &_resolve_reference_in_domain_by_targetr   D  s    
  S)#Yw''W%f-D
"!<<>L"&v.Q.7.@.E.E.G(I #J" )*=a*@A 
 *68T4RR/S0 r1   c           	        i j                  |      }|j                  dk(  r	d|v rd |d<   |j                  dk(  r	d|v rd |d<   |j                  }	|D 
ci c]
  }
|	 d|
 d  }}
|r3t        | j                  j                        }|D 
ci c]	  }
|
|vr|
d  }}
g |j                         }t        |||||d   ||      }||S |j                  |      }|y t        |||||||      S c c}
w c c}
w )	Nr   	cmdoptionoptionpy	attributemethodra   	reftarget)fromkeysr   setr]   intersphinx_disabled_reftypesr   r   get_full_qualified_name)r*   r   r   honor_disabled_refsr   r   r   r   	obj_typesdomain_nameobj_typedisabledresfull_qualified_names                 r/   _resolve_reference_in_domainr   d  sA    "$X!6I {{ey 8"	({{d{i7"	( ++KCLMxK=(,d2MIM szz??@%.2! 0 t^ 2	 2 #!"H 19fh15k1BD(TC

 !88>"1(Ivx2EtXW W+ N
2s   C'C,c                   |xr |d u }|rd| j                   j                  v ry |d   }|dk(  rs| j                  j                         D ]U  \  }}|r|dz   | j                   j                  v r$|j                  j                         }	t        | |||||	||      }
|
S|
c S  y |j                  d      }|sy |r|dz   | j                   j                  v ry | j                  |      }|j                  |      xs d}	|	sy t        | |||||	||      S )N*r   r   z:*	refdomainrD   )
r]   r   domainsr   object_typesr   r   rS   
get_domainobjtypes_for_role)r*   r   r   r   r   r   typr   r   r   r   s              r/   _resolve_referencer     s5    .B(d2Bscjj&N&NN
y/C
e|#&;;#4#4#6 
	K#$t+

0X0XX&,&9&9&>&>&@H.sHi/B/5x/3X?C 

	 hh{+ 4'CJJ,T,TT,++C06B+C9,?,2H,0(< 	<r1   c                0    |t        |       j                  v S r6   )r'   r9   )r*   r   s     r/   inventory_existsr     s    ',<<<<r1   c                j    t        | |      sJ t        | |t        |       j                  |   d||      S )zAttempt to resolve a missing reference via intersphinx references.

    Resolution is tried in the given inventory with the target as is.

    Requires ``inventory_exists(env, inv_name)``.
    F)r   r   r'   r9   )r*   r   r   r   s       r/   resolve_reference_in_inventoryr     s@     C***c8-=c-B-R-RS[-\#T85 5r1   c                H    t        | dt        |       j                  |||      S )zAttempt to resolve a missing reference via intersphinx references.

    Resolution is tried with the target as is in any inventory.
    N)r   r'   r7   )r*   r   r   r   s       r/   resolve_reference_any_inventoryr     s+     c4)9#)>)M)M1"H. .r1   c                    t        | d||      }||S |d   }d|vry|j                  dd      \  }}t        | |      sy||d<   t        | |||      }||d<   |S )ag  Attempt to resolve a missing reference via intersphinx references.

    Resolution is tried first with the target as is in any inventory.
    If this does not succeed, then the target is split by the first ``:``,
    to form ``inv_name:newtarget``. If ``inv_name`` is a named inventory, then resolution
    is tried in that inventory with the new target.
    TNr   ra   rG   )r   rI   r   r   )r*   r   r   r   r   r   	newtargetres_invs           r/   "resolve_reference_detect_inventoryr     s     *#tT8
DC

 +F
& ,,sA.HiC*!D,S(D(KGDNr1   c                    t        |||      S )zBAttempt to resolve a missing reference via intersphinx references.)r   )rx   r*   r   r   s       r/   missing_referencer     s     .c4BBr1   c                  8     e Zd ZdZ	 	 	 	 	 	 	 	 	 	 d fdZ xZS )IntersphinxDispatcherzyCustom dispatcher for external role.

    This enables :external:***:/:external+***: roles on parsing reST document.
    c                    t        |      dkD  r|j                  d      rt        |      g fS t        |   ||||      S )N	   )z	external:z	external+)r   r   IntersphinxRolesuperrole)r.   	role_namelanguage_modulelinenoreporterro   s        r/   r   zIntersphinxDispatcher.role  sD     y>A)"6"67Q"R"9-r117<	?FHMMr1   )
r  rp   r  r   r  r   r  r   r<   z)tuple[RoleFunction, list[system_message]])r?   r@   rA   rB   r   __classcell__)ro   s   @r/   r   r     sA    
NN/9NCFNRZN	2N Nr1   r   c                  `    e Zd Z ej                  d      Zd	dZd
dZddZddZ	ddZ
ddZy)r   z(\+([^:]+))?:(.*)c                    || _         y r6   )	orig_name)r.   r  s     r/   r0   zIntersphinxRole.__init__  s	    "r1   c                n   | j                   | j                  j                         k(  sJ | j                  | j                        \  }}|r[t	        | j
                  |      sEt        j                  t        d      || j
                  j                  | j                  f       g g fS | j                  |      }|Et        j                  t        d      || j
                  j                  | j                  f       g g fS | j                  |      \  }}|D ]  }t        |t              sd|d<   ||d<    ||fS )Nz4inventory for external cross-reference not found: %s)locationz/role for external cross-reference not found: %sTintersphinxr   )r   r  r   get_inventory_and_name_suffixr   r*   rr   r   r   docnamer  get_role_nameinvoke_role
isinstancer   )r.   r   name_suffixr  r   messagesr   s          r/   runzIntersphinxRole.run  s'   yyDNN002222!%!C!CDNN!S	;-dhh	BNN2TU$0@0@$++/N  Pr6M&&{3	NN2OPR]%)XX%5%5t{{$C  Er6M++I6 	.D$-&*]#$-[!	.
 xr1   c                    |j                  d      sJ |       |dd  }|d   dk(  r|j                  dd      \  }}||fS |d   dk(  rd |fS d| }t        |      )Nexternalr      +ra   rG   z Malformed :external: role name: )r   rI   rw   )r.   r   suffixr   msgs        r/   r  z-IntersphinxRole.get_inventory_and_name_suffix*  s|    z*0D0* ab7c>%||C3HfV##!W^<4TF;CS/!r1   c                H   |j                  d      }t        |      dk(  r;| j                  j                  j	                  d      }|r|j
                  nd }|d   }nt        |      dk(  r|d   }|d   }ny |r| j                  ||      r||fS | j                  d|      rd|fS y )Nra   rG   default_domainr      r   )rI   r   r*   	temp_datarS   r   is_existent_role)r.   r   namesr  r   r   s         r/   r  zIntersphinxRole.get_role_name<  s    

3u:?!XX//334DEN,:^((F8DZ1_1XF8Dd++FD9D>!""5$/4= r1   c                t    	 | j                   j                  |      }||j                  v S # t        $ r Y yw xY w)NF)r*   r   rolesr   )r.   r   r  r   s       r/   r  z IntersphinxRole.is_existent_roleQ  s<    	XX((5F,, 		s   (+ 	77c           	     ,   | j                   j                  |d         }|rq|j                  |d         }|J  |dj                  |      | j                  | j
                  | j                  | j                  | j                  | j                        S g g fS )Nr   rG   ra   )
r*   r   r   rl   rawtexttextr  inlineroptionscontent)r.   r   r   	role_funcs       r/   r  zIntersphinxRole.invoke_roleX  s    $$T!W-DG,I(((SXXd^T\\499dkk!\\4<<G G r6Mr1   N)r  rp   r<   r=   )r<   'tuple[list[Node], list[system_message]])r   rp   r<   ztuple[str | None, str])r   rp   r<   ztuple[str, str] | None)r   rp   r  rp   r<   bool)r   ztuple[str, str]r<   r)  )r?   r@   rA   recompile_re_inv_refr0   r  r  r  r  r  rD   r1   r/   r   r     s3     "**12K# ,"$*	r1   r   c                  6    e Zd ZdZej
                  dz
  ZddZy)IntersphinxRoleResolverzpending_xref node resolver for intersphinx role.

    This resolves pending_xref nodes generated by :intersphinx:***: role.
    rG   c                    | j                   j                  t              D ]  }d|vrt        t        j
                  |d   j                               }|d   }|1t        | j                  |      sJ t        | j                  |||      }nt        | j                  d||      }|G|d   }t        d      |d   ||d   fz  }t        j                  ||d	|
       |j                  |       |j                  |        y )Nr  r   r   Fr   z-external %s:%s reference target not found: %sr   r   ref)r
  r   subtype)documentfindallr   r   r	   r   deepcopyr   r*   r   r   r   rr   r   replace_self)r.   kwargsr   r   r   r   r   r  s           r/   r  zIntersphinxRoleResolver.runl  s    MM)),7 	+DD(E--tAw/?/?/ABHK(H#'(;;;88TS[\9$((E4QYZ9oIJ[)3[0ABCsTsK!!(+!!'*#	+r1   N)r7  r   r<   r=   )r?   r@   rA   rB   r   default_priorityr  rD   r1   r/   r/  r/  d  s    
 *::Q>+r1   r/  c                8    t               }|j                          y)zEnable IntersphinxDispatcher.

    .. note:: The installed dispatcher will be uninstalled on disabling sphinx_domain
              automatically.
    N)r   enable)rx   r  source
dispatchers       r/   install_dispatcherr=    s     '(Jr1   c                   |j                   j                         j                         D ]  \  }}	 t        |t        t
        f      rS||c}\  }}t        |t              s^t        j                  t        d      |       |j                   j                  |       pd ||}}}d||fd}t        j                  |       t        |t
              s|||fff|j                   |<   n|||ff|j                   |<    y # t        $ rF}t        j                  t        d      ||       |j                   j                  |       Y d }~d }~ww xY w)Nz0intersphinx identifier %r is not string. IgnoredzThe pre-Sphinx 1.0 'intersphinx_mapping' format is deprecated and will be removed in Sphinx 8. Update to the current format as described in the documentation. Hint: "intersphinx_mapping = {'<name>': ze}".https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html#confval-intersphinx_mappingz3Failed to read intersphinx_mapping[%s], ignored: %r)r   copyr   r  rH   tuplerp   rr   r   r   poprn   )	rx   r]   keyvaluer   ry   rz   r  r   s	            r/   normalize_intersphinx_mappingrD    sJ   00557==? 0
U	0%$/#& jsC!$,NN2&X#Y#')..2237 "&sE3cA CFs Oyy  s#c5)37#v2G**3/37#s2D**3/506  	0NN2STVY[^_&&**3//	0s   A(C7AC77	E ;EEc                   | j                  di d       | j                  ddd       | j                  dd d       | j                  ddgd       | j                  d	t        d
       | j                  dt               | j                  dt               | j                  dt
               | j                  t               t        j                  dddS )Nr   Tr      FrT   r   zstd:doczconfig-initedi   )priorityzbuilder-initedzsource-readzmissing-referencerG   )r   env_versionparallel_read_safe)
add_config_valueconnectrD  r   r=  r   add_post_transformr/  sphinx__display_version__)rx   s    r/   setuprO    s    .D92Au=.e<89+tLKK!>KMKK -0KK12KK#%6723--" r1   c          
        t        |       dk  rt        dt        j                         y G d d       G fdd      }	 | d   }t	         |       d	|      }t        |xs i       D ]V  }t        |       t        ||   j                               }|D ](  \  }\  }}}	}
|
|
d
k7  z  }
t        d|dd|
dd|	        * X 	 y# t        $ rB}t        |j                  d   |j                  dd z  t        j                         Y d}~yd}~wt        $ r(}t        d|t        j                         Y d}~yd}~ww xY w)z-Debug functionality to print out an inventoryrG   zXPrint out an inventory file.
Error: must specify local path or URL to an inventory file.)filec                  <    e Zd ZU dZded<   dZdZded<   dZded	<   y)
 inspect_main.<locals>.MockConfigNz
int | NonerT   Fzstr | dict[str, str] | NonerW   r   rp   rU   )r?   r@   rA   rT   __annotations__rV   rW   rU   rD   r1   r/   
MockConfigrS    s'    *.Z.
3707
Cr1   rU  c                  "    e Zd ZdZ W         Zy)inspect_main.<locals>.MockAppr   N)r?   r@   rA   rm   r]   )rU  s   r/   MockApprW    s    r1   rX  r   r   r   z    z<40 z: NzUnknown error: )
r   printsysstderrr   r   r   rw   rq   rn   )argvrX  filenameinv_datarB  inv_entriesentry_proj_verurl_pathdisplay_namer   rU  s               @r/   inspect_mainrf    s@   
4y1} L::	   7"79b(;(.b) 	IC#J #!4!4!67K@K I<<tX|+|s/BCU3Kqc(:"XJGHI	I   chhqkCHHQRL(szz: w'cjj9s%   A?C 	D>8D

D>D99D>__main__rG   )rJ   rp   r<   rp   )rJ   rp   r]   r    r<   r   )rx   r   ry   rp   rz   rp   r<   r#   )r   
str | Nonery   rp   r   ztuple[str | None, ...]r4   r>   rx   r   r   r   r<   r*  )rx   r   r<   r=   )r   r!   r   rh  r   r$   r   r   r   r   r<   znodes.reference)r   rh  r   r#   r   r!   r   Iterable[str]r   rp   r   r   r   r   r<   nodes.reference | None)r*   r"   r   rh  r   r#   r   r*  r   r!   r   ri  r   r   r   r   r<   rj  )r*   r"   r   rh  r   r#   r   r*  r   r   r   r   r<   rj  )r*   r"   r   rp   r<   r*  )
r*   r"   r   rp   r   r   r   r   r<   rj  )
r*   r"   r   r*  r   r   r   r   r<   rj  )r*   r"   r   r   r   r   r<   rj  )
rx   r   r*   r"   r   r   r   r   r<   rj  )rx   r   r  rp   r;  	list[str]r<   r=   )rx   r   r]   r    r<   r=   )rx   r   r<   zdict[str, Any])r]  rk  r<   r   )drB   
__future__r   concurrent.futuresr   rZ   rv   r+  r[  r   osr   typingr   r   urllib.parser   r   docutilsr	   docutils.utilsr
   rM  sphinx.addnodesr   sphinx.builders.htmlr   sphinx.errorsr   sphinx.localer   r   !sphinx.transforms.post_transformsr   sphinx.utilr   r   sphinx.util.docutilsr   r   sphinx.util.inventoryr   collections.abcr   typesr   r   r   r   docutils.nodesr   r   r   r   sphinx.applicationr   sphinx.configr    sphinx.domainsr!   sphinx.environmentr"   sphinx.util.typingr#   r$   r%   r@  rp   r   InventoryCacheEntry	getLoggerr?   rr   r'   rL   r_   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/  r=  rD  rO  rf  _loggingbasicConfig
SystemExitr]  rD   r1   r/   <module>r     s  $ #    	 
   & -  (  ( 3 (  @ ) A /( %%@@')$%3IIc4i 0#y @A			8	$#5 #5L*6!2"J'M
'M	'M !'M *	'M
 
'M 
'M 
'MT&PR&3&2>IN]<)2"/  	 '2	 7M	@(W+5(WBK(W6:(W *0(W <I(W (4	(W @K	(W
 '=(WV&<,0&<)&<5@&<E[&<R=5-05)55AL5 )?5
.9=
.*6
.BM
. *@
.-9EP,B:C +C0FCN0 NVj Vr+0 +:0B""J zH
\#((12,/
00	 r1   