e> SrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK rSSK rSSK r SSK r SSK Jr SSKr/SQr\R$R'S5r"SS5r"SS \5r"S S \5r"S S \5r"SS\5r"SS\5r"SS\5r"SS\5r"SS\R8R:5r"SS\5r"SS\5r"SS\5r "SS\5r!"S S!\5r""S"S#\5r#"S$S%5r$"S&S'\$5r%S8S(jr&S)r'S*r(S+r)S,r*S-r+"S.S/\,5r-"S0S1\-5r."S2S3\-5r/"S4S5\-5r0"S6S7\-5r1g!\a SrGNCf=f)9zDRead/write support for Maildir, mbox, MH, Babyl, and MMDF mailboxes.N) GenericAlias)MailboxMaildirmboxMHBabylMMDFMessageMaildirMessage mboxMessage MHMessage BabylMessage MMDFMessageErrorNoSuchMailboxError NotEmptyErrorExternalClashError FormatErrorasciic\rSrSrSrS%SjrSrSrSrSr S r S&S jr S r S r S rSrSrSrSrSrSrSrSrSrSrSrSrS&SjrSrS&SjrSrSrSr S r!S!r"S"r#S'S#jr$\%"\&5r'S$r(g)(r"z*A group of messages in a particular place.Nc[RR[RRU55UlX lg)zInitialize a Mailbox instance.N)ospathabspath expanduser_path_factoryselfrfactorycreates -/opt/imh/python3.13/lib/python3.13/mailbox.py__init__Mailbox.__init__%s*WW__RWW%7%7%=>  c[S5e)$Add message and return assigned key.&Method must be implemented by subclassNotImplementedErrorr messages r#add Mailbox.add*!"JKKr&c[S5e)=Remove the keyed message; raise KeyError if it doesn't exist.r)r*r keys r#removeMailbox.remove.r0r&c&URU5 gN)r5r3s r# __delitem__Mailbox.__delitem__2s Cr&cHURU5 g![a gf=fz'If the keyed message exists, remove it.N)r5KeyErrorr3s r#discardMailbox.discard5s%  KK    s  !!c[S5e)>Replace the keyed message; raise KeyError if it doesn't exist.r)r*r r4r-s r# __setitem__Mailbox.__setitem__<r0r&cJURU5$![a Us$f=f)z9Return the keyed message, or default if it doesn't exist.) __getitem__r=)r r4defaults r#get Mailbox.get@s, ##C( ( N s  ""cUR(dURU5$[R"UR U55nURU5sSSS5 $!,(df  g=f)z=Return the keyed message; raise KeyError if it doesn't exist.N)r get_message contextlibclosingget_file)r r4files r#rFMailbox.__getitem__GsK}}##C( (##DMM#$674}}T*877s A## A1c[S5e)4Return a Message representation or raise a KeyError.r)r*r3s r#rKMailbox.get_messageOr0r&ch[R"URU55R5$)zReturn a string representation or raise a KeyError. Uses email.message.Message to create a 7bit clean string representation of the message.emailmessage_from_bytes get_bytes as_stringr3s r# get_stringMailbox.get_stringSs' ''s(;<FFHHr&c[S5e)z8Return a byte string representation or raise a KeyError.r)r*r3s r#rXMailbox.get_bytesZr0r&c[S5e)6Return a file-like representation or raise a KeyError.r)r*r3s r#rNMailbox.get_file^r0r&c[S5e)Return an iterator over keys.r)r*r s r#iterkeysMailbox.iterkeysbr0r&c4[UR55$)zReturn a list of keys.)listrdrcs r#keys Mailbox.keysfsDMMO$$r&c#n# UR5H nXnUv M g![a Mf=f7f)z%Return an iterator over all messages.Nrdr=r r4values r# itervaluesMailbox.itervaluesjs;==?C  K #  s5$ 5 2525c"UR5$r8)rnrcs r#__iter__Mailbox.__iter__ss  r&c4[UR55$)z,Return a list of messages. Memory intensive.)rgrnrcs r#valuesMailbox.valuesvsDOO%&&r&c#p# UR5H nXnX4v M g![a Mf=f7f)z.Return an iterator over (key, message) tuples.Nrkrls r# iteritemsMailbox.iteritemszs>==?C  ,  #  s6% 6 3636c4[UR55$)z9Return a list of (key, message) tuples. Memory intensive.)rgrwrcs r#items Mailbox.itemssDNN$%%r&c[S5e)9Return True if the keyed message exists, False otherwise.r)r*r3s r# __contains__Mailbox.__contains__r0r&c[S5e)*Return a count of messages in the mailbox.r)r*rcs r#__len__Mailbox.__len__r0r&cTUR5HnURU5 M g)zDelete all messages.N)rhr>r3s r#clear Mailbox.clears99;C LL r&cVXnURU5 U$![a Us$f=f)z3Delete the keyed message and return it, or default.)r=r>)r r4rGresults r#pop Mailbox.pops7 YF S  N s  ((cjUR5HnXRU54s $ [S5e)z6Delete an arbitrary (key, message) pair and return it.zNo messages in mailbox)rdrr=r3s r#popitemMailbox.popitems1==?C#' '#34 4r&c[US5(aUR5nO$[US5(aUR5nOUnSnUH upEXPU'M U(a [S5eg![a SnM0f=f)z4Change the messages that correspond to certain keys.rwrzFTzNo message with key(s)N)hasattrrwrzr=)r argsourcebad_keyr4r-s r#updateMailbox.updates 3 $ $]]_F S' " "YY[FF"LC #S # 34 4   sA,, A<;A<c[S5e)&Write any pending changes to the disk.r)r*rcs r#flush Mailbox.flushr0r&c[S5e)Lock the mailbox.r)r*rcs r#lock Mailbox.lockr0r&c[S5e)#Unlock the mailbox if it is locked.r)r*rcs r#unlockMailbox.unlockr0r&c[S5e)Flush and close the mailbox.r)r*rcs r#close Mailbox.closer0r&cXURS5$![a [S5ef=f)Nrz?String input must be ASCII-only; use bytes or a Message instead)encode UnicodeError ValueErrorr,s r#_string_to_bytesMailbox._string_to_bytess7 2>>'* * 212 2 2s)Fc[U[RR5(a[R "5n[R RXCS5nURU5 URS5 UR5nURS[5nURU5 UR(a1UR[5(dUR[5 g g g [U[ ["[R$45(a[U[R$5(a,[&R("S[*S5 UR-5n[U[ 5(aUR/U5nU(aURSS5nURS[5nURU5 UR(a1UR[5(dUR[5 g g g [1US5(Ga,[1US5(a([&R("S [*S5 UR2nS nUR55nURS 5(a US S S-nOURS 5(aUS SS-nU(dOPU(aUR7S5(aSUSS -nURS[5nURU5 UnMUR(a9U(a1UR[5(dUR[5 g g g g [9S[;U5-5e)z%Dump message contents to target file.r 8Use of StringIO input is deprecated, use BytesIO insteads From s >From readbufferDUse of text mode files is deprecated, use a binary mode file insteadN  From s>From Invalid message type: %s) isinstancerVr-r ioBytesIO generatorBytesGeneratorflattenseekrreplacelinesepwrite_append_newlineendswithstrbytesStringIOwarningswarnDeprecationWarninggetvaluerrrreadline startswith TypeErrortype) r r-target mangle_from_rgendatalastlinelines r# _dump_messageMailbox._dump_messages gu}}44 5 5ZZ\F//00qIC KK KKN;;=D<<w/D LL ##DMM',B,B W%-C##ubkk!: ; ;'2;;// *+=qB!**,'3''//8!//*kBooeW5G LL !##G,<,rCrHrFrKrZrXrNrdrhrnrqrtrwrzr~rrrrrrrrrrrr classmethodr__class_getitem____static_attributes__r&r#rr"s4 LLL+LILLL%!'&LL 55"LLLL2O4Hl$L1r&rc\rSrSrSrSrS(SjrSrSrSr S r S r S r S r S rS\4SjrSrS\4SjrS\4SjrS\4SjrSrSrSrSrSrSrSrSrSrSrS rS!r S"r!S#r"S$r#S%r$S&r%S'r&g))ri zA qmail-style Maildir mailbox.:Nc[RXX#5 [RR UR S5[RR UR S5[RR UR S5S.Ul[RRUR 5(dvU(aZ[R"UR S5 UR R5Hn[R"US5 M O[UR 5e0Ul SSS.Ul SUl SUlg ) zInitialize a Maildir instance.tmpnewcur)rrrr)rrg?N)rr$rrjoinr_pathsexistsmkdirrtr_toc _toc_mtimes _last_read _skewfactor)r dirnamer!r"rs r#r$Maildir.__init__s877<< E277<< E277<< E2 ww~~djj))U+ KK..0DHHT5)1)44 #$Q/r&cUR5nURX5 [U5 [U[5(a?UR5nURUR5-nX@R:XaSnOSnSn[RRUR 5RUR5Sn[RR!UR"X5U-5n[U[5(aX[R$"UR [RR'UR 5UR)545 [R*"UR U5 [R "UR 5 U$![a2 UR5 [R "UR 5 ef=f![,[.4a% [R0"UR U5 U$f=f![2aRn[R "UR 5 UR4[4R6:Xa[9SU-5eeSnAff=f)r(rrz$Name clash with existing message: %sN) _create_tmpr BaseExceptionrrr5name _sync_closerr get_subdircolonget_inforbasenamesplitrrutimegetatimeget_datelinkAttributeErrorPermissionErrorrenameOSErrorerrnoEEXISTr)r r-tmp_filesubdirsuffixuniqdestes r#r. Maildir.add$s##%    w 1 H g~ . .'')FZZ'"2"2"44F#FFww .44TZZ@Cww||DJJv > g~ . . HHX]]gg&&x}}5w7G7G7IJ L  ) t, (--( G  NN  IIhmm $  0#O4 / (--.  /  IIhmm $ww%,,&()O+/*011  sBF*'!G) H!*r&cTURU5 g![[4a gf=fr<)r5r=FileNotFoundErrorr3s r#r>Maildir.discardRs+  KK +,   s ''cURU5nURU5nURU5n[U[5(aUnOUn[R R U5nURU;a,URURUR5S-nOSnURU5 [R RURU5n [R RURXqU-5n [U[5(aD[R"U [R RU 5UR545 [R"X5 g)rArrN)rr.rr rrrrrr>rrrrrr) r r4r- old_subpathtemp_key temp_subpathdominant_subpathr r tmp_pathnew_paths r#rCMaildir.__setitem__Zsll3' 88G$||H- g~ . .+  + !12 ::) )ZZ"2"8"8"DR"HHFF S77<< L977<< F&LA g~ . . HHXgg&&x0'2B2B2DE G (%r&cURU5n[[RR UR U5S5nUR (aUR U5nO [U5nSSS5 [RRU5upVWRU5 URU;a-URURUR5S5 UR[RR[RR UR U555 U$!,(df  N=f)rRrbNr)ropenrrrrrr r set_subdirrset_infoset_dategetmtime)r r4subpathfmsgr rs r#rKMaildir.get_messageus,,s# "'',,tzz73T :a}}mmA&$Q' ; ww}}W-  v ::  LLDJJ/3 4 RWW%%bggll4::w&GHI ; :s /E Ec[[RRURUR U55S5nUR 5R[S5sSSS5 $!,(df  g=f)2Return a bytes representation or raise a KeyError.r rN) r!rrrrrrrrr r4r's r#rXMaildir.get_bytessM "'',,tzz4<<+<=t D668##GU3E D Ds $A22 Bc[[RRURUR U55S5n[ U5$)r_r )r!rrrrr _ProxyFiler,s r#rNMaildir.get_files4 djj$,,s*;Set the given flags and unset all others on the keyed message.zflags must be a string: r9rN)rrrrr#rsortedset)r r4r=s r# set_flagsMaildir.set_flagssK%%%6tE{mDE E c4"''&U*<"==>r&flagc [U[5(d[S[U535eUR USR [ URU55[ U5-55 g)zCSet the given flag(s) without changing others on the keyed message.flag must be a string: rN)rrrrrArr@r;r r4rCs r#add_flagMaildir.add_flagsT$$$5d4j\BC C sBGGCs(;$>#   NN3DNN3,?(@3t9(L M N r&c## UR5 URHnURU5 Uv M g![a M+f=f7frbN)_refreshrrr=r3s r#rdMaildir.iterkeyssG 99C  S!I   s% A= A A A A  Ac>UR5 XR;$r})rNrr3s r#r~Maildir.__contains__s iir&cLUR5 [UR5$r)rNlenrrcs r#rMaildir.__len__s 499~r&cg)"Write any pending changes to disk.Nrrcs r#r Maildir.flushs r&cg)rNrrcs r#r Maildir.lockr&cg)rNrrcs r#rMaildir.unlockr\r&cgrNrrcs r#r Maildir.closer\r&cT/n[R"UR5Hn[U5S:dMUSS:XdM[RR [RR URU55(dMmURUSS5 M U$)Return a list of folder names.r.N)rlistdirrrUrisdirrappendr rentrys r# list_foldersMaildir.list_folderssrZZ +E5zA~%(c/ww}}RWW\\$**e<== eABi(, r&c[[RRURSU-5UR SS9$)z/Return a Maildir instance for the named folder.reFr!r")rrrrrrr folders r# get_folderMaildir.get_folders2rww||DJJf =#}}#% %r&c[RRURSU-5n[ X R S9n[RRUS5n[RR U5(dK[R"[R"U[R[R-S55 U$)z>Create a folder and return a Maildir instance representing it.rer! maildirfolder) rrrrrrrrr!O_CREATO_WRONLY)r rprrmaildirfolder_paths r# add_folderMaildir.add_foldersww||DJJf 5}}5WW\\$@ww~~011 HHRWW/bkk1I  r&c[RRURSU-5n[R"[RRUS55[R"[RRUS55-H)n[ U5S:d USS:wdM[ SU-5e [R"U5HonUS:wdM US:wdMUS:wdMR[RRX#55(dM^[ SU<S U<35e [R"US S 9H~upEnUH6n[R"[RRXC55 M8 UH6n[R"[RRXC55 M8 M [R"U5 g ) -Delete the named folder, which must be empty.rerrrdrzFolder contains message(s): %srzFolder contains subdirectory 'z': F)topdownN) rrrrrfrUrrgwalkr5rmdir)r rprrjrootdirsfiless r# remove_folderMaildir.remove_foldersTww||DJJf 5ZZ T5 9:ZZ T5 9:;E5zA~qS#$Dv$MNN;ZZ%E~%5.Ue^ww}}RWW\\$677#%+U%455& "$u!= D "'',,t34d23"> r&c[R"5n[R"[RR UR S55Hln[RR UR SU5nU[RR U5- S:dMV[R"U5 Mn g)zDelete old files in "tmp".ri@N)timerrfrrrrr5)r nowrjrs r#clean Maildir.cleansuiikZZ TZZ ?@E77<< E59DRWW%%d++f4 $Ar&rdc ~[R"5n[R"5nSU;aURSS5nSU;aURSS5n[ U5<S[ US-S-5<S[ R "5<S [R<S U<3 n[ RRURS U5n[ R"U5 [!S U-5e![a9 [=RS- sl[U5s$![a NLf=ff=f) z=Create a file in the tmp subdirectory and open and return it./z\057rz\072z.Mrdg.APQrerz&Name clash prevented file creation: %s)rsocket gethostnamerintrgetpidr_countrrrstatr_create_carefullyFileExistsErrorr)r rhostnamer rs r#rMaildir._create_tmpsiik%%' (?''W5H (?''W5H$'Hc#'C-.@"))+$+NNH>ww||DJJt4  GGDM!!I!%"&' '!  NNa N (.."    s0C99#D< D*'D<* D84D<7D88D<cN[R"5UR- SUR-:akSnURHQn[R R URU5nX0RU:aSnX0RU'MS U(dg0UlURHnURUn[R"U5HnURS5(aM[R RXE5n[R RU5(aM`URUR5Sn[R RX%5URU'M M [R"5Ulg)z!Update table of contents mapping.r:FTNrer)rrrrrrr%rrrfrrrgrr)r refreshr mtimerrjpr s r#rNMaildir._refresh4s8 99; (1t/?/?+? ?G**((V)<=++F33"G+0  ( +  &&F;;v&DD)##C((GGLL-77==##{{4::.q1"$'',,v"= $*'))+r&cp[RR[RRURUR U55(aUR U$UR5 UR U$![ a N,f=f![ a [ SU-5Sef=f)z=Use TOC to return subpath for given key, or raise a KeyError.No message with key: %sN)rrrrrrr=rNr3s r#rMaildir._lookupZs ww~~bggll4::tyy~FGGyy~%H  F99S> !      F4s:; E FsA'B <B BBB5c[US5(dUR5UlU[UR5$![a g[ a M2f=f)z0Return the next message in a one-time iteration. _onetime_keysN)rrdrnext StopIterationr=rcs r#r Maildir.nexthsXt_--!%D  D!3!3455    sA A AA)rrrrrrr)'rrrrrrr$r.r5r>rCrKrXrNrrr#r;rArGrJrdr~rrrrrrkrqrzrrrrrNrrrrr&r#rr s( E((T?&6 4   %# %?C?K#KOSO   % & F'0$&L F r&rc\rSrSrSrSSjrSrSrSrSr S r S r S r S r S rSrSrSrSrSSjrSrSrg)_singlefileMailboxiuzA single-file mailbox.Nc [RXX#5 [URS5nX@l SUl SUl SUl SUlSUlSUlg![anUR [ R :Xa7U(a[URS5nSnAN{[UR5eUR [ R[ R4;a[URS5nSnANeSnAff=f)z!Initialize a single-file mailbox.rb+zwb+r NrF)rr$r!rrrENOENTrEACCESEROFS_filer _next_key_pending _pending_sync_locked _file_length)r rr!r"r'rs r#r$_singlefileMailbox.__init__xsW5 TZZ'A   "  ! ww%,,&TZZ/A,TZZ88U\\5;;77T* s$A D );D)ADDD cUR5 URU5URUR'U=RS- slSUlURS- $)r(rdT)r_append_messagerrrr,s r#r._singlefileMailbox.addsO $($8$8$A $..! !"~~!!r&cNURU5 URU SUlg)r2TN)rrrr3s r#r5_singlefileMailbox.removes  S IIcN r&cpURU5 URU5URU'SUlg)rATN)rrrrrBs r#rC_singlefileMailbox.__setitem__s- S--g6 # r&c#t# UR5 URR5ShvN gN7frM)rrrhrcs r#rd_singlefileMailbox.iterkeyss" 99>>###s .868c>UR5 XR;$rQ)rrr3s r#r~_singlefileMailbox.__contains__s iir&cLUR5 [UR5$rT)rrUrrcs r#r_singlefileMailbox.__len__s 499~r&c`UR(d[UR5 SUlgg)rTN)r _lock_filerrcs r#r_singlefileMailbox.locks!|| tzz "DLr&c`UR(a[UR5 SUlggrFN)r _unlock_filerrcs r#r_singlefileMailbox.unlocks! <<  $ DL r&c dUR(d.UR(a[UR5 SUlgURceURR SS5 URR 5nXR:wa[SURU4-5e[UR5n0nURU5 [URR55HnURUupVURR U5 URU5 UR 5nURR[!SX`RR 5- 55nU(dOUR#U5 MZXrR 54X4'UR%U5 M UR 5Ul[/U5 URR'5 [(R0"UR5n [(R2"UR,U R45 [(R6"UR,U R8U R:5 [(R@"UR,UR5 [EURS5UlX0lSUlSUlURF(a[IURSS9 gg! UR'5 [(R*"UR,5 e=f![<[>4a Nf=f![BaN [(R*"UR5 [(R@"UR,UR5 Nf=f) rXFNrr:z4Size of mailbox file changed (expected %i, found %i)r)dotlock)%rr _sync_flushrrrtellrr_create_temporaryr_pre_mailbox_hookr?rh_pre_message_hookrminr_post_message_hookrrr5rrrchmodst_modechownst_uidst_gidrrrrr!rr) r cur_lennew_filenew_tocr4startstop new_startrr3s r#r_singlefileMailbox.flushs}}!!DJJ'%*"  yy$$$ 1**//# '' '$&?&*&7&7%A&BC C%TZZ0 G  " "8 ,diinn./"iin  &&&x0$MMO !ZZ__S15 8I1I.KLF!NN6*  !*==?; ''10!) D  H wwtzz"  -  HHX]]DKK = 1 IIhmmTZZ 0$**e,   " << tzz5 1 /  NN  IIhmm $ (    1 IIdjj ! IIhmmTZZ 0 1s2DL 6M +M 3L>MMAN/.N/cg),Called before writing the mailbox to file f.Nrr r's r#r$_singlefileMailbox._pre_mailbox_hookr\r&cg)-Called before writing each message to file f.Nrrs r#r$_singlefileMailbox._pre_message_hookr\r&cg,Called after writing each message to file f.Nrrs r#r%_singlefileMailbox._post_message_hook r\r&cUR5 UR(aUR5 URR 5 g!URR 5 f=f!UR(aUR5 URR 5 f!URR 5 f=f=fr`)rrrrrrcs r#r_singlefileMailbox.closes| # JJL #<<KKM   "   "  #<<KKM   "   "s.A.!AA+.C 0!B,C ,CC cURcUR5 UbURU$g![a [SU-5Sef=f)z'Return (start, stop) or raise KeyError.Nr)r _generate_tocr=r3s r#r_singlefileMailbox._lookups\ 99     ? Jyy~%  J83>?TI Js 2A cRURRSS5 URR5n[UR5S:Xa,UR (dUR UR5 URUR5 URU5nURUR5 URR5 URR5Ul U$![a URRU5 ef=f)z;Append message to mailbox and return (start, stop) offsets.rr:)rrrrUrrrr_install_messagerrtruncaterr)r r-beforeoffsetss r#r"_singlefileMailbox._append_message%s 1" tyy>Q t}}  " "4:: .   " "4:: .++G4G  # #DJJ /  JJOO-   JJ   '  s =AC??'D&)rrrrrrrrr8)rrrrrr$r.r5rCrdr~rrrrrrrrrrrrr&r#rrusX !."  $    ! B2H #Jr&rcF\rSrSrSrSrSrS SjrS SjrS Sjr Sr S r g ) _mboxMMDFi<zAn mbox or MMDF mailbox.TcURU5up#URRU5 URR5R [ S5R S5nURRX0RR5- 5nURUR [ S55nURU5 URUSS5 U$)rRr&rrrN) rrrrrrdecoderr_message_factory set_unixfromset_from)r r4rr from_linestringr(s r#rK_mboxMMDF.get_messageAsll3'  JJ'')11'3?FFwO  (9!9:##FNN7E$BC # Yqr]# r&cf[R"URX55RUS9$)3Return a string representation or raise a KeyError.)unixfromrU)r r4from_s r#rZ_mboxMMDF.get_stringLs.'' NN3 &((1 5 (A Br&c6URU5up4URRU5 U(dURR5 URR X@RR 5- 5nUR [S5$)rr)rrrrrrrr)r r4rrrrs r#rX_mboxMMDF.get_bytesQsfll3'   JJ   ! (9!9:~~gu--r&cURU5up4URRU5 U(dURR5 [ URURR 5U5$)r_)rrrr _PartialFiler)r r4rrrs r#rN_mboxMMDF.get_fileZsSll3'   JJ   !DJJ (94@@r&cSn[U[5(aURU5n[U[5(a?UR S5(a)UR S5nUS:wa USUnXS-SnOUnSnO[U[ 5(a%UR5RS5nSU-nOM[U[RR5(a$UR5nUbURS5nUc:S[R"[R"55R5-nUR R#5nUR R%U[&-5 UR)XR UR*5 UR R#5nXV4$) z1Format a message and blindly write to self._file.Nrrrrdr&rsFrom MAILER-DAEMON )rrrrrfind_mboxMMDFMessageget_fromrrVr-r get_unixfromrasctimegmtimerrrrr _mangle_from_)r r-rnewlineauthorrrs r#r_mboxMMDF._install_messagebsg gs # #++G4G gu % %'*<*G$i!mG77<< CL9 h ' ||1  $ &&w2gy11((:<< OA!%||$QN!FIIh'<< O As72E'C7!&EE'7A EEE$$E''E<cN[RRUR[ U55n[ US5nUR 5 [R"U5 g![a2nUR[R:Xa[SU-5eeSnAff=f)r2rrN) rrrrrr!rr5rrrr=)r r4rr'rs r#r5 MH.removes{ww||DJJC1 T5!A GGI IIdO ww%,,&83>??  s A(( B$2-BB$c[RRUR[ U55n[ US5nUR(a [U5 [R"[R "U[R[R-55 URX$5 [!U["5(aUR%X!5 UR(a ['U5 [)U5 g![ a2nUR[R:Xa[SU-5eeSnAff=f!UR(a ['U5 ff=f![)U5 f=f)rArrN)rrrrrr!rrrr=rrrrxO_TRUNCrrr r7rr)r r4r-rr'rs r#rCMH.__setitem__sww||DJJC1 T5!A ||1  $r{{RZZ'?@A""7.gy11((6<< O N# ww%,,&83>??  << O  Ns< DE)BE E) E-D??EE&&E)) E6c"UR(a>[[RR UR [ U55S5nO>[[RR UR [ U55S5nU UR(a [U5 [U5nUR(a [U5 SSS5 UR5R5HupVX;dM WR!U5 M W$![a2nUR[R:Xa[SU-5eeSnAff=f!UR(a [U5 ff=f!,(df  N=f)rRrr rN)rr!rrrrrrrrr=rr r get_sequencesrz add_sequence)r r4r'rr(rkey_lists r#rKMH.get_message7s ||djj#c(;UCdjj#c(;TB ||1  $l<< O#00288:ND  &; ! ww%,,&83>??  << O QsBAD=DF/ E:F E)-EEE==F FcUR(a>[[RR UR [ U55S5nO>[[RR UR [ U55S5nU UR(a [U5 UR5R[S5UR(a [U5 sSSS5 $![a2nUR[R:Xa[SU-5eeSnAff=f!UR(a [U5 ff=f!,(df  g=f)r+rr rNr)rr!rrrrrrrrr=rrrrrr r4r'rs r#rX MH.get_bytesPs ||djj#c(;UCdjj#c(;TB ||1  $vvx''7<< OQ  ww%,,&83>??  << O QsBAC8=C8E/#D7E8 D4-D//D47EE E'c[[RRUR[ U55S5n[U5$![ a2nUR[R:Xa[SU-5eeSnAff=f)r_r rN) r!rrrrrrrrr=r/rFs r#rN MH.get_fileesl RWW\\$**c#h7>A !}  ww%,,&83>??  s=A B-BBct[[S[R"UR5555$)rbc3f# UH'nUR5(dM[U5v M) g7fr8)isdigitr).0rjs r# MH.iterkeys..rs(:3I%).&3u::3Is11)iterr?rrfrrcs r#rd MH.iterkeysps/F:2::djj3I::; ;r&c[RR[RRUR[ U555$rQ)rrrrrrr3s r#r~MH.__contains__us,ww~~bggll4::s3x@AAr&cF[[UR555$rT)rUrgrdrcs r#r MH.__len__ys4 ())r&cU(aSOSnU(aSS0O0n[RRURS5n[ USU-40UD6$![ a Of=f[ USU-40UD6$![ a Of=fMD)NrbencodingASCIIr2zr+zx+)rrrrr!rr)r textmodekwargsrs r#_open_mh_sequences_fileMH._open_mh_sequences_file}srs*.*g&Bww||DJJ8 D$+888$   D$+888"  s$A A"!A"&A66 BBcUR(d1URSS9Ul[UR5 SUlgg)rFrZTN)rr]rrrcs r#rMH.locks6||5555ADJ tzz "DLr&cUR(a4[UR5 [UR5 U?SUlggr)rrrrrcs r#r MH.unlocks2 <<  $  #  DL r&cg)rNrrcs r#rMH.flushr\r&cHUR(aUR5 ggr`)rrrcs r#rMH.closes << KKM r&c/n[R"UR5Hbn[RR [RR URU55(dMQUR U5 Md U$)rc)rrfrrrgrrhris r#rkMH.list_folderssWZZ +Eww}}RWW\\$**e<== e$, r&c|[[RRURU5UR SS9$)z+Return an MH instance for the named folder.Frnrrrrrrros r#rq MH.get_folders-"'',,tzz62--7 7r&cz[[RRURU5UR S9$)z:Create a folder and return an MH instance representing it.rtrkros r#rz MH.add_folders+"'',,tzz62--) )r&cf[RRURU5n[R"U5nUS/:Xa5[R "[RRUS55 OU/:XaO[ SUR-5e[R"U5 g)r}r2zFolder not empty: %sN)rrrrrfr5rr)r rprentriess r#rMH.remove_foldersxww||DJJ/**T" ' ' IIbggll49 : ]  6 CD D r&c  0n[[RRURS5SSS9nU [ UR55nUHnURS5upV[ 5nUR5HknUR5(aUR[U55 M4SURS55upUR[XS-55 Mm [U5V s/sH n X;dM U PM sn X'[X5S :XaX MM S S S 5 U$![ a Us$f=fs sn f![ a [#S UR%5-5ef=f!,(df  U$=f) z=Return a name-to-key-list dictionary to define each sequence.r2rrY)rXrc38# UHn[U5v M g7fr8)r)rMxs r#rN#MH.get_sequences..s*K?a3q66?s-rdrz"Invalid sequence specification: %sN)r!rrrrrr@rhrrLr.rrranger?rUrrrstrip) r resultsr'all_keysrrcontentsrhspecrrr4s r#rAMH.get_sequencessa RWW\\$**o>gVA499;'H5%)ZZ_ND5D ( 0<<>> HHSY/*K4::c?*KKE KKeAX(>? !1 5;4L%=LS,/O&)L%=GM7=)Q.#M/&+! N %="5%&J&*kkm'4555!Q&sM3D=E>B)E EEE-E>= E  E E'E;;E>> F cURSS9n[R"[R"UR[R [R -55 UR5Hup4[U5S:XaMURUS-5 SnSn[[U55H_nUS- U:XaU(dSnURS5 O6U(aSnURU<S U<35 OURS U-5 UnMa U(aUR[U5S -5 MURS 5 M [U5 g![U5 f=f) z:Set sequences using the given name-to-key-list dictionary.Tr`rrNFrdrw z %s )r]rrr!rrxr>rzrUrr?r@rr)r sequencesr'rrhprev completingr4s r# set_sequencesMH.set_sequencess  ( (d ( 3  HHRWWQVVR[[2::%=> ?'oo/ t9>s #" !#d),CQw$))-JGGCL#%* 4 56 ,D-GGCI,-GGDM)0, NKNs EE!! E.c  UR5nSn/nUR5HnUS- U:waURXBS-45 [R"[R R UR[U55[R R UR[US-555 [R"[R R UR[U555 US- nM US-Ul [U5S:XagUR5H*upVUHupxXv;dM XUR!U5'M! M, UR#U5 g![[4a [R"[R R UR[U55[R R UR[US-555 GNf=f)z?Re-name messages to eliminate numbering gaps. Invalidates keys.rrdN)rArdrhrrrrrrunlinkrrrrrUrzindexr) r rrchangesr4rrColdrs r#packMH.packs|&&( ==?CQw$AX/BGGBGGLLSX>GGLLS]CE IIbggll4::s3x@A AID# w<1  'oo/ND#?47X^^C01$0 9%'8GIIbggll4::s3x@ ggll4::s4!8}EGGsAfilededitedresentunseendeletedanswered forwardedNc>[RXX#5 0Ulg)zInitialize a Babyl mailbox.N)rr$_labelsrs r#r$Babyl.__init__)s##D@ r&c[RX5n[U[5(aUR 5UR U'U$)r()rr.rr get_labelsr)r r-r4s r#r. Babyl.add.s; $$T3 g| , , ' 2 2 4DLL  r&ch[RX5 XR;aURU ggr)rr5rr3s r#r5 Babyl.remove5s+!!$, ,,  S! r&c[RXU5 [U[5(aUR 5UR U'gg)rAN)rrCrrrrrBs r#rCBabyl.__setitem__;s;&&t': g| , , ' 2 2 4DLL  -r&cURU5up#URRU5 URR5 [R "5nURR5nUS[ -:XdU(dO'URUR[ S55 MV[R "5nURR5nU[ :XdU(dO'URUR[ S55 MSX0RR5- nUS:deURRU5nUR[ S5n[UR5U-5n U RUR55 XR;aU RURU5 U $)rR *** EOOH ***rr)rrrrrrrrrrrrr set_visibler set_labels) r r4rroriginal_headersrvisible_headersnbodyr(s r#rKBabyl.get_messageAscll3'   ::<::&&(D00  " "4<<#? @  **,::&&(Dwd  ! !$,,w"> ?  ::??$ $Av vzzq!||GU++446=> 0023 ,,  NN4<<, - r&cURU5up#URRU5 URR5 [R "5nURR5nUS[ -:XdU(dO'URUR[ S55 MVURR5nU[ :XdU(dOM.UR5nX0RR5- nUS:deURRU5nUR[ S5nXh-$)rrrr) rrrrrrrrrrrr) r r4rrrrheadersrrs r#rXBabyl.get_bytes]sll3'   ::<::&&(D00  " "4<<#? @  ::&&(Dwd#++- ::??$ $Av vzzq!||GU+~r&ct[R"URU5RS[55$)r_r)rrrXrrr3s r#rNBabyl.get_filess'zz$..-55eWEFFr&cUR5 [5nURR5HnUR U5 M UR UR 5 [U5$)z4Return a list of user-defined labels in the mailbox.)rr@rrtrdifference_update_special_labelsrg)r labels label_lists r#rBabyl.get_labelswsS ,,--/J MM* %0  !5!56F|r&cf//p!URRS5 Sn/nUnURR5nURR5nUS[-:Xa[ U5[ U5:a!UR U[ [5- 5 UR U5 URR5SSRS5Vs/sH*nUR5(dMUR5PM, nnUR U5 OvUS:Xd US[-:Xa:[ U5[ U5:a!UR U[ [5- 5 O)U(d"UR U[ [5- 5 OGMy[[[X555Ul [[U55Ul [ UR5UlURRSS5 URR5Ulgs snf)rrs rdN,r:)rrrrrrUrhrstriprrrrrrr) r rr r. label_listsr"rlabelrs r#rBabyl._generate_tocsB  H::&&(Dzz(H{W,,u:F +LLCL!89 h'+/::+>+>+@+D+J+J4+P:+P-2+0;;=(%++-+P:""6*DGg,=$=u:F +LLCL!89 XG 45#$3v#567 Ik23 TYY 1 JJOO-:s H.<H.cS[-nUS[-- nUR5nSU5nUSSRU5-[-- nUS- nURU5 g)rsBABYL OPTIONS:s Version: 5c3@# UHoR5v M g7fr8)r)rMrs r#rN*Babyl._pre_mailbox_hook..s5fU,,..fssLabels:rrN)rrrr)r r'babylrs r#rBabyl._pre_mailbox_hooksc!G+ (("5f5 dii//'99  r&c4URS[-5 g)r Nrrs r#rBabyl._pre_message_hooks '!"r&c4UR[S-5 g)rrNrrs r#rBabyl._post_message_hooks '!"r&cURR5n[U[5(Ga/n/nUR 5H6nXPR ;aUR U5 M%UR U5 M8 URRS5 UH/nURRSUR5-5 M1 URRS5 UH2nURRSUR5-S-5 M4 URR[5 O"URRS[-5 [U[RR5(Ga1[R"5n[RR!USS5nUR#U5 UR%S5 UR'5nURRUR)S [55 US :XdU(dOMOURRS [-5 [U[5(a[R"5n [RR!U SS5n U R#UR+55 U R'5nURRUR)S [55 US :XdU(dOcMOUR%S5 UR'5nURRUR)S [55 US :XdU(dOMOUR-S 5n U (dGOURRU R)S [55 MK[U[.[0[R245(Ga[U[R25(a,[4R6"S [8S5 UR;5n[U[05(aUR=U5nUR?S5S-n U S- S:waURRUSU R)S [55 URRS [-5 URRUSU R)S [55 URRXSR)S [55 GO6URRS [-[-5 URRUR)S [55 GO[AUS5(Ga[AUS5(a([4R6"S[8S5 URBnUR5n S nUR'5nURES5(a USSS -nOURES5(aUSSS -nURRUR)S [55 US :XdU(d>U(a6SnURRS [-5 UR%U 5 OOMUR'5nU(dOURES5(a USS[-nOEURES5(a USS[-nO"URES 5(a USS[-nURRU5 M[GS[IU5-5eURR5nX/4$)z0Write message contents and return (start, stop).1s, s,, rs1,,FrTrrrrrs r:rNrrrrrrr)%rrrrrrrhrrrrVr-r rrrrrrrr get_visiblerrrrrrrrrr rrrrr)r r-rspecial_labelsrr orig_bufferorig_generatorr vis_buffer vis_generatorr body_start original_pos first_passrs r#rBabyl._install_messages ! g| , ,NF ++-000"))%0MM%( . JJ  T "'   !78( JJ  U #    !6!=> JJ  W % JJ  Vg- . gu}}44 5 5**,K"__;;KPQRN  " "7 +   Q "++-   eW!=>5=  JJ  _w6 7'<00ZZ\ % > >z5RS T %%g&9&9&;<%..0DJJ$$T\\%%ABu}D    #&//1DJJ$$T\\%%ABu}D  $))$/   w!?@  %bkk!: ; ;'2;;// *+=qB!**,'3''//8 g.2JA~#   *!5!=!=eW!MN   7!:;   *!5!=!=eW!MN   !5!=!=eW!MN   7!:W!DE   !@A Wj ) )w)) 56H!M!.."<<>LJ'')==))9u,D]]5))9u,D   eW!=>5=!%*  ((7)BC \2'')==))9w.D]]5))9w.D]]5))9w.D   &6gFG Gzz }r&)rrrrr)rrrrr frozensetrr$r.r5rCrKrXrNrrrrrrrrr&r#rr#sY'!BCO " 5 8,G.<##ir&rc.\rSrSrSrSSjrSrSrSrg) r iz0Message with mailbox-format-specific properties.NcZ[U[RR5(aMUR [ R "U55 [U[5(aURU5 gg[U[5(a&UR [R"U55 g[U[5(a&UR [R"U55 g[U[R5(a&UR [R"U55 g[US5(a&UR [R "U55 gUc*[RRR#U5 g[%S['U5-5e)zInitialize a Message instance.rNr)rrVr-r _become_messagecopydeepcopy _explain_torrWrmessage_from_stringr TextIOWrappermessage_from_filermessage_from_binary_filer$rrr,s r#r$Message.__init__s  gu}}44 5 5  w!7 8'7++##D),  ' '  !9!9'!B C  % %  !:!:7!C D !1!1 2 2  !8!8!A B Wf % %  !?!?!H I _ MM ! ! * *4 06gFG Gr&c[US/5nURH&nX2;dM URUURU'M( g)z0Assume the non-format-specific state of message._type_specific_attributesN)getattr__dict__)r r- type_specificrs r#rMessage._become_message2s@)DbI $$D(&-&6&6t&< d#%r&cD[U[5(ag[S5e)z:Copy format-specific state to message insofar as possible.Nz Cannot convert to specified type)rr rr,s r#rMessage._explain_to9s gw ' ' >? ?r&rr8) rrrrrr$rrrrr&r#r r s:H&=@r&r cl\rSrSrSr/SQrSSjrSrSrSr S r S r S r S r S rSrSrSrSrg)r iAz)Message with Maildir-specific properties.)_subdir_info_dateNc~SUlSUl[R"5Ul[R X5 g)z%Initialize a MaildirMessage instance.rrN)rrrrr r$r,s r#r$MaildirMessage.__init__Fs+  YY[ 'r&cUR$)zReturn 'new' or 'cur'.)rrcs r#rMaildirMessage.get_subdirMs ||r&cDUS:XdUS:XaXlg[SU-5e)zSet subdir to 'new' or 'cur'.rrz!subdir must be 'new' or 'cur': %sN)rr)r r s r#r"MaildirMessage.set_subdirQs% U?fo!L@6IJ Jr&cbURRS5(aURSS$g)*Return as a string the flags that are set.r9r:Nr)rrrcs r#r;MaildirMessage.get_flagsXs* ::  & &::ab> !r&cHSSR[U55-Ulg))Set the given flags and unset all others.r9rN)rr?r)r r=s r#rAMaildirMessage.set_flags_sBGGF5M22 r&cURSR[UR55[U5-55 gz.Set the given flag(s) without changing others.rNrArr@r;r rCs r#rGMaildirMessage.add_flagc, rwws4>>#34s4y@ABr&cUR5(aDURSR[UR55[U5- 55 gg)7Unset the given string flag(s) without changing others.rN)r;rArr@rs r#rJMaildirMessage.remove_flaggs> >>   NN2773t~~'7#83t9#DE F r&cUR$)zSet "From " line, formatting and appending time_ if specified.NTr)rrr r)r rtime_s r#r_mboxMMDFMessage.set_froms7  }  S4<<.. .E r&cLURSS5URSS5-$)rStatusrX-Status)rHrcs r#r;_mboxMMDFMessage.get_flagss#xx"%R(@@@r&c[U5nSup#SHnXA;dM X$- nURU5 M! SHnXA;dM X4- nURU5 M! USR[U55- nUR SU5 UR SU5 g![ a UR SU5 N2f=f![ a UR SU5 gf=f)r)rr)rr)rrrrr(r)N)r@r5rr?replace_headerr= add_header)r r= status_flags xstatus_flagsrCs r#rA_mboxMMDFMessage.set_flagssE &,# D}$  T"$D}%  T"$ //  4   , 7 7    M : 4 OOHl 3 4 7 OOJ 6 7s$8B CB=<B=CCcURSR[UR55[U5-55 grrrs r#rG_mboxMMDFMessage.add_flagrr&cSU;dSU;aDURSR[UR55[U5- 55 gg)rr(r)rNrrs r#rJ_mboxMMDFMessage.remove_flags@ t zT1 NN2773t~~'7#83t9#DE F 2r&c>[U[5(a[UR55nSU;aUR S5 SU;aUR S5 SU;aUR S5 SU;aUR S5 SU;aUR S5 US US S R UR5R5S S 5nUR[R"[R"US555 g [U[ 5(a?UR#UR55 UR%UR55 g [U[&5(ae[UR55nSU;aUR)S5 SU;aUR)S5 SU;aUR)S5 US US g [U[*5(ae[UR55nSU;aUR-S5 SU;aUR-S5 SU;aUR-S5 US US g [U[.5(ag [1S[3U5-5e![[4a g f=f)zACopy mbox- or MMDF-specific state to message insofar as possible.rrrrrrrrstatuszx-statusrNz%a %b %d %H:%M:%S %Yrrrrrr)rr r@r;r"rGrr rr$calendartimegmrstrptimer OverflowErrorr rArr rBrrr rr)r r-r= maybe_dates r#r_mboxMMDFMessage._explain_tosH g~ . .()Ee|""5)e|  %e|  %e|  %e|  %! #$--/"7"7"9"#">?J   z6L2N"OP!1 2 2   dnn. /   T]]_ -  + +()E%$$X.e|$$Y/e|$$Y/! #  . .()E%!!(+e|!!),e|!!*-! #  ) ) B M*+ +9 .  s:J JJr"r8)rrrrrrr$r rr;rArGrJrrrr&r#r r s89!( (A7,CG 1+r&r c\rSrSrSrSrg)r iz&Message with mbox-specific properties.rNrrrrrrrr&r#r r 0r&r cF\rSrSrSrS/rS SjrSrSrSr S r S r S r g) r i#z$Message with MH-specific properties. _sequencesNc</Ul[RX5 g)z!Initialize an MHMessage instance.N)rBr r$r,s r#r$MHMessage.__init__(s'r&c URSS$)z4Return a list of sequences that include the message.NrBrcs r#rAMHMessage.get_sequences-sq!!r&c$[U5Ulg)z3Set the list of sequences that include the message.N)rgrB)r rs r#rMHMessage.set_sequences1s y/r&c[U[5(a,XR;aURRU5 gg[ S[ U5-5e)z8Add sequence to list of sequences including the message.zsequence type must be str: %sN)rrrBrhrrr rs r#rBMHMessage.add_sequence5sG h $ $.&&x0/;d8nLM Mr&c\URRU5 g![a gf=f)zARemove sequence from the list of sequences including the message.N)rBr5rrKs r#remove_sequenceMHMessage.remove_sequence=s+  OO " "8 ,     ++c[U[5(a[UR55nSU;aUR S5 O"UR S5 UR S5 SU;aUR S5 SU;aUR S5 g g [U[ 5(ar[UR55nSU;aUR S5 OUR S 5 SU;aUR S5 SU;aUR S 5 g g [U[5(a)UR5HnURU5 M g [U[5(aI[UR55nSU;aURS5 SU;aURS 5 g g [U[5(ag [S [U5-5e)z6Copy MH-specific state to message insofar as possible.rrrrrrrROrrrrN)rr r@rAr"rGr r rBrrr rr)r r-rrs r#rMHMessage._explain_toDs g~ . .D..01I9$""5)""5)  %I%  %I%  %& !1 2 2D..01Iy(  &  %I%  %I%  %&  + + ..0$$X.1  . .D..01I9$!!(+I%!!*-&  ) ) B M*+ +r&rFr8) rrrrrrr$rArrBrNrrrr&r#r r #s,.!-( "*N$+r&r cZ\rSrSrSrSS/rSSjrSrSrS r S r S r S r S r SrSrg)rikz'Message with Babyl-specific properties.r_visibleNcZ/Ul[5Ul[RX5 g)z#Initialize a BabylMessage instance.N)rr rUr$r,s r#r$BabylMessage.__init__ps    'r&c URSS$)z'Return a list of labels on the message.N)rrcs r#rBabylMessage.get_labelsvs||Ar&c$[U5Ulg)z&Set the list of labels on the message.N)rgr)r rs r#rBabylMessage.set_labelszs F| r&c[U[5(a,XR;aURRU5 gg[ S[ U5-5e)z+Add label to list of labels on the message.zlabel must be a string: %sN)rrrrhrrr rs r#rBabylMessage.add_label~sG eS ! !LL( ##E*)84;FG Gr&c\URRU5 g![a gf=f)z4Remove label from the list of labels on the message.N)rr5rr]s r# remove_labelBabylMessage.remove_labels+  LL   &   rPc,[UR5$)z3Return a Message representation of visible headers.r rUrcs r#rBabylMessage.get_visiblest}}%%r&c$[U5Ulg)z2Set the Message representation of visible headers.Nrc)r visibles r#rBabylMessage.set_visibles( r&cURR5H5nX;a URRXU5 M(URU M7 SH,nX;dM XR;dMXURU'M. g)z9Update and/or sensibly generate a set of visible headers.)DateFromzReply-ToToCCSubjectN)rUrhr,)r headers r#update_visibleBabylMessage.update_visibleslmm((*F~ ,,V&\BMM&) + JF~& "=(,  f%Jr&cJ[U[5(a[UR55nSU;aUR S5 O"UR S5 UR S5 SU;dSU;aUR S5 SU;aUR S5 S U;aUR S 5 gg[U[ 5(ar[UR55nSU;aUR S 5 OUR S 5 S U;aUR S 5 SU;aUR S5 gg[U[5(aI[UR55nSU;aURS5 SU;aURS5 gg[U[5(aHURUR55 UR5HnURU5 M g[U[5(ag[S[U5-5e)z9Copy Babyl-specific state to message insofar as possible.rrrrrrrrrrrRrrrrrN)rr r@rr"rGr r rBrrrrr rr)r r-rrs r#rBabylMessage._explain_tos g~ . .*+F6!""5)""5)  %f$F(:  %V#  %F"  %# !1 2 2*+Fv%  &  %F"  %V#  %$  + +*+F6!$$X.V#$$Y/$  . .    0 0 2 3*!!%(+  ) ) B M*+ +r&)rrUr8)rrrrrrr$rrrr`rrrorrrr&r#rrks>1!*J 7( $H&) 5'+r&rc\rSrSrSrSrg)riz&Message with MMDF-specific properties.rNr?rr&r#rrr@r&rc\rSrSrSrSSjrSSjrSSjrSSjrSSjr S r S r SS jr S r S rSrSrSrSrSrSr\S5r\"\5rSrg)r/izA read-only wrapper of a file.NcNXlUcUR5UlgX lg)zInitialize a _ProxyFile.N)rr_pos)r r'poss r#r$_ProxyFile.__init__s ;DIIr&cLURXRR5$z Read bytes.)_readrrr sizes r#r_ProxyFile.readszz$ 00r&cLURXRR5$rz)r{rread1r|s r#r_ProxyFile.read1szz$ 0 011r&cLURXRR5$)z Read a line.)r{rrr|s r#r_ProxyFile.readlineszz$ 3 344r&cv/nUH0nURU5 UcMU[U5-nUS::dM/ U$ U$)zRead multiple lines.r)rhrU)r sizehintrrs r# readlines_ProxyFile.readlinessGD MM$ #CI%q=   r&c#v# UR5=n(aUv UR5=n(aMgg7f)zIterate over lines.N)r)r rs r#rq_ProxyFile.__iter__s1mmo%d%Jmmo%d%%s399cUR$)zReturn the position.)rvrcs r#r_ProxyFile.tells yyr&cUS:Xa%URRUR5 URRX5 URR5Ulg)zChange position.rdNrrrvrr offsetwhences r#r_ProxyFile.seeks? Q; JJOODII & 'JJOO% r&c[US5(a9[URS5(aURR5 U?gg!U?f=f)zClose the file.rrN)rrrrcs r#r_ProxyFile.closesH 4 ! ! 4::w//JJ$$&J " Js 5A AcUcSnURRUR5 U"U5nURR5UlU$)z"Read size bytes using read_method.rr)r r} read_methodrs r#r{_ProxyFile._read sA <D  "T"JJOO%  r&cU$)z$Context management protocol support.rrcs r# __enter___ProxyFile.__enter__s r&c$UR5 gr8)r)r excs r#__exit___ProxyFile.__exit__s  r&c6URR5$r8)rreadablercs r#r_ProxyFile.readablezz""$$r&c6URR5$r8)rwritablercs r#r_ProxyFile.writablerr&c6URR5$r8)rseekablercs r#r_ProxyFile.seekablerr&c6URR5$r8)rrrcs r#r_ProxyFile.flush"szz!!r&c[US5(dg[URS5(dgURR$)NrTr9F)rrr9rcs r#r9_ProxyFile.closed%s6tW%%tzz8,,zz   r&)rrvr8r)rrrrrr$rrrrrqrrrr{rrrrrrpropertyr9rrrrrr&r#r/r/sv(125  &%%%"!!$L1r&r/c>\rSrSrSrS SjrSrS SjrSrSr S r g) ri0z&A read-only wrapper of part of a file.NcH[RXU5 X lX0lg)zInitialize a _PartialFile.N)r/r$_start_stop)r r'rrs r#r$_PartialFile.__init__3sDU+  r&cF[RU5UR- $)z*Return the position with respect to start.)r/rrrcs r#r_PartialFile.tell9st$t{{22r&cUS:XaURUlSnOUS:XaURUlSn[R XU5 g)z8Change position, possibly with respect to start or stop.rrdr:N)rrvrr/rrs r#r_PartialFile.seek=s> Q; DIF q[ DIFf-r&cURUR- nUS::agUb US:dX:aUn[RXU5$)z;Read size bytes using read_method, honoring start and stop.rr&)rrvr/r{)r r}r remainings r#r{_PartialFile._readGsFJJ* > <4!8t'7DK88r&c,[US5(aU?gg)Nr)rrrcs r#r_PartialFile.closePs 4 ! !  "r&)rvrr)NNr) rrrrrr$rrr{rrrr&r#rr0s0 3.9r&rcSn[(a7[R"U[R[R-5 U(a|[URS-5nUR5 [R"URURS-5 Sn[R"UR5 gg![a[nUR [ R [ R[ R4;a[SUR-5eeSnAff=f![a9nUR [ R[ R4;aSnAgeSnAff=f![ ["4a3 [R$"URURS-5 Sngf=f![&a9 [R("UR5 [SUR-5ef=f! [(a%[R"U[R*5 U(a#[R("URS-5 e=f)z(Lock file f using lockf and dot locking.Fzlockf: lock unavailable: %sN.lockTzdot lock unavailable: %s)fcntllockfLOCK_EXLOCK_NBrrEAGAINrrrrrrrrrrrrrr5LOCK_UN)r'r dotlock_donerpre_locks r#rrWsL% 5  Au}}u}}<=  ,QVVg-=> 1-GGHMM166G+;<#'L IIhmm,#   77u||U\\5;;GG,-J-.VV.455   77u||U[[99  '8(IIhmmQVVg-=>#'L( # 1 (--(()C)**011 1 5 KK5== )  IIaffw& ' s H6C H(D280E8( F> D/AD**D//H2 E5<.E0*H/E00E55H8AF;8F>:F;;F>>AHHAI!c[(a%[R"U[R5 [RR UR S-5(a$[R"UR S-5 gg)z*Unlock file f using lockf and dot locking.rN)rrrrrrrr5r's r#rrsO u Au}}% ww~~affw&'' !&&7"#(r&c[R"U[R[R-[R-S5n[US5[R "U5 $![R "U5 f=f)zCCreate a file if it doesn't exist and open for reading and writing.rvr)rr!rwr3O_RDWRr)rfds r#rrsP rzzBII- 95 ABD%    s A,,Bc [U<S[[R"55<S[R"5<S[ R "5<35$)zBCreate a temp file based on path and open for reading and writing.re)rrrrrrr)rs r#rrs8 dC 4D.4.@.@.B.0iik; <The specified mailbox is not empty and deletion was requested.rNr?rr&r#rrsHr&rc\rSrSrSrSrg)riz)Another process caused an action to fail.rNr?rr&r#rr3r&rc\rSrSrSrSrg)riz)A file appears to have an invalid format.rNr?rr&r#rrrr&r)T)2rrrr8rrrrrV email.messageemail.generatorrrLtypesrr ImportError__all__rrrrrrrr rrr-r r r r r rrr/rrrrrrr Exceptionrrrrrrr&r#rsJ     A **  G $f2f2RgggT CCN@"@F1.91.h*.9*.Z@*@*F v vr"@emm##"@Jj+Wj+Zn+wn+b1"1E+E+P\+7\+~1"1_2_2D$:$N(T$<   -I-EEIEI444%4mD EsE66FF