B
    18\                 @   s"  d Z ddlZyddlZW n ek
r0   dZY nX yddlmZ W n ek
rZ   dZY nX yddlmZ	 W n ek
r   dZ	Y nX yddlmZ
 W n ek
r   dZ
Y nX ddlZyddlZW n ek
r   ddlZY nX ejd Zdd Zdd Zedkreeejdd  dS )	aM  
Synopsis: %(prog)s [-h|-b|-g|-r|-a|-d] [ picklefile ] dbfile

Read the given picklefile as a series of key/value pairs and write to a new
database.  If the database already exists, any contents are deleted.  The
optional flags indicate the type of the output database:

    -a - open using dbm (open any supported format)
    -b - open as bsddb btree file
    -d - open as dbm.ndbm file
    -g - open as dbm.gnu file
    -h - open as bsddb hash file
    -r - open as bsddb recno file

The default is hash.  If a pickle file is named it is opened for read
access.  If no pickle file is named, the pickle input is read from standard
input.

Note that recno databases can only contain integer keys, so you can't dump a
hash or btree database using db2pickle.py and reconstitute it to a recno
database with %(prog)s unless your keys are integers.

    Nc               C   s   t jtt   d S )N)sysstderrwrite__doc__globals r   r   W/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Tools/scripts/pickle2db.pyusage4   s    r	   c          
   C   s  y"t  | dddddddg\}} W n t jk
r>   t  dS X t| d	ksXt| d
krbt  dS t| dkr~tj}| d	 }nDyt| d	 d}W n( tk
r   tj	d| d	   dS X | d }d }xj|D ]`\}}|dkry
t
j}W n" tk
r   tj	d dS X q|dkrLy
t
j}W n" tk
rH   tj	d dS X q|dkry
t
j}W n" tk
r   tj	d dS X q|dkry
tj}W n" tk
r   tj	d dS X q|dkry
tj}W n" tk
r   tj	d dS X q|dkry
tj}W q tk
r.   tj	d dS X qW |d krjt
d krdtj	d tj	d dS t
j}y||d}W n4 t
jk
r   tj	d|  tj	d dS X xt| D ]}||= qW x:yt|\}	}
W n tk
r   P Y nX |
||	< qW |  |  d	S )NZhbrdaghashZbtreeZrecnodbmanydbmgdbm   r      rbzUnable to open %s
)z-hz--hashzbsddb module unavailable.
)z-bz--btree)z-rz--recno)z-az--anydbmzdbm module unavailable.
)z-gz--gdbmzdbm.gnu module unavailable.
)z-dz--dbmzdbm.ndbm module unavailable.
zbsddb module unavailable - zmust specify dbtype.
czUnable to open %s.  z&Check for format or version mismatch.
)getopterrorr	   lenr   stdinopenIOErrorr   r   bsddbZhashopenAttributeErrorZbtopenZrnopenr   r   r   listkeyspickleloadEOFErrorclose)argsoptsZpfileZdbfileZdbopenoptargdbkkeyvalr   r   r   main7   s    















r(   __main__r   )r   r   r   ImportErrorZdbm.ndbmZndbmr   Zdbm.gnuZgnur   r   r   r   argvprogr	   r(   __name__exitr   r   r   r   <module>   s6   




[
