
    }co                         d Z ddlZddlZddlZddlmZmZmZmZ ddl	m
Z
 ddlmZ dZ e
j        e          ZerddlmZ ddlmZ  G d	 d
          Z G d d          ZdS )z'Inventory utility functions for Sphinx.    N)IOTYPE_CHECKINGCallableIterator)logging)	Inventoryi @  )Builder)BuildEnvironmentc                   ~    e Zd ZdZdeddfdZddZdefdZde	e         fdZ
de	e         fd	Zde	e         fd
ZdS )InventoryFileReaderzjA file reader for an inventory file.

    This reader supports mixture of texts and compressed texts.
    streamreturnNc                 0    || _         d| _        d| _        d S )N    F)r   buffereof)selfr   s     5lib/python3.11/site-packages/sphinx/util/inventory.py__init__zInventoryFileReader.__init__   s    r   c                 ~    | j                             t                    }|dk    rd| _        | xj        |z  c_        d S )Nr   T)r   readBUFSIZEr   r   )r   chunks     r   read_bufferzInventoryFileReader.read_buffer   s>      ))C< 	DHur   c                 X   | j                             d          }|dk    r9| j         d |                                         }| j         |dz   d          | _         nP| j        r!| j                                         }d| _         n(|                                  |                                 }|S )N   
   r   )r   finddecoder   r   readline)r   poslines      r   r!   zInventoryFileReader.readline#   s    ku%%"9 	#;tt$++--D+cAghh/DKKX 	#;%%''DDKK==??Dr   c              #   ^   K   | j         s#|                                 }|r|V  | j         !d S d S )N)r   r!   )r   r#   s     r   	readlineszInventoryFileReader.readlines1   sN      ( 	==??D 


 ( 	 	 	 	 	r   c              #      K   t          j                    }| j        s>|                                  |                    | j                  V  d| _        | j        >|                                V  d S )Nr   )zlibdecompressobjr   r   
decompressr   flush)r   decompressors     r   read_compressed_chunksz*InventoryFileReader.read_compressed_chunks7   s      )++( 	))$+66666DK ( 	   """""""r   c              #     K   d}|                                  D ]h}||z  }|                    d          }|dk    rF|d |                                         V  ||dz   d          }|                    d          }|dk    Fid S )Nr   r   r   r   )r,   r   r    )r   bufr   r"   s       r   read_compressed_linesz)InventoryFileReader.read_compressed_lines?   s      0022 	& 	&E5LC((5//C) &$3$i&&(((((#'((mhhuoo ) &	& 	&r   )r   N)__name__
__module____qualname____doc__r   r   r   strr!   r   r%   bytesr,   r/    r   r   r   r      s         
r d    
   #    8C=    # # # # #&x} & & & & & &r   r   c            	           e Zd Zededededefd            Zede	dededefd            Z
ede	dededefd            Zed	ed
dddddfd            ZdS )InventoryFiler   urijoinfuncr   c                    t          |          }|                                                                }|dk    r|                     |||          S |dk    r|                     |||          S t          d|z            )Nz# Sphinx inventory version 1z# Sphinx inventory version 2zinvalid inventory header: %s)r   r!   rstripload_v1load_v2
ValueError)clsr   r9   r:   readerr#   s         r   loadzInventoryFile.loadK   s    $V,,  ''))11 	D;;vsH55533 	D;;vsH555;dBCCCr   joinc                    i }|                                                                 dd          }|                                                                 dd          }|                                D ]u}|                                                    d d          \  }}	}
 |||
          }
|	dk    rd}	|
d|z   z  }
nd|	z   }	|
d|z   z  }
|||
df|                    |	i           |<   v|S )	N      mod	py:modulez#module-zpy:#-)r!   r<   r%   split
setdefault)r@   r   r9   rC   invdataprojnameversionr#   nametypelocations              r   r=   zInventoryFile.load_v1V   s   ??$$++--bcc2//##**,,RSS1$$&& 
	T 
	TD#';;==#6#6tQ#?#? D$tC**Hu} '"J--t|C$J&2:GXs1SGtR((..r   c                    i }|                                                                 dd          }|                                                                 dd          }|                                 }d|vrt          d|z            |                                D ]}t	          j        d|                                          }|s,|                                \  }	}
}}}d|
vrK|
dk    r|
|v r|	||
         v r`|                    d          r|d d         |	z   } |||          }||||f|                    |
i           |	<   |S )	NrE   r'   z-invalid inventory header (not compressed): %sz+(?x)(.+?)\s+(\S+)\s+(-?\d+)\s+?(\S*)\s+(.*):rH   $r   )	r!   r<   r?   r/   rematchgroupsendswithrL   )r@   r   r9   rC   rM   rN   rO   r#   mrP   rQ   priorR   dispnames                 r   r>   zInventoryFile.load_v2h   s   ??$$++--bcc2//##**,,RSS1   	ULtSTTT0022 	F 	FDG( (A 3488::0D$h$  {" tw 474=;P 
   %% 0#CRC=4/tC**H2:G2:H2FGtR((..r   filenameenvr
   builderr	   Nc                    dt           dt           fd}t          t          j                            |          d          5 }|                    d ||j        j                  d ||j        j                  d	                                           t          j        d          }t          |j                                                  D ]\  }}t          |                                          D ]\  }	}
}}}}|                    |	          r|d t#          |	                    d	z   }|                    |          }|r|d
|z   z  }|
|	k    rd}
|	d|d|d|d|d|
d}|                    |                    |	                                                     |                    |                                           d d d            d S # 1 swxY w Y   d S )Nstringr   c                 .    t          j        dd|           S )Nz\s+ )rV   sub)ra   s    r   escapez"InventoryFile.dump.<locals>.escape   s    6&#v...r   wbz(# Sphinx inventory version 2
# Project: z
# Version: z8
# The remainder of this file is compressed using zlib.
	   rU   rI   rJ   rc   rT   
)r4   openospathrC   writeconfigprojectrO   encoder'   compressobjsorteddomainsitemsget_objectsrY   lenget_target_uricompressr*   )r@   r]   r^   r_   re   f
compressor
domainnamedomainrP   r\   typdocnameanchorr[   r9   entrys                    r   dumpzInventoryFile.dump   sW   	/3 	/3 	/ 	/ 	/ 	/ "',,x(($// 	(1GGG fSZ/0000fSZ/00002
 4:688= = = )!,,J&,S[->->-@-@&A&A A A"
Fv113344A A>D(C&$t,, ;!'#d))!4s!:!0099C ,sV|+4' '#&"ddJJJTTT333JEGGJ//??@@@@A GGJ$$&&'''3	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s    FGG G)r0   r1   r2   classmethodr   r4   r   r   rB   r   r=   r>   r   r6   r   r   r8   r8   J   s       D" D3 D( Dy D D D [D 0 s ( y    [" 0 s ( y    [B (C (&8 (9 (QU ( ( ( [( ( (r   r8   )r3   rj   rV   r'   typingr   r   r   r   sphinx.utilr   sphinx.util.typingr   r   	getLoggerr0   loggersphinx.buildersr	   sphinx.environmentr
   r   r8   r6   r   r   <module>r      s   - - 				 				  8 8 8 8 8 8 8 8 8 8 8 8       ( ( ( ( ( (
		8	$	$ 4''''''3333335& 5& 5& 5& 5& 5& 5& 5&p^( ^( ^( ^( ^( ^( ^( ^( ^( ^(r   