
    B>qj               	           d dl Z d dlZd dlZd dlmZ d dlmZ d dl d dlmZ d dl	m
Z
 d dl dZdZd	Ze
g d
eddgeddgeddgiZ ed eD              Zd Z	 	 ddZd Zd Zd Zd Zd Zedk(  r e        yy)    N)getpass)OptionParser)*)__version__)CockroachDatabasez.from peewee import *%s

database = %s('%s'%s)
zDclass BaseModel(Model):
    class Meta:
        database = database
zCclass UnknownField(object):
    def __init__(self, *_, **__): pass
)	cockroachcockroachdbcrdbmysqlmysqldbpostgres
postgresqlsqlitesqlite3c              #   @   K   | ]  }t         |   D ]  }||f 
  y wN)DATABASE_ALIASES).0keyvalues      C/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/pwiz.py	<genexpr>r   &   s3      8!1#!68 CL 8L 8s   c                    | t         vrDt        ddj                  t         j                               z         t	        j
                  d       |j                  dd       }t         |    } ||fi |}t        j                  ||      S )Nz)Unrecognized database, must be one of: %s,    schema)r   )	DATABASE_MAPerrjoinkeyssysexitpopIntrospectorfrom_database)database_typedatabase_namekwargsr   DatabaseClassdbs         r   make_introspectorr+   *   sy    L(7IIl'')*+ 	,ZZ$'F /M	}	/	/B%%b%88    c                    
  j                  |||       j                         }t         j                          j	                         j
                   j                         j                  dd      |rdt        |      z  ndfz  }t        |       st        t               t        t               d
 fd	
t               }t        j                  j                               D ]  }	|	|vs|r|	|v s 
|	|        y )N)table_namesinclude_views
snake_case\z\\z, **%s c                    |xs g }j                   |    }|D ]S  }|j                  }||v r| |vrt        d|z         ||vs*||vs/|j                  |       || k7  sF |||| gz          U t        dj                  |    z         j
                  |    j                         }st        |      }j                  |    }|D ]  \  }}	t        ||v |dk(  t        |      dk(  |	j                  j                  v g      }
|
r?|	j                  rt        |      dkD  rd|	_        |	j                  t        u }|r0r.|	j                  d|	j                   xs d}t        d|z         t        d	|	j#                         z          t        d
       t        d       t        d| z         j%                  |       }|rQt        d       t        |      D ]-  \  }}t        ddj'                  d |D              d|d       / t        d       j(                  rt        dj(                  z         t        |      dkD  rSt        |D cg c]  \  }}||v r|j                   c}}      }dj'                  d |D              }t        d|z         n|st        d       j+                  |       }|r8t        d       |D ](  }t        d|j,                  xs |j                  z         * t        d
       |j                  |        y c c}}w )Nz# Possible reference cycle: %szclass %s(BaseModel):idr   Fz - ?z    # %sz    %sr2   z    class Meta:z        table_name = '%s'z        indexes = (z            ((r   c              3   &   K   | ]	  }d |z    ywz'%s'N )r   fields     r   r   z5print_models.<locals>._print_table.<locals>.<genexpr>{   s     AfunA   z), z),z	        )z        schema = '%s'c              3   &   K   | ]	  }d |z    ywr7   r8   )r   pks     r   r   z5print_models.<locals>._print_table.<locals>.<genexpr>   s     EEr:   z&        primary_key = CompositeKey(%s)z        primary_key = Falsez4        # Unhandled indexes (partial or expression):z        # %s)foreign_keys
dest_tableprintaddmodel_namescolumnsitemssortedprimary_keysalllenfield_class
pk_classesprimary_keyUnknownFieldnameraw_column_type	get_fieldmulti_column_indexesr   r   unhandled_indexessql)tableseenaccumr=   foreign_keydestrB   rE   rL   columnskip
is_unknowndisprO   fieldsuniquecolr9   pk_field_namespk_list	unhandledindex_print_tabledatabaseignore_unknownintrospectorpreserve_orders                         r   rb   z"print_models.<locals>._print_tableH   s   ,,U3' 	>K))D u}e!36=> 4D$55= tUeW_=	> 	$x';';E'BBC""5)//1WoG,,U3# 	5LD&$L!Q&""l&=&==	? @D
 !!c,&7!&; &+"++|;Jn$*KK1G1G1N31NOj4'(h!1!1!334%	5( 	b	 +e34'<<UC'("()="> IIA&AA 
 ++l.A.AAB|q #-4%()sE,& 

%( )N iiEnEEG:WDE/0..u5	HI" Bn		(?UZZ@AB 	b	!%(s   L	
r   )
introspectget_database_kwargsHEADERget_additional_importsget_database_class__name__get_database_namereplacereprr?   UNKNOWN_FIELD
BASE_MODELsetrD   rA   r    )re   tablesrf   r/   rd   r0   	db_kwargsheaderrS   rR   rb   rc   s   ` ` `     @@r   print_modelsrv   5   s    &&65B2< ' >H 002I++-'')22&&(00v>&/4	?"R	9 9F
 
&Mm	*K KZ 5D,,1134 *Uf_UD)*r,   c                    t         j                   j                         }t        d       t        d| z         t        d|j                  d      z         t        d|j	                         z         t        dt
        z         t        d       y )Nz# Code generated by:z# python -m pwiz %sz
# Date: %sz%B %d, %Y %I:%M%pz# Database: %sz# Peewee version: %sr2   )datetimenowr?   strftimerm   peewee_version)cmd_linere   	timestamps      r   print_headerr~      sr    !!%%'I	
 !	
(
*+	,++,?@
@A	
\;;=
=>	
 >
12	"Ir,   c                     t         j                  j                  d| z         t         j                  j                          y )Nz[91m%s[0m
)r!   stderrwriteflush)msgs    r   r   r      s*    JJ*S01JJr,   c                  z   t        d      } | j                  } |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/d0dd1d2.        |d3d4dd5d6.       | S )7Nz$usage: %prog [options] database_name)usagez-Hz--hosthost)rV   z-pz--portportint)rV   typez-uz--useruserz-Pz
--passwordpassword
store_true)rV   actionz-ez--engineenginezVDatabase type, e.g. sqlite, mysql, postgresql or cockroachdb. Default is "postgresql".)rV   choiceshelpz-sz--schemar   z-tz--tablesrs   zWOnly generate the specified tables. Multiple table names should be separated by commas.)rV   r   z-vz--viewsviewsz7Generate model classes for VIEWs in addition to tables.)rV   r   r   z-iz--infoinfozIAdd database information and other metadata to top of the generated file.z-oz--preserve-orderrf   z6Model definition column ordering matches source table.)r   rV   r   z-Iz--ignore-unknownrd   z.Ignore fields whose type cannot be determined.z-Lz--legacy-naminglegacy_namingz-Use legacy table- and column-name generation.)r   
add_optionrD   r   )parseraoenginess      r   get_option_parserr      s     FGF			BtXF#tXF/tXF#t\
<@\"GtZh(* tZh'tZh') tYW\EGtXF<! t;KDFt;K<>t|/;=Mr,   c                 f     d}t         fd|D              } j                  rt               |d<   |S )N)r   r   r   r   c              3   T   K   | ]  }t        |      s|t        |      f ! y wr   )getattr)r   ooptionss     r   r   z%get_connect_kwargs.<locals>.<genexpr>   s&     Oq77A;N1ggq)*Os   ((r   )dictr   r   )r   opsr(   s   `  r   get_connect_kwargsr      s2    
,COCOOF$YzMr,   c                     t         j                  } t               }|j                         \  }}t	        |      dk  r0t        d       |j                          t        j                  d       t        |      }|d   }d }|j                  rF|j                  j                  d      D cg c]"  }|j                         r|j                         $ }}|j                  }|#t        j                  j                  |      rdnd}t!        ||fi |}	|j"                  r dj%                  | dd        }
t'        |
|	       t)        |	||j*                  |j,                  |j.                  |j0                          y c c}w )Nr   z%Missing required parameter "database",r   r    )r!   argvr   
parse_argsrG   r   
print_helpr"   r   rs   splitstripr   ospathexistsr+   r   r   r~   rv   rf   r   rd   r   )raw_argvr   r   argsconnectrc   rs   rR   r   re   r|   s              r   mainr      s9   xxH F%%'MGT
4y1}34 )GBxHF~~-4^^-A-A#-F $E[[] ++- $ $ ^^F~WW^^H5<$VXAAL||88HQRL)X|,vw'='=w}}''W-B-B)BD$s   ''E4__main__)NFFFT)rx   r   r!   r   optparser   peeweer   r{   playhouse.cockroachdbr   playhouse.reflectionri   rq   rp   MySQLDatabasePostgresqlDatabaseSqliteDatabaser   r   r   r+   rv   r~   r   r   r   r   rl   r8   r,   r   <module>r      s     	 
  !  0 3 "


 ;GY'\2Xy)	   8/8 8	9 <AGKd*L8D@ zF r,   