RhrddlmZddlmZddlmZGddZGddZdd ZGd d Z d Z y ))suppress) TextIOWrapper)abcc"eZdZdZdfdZdZy)SpecLoaderAdapterz> Adapt a package spec to adapt the underlying loader. c|jSN)loaderspecs 4/usr/lib/python3.12/importlib/resources/_adapters.pyzSpecLoaderAdapter. s $++c,||_|||_yr )r r )selfr adapters r__init__zSpecLoaderAdapter.__init__ s dm rc.t|j|Sr )getattrr rnames r __getattr__zSpecLoaderAdapter.__getattr__styy$''rN)__name__ __module__ __qualname____doc__rrrrrrs&>$(rrceZdZdZdZdZy)TraversableResourcesLoaderz9 Adapt a loader to provide TraversableResources. c||_yr r rr s rrz#TraversableResourcesLoader.__init__  rcHt|jjSr )CompatibilityFilesr _nativers rget_resource_readerz.TraversableResourcesLoader.get_resource_readers!$)),4466rN)rrrrrr'rrrr r s7rr cV|dk(rt|g|i|S|dk(r|Std|d)NrrbzInvalid mode value 'z"', only 'r' and 'rb' are supported)r ValueError)filemodeargskwargss r _io_wrapperr0 s@ s{T3D3F33  +D61ST UUrceZdZdZGddej ZGddej ZGddej ZdZ e d Z d Z d Z d Zy )r%zj Adapter for an existing or non-existent resource reader to provide a compatibility .files(). cDeZdZdZdZdZdZeZdZe dZ d dZ y) CompatibilityFiles.SpecPathzk Path tied to a module spec. Can be read and exposes the resource reader children. c ||_||_yr )_spec_reader)rr readers rrz$CompatibilityFiles.SpecPath.__init__4sDJ!DLrcjs tdStfdjjDS)Nrc3^K|]$}tjj|&ywr )r% ChildPathr6).0pathrs r z6CompatibilityFiles.SpecPath.iterdir..;s*#,,T\\4@s*-)r6itercontentsrs`riterdirz#CompatibilityFiles.SpecPath.iterdir8s:<<Bx LL113 rcyNFrr@s ris_filez#CompatibilityFiles.SpecPath.is_file@rc|jstj|Stj|j|Sr )r6r% OrphanPathr:rothers rjoinpathz$CompatibilityFiles.SpecPath.joinpathEs1<<)44U;;%// eD Drc.|jjSr )r5rr@s rrz CompatibilityFiles.SpecPath.nameJs::?? "rcTt|jjd|g|i|Sr )r0r6 open_resourcerr-r.r/s ropenz CompatibilityFiles.SpecPath.openNs)t||99$?WWPVW WrNr) rrrrrrArDis_dirrJpropertyrrOrrrSpecPathr3.s=  "   E  #  # XrrTcFeZdZdZdZdZdZdZdZe dZ d dZ y ) CompatibilityFiles.ChildPathzw Path tied to a resource reader child. Can be read but doesn't expose any meaningful children. c ||_||_yr )r6_name)rr7rs rrz%CompatibilityFiles.ChildPath.__init__Ws!DLDJrctdSNrr>r@s rrAz$CompatibilityFiles.ChildPath.iterdir[ 8OrcL|jj|jSr )r6 is_resourcerr@s rrDz$CompatibilityFiles.ChildPath.is_file^s<<++DII6 6rc$|j Sr )rDr@s rrRz#CompatibilityFiles.ChildPath.is_diras||~% %rcBtj|j|Sr )r%rGrrHs rrJz%CompatibilityFiles.ChildPath.joinpathds%00EB Brc|jSr )rXr@s rrz!CompatibilityFiles.ChildPath.namegs :: rcht|jj|j|g|i|Sr )r0r6rMrrNs rrOz!CompatibilityFiles.ChildPath.openks7 **4995t>BFL rNrPrQrrrr:rVQs:    7 & C     rr:cDeZdZdZdZdZdZeZdZe dZ d dZ y) CompatibilityFiles.OrphanPathz Orphan path, not tied to a module spec or resource reader. Can't be read and doesn't expose any meaningful children. cDt|dkr td||_y)Nrz/Need at least one path part to construct a path)lenr+_path)r path_partss rrz&CompatibilityFiles.OrphanPath.__init__vs!:" !RSS#DJrctdSrZr[r@s rrAz%CompatibilityFiles.OrphanPath.iterdir{r\rcyrCrr@s rrDz%CompatibilityFiles.OrphanPath.is_file~rErcDtjg|j|Sr )r%rGrgrHs rrJz&CompatibilityFiles.OrphanPath.joinpaths%00D$**DeD Drc |jdS)N)rgr@s rrz"CompatibilityFiles.OrphanPath.names::b> !rctd)NzCan't open orphan path)FileNotFoundErrorrNs rrOz"CompatibilityFiles.OrphanPath.opens#$<= =rNrPrQrrrrGrdps<  $    E  "  " >rrGc||_yr r r"s rrzCompatibilityFiles.__init__r#rctt5|jjj |jj cdddS#1swYyxYwr )rAttributeErrorr r r'rr@s rr6zCompatibilityFiles._readersC n % H99##77 G H H Hs 9AAc:|j}t|dr|S|S)zB Return the native reader if it supports files(). files)r6hasattr)rr7s rr&zCompatibilityFiles._natives! 1v;t;rc.t|j|Sr )rr6)rattrs rrzCompatibilityFiles.__getattr__st||T**rcVtj|j|jSr )r%rTr r6r@s rrtzCompatibilityFiles.filess!**499dllCCrN)rrrrr TraversablerTr:rGrrSr6r&rrtrrrr%r%(se !X3??!XFCOO>>S__>:HH<+Drr%c6t|jtS)z` Construct a package spec with traversable compatibility on the spec/loader/reader. )r__spec__r )packages r wrap_specr}s W--/I JJrNrP) contextlibriorrrr r0r%r}rrrrs= ( ( 7 7VxDxDvKr