=Og3 dZddlZddlZddlZddlmZmZddlmZmZGddej Z Gdd eZ Gd d eZ Gd d ee Z dS)z+ Interface adapters for low-level readers. N)BinaryIOList) TraversableTraversableResourcesceZdZdZejdZejdZejdZ ejdZ e dZ dS) SimpleReaderzQ The minimum, low-level interface required from a resource provider. cdS)zP The name of the package for which this reader loads resources. Nselfs A/opt/alt/python311/lib64/python3.11/importlib/resources/simple.pypackagezSimpleReader.packagecdS)zo Obtain an iterable of SimpleReader for available child containers (e.g. directories). Nr r s rchildrenzSimpleReader.childrenrrcdS)zL Obtain available named resources for this virtual package. Nr r s r resourceszSimpleReader.resources"rrcdS)z: Obtain a File-like for a named resource. Nr )r resources r open_binaryzSimpleReader.open_binary)rrcB|jddS)N.)rsplitr s rnamezSimpleReader.name0s|!!#&&r**rN) __name__ __module__ __qualname____doc__abcabstractpropertyrabstractmethodrrrpropertyrr rrr r s                 ++X+++rr c2eZdZdZdZdZdZd dZdZdS) ResourceHandlez9 Handle to a named resource in a ResourceReader. c"||_||_dSN)parentr)r r*rs r__init__zResourceHandle.__init__:s  rcdSNTr r s ris_filezResourceHandle.is_file?trcdSNFr r s ris_dirzResourceHandle.is_dirBurrc|jj|j}d|vrt j|g|Ri|}|S)Nb)r*readerrrio TextIOWrapper)r modeargskwargsstreams ropenzResourceHandle.openEsJ#// :: d??%f>t>>>v>>F rc td)NzCannot traverse into a resource) RuntimeError)r rs rjoinpathzResourceHandle.joinpathKs<===rN)r4) rrr r!r+r.r2r>rAr rrr'r'5sn  >>>>>rr'cLeZdZdZdZdZdZdZdZe dZ dZ d S) ResourceContainerzI Traversable container for a package's resources via its reader. c||_dSr))r7)r r7s rr+zResourceContainer.__init__Ts  rcdSr-r r s rr2zResourceContainer.is_dirXr/rcdSr1r r s rr.zResourceContainer.is_file[r3rcfdjjD}ttj}t j||S)Nc38K|]}t|VdSr))r').0rr s r z,ResourceContainer.iterdir.._s-NNd++NNNNNNr)r7rmaprCr itertoolschain)r filesdirss` riterdirzResourceContainer.iterdir^sQNNNN 8MNNN$dk&:&:&<&<==ud+++rctr))IsADirectoryError)r r;r<s rr>zResourceContainer.opencs!!!rc#JK|D]}|dEd{VdS)N/)r)compound_namesrs r_flattenzResourceContainer._flattenfsD" ' 'Dzz# & & & & & & & & ' 'rc|s|S||}t|tfd|Dj|S)Nc32K|]}|jk |VdSr))r)rI traversabletargets rrJz-ResourceContainer.joinpath..ps:  '[=MQW=W=WK=W=W=W=W  r)rVnextrPrA)r descendantsnamesrZs @rrAzResourceContainer.joinpathksz K k**et    +/<<>>     E rN) rrr r!r+r2r.rPr> staticmethodrVrAr rrrCrCOs,,, """''\'rrCceZdZdZdZdS)TraversableReaderz A TraversableResources based on SimpleReader. Resource providers may derive from this class to provide the TraversableResources interface by supplying the SimpleReader interface. c t|Sr))rCr s rrNzTraversableReader.files|s &&&rN)rrr r!rNr rrr`r`us- '''''rr`)r!r"r8rLtypingrrrrABCr r'rCr`r rrrds !!!!!!!!22222222%+%+%+%+%+37%+%+%+P>>>>>[>>>4##### ###L''''',l'''''r