
    !i/               	          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
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)*)print_)__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      S/home/crogers2287/.openclaw/agents/magoo/.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       t        d
       |j                  |        y c c}}w )Nz# Possible reference cycle: %szclass %s(BaseModel):idr   Fz - ?z    # %sz    %sr3   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r8   r9   )r   pks     r   r   z5print_models.<locals>._print_table.<locals>.<genexpr>   s     EEr;   z&        primary_key = CompositeKey(%s)z        primary_key = False)foreign_keys
dest_tabler   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   )tableseenaccumr>   foreign_keydestrB   rE   rL   columnskip
is_unknowndisprO   fieldsuniquecolr:   pk_field_namespk_list_print_tabledatabaseignore_unknownintrospectorpreserve_orders                       r   r^   z"print_models.<locals>._print_tableI   s   ,,U3' 	>K))D u}e!37$>? 4D$55= tUeW_=	> 	%(<(<U(CCD""5)//1WoG,,U3# 	6LD&$L!Q&""l&=&==	? @D
 !!c,&7!&; &+"++|;Jn$*KK1G1G1N31NOzD()x&"2"2"445%	6( 	r
 !,u45'<<UC()"()="> IIA&AA 
 ;,|/B/BBC|q #-4%()sE,& 

%( )N iiEnEEG;gEF01r
%(s   J>
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!   )ra   tablesrb   r0   r`   r1   	db_kwargsheaderrQ   rP   r^   r_   s   ` ` `     @@r   print_modelsrr   6   s    &&65B2< ' >H 002I++-'')22&&(00v>&/4	?"R	9 9F
 6N}
:D DL 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: %sr3   )datetimenowr   strftimeri   peewee_version)cmd_linera   	timestamps      r   print_headerrz      sr    !!%%'I
!"
 8+,
<),,-@AAB
l<<>>?
!N23
2Jr-   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)rT   z-pz--portportint)rT   typez-uz--useruserz-Pz
--passwordpassword
store_true)rT   actionz-ez--engineenginezVDatabase type, e.g. sqlite, mysql, postgresql or cockroachdb. Default is "postgresql".)rT   choiceshelpz-sz--schemar   z-tz--tablesro   zWOnly generate the specified tables. Multiple table names should be separated by commas.)rT   r   z-vz--viewsviewsz7Generate model classes for VIEWs in addition to tables.)rT   r   r   z-iz--infoinfozIAdd database information and other metadata to top of the generated file.z-oz--preserve-orderrb   z6Model definition column ordering matches source table.)r   rT   r   z-Iz--ignore-unknownr`   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   ro   splitstripr   ospathexistsr,   r   r    rz   rr   rb   r   r`   r   )raw_argvr   r   argsconnectr_   ro   rP   r   ra   rx   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)rt   r   r"   r   optparser   peeweer   r   rw   playhouse.cockroachdbr   playhouse.reflectionre   rm   rl   MySQLDatabasePostgresqlDatabaseSqliteDatabaser   r   r   r,   rr   rz   r   r   r   r   rh   r9   r-   r   <module>r      s     	 
  !   0 3 "


 ;GY'\2Xy)	   8/8 8	9 <AGK]*~8D@ zF r-   