grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026U iÛf-ã@sRddlZddlZddlZddlZddgZdZ e Z Gdd„dej j ƒZd d d„ZdS) éNÚerrorÚopenic@sÂeZdZeZeZd+dd„Zdd„Zdd„Zdd „ZeZ d d „Z d d „Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZeZd d!„Zd"d#„ZeZd$d%„Zd&d'„Zd(d)„Zd*S),Ú _DatabaseÚccCsL||_|dk|_|d|_|d|_|d|_d|_| |¡| |¡dS)NÚrz.dirz.datz.bak)Ú_modeÚ _readonlyÚ_dirfileÚ_datfileÚ_bakfileÚ_indexÚ_createÚ_update)ÚselfZ filebasenameÚmodeÚflag©rú-/opt/alt/python38/lib64/python3.8/dbm/dumb.pyÚ__init__0s     z_Database.__init__c Cs®|dkrB|j|j|jfD](}zt |¡Wqtk r>YqXqztj|jddd�}WnHtk r |dkrr‚tj|jddd��}| |j¡W5QRXYn X|  ¡dS)NÚnrúLatin-1©Úencoding©rrÚw) r r r Ú_osÚremoveÚOSErrorÚ_iorÚ_chmodÚclose)rrÚfilenameÚfrrrr Isz_Database._createc Cs�d|_i|_ztj|jddd�}Wn$tk rF|dkr<‚d|_YnFX|�:|D].}| ¡}t |¡\}}|  d¡}||j|<qRW5QRXdS)NFrrrrT) Ú _modifiedr rrr rÚrstripÚ_astZ literal_evalÚencode)rrr"ÚlineÚkeyÚpos_and_siz_pairrrrr\s  z_Database._updatec CsÈ|jdks|jsdSz|j |j¡Wntk r:YnXz|j |j|j¡Wntk rfYnX|jj |jddd��B}|  |j¡|j  ¡D]$\}}d|  d¡|f}|  |¡q”W5QRXdS)Nrrrú%r, %r )r r#rÚunlinkr rÚrenamer rrrÚitemsÚdecodeÚwrite)rr"r(r)ÚentryrrrÚ_commitps z_Database._commitcCs|jdkrtdƒ‚dS©Nú"DBM object has already been closed)r r©rrrrÚ _verify_open‹s z_Database._verify_openc Cs\t|tƒr| d¡}| ¡|j|\}}t |jd¡�}| |¡|  |¡}W5QRX|S)Núutf-8Úrb) Ú isinstanceÚstrr&r5r rrr ÚseekÚread)rr(ÚposÚsizr"ZdatrrrÚ __getitem__�s   z_Database.__getitem__c Csrt |jd¡�R}| dd¡t| ¡ƒ}|tdtt}| d||¡|}| |¡W5QRX|t|ƒfS)Núrb+rééó) rrr r:ÚintÚtellÚ _BLOCKSIZEr/Úlen)rÚvalr"r<ZnposrrrÚ_addval�s  z_Database._addvalc Cs:t |jd¡�}| |¡| |¡W5QRX|t|ƒfS)Nr?)rrr r:r/rF)rr<rGr"rrrÚ_setval«s z_Database._setvalc CsP||j|<tj|jddd��*}| |j¡| d| d¡|f¡W5QRXdS)NÚarrr*)r rrr rr/r.)rr(r)r"rrrÚ_addkey´s  z_Database._addkeycCsô|jrtdƒ‚t|tƒr$| d¡}nt|ttfƒs:tdƒ‚t|tƒrP| d¡}nt|ttfƒsftdƒ‚| ¡d|_ ||j kr’|  ||  |¡¡n^|j |\}}|t dt }t|ƒt dt }||krà| ||¡|j |<n|  |¡|j |<dS)Nú'The database is opened for reading onlyr6zkeys must be bytes or stringszvalues must be bytes or stringsTrA)rrr8r9r&ÚbytesÚ bytearrayÚ TypeErrorr5r#r rKrHrErFrI)rr(rGr<r=Z oldblocksZ newblocksrrrÚ __setitem__ºs(     z_Database.__setitem__cCsD|jrtdƒ‚t|tƒr"| d¡}| ¡d|_|j|=| ¡dS)NrLr6T) rrr8r9r&r5r#r r1©rr(rrrÚ __delitem__ßs  z_Database.__delitem__cCs0z t|jƒWStk r*tdƒd‚YnXdSr2)Úlistr rOrr4rrrÚkeysîs z_Database.keyscs ˆ ¡‡fdd„ˆj ¡DƒS)Ncsg|]}|ˆ|f‘qSrr)Ú.0r(r4rrÚ ösz#_Database.items..)r5r rTr4rr4rr-ôsz_Database.itemscCsRt|tƒr| d¡}z ||jkWStk rL|jdkrFtdƒd‚n‚YnXdS)Nr6r3)r8r9r&r rOrrQrrrÚ __contains__øs     z_Database.__contains__cCs0z t|jƒWStk r*tdƒd‚YnXdSr2)Úiterr rOrr4rrrÚiterkeyss z_Database.iterkeyscCs0z t|jƒWStk r*tdƒd‚YnXdSr2)rFr rOrr4rrrÚ__len__ s z_Database.__len__c Cs,z | ¡W5d|_|_|_|_XdS©N)r r r r r1r4rrrr s z_Database.closecCs|j ||j¡dSr[)rÚchmodr)rÚfilerrrrsz_Database._chmodcCs|Sr[rr4rrrÚ __enter__sz_Database.__enter__cGs | ¡dSr[)r )rÚargsrrrÚ__exit__sz_Database.__exit__N)r)Ú__name__Ú __module__Ú __qualname__rrrr rr1Úsyncr5r>rHrIrKrPrRrTr-rWrYÚ__iter__rZr Ú__del__rr^r`rrrrr#s2   % rré¶cCsVzt d¡}t |¡Wntk r,Yn X||@}|dkrHtdƒ‚t|||d�S)Nr)rrrrz)Flag must be one of 'r', 'w', 'c', or 'n')r)rÚumaskÚAttributeErrorÚ ValueErrorr)r]rrZumrrrr"s  )rrg)Zastr%ÚiorÚosrZcollections.abcÚ collectionsÚ__all__rErrÚabcÚMutableMappingrrrrrrÚs