L iddlmZddlZddlmZmZddlmZmZddl m Z m Z m Z m Z mZmZddlmZddlmZej(rdd lmZmZmZmZmZmZdd lmZdd lmZGd d eZy)) annotationsN)ABCabstractmethod)copy_dir copy_file)DestinationExistsDirectoryExpected FileExpectedFilesystemClosed NoSysPathResourceNotFound)dirname BoundWalker)IOAny CollectionIteratorSelfType)InfoSubFSceZdZUdZdZded<ed!d"dZed#dZed#dZ ed#dZ ed$d Z ed%d&d Z ed%d&d Z ed'd(d Zed)dZed)dZed)dZed%d*dZd+dZdZd,dZd-dZdZdZd dd.dZ d' d/dZed0dZd1dZd2dZd%d3dZd%d4dZ d%d4d Z!y )5FSz+Abstract base class for custom filesystems.Fbool_closedc yN)selfpathmodekwargss e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/fontTools/misc/filesystem/_base.pyopenzFS.opensFIcyr r!r"r#s r&existsz FS.exists!),r(cyr r!r*s r&isdirzFS.isdir$s(+r(cyr r!r*s r&isfilez FS.isfile'r,r(cyr r!r*s r&listdirz FS.listdir*s/2r(cyr r!r"r#recreates r&makedirz FS.makedir-sCFr(cyr r!r4s r&makedirsz FS.makedirs0sDGr(Ncyr r!r"r# namespacess r&getinfoz FS.getinfo3sUXr(cyr r!r*s r&removez FS.remove6r,r(cyr r!r*s r& removedirz FS.removedir9s,/r(cyr r!r*s r& removetreez FS.removetree<s-0r(cyr r!)r"srcdstcreates r&movedirz FS.movedir?sILr(c td|d)Nthe filesystem z has no system path)r r*s r& getsyspathz FS.getsyspathBs/$1DEFFr(cd|_y)NTrr"s r&closezFS.closeEs  r(c|jSr rLrMs r&isclosedz FS.isclosedHs ||r(c|Sr r!rMs r& __enter__z FS.__enter__Ks r(c$|jy)NF)rN)r"exc_typeexctbs r&__exit__z FS.__exit__Ns r(c:|jrtd|dy)NrIz is closed)rr rMs r&checkzFS.checkRs" <<"_THJ#GH H r()factoryc(|ddlm}|}|||S)u+Return a sub‑filesystem rooted at `path`.rr)_subfsr)r"r#rZrs r&opendirz FS.opendirVs ? %GtT""r(c@fdjDS)Nc3LK|]}jd|yw)/N)r<).0pr;r#r"s r& zFS.scandir..as&TA vQqc]J7Ts!$)r2r:s```r&scandirz FS.scandir^sUdASTTr(ct|Sr rrMs r&walkzFS.walkcs 4  r(cr|j|d5}|jcdddS#1swYyxYw)Nrb)r'read)r"r#fs r& readbytesz FS.readbytesgs0 YYtT " a668   s-6ct|j|d5}|j|dddy#1swYyxYw)Nwb)r'write)r"r#datarjs r& writebytesz FS.writebytesks2 YYtT " a GGDM   s.7c||s|j|ry|j|d5 dddy#1swYyxYw)NFrmT)r+r')r"r#wipes r&rFz FS.createos: D) YYtT "    s2;cF|j|st|d|j|std|d|s |j|rt d|d|j t |stdt |dt||||y)N does not existpath z should be a filez destination z already exists should be a directory) r+rr0r r r.rr r)r"src_pathdst_path overwrites r&copyzFS.copyvs{{8$"h\#AB BX&xl2CDE ET[[2#l8,o$NO Ozz'(+,#eGH,=+@@V$WX X$$1r(c|s|j|st|d|j|std|dt ||||y)Nrtrurv)r+rr.r r)r"rwrxrFs r&copydirz FS.copydirsQdkk(3"h\#AB Bzz(##eH<7M$NO Oxx0r()rh)r#strr$r}returnzIO[Any])r#r}r~r)r#r}r~z list[str])F)r#r}r5rr~rr )r#r}r;Collection[str] | Noner~r)r#r}r~None)rDr}rEr}rFrr~r)r#r}r~r})r~r)r~r)r#r}rZzType[SubFS] | Noner~r)r#r}r;rr~zIterator[Info])r~r)r#r}r~bytes)r#r}ror)r#r}rrr)rwr}rxr})"__name__ __module__ __qualname____doc__r__annotations__rr'r+r.r0r2r6r8r<r>r@rBrGrJrNrPrRrWrYr]rdpropertyrfrkrprFrzr|r!r(r&rrs75GTII,,++,,22FFGGXX,,//00LLGICG#?CUU%;U U !! 21r(r) __future__rtypingabcrr_copyrr_errorsr r r r r r_pathr_walkr TYPE_CHECKINGrrrrrr_inforr\rrr!r(r&rsF" #& @@m1m1r(