
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    _3                     @   s  d dl Z d dlZd dlmZ d dlmZ d dlT d dlmZ d dlmZ d dl	T dZ
edd	ged
dgeddgiZedd eD Zdd Zd(ddZdd Zdd Zdd Zdd ZedkrejZe Ze \ZZejrzd dlm Z  W n( e!k
r   ed e"d  Y nX e#ed k r@ed! e$  e"d  eeZ%ed" Z&dZ'ej'rrd#d$ ej'(d%D Z'eej)e&fe%Z*ej+rd&,ed d Z-ee-e* ee*e'ejd' dS ))    N)getpass)OptionParser)*)print_)__version__zfrom peewee import *%s

database = %s('%s', **%s)

class UnknownField(object):
    def __init__(self, *_, **__): pass

class BaseModel(Model):
    class Meta:
        database = database
ZmysqlZmysqldbZpostgres
postgresqlZsqliteZsqlite3c                 c   s$   | ]}t | D ]}||fV  qqd S N)DATABASE_ALIASES).0keyvalue r   7/opt/alt/python38/lib64/python3.8/site-packages/pwiz.py	<genexpr>   s   
 r   c                 K   sV   | t kr(tddt    td |dd }t |  }||f|}tj||dS )Nz)Unrecognized database, must be one of: %s,    schema)r   )	DATABASE_MAPerrjoinkeyssysexitpopZIntrospectorZfrom_database)Zdatabase_typeZdatabase_namekwargsr   ZDatabaseClassZdbr   r   r   make_introspector#   s    
r   Fc                    s   j |dtt  j t f  d fdd	 t	 }t
j D ]"}||kr^|rv||kr^ || q^d S )N)Ztable_namesc                    s  |pg }j |  }|D ]Z}|j}||kr<| |kr<td|  ||kr||kr|| || kr|||| g  qtdj|    j|   }st|}j|   |D ]^\}}t	| k|dkt
 dk|jjkg}	|	rq|jrt
 dkrd|_td|   qtd td td	|   | }
|
r|td
 t|
D ]*\}}tdddd |D |f  qHtd jrtdj  t
 dkrt fdd|D }ddd |D }td|  td ||  d S )Nz# Possible reference cycle: %szclass %s(BaseModel):idr   Fz    %s z    class Meta:z        db_table = '%s'z        indexes = (z            ((%s), %s),r   c                 s   s   | ]}d | V  qdS z'%s'Nr   )r
   fieldr   r   r   r   e   s     z5print_models.<locals>._print_table.<locals>.<genexpr>z	        )z        schema = '%s'c                    s   g | ]\}}| kr|j qS r   )name)r
   colr   primary_keysr   r   
<listcomp>m   s   z6print_models.<locals>._print_table.<locals>.<listcomp>c                 s   s   | ]}d | V  qdS r   r   )r
   Zpkr   r   r   r   p   s     z&        primary_key = CompositeKey(%s))foreign_keysZ
dest_tabler   addmodel_namescolumnsitemssortedr#   alllenZfield_classZ
pk_classesZprimary_key	get_fieldmulti_column_indexesr   r   )tableseenZaccumr%   Zforeign_keydestr(   r    columnskipr.   ZfieldsuniqueZpk_field_namesZpk_list_print_tabledatabaseintrospectorpreserve_orderr"   r   r6   7   sb    





z"print_models.<locals>._print_table)N)Z
introspectr   TEMPLATEZget_additional_importsZget_database_class__name__get_database_namereprZget_database_kwargssetr*   r'   r   )r8   tablesr9   r0   r/   r   r5   r   print_models.   s    
?r@   c                 C   sX   t j  }td td|   td|d  td|   tdt  td d S )Nz# Code generated by:z# python -m pwiz %sz
# Date: %sz%B %d, %Y %I:%M%pz# Database: %sz# Peewee version: %sr   )datetimeZnowr   strftimer<   peewee_version)cmd_liner8   Z	timestampr   r   r   print_header|   s    
rE   c                 C   s   t jd|   t j  d S )Nz[91m%s[0m
)r   stderrwriteflush)msgr   r   r   r      s    r   c                  C   s   t dd} | j}|dddd |ddd	d
d |dddd |ddddd tt}|dddd|dd |dddd |dddd d! |d"d#d$dd%d& |d'd(dd)d*d+ | S ),Nz$usage: %prog [options] database_name)Zusagez-Hz--hosthost)r1   z-pz--portportint)r1   typez-uz--useruserz-Pz
--passwordpassword
store_true)r1   actionz-ez--engineenginer   zIDatabase type, e.g. sqlite, mysql or postgresql. Default is "postgresql".)r1   defaultchoiceshelpz-sz--schemar   z-tz--tablesr?   zWOnly generate the specified tables. Multiple table names should be separated by commas.)r1   rU   z-iz--infoinfozIAdd database information and other metadata to top of the generated file.)r1   rQ   rU   z-oz--preserve-orderr9   z6Model definition column ordering matches source table.)rQ   r1   rU   )r   Z
add_optionr*   r   )parserZaoZenginesr   r   r   get_option_parser   s*    


rX   c                    s.   d}t  fdd|D } jr*t |d< |S )N)rJ   rK   rN   r   c                 3   s&   | ]}t  |r|t  |fV  qd S r   )getattr)r
   ooptionsr   r   r      s     
 z%get_connect_kwargs.<locals>.<genexpr>rO   )dictrO   r   )r\   Zopsr   r   r[   r   get_connect_kwargs   s
    
r^   __main__)OrderedDictz&Preserve order requires Python >= 2.7.r   z%Missing required parameter "database"c                 C   s   g | ]}|  r|  qS r   )strip)r
   r/   r   r   r   r$      s    r$   , )r9   )NF).rA   r   r   Zoptparser   Zpeeweer   r   rC   Zplayhouse.reflectionr:   ZMySQLDatabaseZPostgresqlDatabaseZSqliteDatabaser	   r]   r   r   r@   rE   r   rX   r^   r;   argvZraw_argvrW   
parse_argsr\   argsr9   collectionsr`   ImportErrorr   r,   Z
print_helpZconnectr7   r?   splitrR   r8   rV   r   rD   r   r   r   r   <module>   s`      
N



