Viewing File: /opt/alt/python38/lib64/python3.8/site-packages/playhouse/__pycache__/reflection.cpython-38.pyc

U

SWUU @szddlmZWnek
r(eZYnXddlmZddlZddlTzddlmZWn>ek
rzddl	mZWnek
rdZYnXYnXzddl
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/eZGd0d1d1eZed2d3ZGd4d5d5eZGd6d7d7eZd:d8d9ZdS);)OrderedDict)
namedtupleN)*)
FIELD_TYPE)postgres_extandasassertbreakclasscontinuedefdelelifelseexceptexecfinallyforfromglobalifimportinislambdanotorpassprintraisereturntrywhilewithyieldc@seZdZdS)UnknownFieldN)__name__
__module____qualname__r*r*/reflection.pyr&sr&c@s\eZdZdZeefZdddZddZdd	Z	d
dZ
dd
ZddZdddZ
ddZdS)Columnz1
    Store metadata about a database column.
    FNc		CsF||_||_||_||_||_||_||_||_d|_d|_	d|_
dSN)namefield_classraw_column_typenullableprimary_key	db_columnindexunique	rel_modelrelated_nameto_field)	selfr.r/r0r1r2r3r4r5r*r*r+__init__'szColumn.__init__cs4dddddg}dfdd|D}d	j|fS)
Nr/r0r1r2r3, c3s |]}d|t|fVqdSz%s=%sN)getattr).0attrr9r*r+	<genexpr>>sz"Column.__repr__.<locals>.<genexpr>zColumn(%s, %s))joinr.)r9attrsZkeyword_argsr*r@r+__repr__7szColumn.__repr__cCsi}|jrd|d<|jtks(|j|jkr6d|j|d<|jrN|jtk	rNd|d<|r|j|d<|j	rtd|j	|d<|j
rd|j
|d<|s|jrd	|d
<n|j
r|sd	|d<|S)NTnullz'%s'r3r2r6r8r7Truer5r4)r1r/ForeignKeyFieldr.r3r2PrimaryKeyFieldis_foreign_keyr6r8r7is_primary_keyr5r4)r9paramsr*r*r+get_field_parametersCs&

zColumn.get_field_parameterscCs|jtkp|jSr-)r/rHr2r@r*r*r+rJ_szColumn.is_primary_keycCs
|jtkSr-)r/rGr@r*r*r+rIbszColumn.is_foreign_keycCs|jtko|jdkSNz'self')r/rGr6r@r*r*r+is_self_referential_fkes
zColumn.is_self_referential_fkcCsJ||_t|_|j|jkr d|_n||j|_|r6|jp8d|_|pBd|_dSrM)	foreign_keyrGr/
dest_tabletabler6r.r8r7)r9rOmodel_namesdestr7r*r*r+set_foreign_keyiszColumn.set_foreign_keycCsT|}dddt|D}d|j|jj|f}|jtkrPd||jf}|S)Nr;css|]\}}d||fVqdSr<r*)r>kvr*r*r+rAwsz#Column.get_field.<locals>.<genexpr>z%s = %s(%s)z%s  # %s)	rLrBsorteditemsr.r/r'r&r0)r9Zfield_paramsZ	param_strfieldr*r*r+	get_fieldts


zColumn.get_field)FNFF)NN)r'r(r)__doc__IntegerFieldrHZprimary_key_typesr:rDrLrJrIrNrTrZr*r*r*r+r,!s 

r,c@sVeZdZiZdZddZddZdddZdd	d
ZdddZ	dd
dZ
dddZdS)MetadatacCs||_d|_dS)NF)databaserequires_extension)r9r_r*r*r+r:szMetadata.__init__cGs|j||Sr-)r_Zexecute_sql)r9ZsqlrKr*r*r+executeszMetadata.executeNc
	Cstdd|j||D}|||}|||}t|dkr\|d}||tkr\t||<t}|D]*\}}	t	||||	j
|	j|	j|d||<qj|S)Ncss|]}|j|fVqdSr-r.)r>metadatar*r*r+rAsz'Metadata.get_columns.<locals>.<genexpr>r)r/r0r1r2r3)
rr_get_columnsget_column_typesget_primary_keyslenr\rHrXr,	data_typerEr2)
r9rQschemarccolumn_typesZpk_namesZpkcolumnsr.Zcolumn_datar*r*r+res(zMetadata.get_columnscCstdSr-)NotImplementedErrorr9rQrjr*r*r+rfszMetadata.get_column_typescCs|j||Sr-)r_get_foreign_keysrnr*r*r+roszMetadata.get_foreign_keyscCs|j||Sr-)r_rgrnr*r*r+rgszMetadata.get_primary_keyscCs|j||Sr-)r_get_indexesrnr*r*r+rpszMetadata.get_indexes)N)N)N)N)N)r'r(r)
column_mapextension_importr:rarerfrorgrpr*r*r*r+r]s



r]cseZdZeeeeeeeee	e	e
eeeee
edZdZfddZddZdfdd		Zdfd
d	Zdfdd
	Zdfdd	ZZS)PostgresqlMetadata)iiiii:iZii;iiiz$from playhouse.postgres_ext import *cs|tt||tdk	rx|d}|}|D]H\}}d|krLtj|j|<q.d|krbtj|j|<q.d|kr.tj	|j|<q.dS)Nz!select oid, typname from pg_type;ZjsonZhstoreZtsvector)
superrsr:rraZfetchall	JSONFieldrqHStoreField
TSVectorField)r9r_cursorresultsZoidZtypname	__class__r*r+r:s
zPostgresqlMetadata.__init__cCszi}tdk	r ttjtjtjfnt}d||f}|d|}|jD].}|j|j	t
||j<||j|krFd|_qF|S)Nz	"%s"."%s"zSELECT * FROM %s LIMIT 1T)
rsetr{r}r|radescriptionrqget	type_coder&r.r`)r9rQrjrkZextension_typesZ
identifierr~column_descriptionr*r*r+rfs&

z#PostgresqlMetadata.get_column_typesNcs|pd}tt|||SNZpublic)rzrsrernrr*r+reszPostgresqlMetadata.get_columnscs|pd}tt|||Sr)rzrsrornrr*r+rosz#PostgresqlMetadata.get_foreign_keyscs|pd}tt|||Sr)rzrsrgrnrr*r+rgsz#PostgresqlMetadata.get_primary_keyscs|pd}tt|||Sr)rzrsrprnrr*r+rpszPostgresqlMetadata.get_indexes)N)N)N)N)r'r(r)BooleanField	BlobFieldBigIntegerFieldr\	TextField
FloatField	CharField	DateField
DateTimeField	TimeFieldDecimalFieldrqrrr:rfrerorgrp
__classcell__r*r*rr+rss2rsc(seZdZedkriZn|ejeejeej	e
ejeej
eejeejeejeejeejeejeejeejeejeejeejeejeejeej eej!eiZfddZ"dddZ#Z$S)
MySQLMetadataNcs.d|kr|d|d<tt|j|f|dS)NZpasswordZpasswd)poprzrr:)r9r_kwargsrr*r+r:szMySQLMetadata.__init__cCsDi}|d|}|jD]&}|dd\}}|j|t||<q|S)NzSELECT * FROM `%s` LIMIT 1)rarrqrr&)r9rQrjrkr~rr.rr*r*r+rf#s
zMySQLMetadata.get_column_types)N)%r'r(r)rrqZBLOBrZCHARrZDATErZDATETIMErZDECIMALrZDOUBLErZFLOATZINT24r\Z	LONG_BLOBZLONGZLONGLONGrZMEDIUM_BLOBZ
NEWDECIMALZSHORTSTRING	TIMESTAMPZTIMErZ	TINY_BLOBZTINYZ
VAR_STRINGr:rfrr*r*rr+rsZrc@sbeZdZeeeeeeee	e
e
e
eee
e
e
ee
dZdZdZdjeedZdZddZdd
dZd	S)
SqliteMetadata)ZbigintZblobboolZbooleanchardateZdatetimeZdecimalZintegerzinteger unsignedintZlongrealZ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*$cCsR|}||jkr|j|}n0t|j|r2t}ntdd|}|j|t}|S)Nz\(.+\)r^)	lowerrqresearch
re_varcharrsubrr&)r9Zcolumn_typer0r/r*r*r+_map_colPs
zSqliteMetadata._map_colNcCs0i}|j|}|D]}||j||j<q|Sr-)r_rerrir.)r9rQrjrkrlcolumnr*r*r+rf[s
zSqliteMetadata.get_column_types)N)r'r(r)rrrrrrrr\rrrrqrrformatZre_foreign_keyrrrfr*r*r*r+r1s:r_DatabaseMetadata)rlprimary_keysforeign_keysrRindexesc@seZdZddZddZdS)DatabaseMetadatacsLg}jD]8}t|jdkrfdd|jD}|||jfq|S)Nrdcs*g|]"}|jkrj|jqSr*)rlr.)r>rr9rQr*r+
<listcomp>rsz9DatabaseMetadata.multi_column_indexes.<locals>.<listcomp>)rrhrlappendr5)r9rQaccumr4field_namesr*rr+multi_column_indexesnsz%DatabaseMetadata.multi_column_indexescCs6i}|j|D]"}t|jdkr|j||jd<q|S)Nrdr)rrhrlr5)r9rQrr4r*r*r+column_indexesxs
zDatabaseMetadata.column_indexesN)r'r(r)rrr*r*r*r+rms
rc@sxeZdZeegZdddZddZedddZ	dd	Z
d
dZdd
ZddZ
ddZddZdddZdddZdS)IntrospectorNcCs||_||_dSr-)rcrj)r9rcrjr*r*r+r:szIntrospector.__init__cCsd|jjS)Nz<Introspector: %s>rcr_r@r*r*r+rDszIntrospector.__repr__cCs<t|trt|}nt|tr(t|}nt|}|||dSNrj)
isinstanceZPostgresqlDatabasersZ
MySQLDatabaserr)clsr_rjrcr*r*r+
from_databases



zIntrospector.from_databasecCst|jjSr-)typercr_r@r*r*r+get_database_classszIntrospector.get_database_classcCs
|jjjSr-rr@r*r*r+get_database_nameszIntrospector.get_database_namecCs
|jjjSr-)rcr_Zconnect_kwargsr@r*r*r+get_database_kwargssz Introspector.get_database_kwargscCs|jjrd|jjSdS)N
r^)rcr`rrr@r*r*r+get_additional_importssz#Introspector.get_additional_importscCs@tdd|}ddd|dD}|ds<d|}|S)N[^\w]+r^css|]}|VqdSr-)title)r>rr*r*r+rAsz/Introspector.make_model_name.<locals>.<genexpr>_rT)rrrBsplitisalpha)r9rQmodelZ
model_namer*r*r+make_model_names
zIntrospector.make_model_namecCs@tdd|p|}tdd|}|tkr<|d7}|S)Nz_id$r^rr)rrrstripRESERVED_WORDS)r9rr*r*r+make_column_names
zIntrospector.make_column_namecs|jr|jjj|jd}n|jj}dk	r@fdd|D}i}i}i}i}i}|D]D}|j||j}	|j||j}
z|j||j||<Wn4tk
r}zt|j	g||<W5d}~XYnX|
|||<tdd|
D}|
D]>\}
}|
|
}|
}|dr,||kr,|
}||_q|	D]@}t|jdkr8|jd}||
kr8|j|
|_d	|
|_q8|j||j||<|
||<|	||<qXi}d
d}|D]}t}t|||dD]d}z|||j}Wntk
rYqYnX|j}||kr"d
||jf||<n
||qʐq|D]n}||D]^}||j|j}z||j|j}Wntk
rd}YnX|j|||||dqDq8t|||||S)Nrcsg|]}|kr|qSr*r*)r>rQtable_namesr*r+rsz+Introspector.introspect.<locals>.<listcomp>css|]}|VqdSr-)r)r>Zcolumn_namer*r*r+rAsz*Introspector.introspect.<locals>.<genexpr>Z_idrdrTcSs|jSr-)r)rOr*r*r+<lambda>z)Introspector.introspect.<locals>.<lambda>)keyz	%s_%s_set)rOrRrSr7) rjrcr_Z
get_tablesrprero
ValueErrorerrargsrrrXrrendswithr.rhrlr5r4rgrWrKeyErrorrPaddrQZdest_columnrTrr)r9rZtablesrlrrrRrrQZ
table_indexesZ
table_columnsexcZlower_col_namesZcol_namernew_nameZ
lower_namer4Z
related_namesZsort_fnZmodels_referencedrOrPsrcrSr*rr+
introspects







zIntrospector.introspectFcsdj|di}GfdddtfddtjD]\}}||krD||qD|S)NrcseZdZGfdddZdS)z/Introspector.generate_models.<locals>.BaseModelcseZdZjjZdS)z4Introspector.generate_models.<locals>.BaseModel.MetaN)r'r(r)rcr_r*r@r*r+Meta!srN)r'r(r)rr*r@r*r+	BaseModel srcs"j|D]$}|j}||kr
||kr
||q
gj|}|D]\}}|jrF|jqF||}Gfddd}d}	t	dkr|
t	dkrtfdd|D|_d}	d|i}
|D]\}}|j}|t
krt}||jd	}|jr*|	r*|tkr t}d|d
<n|jrD|tk	rDd|d
<|r|rbd|d<n|jj}
||
|d<|jr|j|d
<d||f|d<||kr|s||rd|d<n|sd|d<|f||
|j<qztt|f|
||<Wntk
rsYnXdS)NcseZdZZdS)zAIntrospector.generate_models.<locals>._create_model.<locals>.MetaN)r'r(r)rr*)rr*r+r4srFrrdcsg|]\}}|kr|jqSr*rb)r>colrY)rr*r+r<szGIntrospector.generate_models.<locals>._create_model.<locals>.<listcomp>T)r3rEr2r9r6r8z	%s_%s_relr7r5r4)rrPrlrXr2rr.rrrhkeysZCompositeKeyr/r&Z	BareFieldr1rHr\rIrNrOr8rJrstrr)rQmodelsrOrSrlr3rrrZ
composite_keyrCZ
FieldClassrKrP)r
_create_modelr_skip_invalid)rrr+r$sj












z3Introspector.generate_models.<locals>._create_model)rZModelrWrRrX)r9rrrrQrr*)rrr_r9rr+generate_modelssFzIntrospector.generate_models)N)N)N)FN)r'r(r)rHr\Z
pk_classesr:rDclassmethodrrrrrrrrrr*r*r*r+rs
	
lrcCstj||d}|Sr)rrr)r_rjZintrospectorr*r*r+rqsr)N)collectionsrImportErrordictrrZpeeweeZMySQLdb.constantsrZpymysql.constantsZ	playhouserrrobjectr&r,r]rsrrrrrrr*r*r*r+<module>sz

c3L.4
r
Back to Directory File Manager