o $a@sdZddlZddlZddlZddlmZmZmZmZddl m Z ddl m Z dZ e eZer;ddlmZddlmZGd d d ZGd d d ZdS) z sphinx.util.inventory ~~~~~~~~~~~~~~~~~~~~~ Inventory utility functions for Sphinx. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. N)IO TYPE_CHECKINGCallableIterator)logging) Inventoryi@)Builder)BuildEnvironmentc@speZdZdZdeddfddZdddZdefd d Zde efd d Z de e fd dZ de efddZ dS)InventoryFileReaderzjA file reader for an inventory file. This reader supports mixture of texts and compressed texts. streamreturnNcCs||_d|_d|_dS)NF)r buffereof)selfr r7/usr/lib/python3/dist-packages/sphinx/util/inventory.py__init__ s zInventoryFileReader.__init__cCs,|jt}|dkr d|_|j|7_dS)Nr T)r readBUFSIZErr)rchunkrrr read_buffer%s zInventoryFileReader.read_buffercCsl|jd}|dkr|jd|}|j|dd|_|S|jr,|j}d|_|S||}|S)N r )rfinddecoderrreadline)rposlinerrrr+s  zInventoryFileReader.readlineccs(|js|}|r |V|jrdSdS)N)rr)rrrrr readlines9s zInventoryFileReader.readlinesccs@t}|js|||jVd|_|jr|VdS)Nr )zlib decompressobjrr decompressrflush)r decompressorrrrread_compressed_chunks?sz*InventoryFileReader.read_compressed_chunksccsfd}|D])}||7}|d}|dkr0|d|V||dd}|d}|dksqdS)Nr rrr)r&rr)rbufrrrrrread_compressed_linesGs   z)InventoryFileReader.read_compressed_lines)r N)__name__ __module__ __qualname____doc__rrrstrrrr bytesr&r(rrrrr s r c @seZdZededededefddZede dededefdd Z ede dededefd d Z ed ed dddddfddZ dS) InventoryFiler urijoinfuncr cCsLt|}|}|dkr||||S|dkr ||||Std|)Nz# Sphinx inventory version 1z# Sphinx inventory version 2zinvalid inventory header: %s)r rrstripload_v1load_v2 ValueError)clsr r0r1readerrrrrloadSs  zInventoryFile.loadjoinc Csi}|dd}|dd}|D]5}|dd\}} } ||| } | dkr9d} | d|7} n d| } | d|7} ||| df|| i|<q|S) N mod py:modulez#module-zpy:#-)rr2r split setdefault) r6r r0r9invdataprojnameversionrnametypelocationrrrr3^s   zInventoryFile.load_v1cCsi}|dd}|dd}|}d|vr$td||D]H}td|}|s5q(|\} } } } } d| vrCq(| dkrR| |vrR| || vrRq(| dr_| dd| } ||| } ||| | f|| i| <q(|S) Nr:r!z-invalid inventory header (not compressed): %sz+(?x)(.+?)\s+(\S+)\s+(-?\d+)\s+?(\S*)\s+(.*):r=$r) rr2r5r(rematchgroupsendswithrA)r6r r0r9rBrCrDrmrErFpriorGdispnamerrrr4ps0    zInventoryFile.load_v2filenameenvr builderrNc Cs,dtdtfdd}ttj|dz}|d||jj||jjf t d}t |j D]J\}}t |D]?\} } } } } }| | rT| dt|  d} || }| ra|d | 7}| | krgd } d | || ||| f}||| q.escapewbzp# Sphinx inventory version 2 # Project: %s # Version: %s # The remainder of this file is compressed using zlib. rIr>r?z%s %s:%s %s %s %s )r-openospathr9writeconfigprojectrDencoder! compressobjsorteddomainsitems get_objectsrMlenget_target_uricompressr$)r6rQrRrSrWf compressor domainnamedomainrErPtypdocnameanchorrOr0entryrrrdumps6        "zInventoryFile.dump) r)r*r+ classmethodrr-rrr8r r3r4rqrrrrr/Rs ! r/)r,r[rJr!typingrrrr sphinx.utilrsphinx.util.typingrr getLoggerr)loggersphinx.buildersrsphinx.environmentr r r/rrrrs      8