a0bi SSKrSSKrSSKrSSKrSSKrSSKrSSKr\RS:aSSKJ r O\ r S/r Sr Sr \ RrSr"SS \R"5r"S S \5rS r"S S5rg)N)) OrderedDictPathcD[R"[U5SS5$)z Given a path with elements separated by posixpath.sep, generate all parents of that path. >>> list(_parents('b/d')) ['b'] >>> list(_parents('/b/d/')) ['/b'] >>> list(_parents('b/d/f/')) ['b/d', 'b'] >>> list(_parents('b')) [] >>> list(_parents('')) [] N) itertoolsislice _ancestrypaths ړ/builddir/build/BUILDROOT/alt-python313-setuptools-69.0.2-3.el8.x86_64/opt/alt/python313/lib/python3.13/site-packages/pkg_resources/_vendor/zipp.py_parentsrs   IdOQ 55c## UR[R5nU(aPU[R:wa;Uv [R"U5upU(aU[R:waM9gggg7f)a Given a path with elements separated by posixpath.sep, generate all elements of that path >>> list(_ancestry('b/d')) ['b/d', 'b'] >>> list(_ancestry('/b/d/')) ['/b/d', '/b'] >>> list(_ancestry('b/d/f/')) ['b/d/f', 'b/d', 'b'] >>> list(_ancestry('b')) ['b'] >>> list(_ancestry('')) [] N)rstrip posixpathsepsplit)r tails rr r %sS ;;y}} %D 49==( __T*  49==($($s A2A:6A:cV[R"[U5RU5$)zN Return items in minuend not in subtrahend, retaining order with O(1) lookup. )r filterfalseset __contains__)minuend subtrahends r _differencer?s!  Z!=!=w GGrcX^\rSrSrSr\S5rU4SjrSrSr \ S5r Sr U=r $) CompleteDirsGz_ A ZipFile subclass that ensures that implied directories are always included in the namelist. c[RR[[U55nSU5n[ [ X 55$)Nc3F# UHo[R-v M g7fN)rr).0ps r -CompleteDirs._implied_dirs..Ps6gy}}$gs!)r chain from_iterablemapr_deduper)namesparentsas_dirss r _implied_dirsCompleteDirs._implied_dirsMs7////He0DE6g6{7233rcb>[[U] 5nU[UR U55-$r#)superrnamelistlistr/)selfr, __class__s rr3CompleteDirs.namelistSs-lD24tD..u5666rc4[UR55$r#)rr3r5s r _name_setCompleteDirs._name_setWs4==?##rc`UR5nUS-nX;=(a X2;nU(aU$U$)z` If the name represents a directory, return that name as a directory (with the trailing slash). /)r:)r5namer,dirname dir_matchs r resolve_dirCompleteDirs.resolve_dirZs6  *%:'*: #w--rc[U[5(aU$[U[R5(dU"[ U55$SUR ;a[nXlU$)zT Given a source (filename or zipfile), return an appropriate CompleteDirs subclass. r) isinstancerzipfileZipFile_pathlib_compatmoder6)clssources rmakeCompleteDirs.makedsU fl + +M&'//22v./ / fkk !C r)__name__ __module__ __qualname____firstlineno____doc__ staticmethodr/r3r:rA classmethodrL__static_attributes__ __classcell__r6s@rrrGs? 44 7$.rrc8^\rSrSrSrU4SjrU4SjrSrU=r$) FastLookupxzJ ZipFile subclass to ensure implicit dirs exist and are resolved rapidly. c>[R"[5 URsSSS5 $!,(df  O=f[[ U]5UlUR$r#) contextlibsuppressAttributeError_FastLookup__namesr2rZr3r5r6s rr3FastLookup.namelist~s?   0<<1 0 0Z79 || 2 Ac>[R"[5 URsSSS5 $!,(df  O=f[[ U]5UlUR$r#)r]r^r__FastLookup__lookupr2rZr:ras rr:FastLookup._name_sets?   0==1 0 0j$9; }}rc)__lookup__names) rOrPrQrRrSr3r:rVrWrXs@rrZrZxs  rrZcZUR5$![a [U5s$f=f)z] For path-like objects, convert to a filename for compatibility on Python 3.6.1 and earlier. ) __fspath__r_strr s rrHrHs-   4ys **c\rSrSrSrSrSSjrSSS.Sjjr\S5r \S 5r \S 5r \S 5r \S 5r S rSrSrSrSrSrSrSrSrSrSr\r\S5rSrg)ruX A pathlib-compatible interface for zip files. Consider a zip file with this structure:: . ├── a.txt └── b ├── c.txt └── d └── e.txt >>> data = io.BytesIO() >>> zf = zipfile.ZipFile(data, 'w') >>> zf.writestr('a.txt', 'content of a') >>> zf.writestr('b/c.txt', 'content of c') >>> zf.writestr('b/d/e.txt', 'content of e') >>> zf.filename = 'mem/abcde.zip' Path accepts the zipfile object itself or a filename >>> root = Path(zf) From there, several path operations are available. Directory iteration (including the zip file itself): >>> a, b = root.iterdir() >>> a Path('mem/abcde.zip', 'a.txt') >>> b Path('mem/abcde.zip', 'b/') name property: >>> b.name 'b' join with divide operator: >>> c = b / 'c.txt' >>> c Path('mem/abcde.zip', 'b/c.txt') >>> c.name 'c.txt' Read text: >>> c.read_text() 'content of c' existence: >>> c.exists() True >>> (b / 'missing.txt').exists() False Coercion to string: >>> import os >>> str(c).replace(os.sep, posixpath.sep) 'mem/abcde.zip/b/c.txt' At the root, ``name``, ``filename``, and ``parent`` resolve to the zipfile. Note these attributes are not valid and will raise a ``ValueError`` if the zipfile has no filename. >>> root.name 'abcde.zip' >>> str(root.filename).replace(os.sep, posixpath.sep) 'mem/abcde.zip' >>> str(root.parent) 'mem' z>{self.__class__.__name__}({self.root.filename!r}, {self.at!r})cD[RU5UlX lg)a  Construct a Path from a ZipFile or filename. Note: When the source is an existing ZipFile object, its type (__class__) will be mutated to a specialized type. If the caller wishes to retain the original type, the caller should either create a separate ZipFile object or pass a filename. N)rZrLrootat)r5rorps r__init__ Path.__init__sOOD) rNpwdcVUR5(a [U5eUSnUR5(dUS:Xa [U5eURR UR XRS9nSU;aU(dU(a [S5eU$[R"U/UQ70UD6$)z Open this entry as text or binary following the semantics of ``pathlib.Path.open()`` by passing arguments through to io.TextIOWrapper(). rrDrsbz*encoding args invalid for binary operation) is_dirIsADirectoryErrorexistsFileNotFoundErrorroopenrp ValueErrorio TextIOWrapper)r5rIrtargskwargszip_modestreams rr{ Path.opens ;;==#D) )7{{}}S#D) ); $;v !MNNM8888rc[R"UR5R=(d URR$r#)pathlibrrpr>filenamer9s rr> Path.name*||DGG$))?T]]-?-??rc[R"UR5R=(d URR$r#)rrrpsuffixrr9s rr Path.suffix s*||DGG$++Ct}}/C/CCrc[R"UR5R=(d URR$r#)rrrpsuffixesrr9s rr Path.suffixes s*||DGG$--G1G1GGrc[R"UR5R=(d URR$r#)rrrpstemrr9s rr Path.stemrrc[R"URR5R UR 5$r#)rrrorjoinpathrpr9s rr Path.filenames*||DII../88AArcUR"S/UQ70UD6nUR5sSSS5 $!,(df  g=f)NrDr{read)r5rrstrms r read_textPath.read_texts/ YYs ,T ,V ,99;- , ,s1 ?czURS5nUR5sSSS5 $!,(df  g=f)Nrbr)r5rs r read_bytesPath.read_bytess" YYt_99;__s, :c[R"URRS55URRS5:H$Nr=)rr?rpr)r5r s r _is_childPath._is_child!s2  !459LLLrc:URURU5$r#)r6ro)r5rps r_next Path._next$s~~dii,,rchUR(+=(d URRS5$r)rpendswithr9s rrw Path.is_dir's"77{3dgg..s33rcZUR5=(a UR5(+$r#)ryrwr9s ris_file Path.is_file*s{{}2T[[]!22rcPURURR5;$r#)rpror:r9s rry Path.exists-sww$))--///rcUR5(d [S5e[URURR 55n[ URU5$)NzCan't listdir a file)rwr|r*rror3filterr)r5subss riterdir Path.iterdir0sG{{}}34 44::tyy1134dnnd++rcl[R"URRUR5$r#)rjoinrorrpr9s r__str__ Path.__str__6s!~~dii00$''::rc4URRUS9$)Nr9) _Path__reprformatr9s r__repr__ Path.__repr__9s{{!!t!,,rc[R"UR/[[U5Q76nUR UR RU55$r#)rrrpr*rHrrorA)r5othernexts rr Path.joinpath<s>~~dggDOU(CDzz$))//566rcUR(dURR$[R"URR S55nU(aUS- nUR U5$r)rprparentrr?rr)r5 parent_ats rr Path.parentBsRww=='' '%%dggnnS&9:   Izz)$$r)rpro))rD)rOrPrQrRrSrrqr{propertyr>rrrrrrrrrwrryrrrr __truediv__rrVrNrrrrsKZNF 99$@@DDHH@@BBM-430, ;-7K %%r)r}rrFr r]sysr version_info collectionsrdict__all__rr fromkeysr+rrGrrZrHrrNrrrs  f'K (6&+,   /H.7??.b&s%s%r