y{"|^dZddlZddlZddlZddlmZmZddlmZmZGddejZ Gdd eZ Gd d eZ Gd d ee Z y)z+ Interface adapters for low-level readers. N)BinaryIOList) TraversableTraversableResourcesceZdZdZeej defdZej de dfdZ ej de efdZ ej dede fdZ edZy ) SimpleReaderzQ The minimum, low-level interface required from a resource provider. returncy)zP The name of the package for which this reader loads resources. Nselfs A/opt/alt/python312/lib64/python3.12/importlib/resources/simple.pypackagezSimpleReader.packagecy)zo Obtain an iterable of SimpleReader for available child containers (e.g. directories). Nr r s rchildrenzSimpleReader.childrenrrcy)zL Obtain available named resources for this virtual package. Nr r s r resourceszSimpleReader.resources!rrresourcecy)z: Obtain a File-like for a named resource. Nr )rrs r open_binaryzSimpleReader.open_binary'rrc>|jjddS)N.)rsplitr s rnamezSimpleReader.name-s||!!#&r**rN)__name__ __module__ __qualname____doc__propertyabcabstractmethodstrrrrrrrrr rrr r s      $~.    49    C H  ++rr c4eZdZdZdefdZdZdZdZdZ y) ResourceContainerzI Traversable container for a package's resources via its reader. readerc||_yN)r))rr)s r__init__zResourceContainer.__init__7s  rcyNTr r s ris_dirzResourceContainer.is_dir:rcyNFr r s ris_filezResourceContainer.is_file=rcfdjjD}ttjj }t j ||S)Nc36K|]}t|ywr+)ResourceHandle).0rrs r z,ResourceContainer.iterdir..AsN8Md+8Ms)r)rmapr(r itertoolschain)rfilesdirss` riterdirzResourceContainer.iterdir@sBN 8M8MN$dkk&:&:&<=ud++rctr+)IsADirectoryError)rargskwargss ropenzResourceContainer.openEs !!rN) rr r!r"r r,r/r3r?rDr rrr(r(2s'|, "rr(c:eZdZdZdedefdZdZdZd dZ dZ y ) r7z9 Handle to a named resource in a ResourceReader. parentrc ||_||_yr+)rFr)rrFrs rr,zResourceHandle.__init__Ns  rcyr.r r s rr3zResourceHandle.is_fileRr0rcyr2r r s rr/zResourceHandle.is_dirUr4rc|jjj|j}d|vrt j |g|i|}|S)Nb)rFr)rrio TextIOWrapper)rmoderBrCstreams rrDzResourceHandle.openXsF##// : d?%%f>t>v>F rctd)NzCannot traverse into a resource) RuntimeError)rrs rjoinpathzResourceHandle.joinpath^s<==rN)r) rr r!r"r(r&r,r3r/rDrRr rrr7r7Is/0 >rr7ceZdZdZdZy)TraversableReaderz A TraversableResources based on SimpleReader. Resource providers may derive from this class to provide the TraversableResources interface by supplying the SimpleReader interface. ct|Sr+)r(r s rr=zTraversableReader.filesis  &&rN)rr r!r"r=r rrrUrUbs  'rrU)r"r$rLr;typingrrrrABCr r(r7rUr rrrYsS !2"+377"+J" ".>[>2',l'r