hid:b0003g0001v00000627p00000001 ˆÀÈ 808ÇÁÊ("""Basic pip uninstallation support, helper for the Windows uninstaller""" import argparse import ensurepip import sys def _main(argv=None): parser = argparse.ArgumentParser(prog="python -m ensurepip._uninstall") parser.add_argument( "--version", action="version", version="pip {}".format(ensurepip.version()), help="Show the version of pip this will attempt to uninstall.", ) parser.add_argument( "-v", "--verbose", action="count", default=0, dest="verbosity", help=("Give more output. Option is additive, and can be used up to 3 " "times."), ) args = parser.parse_args(argv) return ensurepip._uninstall_helper(verbosity=args.verbosity) if __name__ == "__main__": sys.exit(_main()) ˆÄÈ ƒuð·ÇÁÊëa ´i-ã@sVdZddlZddlZddlZddlZddgZ dZ e Z Gdd„dej jƒZd d d„ZdS) a­A dumb and slow but simple dbm clone. For database spam, spam.dir contains the index (a text file), spam.bak *may* contain a backup of the index (also a text file), while spam.dat contains the data (a binary file). XXX TO DO: - seems to contain a bug when updating... - reclaim free space (currently, space once occupied by deleted or expanded items is never reused) - support concurrent access (currently, if two processes take turns making updates, they can mess up the index) - support efficient access to large databases (currently, the whole index is read when the database is opened, and some updates rewrite the whole index) - support opening for read-only (flag = 'm') é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ú /usr/lib64/python3.9/dbm/dumb.pyÚ__init__0s     z_Database.__init__c Cs¾|dkr@|j|j|jfD]&}zt |¡Wqty<Yq0qztj|jddd�}WnZty°|dvrn‚tj|jddd��}| |j¡Wdƒn1s¢0YYn 0|  ¡dS)NÚnrúLatin-1©Úencoding©rrÚw) r r r Ú_osÚremoveÚOSErrorÚ_iorÚ_chmodÚclose)rrÚfilenameÚfrrrr Is  0z_Database._createcCs¢d|_i|_ztj|jddd�}Wn"tyD|dvr:‚d|_YnZ0|�D|D].}| ¡}t |¡\}}|  d¡}||j|<qPWdƒn1s”0YdS)NFrrrrT) Ú _modifiedr rrr rÚrstripÚ_astZ literal_evalÚencode)rrr"ÚlineÚkeyÚpos_and_siz_pairrrrr\s   z_Database._updatecCsØ|jdus|jsdSz|j |j¡Wnty8Yn0z|j |j|j¡WntybYn0|jj |jddd��L}|  |j¡|j  ¡D]$\}}d|  d¡|f}|  |¡q�Wdƒn1sÊ0YdS)Nrrrú%r, %r )r r#rÚunlinkr rÚrenamer rrrÚitemsÚdecodeÚwrite)rr"r(r)ÚentryrrrÚ_commitps   z_Database._commitcCs|jdurtdƒ‚dS©Nú"DBM object has already been closed)r r©rrrrÚ _verify_open‹s z_Database._verify_opencCspt|tƒr| d¡}| ¡|j|\}}t |jd¡�$}| |¡|  |¡}Wdƒn1sb0Y|S)Núutf-8Úrb) Ú isinstanceÚstrr&r5r rrr ÚseekÚread)rr(ÚposÚsizr"ZdatrrrÚ __getitem__�