o ?Og@sxddlZddlZddlZddlmZddZGdddejZGdd d ejZGd d d ej Z Gd d d ejZ dS)N)abccCsttj|SN)iter collections OrderedDictfromkeys)itemsr 8/opt/alt/python310/lib64/python3.10/importlib/readers.pyremove_duplicatesr c@$eZdZddZddZddZdS) FileReadercCst|jj|_dSr)pathlibPathpathparent)selfloaderr r r __init__ szFileReader.__init__cCt|j|Sz{ Return the file system path to prevent `resources.path()` from creating a temporary copy. strrjoinpathrresourcer r r resource_pathzFileReader.resource_pathcC|jSrrrr r r fileszFileReader.filesN__name__ __module__ __qualname__rrr#r r r r r s rcs4eZdZddZfddZddZddZZS) ZipReadercCs4|d\}}}|jdd|d|_|j|_dS)N.\/) rpartitionprefixreplacearchive)rrmodule_namer r r rs zZipReader.__init__c s6zt|WSty}zt|jdd}~wwNr)super open_resourceKeyErrorFileNotFoundErrorargs)rrexc __class__r r r6!s zZipReader.open_resourcecCs||}|o|Sr)r#ris_fileexists)rrtargetr r r is_resource'szZipReader.is_resourcecCst|j|jSr)zipfilerr0r.r"r r r r#-r zZipReader.files)r&r'r(rr6r@r# __classcell__r r r;r r)s  r)c@sheZdZdZddZddZddZdd Zd d Zd d Z ddZ e Z ddZ e ddZddZdS)MultiplexedPathz Given a series of Traversable objects, implement a merged version of the interface across all objects. Useful for namespace packages which may be multihomed at a single name. cGsHtttjt||_|jsd}t|tdd|jDs"tddS)Nz.MultiplexedPath must contain at least one pathcss|]}|VqdSr)is_dir.0rr r r >sz+MultiplexedPath.__init__..z)MultiplexedPath only supports directories) listmaprrr _pathsr8allNotADirectoryError)rpathsmessager r r r9szMultiplexedPath.__init__ccsBg}|jD]}|D]}|j|vrq ||j|Vq qdSr)rJiterdirr3append)rZvisitedrfiler r r rOAs    zMultiplexedPath.iterdircCt|dNz is not a filer8r"r r r read_bytesJzMultiplexedPath.read_bytescOrRrSrTrr9kwargsr r r read_textMrVzMultiplexedPath.read_textcCdS)NTr r"r r r rDPzMultiplexedPath.is_dircCrZ)NFr r"r r r r=Sr[zMultiplexedPath.is_filecCs.|D] }|j|kr|Sq|jd|Sr4)rOr3rJ)rchildrQr r r rVs  zMultiplexedPath.joinpathcOrRrSrTrWr r r open`rVzMultiplexedPath.opencCs |jdjSr4)rJr3r"r r r r3cs zMultiplexedPath.namecCs"ddd|jD}d|dS)Nz, css|] }d|dVqdS)'Nr rEr r r rGhsz+MultiplexedPath.__repr__..zMultiplexedPath())joinrJ)rrMr r r __repr__gs zMultiplexedPath.__repr__N)r&r'r(__doc__rrOrUrYrDr=r __truediv__r]propertyr3rar r r r rC1s   rCc@r)NamespaceReadercCs&dt|vr tdtt||_dS)NZ NamespacePathz Invalid path)r ValueErrorrCrHr)rnamespace_pathr r r rms zNamespaceReader.__init__cCrrrrr r r rrrzNamespaceReader.resource_pathcCr rr!r"r r r r#zr$zNamespaceReader.filesNr%r r r r rels re) rrArrr ZTraversableResourcesrr)Z TraversablerCrer r r r s ;