
­­­­­­­­­­­­­­­­­­
<!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
mysqlZmysqldbZpostgres
postgresqlZsqlite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DatabaseClass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   pkr   r   r   r   p   s     z&        primary_key = CompositeKey(%s))foreign_keys
dest_tabler   addmodel_namescolumnsitemssortedr&   alllenZfield_classZ
pk_classesprimary_key	get_fieldmulti_column_indexesr   r   )tableseenaccumr)   foreign_keydestr-   r#   columnskipr4   fieldsuniqueZpk_field_namesZpk_list_print_tabledatabaseintrospectorpreserve_orderr%   r   r?   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   )rA   tablesrB   r6   r5   r   r>   r   print_models.   s    
?rI   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    )datetimenowr   strftimerE   peewee_version)cmd_linerA   	timestampr   r   r   print_header|   s    
rP   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)usagez-Hz--hosthost)r9   z-pz--portportint)r9   typez-uz--useruserz-Pz
--passwordpassword
store_true)r9   actionz-ez--engineenginer   zIDatabase type, e.g. sqlite, mysql or postgresql. Default is "postgresql".)r9   defaultchoiceshelpz-sz--schemar   z-tz--tablesrH   zWOnly generate the specified tables. Multiple table names should be separated by commas.)r9   ra   z-iz--infoinfozIAdd database information and other metadata to top of the generated file.)r9   r]   ra   z-oz--preserve-orderrB   z6Model definition column ordering matches source table.)r]   r9   ra   )r   
add_optionr/   r   )parserZaoZenginesr   r   r   get_option_parser   s*    


re   c                    s.   d}t  fdd|D } jr*t |d< |S )N)rV   rW   rZ   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>r[   )dictr[   r   )ri   opsr   r   rh   r   get_connect_kwargs   s
    
rl   __main__)OrderedDictz&Preserve order requires Python >= 2.7.r   z%Missing required parameter "database"c                 C   s   g | ]}|  r|  qS r   )strip)r   r5   r   r   r   r'      s    r'   , )rB   )NF).rJ   r   r   Zoptparser   peeweer   r   rM   Zplayhouse.reflectionrC   MySQLDatabasePostgresqlDatabaseSqliteDatabaser   rj   r   r   rI   rP   r   re   rl   rD   argvZraw_argvrd   
parse_argsri   argsrB   collectionsrn   ImportErrorr   r1   
print_helpconnectr@   rH   splitr^   rA   rb   r   rN   r   r   r   r   <module>   s`      
N



