Viewing File: /opt/alt/python35/lib64/python3.5/site-packages/playhouse/__pycache__/reflection.cpython-35.pyc



R6WWU>@syddlmZWnek
r.eZYnXddlmZddlZddlTyddlmZWnAek
ryddl	mZWnek
rdZYnXYnXyddl
mZWnek
rdZYnXeddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%gZ
Gd&d'd'eZGd(d)d)eZGd*d+d+eZGd,d-d-eZGd.d/d/eZGd0d1d1eZed2d>ZGd8d9d9eZGd:d;d;eZdd<d=ZdS)?)OrderedDict)
namedtupleN)*)
FIELD_TYPE)postgres_extandasassertbreakclasscontinuedefdelelifelseexceptexecfinallyforfromglobalifimportinislambdanotorpassprintraisereturntrywhilewithyieldc@seZdZdS)UnknownFieldN)__name__
__module____qualname__r*r*/reflection.pyr&sr&c@seZdZdZeefZddddddZddZdd	Z	d
dZ
dd
ZddZddddZ
ddZdS)Columnz1
    Store metadata about a database column.
    FNc		Csg||_||_||_||_||_||_||_||_d|_d|_	d|_
dS)N)namefield_classraw_column_typenullableprimary_key	db_columnindexunique	rel_modelrelated_nameto_field)	selfr-r.r/r0r1r2r3r4r*r*r+__init__'s										zColumn.__init__csHdddddg}djfdd|D}d	j|fS)
Nr.r/r0r1r2z, c3s(|]}d|t|fVqdS)z%s=%sN)getattr).0attr)r8r*r+	<genexpr>?sz"Column.__repr__.<locals>.<genexpr>zColumn(%s, %s))joinr-)r8attrsZkeyword_argsr*)r8r+__repr__7s	
zColumn.__repr__cCsi}|jrd|d<|jtks:|j|jkrKd|j|d<|jrm|jtk	rmd|d<|jr|j|d<|j	rd|j	|d<|j
rd|j
|d<|js|jrd	|d
<n |j
r|jrd	|d<|S)NTnullz'%s'r2r1r5r7r6Truer4r3)r0r.ForeignKeyFieldr-r2r1PrimaryKeyFieldis_foreign_keyr5r7r6is_primary_keyr4r3)r8paramsr*r*r+get_field_parametersCs&	
!

			

zColumn.get_field_parameterscCs|jtkp|jS)N)r.rDr1)r8r*r*r+rF_szColumn.is_primary_keycCs
|jtkS)N)r.rC)r8r*r*r+rEbszColumn.is_foreign_keycCs|jtko|jdkS)Nz'self')r.rCr5)r8r*r*r+is_self_referential_fkeszColumn.is_self_referential_fkcCsk||_t|_|j|jkr0d|_n||j|_|rO|jpRd|_|pad|_dS)Nz'self')	foreign_keyrCr.
dest_tabletabler5r-r7r6)r8rJmodel_namesdestr6r*r*r+set_foreign_keyis		zColumn.set_foreign_keycCsv|j}djddt|jD}d|j|jj|f}|jtkrrd||jf}|S)Nz, css%|]\}}d||fVqdS)z%s=%sNr*)r;kvr*r*r+r=wsz#Column.get_field.<locals>.<genexpr>z%s = %s(%s)z%s  # %s)	rHr>sorteditemsr-r.r'r&r/)r8Zfield_paramsZ	param_strfieldr*r*r+	get_fieldts	
zColumn.get_field)r'r(r)__doc__IntegerFieldrDZprimary_key_typesr9r@rHrFrErIrOrUr*r*r*r+r,!s
r,c@seZdZiZdZddZddZdddZdd	d
ZdddZ	dd
dZ
dddZdS)MetadatacCs||_d|_dS)NF)databaserequires_extension)r8rZr*r*r+r9s	zMetadata.__init__cGs|jj||S)N)rZZexecute_sql)r8ZsqlrGr*r*r+executeszMetadata.executeNc

Cstdd|jj||D}|j||}|j||}t|dkr|d}||tkrt||<t}xU|jD]G\}}	t	|d||d|	j
d|	jd|	jd	|||<qW|S)
Ncss|]}|j|fVqdS)N)r-)r;metadatar*r*r+r=sz'Metadata.get_columns.<locals>.<genexpr>rr.r/r0r1r2)
rrZget_columnsget_column_typesget_primary_keyslenrWrDrSr,	data_typerAr1)
r8rLschemar]column_typesZpk_namesZpkcolumnsr-Zcolumn_datar*r*r+r_s&	

	
			zMetadata.get_columnscCs
tdS)N)NotImplementedError)r8rLrdr*r*r+r`szMetadata.get_column_typescCs|jj||S)N)rZget_foreign_keys)r8rLrdr*r*r+rhszMetadata.get_foreign_keyscCs|jj||S)N)rZra)r8rLrdr*r*r+raszMetadata.get_primary_keyscCs|jj||S)N)rZget_indexes)r8rLrdr*r*r+riszMetadata.get_indexes)r'r(r)
column_mapextension_importr9r\r_r`rhrarir*r*r*r+rXsrXc"seZdZdedededededededed	e	d
e	de
ded
ededede
deiZdZfddZddZdfddZdfddZdfddZdfddZS) PostgresqlMetadataiiiii:iZii;iiiz$from playhouse.postgres_ext import *cstt|j|tdk	r|jd}|j}xn|D]f\}}d|krotj|j|<qDd|krtj|j|<qDd|krDtj	|j|<qDWdS)Nz!select oid, typname from pg_type;ZjsonZhstoreZtsvector)
superrlr9rr\Zfetchall	JSONFieldrjHStoreField
TSVectorField)r8rZcursorresultsZoidZtypname)	__class__r*r+r9szPostgresqlMetadata.__init__cCsi}tdk	r0ttjtjtjfnt}d||f}|jd|}xL|jD]A}|jj|j	t
||j<||j|krfd|_qfW|S)Nz	"%s"."%s"zSELECT * FROM %s LIMIT 1T)
rsetrtrvrur\descriptionrjget	type_coder&r-r[)r8rLrdreZextension_typesZ
identifierrwcolumn_descriptionr*r*r+r`s3	
z#PostgresqlMetadata.get_column_typesNcs%|p	d}tt|j||S)Npublic)rsrlr_)r8rLrd)ryr*r+r_szPostgresqlMetadata.get_columnscs%|p	d}tt|j||S)Nr)rsrlrh)r8rLrd)ryr*r+rhsz#PostgresqlMetadata.get_foreign_keyscs%|p	d}tt|j||S)Nr)rsrlra)r8rLrd)ryr*r+rasz#PostgresqlMetadata.get_primary_keyscs%|p	d}tt|j||S)Nr)rsrlri)r8rLrd)ryr*r+riszPostgresqlMetadata.get_indexes)r'r(r)BooleanField	BlobFieldBigIntegerFieldrW	TextField
FloatField	CharField	DateField
DateTimeField	TimeFieldDecimalFieldrjrkr9r`r_rhrarir*r*)ryr+rls0rlc(seZdZedkr!iZnejeejeej	e
ejeej
eejeejeejeejeejeejeejeejeejeejeejeejeejeej eej!eiZfddZ"dddZ#S)
MySQLMetadataNcs<d|kr|jd|d<tt|j||dS)NZpasswordZpasswd)poprsrr9)r8rZkwargs)ryr*r+r9szMySQLMetadata.__init__cCs`i}|jd|}x@|jD]5}|dd\}}|jj|t||<q#W|S)NzSELECT * FROM `%s` LIMIT 1)r\r{rjr|r&)r8rLrdrerwr~r-r}r*r*r+r`#szMySQLMetadata.get_column_types)$r'r(r)rrjZBLOBrZCHARrZDATErZDATETIMErZDECIMALrZDOUBLErFLOATZINT24rWZ	LONG_BLOBLONGZLONGLONGrZMEDIUM_BLOBZ
NEWDECIMALZSHORTSTRINGZ	TIMESTAMPZTIMErZ	TINY_BLOBZTINYZ
VAR_STRINGr9r`r*r*)ryr+rs0																				rc$@seZdZdededededededede	d	e
d
e
de
ded
ede
de
de
dede
iZdZdZdjdedeZdZddZdddZdS)SqliteMetadataZbigintZblobboolZbooleancharZdateZdatetimeZdecimalZintegerzinteger unsignedintlongrealZsmallintegerZsmallintzsmallint unsignedtexttimez
(?:["\[\(]+)?z
(?:["\]\)]+)?zi(?:FOREIGN KEY\s*)?{begin}(.+?){end}\s+(?:.+\s+)?references\s+{begin}(.+?){end}\s*\(["|\[]?(.+?)["|\]]?\)beginendz&^\s*(?:var)?char\s*\(\s*(\d+)\s*\)\s*$cCsw|j}||jkr+|j|}nHtj|j|rIt}n*tjdd|}|jj|t}|S)Nz\(.+\)rY)	lowerrjresearch
re_varcharrsubr|r&)r8Zcolumn_typer/r.r*r*r+_map_colPs	zSqliteMetadata._map_colNcCsFi}|jj|}x'|D]}|j|j||j<qW|S)N)rZr_rrcr-)r8rLrdrerfcolumnr*r*r+r`[s

zSqliteMetadata.get_column_types)r'r(r)rrrrrrrrWrrrrjrrformatZre_foreign_keyrrr`r*r*r*r+r1s2	r_DatabaseMetadatarfprimary_keysforeign_keysrMindexesc@s(eZdZddZddZdS)DatabaseMetadatacslg}x_jD]P}t|jdkrfdd|jD}|j||jfqW|S)Nr^cs7g|]-}|jkrj|jqSr*)rfr-)r;r)r8rLr*r+
<listcomp>rs	z9DatabaseMetadata.multi_column_indexes.<locals>.<listcomp>)rrbrfappendr4)r8rLaccumr3field_namesr*)r8rLr+multi_column_indexesns
z%DatabaseMetadata.multi_column_indexescCsKi}x>|j|D]/}t|jdkr|j||jd<qW|S)Nr^r)rrbrfr4)r8rLrr3r*r*r+column_indexesxs
zDatabaseMetadata.column_indexesN)r'r(r)rrr*r*r*r+rms
rc@seZdZeegZdddZddZedddZ	dd	Z
d
dZdd
ZddZ
ddZddZdddZddddZdS)IntrospectorNcCs||_||_dS)N)r]rd)r8r]rdr*r*r+r9s	zIntrospector.__init__cCsd|jjS)Nz<Introspector: %s>)r]rZ)r8r*r*r+r@szIntrospector.__repr__cCsXt|trt|}n*t|tr<t|}nt|}||d|S)Nrd)
isinstanceZPostgresqlDatabaserlZ
MySQLDatabaserr)clsrZrdr]r*r*r+
from_databaseszIntrospector.from_databasecCst|jjS)N)typer]rZ)r8r*r*r+get_database_classszIntrospector.get_database_classcCs
|jjjS)N)r]rZ)r8r*r*r+get_database_nameszIntrospector.get_database_namecCs
|jjjS)N)r]rZZconnect_kwargs)r8r*r*r+get_database_kwargssz Introspector.get_database_kwargscCs|jjrd|jjSdS)N
rY)r]r[rk)r8r*r*r+get_additional_importssz#Introspector.get_additional_importscCsXtjdd|}djdd|jdD}|djsTd|}|S)Nz[^\w]+rYcss|]}|jVqdS)N)title)r;rr*r*r+r=sz/Introspector.make_model_name.<locals>.<genexpr>_rT)rrr>splitisalpha)r8rLmodelZ
model_namer*r*r+make_model_names
%
zIntrospector.make_model_namecCs\tjdd|jjp*|j}tjdd|}|tkrX|d7}|S)Nz_id$rYz[^\w]+r)rrrstripRESERVED_WORDS)r8rr*r*r+make_column_names
-
zIntrospector.make_column_namecs|jr'|jjjd|j}n|jjj}dk	r^fdd|D}i}i}i}i}i}x|D]}|jj||j}	|jj||j}
y |jj||j||<Wn<tk
r}zt|j	g||<WYdd}~XnX|j
|||<tdd|
D}xe|
jD]W\}
}|j
|
}|
j}|jdr||kr|
j}||_qQWxY|	D]Q}t|jdkr|jd}||
kr|j|
|_d	|
|_qW|jj||j||<|
||<|	||<qWi}d
d}x|D]}t}xt||d|D]o}y|||j}Wntk
rw{YnX|j}||krd
||jf||<q{|j|q{WqUWx|D]}x||D]x}||j|j}y||j|j}Wntk
rVd}YnX|jd|d|d|d|j|q
WqWt|||||S)Nrdcs"g|]}|kr|qSr*r*)r;rL)table_namesr*r+rs	z+Introspector.introspect.<locals>.<listcomp>css|]}|jVqdS)N)r)r;Zcolumn_namer*r*r+r=sz*Introspector.introspect.<locals>.<genexpr>Z_idr^rTcSs|jS)N)r)rJr*r*r+<lambda>sz)Introspector.introspect.<locals>.<lambda>keyz	%s_%s_setrJrMrNr6) rdr]rZZ
get_tablesrir_rh
ValueErrorerrmessagerrzrSrrendswithr-rbrfr4r3rarRrKeyErrorrKaddrLZdest_columnrOr|r)r8rZtablesrfrrrMrrLZ
table_indexesZ
table_columnsexcZlower_col_namesZcol_namernew_nameZ
lower_namer3Z
related_namesZsort_fnZmodels_referencedrJrKsrcrNr*)rr+
introspects	
	




	

	
	


	zIntrospector.introspectFcsjd|i}Gfdddtfddx<tjjD]%\}}||kre||qeW|S)Nrcs)eZdZGfdddZdS)z/Introspector.generate_models.<locals>.BaseModelcseZdZjjZdS)z4Introspector.generate_models.<locals>.BaseModel.MetaN)r'r(r)r]rZr*)r8r*r+Meta!srN)r'r(r)rr*)r8r*r+	BaseModel srcsxCj|D]4}|j}||kr||kr||qWgj|}x3|jD]%\}}|jrfj|jqfWj|j|}Gfddd}d}	t	dkr|j
t	dkr*tfdd|jD|_d}	d|i}
xY|jD]K\}}|j}|t
krjt}d	|d
|ji}|jr|	r|tkrt}d|d<n|jr|tk	rd|d<|jr5|jrd|d
<n|jj}
||
|d
<|jr!|j|d<d||f|d<||kr{|jr{||red|d<n|js{d|d<|||
|j<qCWy#tt|f|
||<Wntk
rsYnXdS)NcseZdZZdS)zAIntrospector.generate_models.<locals>._create_model.<locals>.MetaN)r'r(r)rr*)rr*r+r4srFrr^cs+g|]!\}}|kr|jqSr*)r-)r;colrT)rr*r+r=s		zGIntrospector.generate_models.<locals>._create_model.<locals>.<listcomp>Tr2rAr1r8r5r7z	%s_%s_relr6r4r3)rrKrfrSr1rr-rrrbkeysZCompositeKeyr.r&Z	BareFieldr0rDrWrErIrJr7rFrstrr)rLmodelsrJrNrfr2rrrZ
composite_keyr?Z
FieldClassrGrK)r
_create_modelrZskip_invalid)rrr+r$sf	
	%	


	



#
z3Introspector.generate_models.<locals>._create_model)rZModelrRrMrS)r8rrrrLrr*)rrrZr8rr+generate_modelssF"zIntrospector.generate_models)r'r(r)rDrWZ
pk_classesr9r@classmethodrrrrrrrrrr*r*r*r+rs	lrcCstj|d|}|jS)Nrd)rrr)rZrdZintrospectorr*r*r+rqsr)rfrrrMr)collectionsrImportErrordictrrZpeeweeZMySQLdb.constantsrZpymysql.constantsZ	playhouserrzrobjectr&r,rXrlrrrrrrr*r*r*r+<module>sJ




c3L.4	
Back to Directory File Manager