K iMddlmZddlmZddlmZddlmZddlmZddl m Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZ ddlmZ dd lmZ  ddl"Z"e re jFe"jFk\re Z" dd l$m%Z%e%jL ddl'Z'dd l'm(Z) dd l'm*Z+ dd l,m-Z.e. dd l0m*Z1dZ2 ddl3Z4dZ6gdZ7 ddlm8Z8ejtdZ;e;jye8ejzddk(r&e>Z?e@ZAeBZCejZDeEZFeGeHeIeJfZKeLddZMn?ddlNZN ddlmOZOddlmPZPdZFe@Z?eQZAeRZCe@ZSeTZUeGeHeIeJeVfZKeWeNdZMejZDd dZYejzdkr-e jjZZe jjZ[ndZZd Z[e"re"jeje@e"je je@e"je j0e@ejzdk\rLd!Z_d"Z`d#Zae"je je_e"jd$e`e"jd%eae"jFZcnd&ZceJd'Zdd(Zed)d*d+d,d-d.d'Zfefj Zgd/egd0<d1egd2<d3Zhd4Zid5ZjGd6d7ekZlemZneld id8d8d9d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdVdWdXdYdYdZd[d\d\d]d]d^d^d_d_d`d`dadbdcddZoelejejejejejejejdedfdgdhdi Zweld idjdkdldmdmdmdndndodpdqdqdrdrdsdsdtdtdudvdwdxdydxdzdkdpdpd{d{d|d|d}d{d~dnddZxelddddddddd ZyeldddddZzelddZ{dZ|dZ}dZ~dZdZdZdZdZejdZejdZdZemfdZdZdZdZdZdZdZdZGddemZGddemZGddeZGddemZGddemZGdde j*ddZdZGddemZdZdZGddemZGddemZGddemZGddemZGddeZGddeZGddemZdZeyjFdfdZGddeZGd„demZGdĄdeeZGdƄdeZGdȄdeeZGdʄdeeZGd̄deZGd΄deZGdЄdeZGd҄demZGdԄdemZGdքdeZGd؄deZGdڄdeZGd܄demZGdބdeeZGddeZGddeZdZGddeZGddeZd dZd dZGddeZGddeZGddeZGddeZd dZGddeZeddZGddeZGddeZGddeZGddeZGddeZGddeZȐdZɐdZGddeZGddeZeːdZGd d eZΐd ZGd d eZАdZGddeZҐdZGddeZGddeԫZGddeԫZ֐d dZGdde֫ZGddeeeثZGdde٫ZGdd e٫ZGd!d"e֫ZGd#d$eܫZGd%d&eܫZGd'd(eܫZGd)d*eZGd+d,eZd d-ZGd.d/e/ZGd0d1eZGd2d3eZGd4d5eZGd6d7eZGd8d9eZGd:d;eZGd<d=eZGd>d?eZGd@dAeZGdBdCemZeeeeeeeeeeeedD ZeeZe j*dEdFZe j*dGdHZe j*dIdJZe j*dKdLZGdMdNemZGdOdPeejZGdQdRemZGdSdTemZGdUdVeZdWZGdXdYeZGdZd[eZGd\d]eZGd^d_emZGd`daemZGdbdcemZGdddeemZGdfdgemZGdhdieZGdjdkeZGdldmeZGdndoemZGdpdqemZGdrdseZGdtduemZ GdvdwemZ GdxdyeZ Gdzd{e Z Gd|d}e Z Gd~de ZGdde ZGdde ZGddeZGddeZGddeZGdde ZGddeZGdde ZGdde ZGddeZGddeZGddeZGdde ZGddeeZGddemZGddeZGddeZGdde Z GddeZ!dZ"d dZ#dZ$Gdde Z%Gdde%Z&Gdde%Z'Gdde%Z(dZ)GddeZ*GddeZ+Gdde Z,Gdde Z-Gdde Z.Gdde Z/GddemZ0Gdde Z1Gd„dÐeZ2GdĄdŐe1Z3GdƄdǐe1Z4GdȄdɐe1Z5GdʄdemZ6Gd̄demZ7Gd΄demZ8GdЄdѐe8Z9Gd҄de/Z:GdԄdՐe;Z<GdքdemZ=Gd؄deeGdڄdeZ?Gd܄dݐe Z@dބZAGd߄demZBGddeBeիZCGddeBZDGddeDeګZEdZFGddeDe۫ZGGddeGZHGddeBZIGddeIeݫZJGddeIeޫZKGddeIe߫ZLGddeGZMdZNGddeZOGddeOZPGddePZQGddeQZRGddePZSGddeOZTGdde j*ddZUdZVdZWy#e$r ddl mZY wxYw#e$r dd l!mZ n #e$rdZ YnwxYwY wxYw#e$re Z"Y wxYw#e$rY wxYw#e$rdZ+Y wxYw#e$rdxZ'Z+Y wxYw#e/$rY wxYw#e$rdZ1Y wxYw#e$r ddl5Z4dZ2n #e$rdZ4YnwxYwY wxYw#e$rGddejrZ8Y wxYw#e$r ddl mOZOY }wxYw() bisect_left) bisect_rightcontextmanager)deepcopywraps)isclassN)Mapping)dbapi2)compat) extensions)errors) register_uuidFTz3.18.3)KAnyFieldAsIs AutoField BareField BigAutoField BigBitFieldBigIntegerFieldBinaryUUIDFieldBitField BlobField BooleanFieldCaseCast CharFieldCheckchunkedColumn CompositeKeyContextDatabase DatabaseError DatabaseProxy DataError DateField DateTimeField DecimalFieldDeferredForeignKeyDeferredThroughModel DJANGO_MAP DoesNotExist DoubleFieldDQEXCLUDEDFieldFixedCharField FloatFieldfnForeignKeyField IdentityFieldImproperlyConfiguredIndex IntegerFieldIntegrityErrorInterfaceError InternalErrorIPFieldJOINManyToManyFieldModel ModelIndex MySQLDatabaseNotSupportedErrorOPOperationalErrorPostgresqlDatabasePrimaryKeyFieldprefetch PREFETCH_TYPEProgrammingErrorProxyQualifiedNames SchemaManagerSmallIntegerFieldSelectSQLSqliteDatabaseTable TextField TimeFieldTimestampFieldTuple UUIDFieldValue ValuesListWindow) NullHandlerceZdZdZy)r\cyN)selfrecords L/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/peewee.pyemitzNullHandler.emits N)__name__ __module__ __qualname__rdr`rercr\r\s rer\peeweez4def reraise(tp, value, tb=None): raise tp, value, tbctjj|tjjdy)N )sysstdoutwritess rcprint_rrs&  re)Callable)reducec"t|tSr_) isinstancers)cs rcrxs *Q1reprintcD|j|ur|j||r_) __traceback__with_traceback)tpvaluetbs rcreraisers&   b (&&r* * re) ctjj|tjjj dS)N)tztzinfo)datetime fromtimestamptimezoneutcreplace)tss rcutcfromtimestamprs6!!rh&7&7&;&;<% 'rectjjtjjj dS)Nr)rnowrrrr`rercutcnowrs2!!X&&**+% 'rec$|jdSN ) isoformatds rcdatetime_adapterrs C(8!8rec`tjtt|j dS)N-)rdatemapintsplitrs rc convert_datersHMM3sAGGDM3J$KKrec |jd\}}tt|jd\}}}|jd}tt|djd\}}} t|dk(r,tdj |dj } nd} t j |||||| | S) N r.r:rjz{:0<6.6})rrrlenformatdecoder) trtimeymrt_fullhourminutesecondusecs rcconvert_timestamprsJD$#tzz$/0GAq!TZZ%F#&sF1IOOD,A#B D&&6{a:,,VAY-=-=-?@A$$Q1dFFDI Irer timestamprrr)yearmonthdayrrr)%Y-%m-%d %H:%M:%S%Y-%m-%d %H:%M:%S.%f%Y-%m-%d%H:%M:%S %H:%M:%S.%f%H:%Mz%Y-01-01 00:00:00z%Y-%m-01 00:00:00z%Y-%m-%d 00:00:00z%Y-%m-%d %H:00:00z%Y-%m-%d %H:%M:00rz%Y-%m-%d %H:%i:00rz%Y-%m-%d %H:%i:%SrcT|tvsJ|syt|t}t||Sr_)__date_parts__format_date_time__sqlite_datetime_formats__getattr lookup_typedatetime_stringdts rc_sqlite_date_partr s0 . (( (  /+F GB 2{ ##recl|tvsJ|syt|t}|jt|Sr_)__sqlite_date_trunc__rrstrftimers rc_sqlite_date_truncrs9 / // /  /+F GB ;;,[9 ::rec8tj|tyr_)warningswarnDeprecationWarningrps rc__deprecated__rs MM!'(rec$eZdZdZdZdZdZy)attrdictc> ||S#t$r t|wxYwr_)KeyErrorAttributeErrorraattrs rc __getattr__zattrdict.__getattr__s+ ':  ' & & 'sc|||<yr_r`rarr~s rc __setattr__zattrdict.__setattr__"s UT rec(|j||Sr_updaterarhss rc__iadd__zattrdict.__iadd__#sT[[-d{rec>t|}|j||Sr_)rr)rarrs rc__add__zattrdict.__add__$sA axreN)rfrgrhrrrrr`rercrrs' ;:GrerANDORADD+SUB-MUL*DIV/BIN_AND&BIN_OR|XOR#MOD%EQ=LT<LTEz<=GT>GTEz>=NEz!=INNOT_INzNOT INISIS_NOTzIS NOTLIKEILIKEBETWEENREGEXPIREGEXPCONCATz||BITWISE_NEGATION~c8t|tj|Sr_) ExpressionrErlrs rcrxrxPsz!RUUA.rec8t|tj|Sr_)r rErr s rcrxrxQsArww2rec8t|tj|Sr_)r rErr s rcrxrxRs*Q!4rec8t|tj|Sr_)r rErr s rcrxrxSs:aA6re) eqltltegtgteneinislikeilikeregexpAUTOINTEGERBIGAUTOBIGINTBLOBBOOLSMALLINTCHARDATEDATETIMEDECIMALDEFAULTDOUBLEREALFLOATINTTEXTTIMEUUIDUUIDBVARCHARz INNER JOINzLEFT OUTER JOINzRIGHT OUTER JOINz FULL JOINzFULL OUTER JOINz CROSS JOINz NATURAL JOINLATERALzLEFT JOIN LATERAL) INNER LEFT_OUTER RIGHT_OUTERFULL FULL_OUTERCROSSNATURALr2 LEFT_LATERALrr)TUPLEDICT NAMED_TUPLE CONSTRUCTORMODEL)WHEREr?z(.)_*([A-Z][a-z]+)z([a-z0-9])_*([A-Z])_metaclass_helper_c |t|fiSr_) MODEL_BASE)metabases rcwith_metaclassrJs  TGR ((recL|j}|r|j||Sr_)copyr)source overridesmergeds rc merge_dictrPs! [[]F i Mrect|dk(r|dj|Sdj|Dcgc]}|j|c}Scc}w)Nrr.)rjoin)path quote_charsparts rcquoterWsF 4yA~Aw||K(( 88=TYY{+= >>=sAc<t|xrt|tSr_)r issubclassrA)os rcrxrxsWQZ8Jq%$8rec>|t|ttfr|S|fSyr_)rvlisttupler~s rc ensure_tupler_s' "54-8uFuhFrecB|t|tr|St|Syr_)rvNodeEntityr^s rc ensure_entityrcs% "5$/uBVE]Brecvtjd|}tjd|jS)Nz\1_\2)SNAKE_CASE_STEP1subSNAKE_CASE_STEP2lower)rqfirsts rcmake_snake_caserjs0  1 -E   % 0 6 6 88rec#Kt}dtt|g|zd|iDD]!}|d|ur||j|d=|#yw)Nc32K|]}t|ywr_)r\).0gs rc zchunked..sCa$q'C fillvalue)object izip_longestiterindex)itnmarkergroups rcr r sg XFC<$r(a$B:@$BC 9 ekk&)*+ sAAceZdZdZy)_callable_context_managerc2tfd}|S)NcD5|i|cdddS#1swYyxYwr_r`argskwargsr5ras rcinnerz1_callable_context_manager.__call__..inners( +4*6* + + +srrar5rs`` rc__call__z"_callable_context_manager.__call__ r +  + reN)rfrgrhrr`rercr|r|srer|cdeZdZdZdZdZdZdZdZedZ edZ d Z fd Z xZ S) rLz; Create a proxy or placeholder for another object. obj _callbacksc4g|_|jdyr_)r initializeras rc__init__zProxy.__init__s recD||_|jD] }|| yr_r)rarcallbacks rcrzProxy.initializes# H SM rec<|jj||Sr_)rappend)rars rcattach_callbackzProxy.attach_callbacks x(recfd}|S)Ncj|j tdt|j|i|SNzCannot use uninitialized Proxy.rrr)rarrmethods rcrz Proxy.passthrough..inners6xx$%FGG,7488V,d=f= =rer`rrs` rc passthroughzProxy.passthroughs > re __enter____exit__c\|j tdt|j|Srrrs rcrzProxy.__getattr__s) 88  !BC Ctxx&&rec^||jvr tdtt|||S)NzCannot set attribute on proxy.) __slots__rsuperrLr)rarr~ __class__s rcrzProxy.__setattr__s/ t~~ % !AB BUD-dE::re)rfrgrh__doc__rrrrrrrrr __classcell__rs@rcrLrLsH&I K(I:&H' ;;rerLcBeZdZdZdZdZdZdZdZdZ e dZ y ) r&zL Proxy implementation specifically for proxying `Database` objects. )rr_Modelct|Sr_ConnectionContextrs rcconnection_contextz DatabaseProxy.connection_context  &&rec t|g|i|Sr__atomicrarrs rcatomiczDatabaseProxy.atomict-d-f--rect|Sr__manualrs rc manual_commitzDatabaseProxy.manual_commit t}rec t|g|i|Sr_ _transactionrs rc transactionzDatabaseProxy.transactionD242622rect|Sr_ _savepointrs rc savepointzDatabaseProxy.savepoint $rec~tds%Gfdd}tdtfd|i_jS)NrceZdZWZy)!DatabaseProxy.Model..MetaNrfrgrhdatabasersrcMetar4rer BaseModelhasattrtyperArrars` rcrAzDatabaseProxy.Model3tX& ' '{UHvtnEDK{{reN) rfrgrhrrrrrrrpropertyrAr`rercr&r&s90I'.3  rer&c eZdZy)ModelDescriptorNrfrgrhr`rercrr rercLeZdZdZdZedZdZd dZdZ dZ dZ d Z y ) AliasManager)_counter_current_index_mappingcNd|_d|_g|_|jyNr)rrrpushrs rcrzAliasManager.__init__s!   rec:|j|jdz SNr)rrrs rcmappingzAliasManager.mappings}}T001455rec||jvr'|xjdz c_d|jz||<|j|S)Nrzt%d)rrrarMs rcaddzAliasManager.adds=  % MMQ M 4==0DL||F##rec|rHtt|jD]'}||j|vs|j||cS|j |Sr_)reversedrangerrr)rarM any_depthidxs rcgetzAliasManager.get%sZ d&9&9 :; 6T]]3//==-f55 6xxrec$|j|Sr_)rrs rc __getitem__zAliasManager.__getitem__,sxxrec"||j|<yr_)r)rarMaliass rc __setitem__zAliasManager.__setitem__/s$ Vrec|xjdz c_|jt|jkDr|jjiyyr)rrrrrs rcrzAliasManager.push2sA q    T]]!3 3 MM  $ 4recb|jdk(r td|xjdzc_y)Nrz&Cannot pop() from empty alias manager.)r ValueErrorrs rcpopzAliasManager.pop7s-   ! #EF F q reNF) rfrgrhrrrrrrrrrrr`rercrrs>:I66$   %% !rerc2eZdZedffd ZddZdZxZS)StateFc 0tt| ||||Sr_)rr__new__)clsscope parenthesesrrs rcrz State.__new__?sUC(e[&IIrec | |jn|}|r8|jr,|jj}|j|n|r|}n |j}t ||fi|Sr_)rsettingsrLrr)rarrrrs rcrzState.__call__Bs]#m  dmm}}))+H OOF # H}}HUK4844rec8|jj|Sr_)rr)ra attr_names rcrzState.__getattr__Ps}}  ++reNN)rfrgrh SCOPE_NORMALrrrrrs@rcrr=s'UJ 5,rer_State)rrrc$tfd}|S)Nc;TK|ddi|5|dddy#1swYyxYwwNrr`r`)rarrs rcrz __scope_context__..innerUs0  ( ( ( J   s ( (%(r)rrs` rc__scope_context__rTs LreceZdZdZdZdZdZedZedZ edZ dZ e e Ze eZe eZe eZe eZd Zd Zed Zd Zd ZddZdZdZdZ y)r#)stack_sql_values alias_managerstatec lg|_g|_g|_t|_t di||_yNr`)rrrrrrr)rars rcrzContext.__init___s0   )^&X& rec@tdi|jjSr )r#rrrs rcas_newzContext.as_newfs-,,--rec*|dj|Sr get_sort_keyraitems rccolumn_sort_keyzContext.column_sort_keyisAw##D))rec.|jjSr_)rrrs rcrz Context.scopelszzrec.|jjSr_)rrrs rcrzContext.parenthesespszz%%%rec.|jjSr_)rsubqueryrs rcrzContext.subquerytszz"""rec |r!|jd|jk(r|d=|jj|j|jdi||_|Sr)rrrrr)rarNs rcrzContext.__call__xsQ w/4::='" $**%TZZ,),  rec@|jr|jd|S)N()rliteralrs rcrzContext.__enter__s    LL  rec||jr|jd|jj|_y)N))rrrrrraexc_typeexc_valexc_tbs rcrzContext.__exit__s)    LL ZZ^^% rec#|K|jjd|jjywr_)rrrrs rc push_aliaszContext.push_aliass- !   s:<ct|ttfr|j|St |r%|j j j|S|jt|Sr_) rvrar#__sql__is_model_metatablesqlrYrars rcr'z Context.sqlsR cD'? +;;t$ $ c]99??**40 088E#J' 'rec<|jj||Sr_)rr)rakeywords rcrzContext.literals ! reNcr|r ||}n3|1|jjr|jj|}t|tr$|d5|j |cdddSt |r+|j 5|j |cdddS|jjr|jt|S|jj||r)|j|jjxsdS|S#1swYxYw#1swYxYw)N converter?) rr-rvrar'r$ scope_columnvalue_literalsr_query_val_transformrrparam)rar~r- add_params rcr~z Context.values e$E  4::#7#7JJ((/E eT "% 'xx ' ' e_ ""$ 'xx ' ' :: $ $<< 4U ;< < E"8At||DJJ,,34KtK ' ' ' 'sD!D-!D*-D6c|jj|j|jj|j|Sr_)rextendrractxs rcr#zContext.__sql__s1  " 4<<( rec@|j|jSr_)r'queryranodes rcparsez Context.parsesxx~##%%recPdj|j|jfS)Nr()rSrrrs rcr9z Context.queryswwtyy!4<<//reNT)!rfrgrhrrr rrrrrrrr scope_normal SCOPE_SOURCE scope_source SCOPE_VALUES scope_values SCOPE_CTE scope_cte SCOPE_COLUMNr/rrrr!r'rr~r#r<r9r`rercr#r#\sFI'.*  &&##%\2L$\2L$\2L!),I$\2L & !! (L2 &0rer#c<t|dd}||j}n t}|j|j \}}|s|S|j j xsd}|dk(r|jdd}|ttt|zS)N _databaser.%s) rget_sql_contextr#r'r9rr2rr]rr1)r9dbr7r'paramsr2s rcquery_to_stringrMs  T *B ~  "i''%.&&(KC  IIOO "sE |kk#t$ s/89 99rect|ttjtjtjfrd|z}|St|t r |j d}d|z}|St|trdt|z}|S|d}|St|}|S#t$r|j d}YVwxYw)Nz'%s'utf8raw_unicode_escaperINULL) rv text_typerrr bytes_typerUnicodeDecodeErrorrstr)vs rcr1r1s!i!2!2HMMmm%& QJ H Az " / A QJ H As  3q6M H   H F H" /-.A /sB""B?>B?cDeZdZdZdZdZdZedZd dZ dZ dZ y ) raTFc|jj|j}|jj|_|Sr_)rr__dict__rLr(s rcclonez Node.clones3nn$$T^^4}}))+  rectr_NotImplementedErrorr6s rcr#z Node.__sql__!!recfd}|S)Nc@|j}|g|i||Sr_)rZ)rarrrZrs rcrzNode.copy..inners%JJLE 5 *4 *6 *Lrer`rs` rcrLz Node.copys  recV||jk7r|j}||_|S|Sr_)_coercerZ)rarbrZs rccoercez Node.coerces* dll "JJLE#EML recyNFr`rs rcis_aliasz Node.is_alias srec|Sr_r`rs rcunwrapz Node.unwrap reNT) rfrgrhrb__isabstractmethod__rZr# staticmethodrLrcrfrhr`rercraras:G  "rerac eZdZdZdZdZeZy) ColumnFactoryr;c||_yr_ror:s rcrzColumnFactory.__init__  rec.t|j|Sr_)r!r;rs rcrzColumnFactory.__getattr__dii&&reNrfrgrhrrrrr`rercrnrnsI'KrernceZdZdZddZy)_DynamicColumnr`Nc | t|S|Sr_)rnrainstance instance_types rc__get__z_DynamicColumn.__get__"s   * * rer_rfrgrhrr{r`rercrvrvs IrervceZdZdZddZy)_ExplicitColumnr`Nc&|td|z|S)NzM%s specifies columns explicitly, and does not support dynamic column lookups.rrxs rcr{z_ExplicitColumn.__get__+s)   *,456 6 rer_r|r`rercr~r~(s Irer~ceZdZdZdZy)Starc||_yr_)rMrs rcrz Star.__init__4  rech|jt|jjdS)Nz.*)r'rMrMrr6s rcr#z Star.__sql__6s%ww~dkk23;;DAAreNrfrgrhrr#r`rercrr3s BrerceZdZeZd fd ZejdZdZ e dZ e jdfdZd dZd dZd Zd Zd ZxZS)SourceNc8tt| ||_yr_)rrr_alias)rarrs rcrzSource.__init__=s fd$& rec||_yr_rranames rcrz Source.aliasA  rec8|s tdf}t|f|S)Nr)rQrPracolumnss rcselectz Source.selectEs3xkGtgw''rect|Sr_)rrs rc__star__zSource.__star__Js Dzrect||||Sr_Join)radest join_typeons rcrSz Source.joinNsD$ 2..rec:t||tj|Sr_)rr?r4rarrs rcleft_outer_joinzSource.left_outer_joinQsD$44rec"t|||||SN) recursiver materializedCTErarrrrs rcctez Source.cteT4G ,. .recT|jr |jfS|j|fSr_)rrr6s rcrzSource.get_sort_keyXs) ;;KK> !!!$'))rec|jtk(r[|jr|j|j|<|j dj t |j||SN AS )rr@rrrr'rbr6s rc apply_aliaszSource.apply_alias]sW 99 ${{*.++!!$' KK  # #F3+<+v> rec2||_|jyr_)rrrs rcrz_HashableSource.aliasqs  rec.|j|_yr_) _get_hash_hashrs rcrz_HashableSource._update_hashvs^^% recZt|j|j|jfSr_)hashr_pathrrs rcrz_HashableSource._get_hashys T^^TZZ=>>rec|jSr_)rrs rc__hash__z_HashableSource.__hash__|s zzrect|tr|j|jk(St|tj |Sr_)rvrrr rErraothers rc__eq__z_HashableSource.__eq__2 e_ -::, ,$u--rect|tr|j|jk7St|tj |Sr_)rvrrr rErrs rc__ne__z_HashableSource.__ne__rrecfd}|S)Nct||Sr_r rarops rcrz!_HashableSource._e..innersdB, ,rer`)rrs` rc_ez_HashableSource._es  - re)rfrgrhrrarLrrrrrrrrEr__lt__r__le__r__gt__r__ge__rrs@rcrrlst YY&?. . YF ZF YF ZFrerc.tfd}|S)Ncn|g|i|}|jr|j|jS|Sr_)rHbind)rarrresultmeths rcrz __bind_database__..inners6d,T,V, >>;;t~~. . rer)rrs` rc__bind_database__rs  4[ Lrecfd}|S)Nc,r||}}t||S)N)rr)rarinvertedrs rcrz__join__..methods %DD%955rer`)rrrs`` rc__join__rs6 MreceZdZeej ZeejZeejZ eejZ eejZeej dZeejdZeejdZeejdZeejdZy) BaseTableTrN)rfrgrhrr?r3__and__r4rr5__sub__r7__or__r8__mul____rand____radd____rsub____ror____rmul__r`rercrrstzz"Gt'Gt''(G doo &Ftzz"G T2H$7H((48Ht6G T2Hrerc$eZdZdZdZdZdZy)_BoundTableContextc ||_||_yr_)r&r)rar&rs rcrz_BoundTableContext.__init__s   rec2tfd}|S)Nctjj5|i|cdddS#1swYyxYwr_)rr&rrs rcrz*_BoundTableContext.__call__..inners7#DJJ > +4*6* + + +s4=rrs`` rcrz_BoundTableContext.__call__rrec$|jj|_|jj|j|jj /|jj j|j|jSr_)r&rH_orig_databaserr_modelrs rcrz_BoundTableContext.__enter__s^"jj22  & ::   ( JJ   " "4== 1zzrec|jj|j|jj0|jjj|jyyr_)r&rrrrs rcrz_BoundTableContext.__exit__sK ++, ::   ( JJ   " "4#6#6 7 )reNrfrgrhrrrrr`rercrrs!8rerceZdZ d fd ZdZd dZd dZdZedZ eddZ eddZ ed d Z ed Z d ZxZS)rSc f||_||_||_||_|r||fn|f|_||_||_tt|'||-t|_ |D]}t||t|||r,|jr|n |j} t| ||_yd|_yNr)rf_columns _primary_key_schemarrrHrrSrr~rwsetattrr!r primary_key) rarrrschemarrrHcolumncol_srcrs rcrzTable.__init__s  ' '-fd^D7  " eT#%#0  $&DF! <ffT6&:; < "mmdG&w 4==:>--HvdF+HGHtgw''Is?c |rG|in|}|jr|n |j}|jD]\}}||t||<t |||SNinsertr)rrwitemsrInsert)rarrrsrckeyr~s rcrz Table.insertsZ !>RvF--$TVVC$lln 2 U,1wsC() 2d67;;rec F|j||jdS)NrREPLACEr on_conflict)rarrrs rcrz Table.replaces"vw7Y' )rec |rG|in|}|jD].\}}|jr|n |j}||t||<0t ||S)Nr)rrrwrUpdate)rarrr r~r s rcrz Table.update sZ !>RvF$lln 2 U"mmd,1wsC() 2d6**rect|Sr_)Deleters rcdeletez Table.deletes d|rec\|jtk(r!|jt|jS|j r|j |j |<|jtk(r0|j|jt|jS|j|Sr_) rrBr'rbrrrr@rrr6s rcr#z Table.__sql__s 99 $7764::./ / ;;&*kkC  d # 99 $##CGGFDJJ,?$@A A$$S) )re)NNNNNNr_r)rfrgrhrrZrrrrrrrrrr#rrs@rcrSrSsDH48$. &2L(( <<)) ++ *rerScFeZdZejddffd ZdZdZxZS)rNcftt| |||_||_||_||_yr)rrrlhsrr_on)rarrrrrrs rcrz Join.__init__+s1 dD""/"rec||_|Sr_)r)ra predicates rcrzJoin.on2s rec|j|jjd|jzj|j|j *|jdj|j |S)N %s  ON )r'rrrrrr6s rcr#z Join.__sql__6s\ #dhh- '&4>>) * #dhh- 88  KK  # #DHH - re) rfrgrhr?r3rrr#rrs@rcrr*s+/::$drercPeZdZdfd ZdZej dZdZxZ S)rZcJ||_||_tt||yr)rrrrZr)ravaluesrrrs rcrzValuesList.__init__As#   j$(u(5reclt|jt|j|jfSr_)rridrrrs rcrzValuesList._get_hashFs%T^^R %5t{{CDDrec||_yr_)r)ranamess rcrzValuesList.columnsIs  rec  |jr|j|j|<|jtk(s|jtk(r||j 5|j djt|jDcgc] }t|c}}ddd|jtk(r~|j djt|j||jr<|jDcgc] }t|}}|jt||S|jt|j||Scc}w#1swYxYwcc}w)NrzVALUES r) rrrr@rrrr' CommaNodeListrEnclosedNodeListrbr)rar7rowrwentitiess rcr#zValuesList.__sql__Ms> ;;&*kkC  d # 99 $ \(AS__!45 M *M<@LL+J58+C0+JKL M yyL( F#''s/@/@/F(GH==37==Aaq AHAGG,X67  GGF3,,T23 4 +J M M Bs$ .E4E/ E4F/E44E=r) rfrgrhrrrarLrr#rrs@rcrZrZ@s+6 E YYrerZcJeZdZ dfd ZdZdZdZeZdZeZ dZ xZ S)rc||_||_||_||_|*|Dcgc]}t |t r t |n|!}}||_d|_tt|/|ycc}w)Nr`r) r_query _recursive _materializedrv basestringrbr _cte_listrrr)rarr9rrrrwrs rcrz CTE.__init__dsz  #)   ')%/q*$=vay1D)G)  c4!!- )s$A-c |s tdt|f|j|j|jj } |j |jj}|S#t$rY|SwxYw)NzFselect_from() must specify one or more columns from the CTE to select.) rrPwith_cterr.rHobjectsmodelrrarr9s rc select_fromzCTE.select_fromqs78 8)(4.$t{{,,-  MM$++"3"34E     s%A55 BBclt|j|jt|jfSr_)rrrr#r.rs rcrz CTE._get_hashs$T^^T[["T[[/BCCrec|jj}t|j||z|j|j Sr_r.rZrrr/rrarrZs rc union_allz CTE.union_all5 !!#4;; T__dmmLLrec|jj}t|j||z|j|j Sr_r;r<s rcunionz CTE.unionr>rec|jtk7r$|jt|jS|j 5|j|j |<|jt|j|jr3|jdjt|j|jd|jr|jdn|jdur|jd|jd5|j|jdddddd|S#1swYxYw#1swY|SxYw)Nrrz MATERIALIZED FzNOT MATERIALIZED Tr') rrDr'rbrr!rrrr)r0r?r.r6s rcr#z CTE.__sql__s 99 !776$++./ / ^^  %&*kkC  d # GGF4;;' (}} C $$%5dmm%DE KK !! O,##u, /0!!d!3 % $ % %  % % % s%CE%EEE EE)r) rfrgrhrr8rr=rr@rr#rrs@rcrrcs8=A" . DMGMFrerc$eZdZdZej ddZdZdZdZ dZ ddZ e Z ddZ e Zd Zdd Zeej$Zeej(Zeej,Zeej0Zeej4Zeej8xZZeej>Z eej,d Z!eej0d Z"eej4d Z#eej8d xZ$Z%eej$d Z&eej(d Z'eej>d Z(d Z)dZ*eejVZ,eejZZ.eej^Z0eejbZ2eejfZ4eejjZ6eejnZ8eejrZ:eejnZ;eejrZ<eejzZ>eej~Z@eejfZAeejZCeejZEeejZGddZHdZIdZJdZKdZLdZMdZNdZOdZPdZQdZRdZSy) ColumnBaseNc||_yr_) _converter)rar-s rcr-zColumnBase.converters #rec"|r t||S|Sr_)Aliasrars rcrzColumnBase.aliass u% % rec|Sr_r`rs rcunaliaszColumnBase.unaliasrirect||Sr_)BindTo)rars rcbind_tozColumnBase.bind_tosdD!!rect||Sr_)r)raas_types rccastzColumnBase.castsD'""rect|||SN) collationnulls)AscrarSrTs rcasczColumnBase.ascs49E::rect|||SrR)DescrVs rcdesczColumnBase.descsDIU;;rect|Sr_)Negatedrs rc __invert__zColumnBase.__invert__rrecfd}|S)z Lightweight factory which returns a method that builds an Expression consisting of the left-hand and right-hand operands, using `op`. c<r t||St||Sr_r)rarinvrs rcrzColumnBase._e..inners$!#r400dB, ,rer`)rr`rs`` rcrz ColumnBase._es  - reT)r`c`|tjntj}t|||Sr_)rErrr rs rcrzColumnBase.__eq__s$kRUUruu$C((rec`|tjntj}t|||Sr_)rErrr rs rcrzColumnBase.__ne__s$+RYY255$C((rec`|rtjntj}t||dSr_)rErrr )rais_nullrs rcrdzColumnBase.is_nulls"RUU299$D))recH|jddk\s(|jddk\s|jddk\rb|jddjddjdd}tt||zd t d tdd fS||zS) N_rr\z\\z\_z\%Fr,ESCAPE)findrNodeListrYrQ)rarqtemplates rc_escape_like_exprzColumnBase._escape_like_exprs 66#;! qvvc{a/166$<13D $'//U;CCCOAhle4H de,./ /!|rec t|tr5tdtjt|tjd}n|j |d}t|tj |S)Nrz%%%s%%rvrar rErrlrrs rccontainszColumnBase.containssU c4 S"))'RYY<>C((h7C$#..rect|trt|tjd}n|j |d}t|tj |S)Nrz%s%%rnrs rc startswithzColumnBase.startswith C c4 S"))S1C((f5C$#..rect|trtdtj|}n|j |d}t|tj |S)Nrz%%%srnrs rcendswithzColumnBase.endswithrrrec bt|tjt|t d|fS)Nr)r rErrjrQ)ralohis rcbetweenzColumnBase.betweens%$ Hb#e*b5I,JKKrec8t|tj|Sr_StringExpressionrErrs rcconcatzColumnBase.concatsbii55rect|trI|j |j t d|j |j|jS||k(S)Nz4BETWEEN range must have both a start- and end-point.)rvslicestartstoprrxrs rcrzColumnBase.__getitem__sT dE "zz!TYY%6 ".//<< DII6 6t|rec.ttd|fS)NDISTINCTrjrQrs rcdistinctzColumnBase.distinct&sZ$/00rec4t|td|zfS)N COLLATE %srrarSs rccollatezColumnBase.collate)ss<)#;<=>>recyr r`r6s rcrzColumnBase.get_sort_key,srer_rrrj)TrfrgrhrErarLr-rrJrMrPrW__pos__rZ__neg__r]rrErrrrrrrrrrr__div__ __truediv__r__xor__rrr__rdiv__ __rtruediv__rr__rxor__rrrrrrrrrrr __lshift__r __rshift__r__mod__r__pow__rrrbin_andrbin_orin_rnot_inrrriregexprdrlrorqrtrxr|r__iter__rrrr`rercrCrCsAJ YY$$ "#;G<G jG YFjGjGjGrvvJ&GkjG"&&d#H"&&d#H"&&d#H T22H|"&&d#HD!G"&&d#H))YF ZF YF ZFBEEJBEEJkGlG bgg;D rxxLEnG  ]F RUU)C  ]F  ]FnG* // / L6H1?rerCc$eZdZdZdZdZdZy)r!c ||_||_yr_)rMr)rarMrs rcrzColumn.__init__1s  rec|jtk(r |jfS|jj ||jfzSr_)rrBrrMrr6s rcrzColumn.get_sort_key5s: 99 $II< ;;++C0DII<? ?recDt|j|jfSr_)rrMrrs rcrzColumn.__hash__;sT[[$)),--recT|jtk(r$|jt|jS|j 5|j|j jdjt|jcdddS#1swYyxYwNrR)rrBr'rbrr/rMrr6s rcr#zColumn.__sql__>sz 99 $776$)),- -!!# Pwwt{{+33C8<r`rs rcrfzAlias.is_alias}srec|jtk(rL|j|jj djt |j S|jt |j Sr)rr@r'r;rrbrr6s rcr#z Alias.__sql__sY 99 $S^WV_S ,- / 776$++./ /rer_)rfrgrhrrwrrrrsetterrrJrfr#rrs@rcrGrGcsSA! [[+ 0rerGc$eZdZfdZdZxZS)rLc:tt| |||_yr_)rrLrr)rar;rrs rcrzBindTo.__init__s fd$T* rec8|j|jSr_r'r;r6s rcr#zBindTo.__sql__swwtyy!!rerfrgrhrr#rrs@rcrLrLs "rerLceZdZdZdZy)r\c|jSr_rors rcr]zNegated.__invert__rrecV|jdj|jS)NzNOT )rr'r;r6s rcr#zNegated.__sql__s {{6"&&tyy11reNrfrgrhr]r#r`rercr\r\s 2rer\c$eZdZdZdZdZdZy) BitwiseMixinc$|j|Sr_)rrs rcrzBitwiseMixin.__and__s||E""rec$|j|Sr_)rrs rcrzBitwiseMixin.__or__s{{5!!rec@|j|jSr_)r bin_negatedrs rcrzBitwiseMixin.__sub__s||E--/00rect|Sr_)BitwiseNegatedrs rcr]zBitwiseMixin.__invert__s d##reN)rfrgrhrrrr]r`rercrrs#"1$rerceZdZdZdZy)rc|jSr_rors rcr]zBitwiseNegated.__invert__rrec|jjr;|jjj|j|j}n |j}|j |j |j Sr_)r operationsrrrr'r;)rar7op_sqls rcr#zBitwiseNegated.__sql__sZ 99  YY))--dggtww?FWWF{{6"&&tyy11reNrr`rercrrs 2rerceZdZddZdZy)rYNcf||_||_|xrt|jt|_|jrtg|_|jD]]}t|t r|j j|/|j jt||j_yyr_) r~r-rv multi_typesmultir!rarrY)rar~r-unpackrs rcrzValue.__init__s "C 4::{ C ::DK  DdD)KK&&t,KK&&uT4>>'BC  D rec|jr$|jt|jS|j |j|j Sr_)rr'r)r!r~r-r6s rcr#z Value.__sql__s; ::77+DKK89 9yyT^^44rer>rr`rercrYrYs  D5rerYceZdZdZy) ValueLiteralscv|d5|j|jcdddS#1swYyxYw)NT)r0rr6s rcr#zValueLiterals.__sql__s/  % &77499% & & &s/8Nrfrgrhr#r`rercrr&rerct|dSNFr)rYr^s rcrrs u %%rec$eZdZfdZdZxZS)rcHtt| |||_d|_yre)rrr_castrb)rar;rPrs rcrz Cast.__init__s  dD"4(  rec|jdj|jjd|jzS)NzCAST(z AS %s))rr'r;rr6s rcr#z Cast.__sql__s4!TYYTZZ/0 2rerrs@rcrrs  2rerc4eZdZdfd ZddZdZdZxZS)Orderingctt| |||_||_||_|r!|j dvrtd|zyy)N)rilastz>9==rec|jdk(rd\}}n$|jdk(rd\}}n tdtd|jj |ff|S)Nr)rrri)rrz&unsupported value for nulls= ordering.)rhrrr;rd)rarTifnullnotnulls rc_null_ordering_casezOrdering._null_ordering_cases` ;;=F ""OFG [[]g %"OFGEF FDDII--/8:GDDrec|jrO|jjs9|j|j |jj d|j|j j d|jz|jr|j d|jz|jr4|jjr|j d|jz|S)N,  %sz COLLATE %sz NULLS %s) rTrnulls_orderingr'rrr;rrSr6s rcr#zOrdering.__sql__s ::cii66 GGD,,TZZ8 9 A A$ G  ""54>>#9: >> KK 6 7 ::#))22 KK djj0 1 rerr_)rfrgrhrrrr#rrs@rcrrs8>E rerct|d||S)NASCrr;rSrTs rcrUrUs D%E 22rect|d||S)NDESCrrs rcrYrYs D&)U 33receZdZddZdZy)r c<||_||_||_||_yr_)rrrflat)rarrrrs rcrzExpression.__init__ s recf|j dd}|jx}}t|tr|j }t|t r/|j r#|j|d<t|t|d<nd|d<|jjr;|jjj|j|j}n |j}|d i|5|jtjk(xs|jtjk(}|rh|j!j#|j$ddk(r9|j'|jtjk(rdndcdddS|j$}|E|jtj(k(s|jtj*k(r t-d }|j/|jj'd |zj/|cdddS#1swYyxYw) NT)rin_exprr- is_fk_exprr()z0 = 1z1 = 1rQrr`)rrrvrrhr2rbdb_valuer6rrrrrErrr r<rrrrrQr')rar7rNr;raw_noderop_inrs rcr#zExpression.__sql__s(, MdC (("x h ,??$D dE "x'7'7%)]]Ik "&0&GIl #%)Ik " 99  YY))--dggtww?FWWF  9  GGruu$<299(7GL   ((C{255 0DGGryy4H&kS]WVf_-SX   s(BH'BH''H0Nrrr`rercr r  s  "rer ceZdZdZdZy)r{c$|j|Sr_)r|rs rcrzStringExpression.__add__8s{{3rec8t|tj|Sr_rz)rars rcrzStringExpression.__radd__:sRYY55reN)rfrgrhrrr`rercr{r{7s  6rer{c*eZdZdZdZdZdZdZy)rbc^|Dcgc]}|s|jddc}|_ycc}w)N""")rr)rarTrVs rcrzEntity.__init__?s$:>G$$dll3-G Gs**c.t|j|gzSr_)rbrrs rcrzEntity.__getattr__BstzzTF*++rec,t|jSr_)r]rr6s rcrzEntity.get_sort_keyEsTZZ  recjt|jjt|jfSr_)rrrfr]rrs rcrzEntity.__hash__Hs%T^^,,eDJJ.?@AArec||jt|j|jjxsdS)Nr)rrWrrr6s rcr#zEntity.__sql__Ks){{5SYY__-DEFFreN)rfrgrhrrrrr#r`rercrbrb>sH,!BGrerbceZdZddZdZy)rQNc ||_||_yr_r'rLrar'rLs rcrz SQL.__init__Ps rec|j|j|jr%|jD]}|j|dd|SNF)r3)rr'rLr~rar7r2s rcr#z SQL.__sql__TsC DHH ;; 9 %% 8 9 rer_rr`rercrQrQOs rerQcftd|z}|s|Sttdt||fS)Nz CHECK (%s) CONSTRAINT)rQrjrb) constraintrchecks rcrr\s4  z) *E  S&t e< ==receZdZedZd dZdZejd dZ ejdZ ejd dZ d dZ d Z y) Function)sumcountavgrP array_aggNc||_||_d|_d|_||_|r$|j |j vrd|_y||_yre)r arguments_filter _order_by _python_valuerhno_coerce_functionsrb)rarrrc python_values rcrzFunction.__init__fsJ " ) DJJLD$<$<< DL!DLrecfd}|S)Nct|fi|Sr_)r)rrrs rc decoratorz'Function.__getattr__..decoratorrsD$1&1 1rer`)rarr's ` rcrzFunction.__getattr__qs 2rec||_yr_)r )rawheres rcfilterzFunction.filterv  rec||_yr_r!)raorderings rcorder_byzFunction.order_byz !rec||_yr_)r")rafuncs rcr$zFunction.python_value~s !rec t|tr||}| t|}nt||||||d}t|t d|fS)NT) partition_byr/rend frame_typeexclude_inlineOVER)rvr[ WindowAliasrjrQ) rar4r/rr5r6windowr7r;s rcoverz Function.oversW lF +!F  v&D|h %3:")49Ds6{D122rec |j|jt|js|jdn|j}|jr;t |}t |dtdt|jf|d<|dt|j5|jt|Dcgc] }t|tr|n t|d"c}ddd|jr9|jdj|jjd|Scc}w#1swYUxYw) NrrrORDER BYT) in_functionfunction_arg_countFz FILTER (WHERE r)rrrrr!r\rjrQr(r'r)rvrarYr )rar7rargs rcr#zFunction.__sql__s DII4>>" KK >>D ~~Dz#T"Xs:%24>>%B%DER#dnn:MN '(#*%'sD1SuS%7HH*%&' ' << KK) * . .t|| < D DS I *% ' 's3E %E- E E  E)TNr_NNNNNNN)rfrgrhsetr#rrrarLr*r/r$r<r#r`rercrrcstJK "  YY YY"" YY""FJ37 3rerc\eZdZedZedZedZedZdZdZ dZ dfd Z dd Z e jd Ze jd Ze jd Ze jdd Ze jddZeddZeddZdZxZS)r[z CURRENT ROWGROUPTIESz NO OTHERSGROUPSRANGEROWSc tt| |t|ts t |}|t|ts t |}t ||_t ||_||_||_ |j|j td|xsd|_ | |_ ||_ ||_||_y)Nz(Cannot specify WINDOW end without start.w)rr[rrvrQr_r4r/rr5rrr8r6_extends_exclude) rar4r/rr5r6extendsr7rr8rs rcrzWindow.__init__s fd$&  Zs%;JE ?:c3#7c(C(6$X.   :: $(("6GH Hls  $  rec|xsd|_|SNrKrrHs rcrz Window.aliassls  rec.tj|_yr_)r[rHr6rs rcas_rangezWindow.as_ranges  ,,rec.tj|_yr_)r[rIr6rs rcas_rowszWindow.as_rowss  ++rec.tj|_yr_)r[rGr6rs rc as_groupszWindow.as_groupss  --rec||_yr_)rLrar;s rcrNzWindow.extendss  recHt|tr t|}||_yr_)rvr1rQrM)raframe_exclusions rcr7zWindow.excludes oz 2!/2O' rec8| tdStd|zS)NzUNBOUNDED FOLLOWINGz %d FOLLOWINGrQr^s rc followingzWindow.following# =,- ->E)**rec8| tdStd|zS)NzUNBOUNDED PRECEDINGz %d PRECEDINGr\r^s rc precedingzWindow.precedingr^rec|jtk7r8|js,|j|j|jd|d5g}|j ^|j }t |trt|j}nt |tr t|}|j||jr/|jtdt|jf|jr/|jtdt|jf|j[|j O|j"xsd}|jtd|z|jtd|j fnt|j5|jt|j"xsd|jfn3|j"'|jtd |j"z|j$&|jtd |j$f|j't)|ddd|S#1swY|SxYw) NrTr'z PARTITION BYr>rIz %s BETWEENrz%s UNBOUNDED PRECEDINGEXCLUDE)rr@r8rrrLrvr[rQr1rr4r5r(r/rr5r6rMr'rj)rar7partsextframes rcr#zWindow.__sql__s 99 $T\\ KK $ KK  T " %E}}(mmc6*cjj/CZ0c(C S!   '!$"3"3467}}  O!$--023zz%$((*>16  u,-JJJHH  ' c$//";V ? %> s H I))I3) NNNNNNNNFr_)rfrgrhrQ CURRENT_ROWrErF NO_OTHERSrGrHrIrrrarLrRrTrVrNr7rlr]r`r#rrs@rcr[r[sm$K LE v;DK IF E DIMDH * YY'' YY&& YY(( YY YY(( ++ ++ $rer[ceZdZdZdZdZy)r:c||_yr_)r;rXs rcrzWindowAlias.__init__rrec(||j_|Sr_)r;r)ra window_aliass rcrzWindowAlias.aliass)  recT|j|jjxsdSrP)rr;rr6s rcr#zWindowAlias.__sql__"s {{4;;--455reN)rfrgrhrrr#r`rercr:r:s6rer:ceZdZddZdZy) _InFunctionc ||_||_yr_)r;r?)rar;r?s rcrz_InFunction.__init__'s &rec||j5|j|jcdddS#1swYyxYw)Nr?)r?r'r;r6s rcr#z_InFunction.__sql__+s5 T-- . &77499% & & &s 9ANrjrr`rercrnrn&s '&rernceZdZddZdZy)rNc.||_||_||_yr_)rexpression_tuplesdefault)rarrtrus rcrz Case.__init__1s"!2 rec  tdg}|j|j|j|jD]5\}}|j td|tdt |f7|j /|j tdt |j f|jtd|d5|jt|cdddS#1swYyxYw)NCASEWHENTHENELSEENDFrq) rQrrrtr5rnrur'rj)rar7clausesexprr~s rcr#z Case.__sql__6sv;- >> % NN4>> *11 >KD% NNCKKU);= > > << # NNCKT\\)BC Ds5z" U # .778G,- . . .s C::Dr_rr`rercrr0s  .rerceZdZddZdZy) ForUpdateNc|durdn|}|jjdr|dd}d}||_|t|tt t fs|f}||_||_y)NTz FOR UPDATEnowaiti) rhrt_exprrvr\rCr]_of_nowait)rar}ofrs rcrzForUpdate.__init__Esd#t|| ::<  *9DF >*R$U1C"DB rec|j|j|j3|jdjt |j|j r|jd|S)Nz OF z NOWAIT)rrrr'r(rr6s rcr#zForUpdate.__sql__QsT DJJ 88  KK  # #M$(($; < << KK " rerrr`rercrrDs  rerceZdZddZdZy)rjcD||_||_||_|rt|jdk(rpt |jdt rR|jdj s8|jdjf|_d|jd_yyyyy)NrrT)nodesglueparensrrvr rrZ)rarrrs rcrzNodeList.__init__[s   c$**o* djjmZ 0zz!}!!**Q---/1DJ!%DJJqM " 1+6rect|j}|dk(r|jr|jdS|S||j5t |dz D];}|j |j||j|j =|j |j|dz ddd|S#1swY|SxYw)Nrrr'r)rrrrrr'r)rar7n_nodesis rcr#zNodeList.__sql__fsdjj/ a<(, 3;;t$ < < T[[ ) -7Q;' ' 1 & DII& ' GGDJJw{+ ,  -   -  s A.CCN)rFrr`rercrjrjZs  & rerjct|dSNrrjrs rcr(r(rs E4  rect|ddS)NrTrrs rcr)r)vs E4 &&rec eZdZdZdZdZeZy) _Namespace_namec||_yr_rrs rcrz_Namespace.__init__|s  rect||Sr_)NamespaceAttributers rcrz_Namespace.__getattr__~s!$--reNrtr`rercrrzsI.KrerceZdZdZdZy)rc ||_||_yr_) _namespace _attribute)ra namespace attributes rcrzNamespaceAttribute.__init__s##rec|j|jjdzjt |j Sr)rrrr'rbrr6s rcr#zNamespaceAttribute.__sql__s6..45VDOO,- /reNrr`rercrrs $/rerr1cHeZdZfdZej dZdZxZS)r0c Ftt| ||_d|_yre)rr0rr9_negatedrar9rs rcrz DQ.__init__s b$ "  rec(|j |_yr_)rrs rcr]z DQ.__invert__s MM) recRtdi|j}|j|_|Sr )r0r9rr:s rcrZzDQ.clones#DJJ   re) rfrgrhrrarLr]rZrrs@rcr0r0s%  YY**rer0ct|Sr_)r))as rcrxrxs #A&receZdZdZy)rMc|j5|j|jcdddS#1swYyxYwr_)r/r'r;r6s rcr#zQualifiedNames.__sql__s3     &77499% & & &s6?Nrr`rercrMrMrrerMct|trN|jt|j|j t|j |jSt|tr t|S|Sr_) rvr r qualify_namesrrrrrCrMros rcrrs^$ #~~mDHH5tww+DHH5tyyB B D* %d## KreceZdZ d dZdZdZejdZejd dZ ejdZ ejdZ ejd Z ejd Z y) OnConflictNc||_||_t||_||_| | t dt||_||_||_y)NzIonly one of "conflict_target" and "conflict_constraint" may be specified.) _action_updater_ _preserve_wherer_conflict_target_conflict_where_conflict_constraint)raactionrpreserver)conflict_targetconflict_whereconflict_constraints rcrzOnConflict.__init__sc  %h/  &+>+JGH H ,_ =-$7!rec:|jj||Sr_)rconflict_statementrar7r9s rcget_conflict_statementz!OnConflict.get_conflict_statementsyy++D%88rec:|jj||Sr_)rconflict_updaters rcget_conflict_updatezOnConflict.get_conflict_updatesyy((u55rec||_yr_)rrs rcrzOnConflict.preserves  rec |r|rt|ts td|xsi}|r|j|||_y)NzGCannot mix data with keyword arguments in the OnConflict update method.)rvdictrrr)ra_datars rcrzOnConflict.updatesA VJud$;9: :   LL  recz|j|jf|z}ttj||_yr_rrtoperatorand_ra expressionss rcr)zOnConflict.where. ;; ";;.;6KX]]K8 rec d|_||_yr_rr)ra constraintss rcrzOnConflict.conflict_targets$(! +recz|j|jf|z}ttj||_yr_)rrtrrrs rcrzOnConflict.conflict_wheres4    +//1K?K%hmm[Arec ||_d|_yr_r)rars rcrzOnConflict.conflict_constraints$.! $rerBr_)rfrgrhrrrrarLrrr)rrrr`rercrrsFJ6:%) 896 YY!! YY YY99  YY,, YYBB  YY%%rerc0tdfd }|S)Ncr| |jn|}|stdjz||g|i|S)Nz8Query must be bound to a database in order to call "%s".)rHr<rf)rarrrrs rcrz database_required..innersN%-%54>>8 "139??"CD DdH6t6v66rer_rrs` rcdatabase_requiredrs  6]77 Lrec0eZdZejZdfd ZddZfdZe jddZ e jddZ e jddZ e jddZdZd Zd Zed Zd Zdd ZdZdZdZdZdZxZS) BaseQueryc d||_d|_d|_d|_t t |di|yr )rH_cursor_wrapper _row_type _constructorrrr)rarHrrs rcrzBaseQuery.__init__s3"#  i'1&1rec||_|Sr_rrs rcrzBaseQuery.bindrrec:tt| }d|_|Sr_)rrrZrrs rcrZzBaseQuery.clonesi,. $ recF|rtj|_|Sd|_|Sr_)ROWr>r)raas_dicts rcdictszBaseQuery.dicts s"%, 37 recF|rtj|_|Sd|_|Sr_)rr=r)raas_tuples rctupleszBaseQuery.tupless"&. 59 recF|rtj|_|Sd|_|Sr_)rr?r)ra as_namedtuples rc namedtupleszBaseQuery.namedtupless$,9 @D recF|rtjnd|_||_|Sr_)rr@rrra constructors rcr5zBaseQuery.objectss,7T' recX|jxs |j}|tjk(r t |S|tj k(r t |S|tjk(r t|S|tjk(rt||jStd|zNzUnrecognized row type: "%s".) rdefault_row_typerr>DictCursorWrapperr= CursorWrapperr?NamedTupleCursorWrapperr@ObjectCursorWrapperrrracursorrow_types rc_get_cursor_wrapperzBaseQuery._get_cursor_wrapper!s>>:T%:%: sxx $V, ,  " ( (  (*62 2  (&vt/@/@A A;hFG Grectr_r\r6s rcr#zBaseQuery.__sql__/r^rec|jr|jj}n t}|j|Sr_)rHrJr#r<)racontexts rcr'z BaseQuery.sql2s1 >>nn446GiG}}T""rec$|j|Sr_)_executers rcexecutezBaseQuery.execute9s}}X&&rectr_r\rs rcrzBaseQuery._execute=r^recRt|j|jSr_)ruriteratorrs rcrzBaseQuery.iterator@sDLL*33566recl|j(|js td|jyy)NzQuery has not been executed.)rrHrrrs rc_ensure_executionzBaseQuery._ensure_executionCs/    '>> !?@@ LLN (recL|jt|jSr_)rrurrs rcrzBaseQuery.__iter__Is  D(())rec|jt|tr |j}n|}| |dk\r|dznd}|jj ||jj |SNrr)rrvr~rr fill_cache row_cache)rar~rvs rcrzBaseQuery.__getitem__Msh  eU #JJEE  !&!EAIE ''.##--e44recL|jt|jSr_)rrrrs rc__len__zBaseQuery.__len__Xs  4''((rect|Sr_)rMrs rc__str__zBaseQuery.__str__\s t$$rer_rj)rfrgrhrr>rrrrZrarLrrrr5rr#r'rrrrrrrrr rrs@rcrrsxx2  YY YY YY YY H"#''"7 * 5)%rerc,eZdZdfd ZdZdZxZS)RawQueryc Htt| di|||_||_yr )rr rr_params)rar'rLrrs rcrzRawQuery.__init__as# h&00  rec|j|j|jr$|jD]}|j|d|Sr)rrrr~rs rcr#zRawQuery.__sql__fsA DII << 2 %5 1 2 rec|j'|j|}|j||_|jSr_rrrrarrs rcrzRawQuery._executem=    '%%d+F#'#;#;F#CD ###rer)rfrgrhrr#rrrs@rcr r `s $rer cReZdZd fd Zej dZej dZej dZej dZ ej dZ ej d dZ ej d dZ ej dd Z d Zd ZxZS)Queryc rtt| di|||_||_||_||_d|_yr )rrrrr!_limit_offsetr2)rar)r/limitoffsetrrs rcrzQuery.__init__us8 eT#-f- !  rec||_yr_)r2)racte_lists rcr4zQuery.with_cter0recz|j|jf|z}ttj||_yr_rrs rcr)z Query.whererrecz|j|jf|z}ttj||_yr_)rrtror_rs rcorwherez Query.orwheres. ;; ";;.;6KX\\;7 rec||_yr_r-rar!s rcr/zQuery.order_bys rec<|jxsd|zxsd|_yr r-r"s rcorder_by_extendzQuery.order_by_extends>>/R69Bdrec||_yr_)rrs rcrz Query.limitrrec||_yr_)rrs rcrz Query.offsetr+rec:|dkDr|dz}||_||z|_yr)rr)rapage paginate_bys rcpaginatezQuery.paginates% !8 AID! k) rec|jr3|jdjt|j|j"|j d|j jrN|j|j jn |j}|jdj||j *|jdj|j |S)Nz ORDER BY z LIMIT z OFFSET )r!rr'r(rrr limit_max)rar7rs rc_apply_orderingzQuery._apply_orderings >> gl#c-/0 ;; "t||'?'*yy':':+/;;+>CII''DKKE KK " & &u - << # KK # ' ' 5 rec6|jrtd|jD}|jd5|j|rdndj t |jjdddd|S|S#1swY|SxYw)Nc34K|]}|jywr_)r/)rmrs rcroz Query.__sql__..sEsCNNEsFrzWITH RECURSIVE zWITH r)r2anyrErr'r()rar7rs rcr#z Query.__sql__s >>EdnnEEI. 'y+gF#mDNN34'#,   s   s ABB)NNNNr_))rfrgrhrrarLr4r)r r/r$rrr*r-r#rrs@rcrrts YY"" YY99  YY88  YY   YYCC YY YY YY**  rerc(tfd}|S)Nc*r||}}t||Sr_)CompoundSelectQuery)rarr operations rcrz#__compound_select__..methods %D"4E::re)r)r6rrs`` rc__compound_select__r7s;; MreceZdZedxZZedxZZedxZZ edxZ Z eddZ eddZ eddZeddZdZy) SelectQuery UNION ALLUNION INTERSECTEXCEPTTrc|s tdt|f|j|j}t |dd|j |j }|S)Nz/select_from() must specify one or more columns.r6)rrPrrHrr5r6r7s rcr8zSelectQuery.select_fromsVNO O)$t~~&  4$ ' 3MM$**-E reN)rfrgrhr7r=rr@r intersectrexcept_rrrrrr8r`rercr9r9ss-k::I(11EF-k::I+H55Gg";>H!'D9G";>H"8d;H rer9ceZdZdZdZed dZed dZed dZedZ ed dZ edZ ed Z y ) SelectBasec^t|j|jxs t|fSr_)rrrr#rs rcrzSelectBase._get_hashs#T^^T[[%>rec|j'|j|}|j||_|jSr_rrs rcrzSelectBase._executerrecH|j|d|}|r |dk(r|dS|SyNrr)r)rarrxrowss rcpeekzSelectBase.peeks4||H%bq) 1f47 .$ . recb|j|k7r||_d|_|j||S)N)rx)rrrH)rarrxs rcrizSelectBase.firsts0 ;;! DK#'D yyQy''rec|r|jj|S|jj|}|r|s|dS|Sr)rrHr)rarrrr*s rcscalarzSelectBase.scalarsE ::<$$X. .kkm  *Xs1v636rec#bK|jj|D] }|d ywr)rr)rarr*s rcscalarszSelectBase.scalars s/;;=((2 Ca&L s-/c|jjd}|rdx|_|_ |jL|j @|j 4|j(|jdur|jtd}t|gtjtdgj|S#t$rYDwxYw)N_wrappedT1)r/rrr_having _group_by_windows _distinct_simple_distinctrrQrrPr5COUNTrK)rar clear_limitrZs rcrzSelectBase.count s %%j1 +/ /EL5= }}$)@~~%%//*A%%T1 SX.ugS 234;;HEE   sAC C Cc|jtd}d|_d|_t |j S)NrPr)rrQrrboolrK)rarrZs rcexistszSelectBase.exists s3 SX&  ELLN##recXd|_ |j|dS#t$rYywxYwr)rr IndexErrorrs rcrzSelectBase.get s5# <<)!, ,   s  ))N)rFFr) rfrgrhrrrrHrirKrMrrZrr`rercrBrBs?$ // (( 77  F F$$ rerBcTeZdZfdZedZedZdZdZ fdZ xZ S)r5cTtt| ||_||_||_yr_)rr5rrrr)rarrrrs rcrzCompoundSelectQuery.__init__' s& !413rec.|jjSr_)r _returningrs rcrazCompoundSelectQuery._returning- sxx"""rect|jdftdfj|}t |j S)NrrP)rPrrQrrYrK)rarr9s rcrZzCompoundSelectQuery.exists1 s; 1 '#c(5::8DELLN##recj|jj|jjfSr_)r get_query_keyrrs rc_get_query_keyz"CompoundSelectQuery._get_query_key6 s'&&($((*@*@*BCCrec|jj}|r |tk(ry|tk(ry|tk(r>|jj s|jj ryt|t SyNFT) rcompound_select_parenthesesCSQ_PARENTHESES_NEVERCSQ_PARENTHESES_ALWAYSCSQ_PARENTHESES_UNNESTEDrr?rvr5)rar7subq csq_settings rc _wrap_parensz CompoundSelectQuery._wrap_parens9 sjii;; k-BB 2 2 4 4yy  CII$9$9 "$(;<< <5rec|jtk(r|j|Stt|||j xs|jtk(}||5|j||j}|j|d5|j|jddd|jd|jz|j5|j||j}|j|d5|j|jdddddd|j!5|j#|dddddd|j%|S#1swYxYw#1swY`xYw#1swYdxYw#1swYFxYw#1swYJxYw)Nr'F)rrr)rrFrrr5r#rr@rnrr?r'rrr!rrCr-r)rar7 outer_parens lhs_parens rhs_parensrs rcr#zCompoundSelectQuery.__sql__K sz 99 $$$S) ) !405||B \(A \ * ***39J!!j5!I "! " KK( )! &!..sDHH= %%*u%M&GGDHH%& &!!# *$$S) *! *&$$! " " && & & * *! * *sl#0F4F/6F4%0FF1F9F4F(#F4F F4F FF% !F4(F1 -F44F=) rfrgrhrrrarrZrernr#rrs@rcr5r5& sE ##$$D=$%%rer5ceZdZ dfd ZfdZej dZeZej dZ e dZ e jdZ ej dZ ej ejdfd Zdd Zej d Zd Zej d Zej dZej dZej ddZej ddZdZddZfdZxZS)rPNc  btt| di| t|tr t |n|xsg|_||_||_||_ d|_ ||_ ||_ | |_ | |_dx|_|_|r&t|t"r||_d|_y||_d|_yr )rrPrrvr]r\ _from_listrarRrQrS _for_update_for_update_of_for_update_nowait_lateralrTrUrYr) ra from_listrgroup_byhavingrwindows for_update for_update_ofrlateralrrs rcrzSelect.__init__j s fd$.v..8E.J4 ? )1.0 !!  %+"( 155. (D)(0% $"*#recxtt| }|jrt |j|_|Sr_)rrPrZrur\rarZrs rcrZz Select.clone s3fd)+   #E$4$45E  rec||_yr_ra)rarrs rcrzSelect.columns s !rec>t|j|z|_yr_)r]rars rc select_extendzSelect.select_extend s07:rec|jSr_rrs rcselected_columnszSelect.selected_columns s rec||_yr_rrs rcrzSelect.selected_columns s rec$t||_yr_)r\rurasourcess rcfrom_z Select.from_ s w-rec|js td|jj}|jjt ||||y)NNo sources to join on.)rurrrr)rarrrrs rcrSz Select.join sD56 6""$ tD$ 2>?recD|j|tj|Sr_rSr?r4rs rcrzSelect.left_outer_join syyt33rec g}|D]n}t|trK|js td|j |jDcgc]}t ||c}^|j |p||_ycc}wNzQCannot pass a table to group_by() that does not have columns explicitly declared.)rvrSrrr5rrrRrargroupingrcol_names rcr{zSelect.group_by s (F&%($&12217!B%-")!:!BC' (" !BsA> cXt|jxsd|z}|j|S)z$@Node.copy used from group_by() callr`)r]rRr{)rar!r{s rcgroup_by_extendzSelect.group_by_extend s+-2.7t}}h''recz|j|jf|z}ttj||_yr_)rQrtrrrs rcr|z Select.having s. << #<|s||rd}||_||_||_yr>)rvrwrx)rar~rrs rcr~zSelect.for_update s(r~J% "(rec||_yr_)ry)rars rcrzSelect.lateral s  rec|jSr_rrs rcrezSelect._get_query_key s {{recJ|jt|jSr_)r'r(rarar7 is_subquerys rc__sql_selection__zSelect.__sql_selection__ sww}T__566rec|jtk(r|j|S|jr$|jtk(r|j d|j }dd|xs|jtk(dd}|jjr|jjdk(rd|d<|jdi|5tt|7||j d|js |j_|j d|jrB|j d j!t#|jj d |j%5|j'||}ddd|j(rN|j%d 5|j d j!t+|j(ddd|j,*|j d j!|j,|j.r3|j dj!t+|j.|j0*|j dj!|j0|j25|j d|j!t+|j2|j5||j6rl|jj8s t;d|j d |j!t=|j6|j>|j@ddd|jjs"|jjBr|jD|S|jG|S#1swY,xYw#1swYxYw#1swYnxYw)NzLATERAL FT)r-r?rrrrzSELECT z DISTINCT zON rr' FROM  WHERE z GROUP BY z HAVING z WINDOW z3FOR UPDATE specified but not supported by database.r`)$rrFrryr@rrrr?r@r?rrPr#rUrTr'r)rArrur(rrRrQrSr-rvr~rrrwrxrrr)rar7rrrs rcr#zSelect.__sql__ s 99 $$$S) ) ==SYY,6 KK #ll  &E399 +D   99 SYY%A%AQ%F#(E- S   & &, < &$ ' , KK "$$(B K(>>genc*4>>:;gcl!!# ?,,S+> ?%%%%8NKK)--mDOO.LMN{{& I&**4;;7~~ L)--mDNN.KL||' J'++DLL9}}( J' dmm45   %yy++$&455 C  $"2"2D4G4G"&"9"9;B,O0N-&O)4N:E=O-N7 2O:O ?OO) NNNNNNNNNNr_TNNrjr)rfrgrhrrZrarLrrrrrrrr?r3rSrr{rr|rr;r~rrerr#rrs@rcrPrPi s`>BFJ:>$0  YY"" F YY;;   YY(( YY#'::$@@ 4 YY " "(  YY::  YY%% YY55 YY)) YY  7F%F%rerPcteZdZd fd Zd dZej dZdZdZ dZ dZ dZ fd Z xZS) _WriteQueryc ^||_||_|rdnd|_tt|di|y)NTFr`)r&ra_return_cursorrrr)rar& returningrrs rcrz_WriteQuery.__init__( s/ #&/dU k4)3F3rec"t|||||Srrrs rcrz_WriteQuery.cte. rrec4||_|rd|_yd|_yNTF)rar)rars rcrz_WriteQuery.returning2 s#&/dUrec|jrN|j5|jdjt |jddd|S|S#1swY|SxYw)Nz RETURNING )rarArr'r(r6s rcapply_returningz_WriteQuery.apply_returning7 sV ??!!# O M*..}T__/MN O s  O s 4AA'c|jr|j|}n|j|}|j||Sr_)raexecute_returningr handle_resultrs rcrz_WriteQuery._execute= s< ??++H5F%%d+F!!(F33rec|j'|j|}|j||_|jSr_rrs rcrz_WriteQuery.execute_returningD rrec@|jr|S|j|Sr_)r rows_affectedrs rcrz_WriteQuery.handle_resultJ s!   M%%f--rec^|jj|j|j<yr_)r&rfrr6s rc_set_table_aliasz_WriteQuery._set_table_aliasO s (, (;(;$**%recPtt| ||j||Sr_)rrr#rrar7rs rcr#z_WriteQuery.__sql__R s' k4(- c" rer_r)rfrgrhrrrarLrrrrrrr#rrs@rcrr' sH4 . YY;; 4$ . <rercNeZdZdfd Zej dZfdZxZS)rc Jtt| |fi|||_d|_yr_)rrrr_from)rar&rrrs rcrzUpdate.__init__\ s% fd$U5f5  rec||_yr_)rrs rcrz Update.from_a s  rec tt| ||jd5|j dg}t |j j|jD]\}}t|ts0t|tr|j|}n?t|d}n1t|tr!t|tr|j|}t|ts t!|}|j#t%|t'd|f|j)|j*j dj)t-||j.rN|j1d 5|j d j)t-|j.ddd|j2rC|j55|j d j)|j2ddd|j7||j9|cdddS#1swYxYw#1swY@xYw#1swYyxYw) NTr0zUPDATE r Frrz SET r'rr)rrr#rCrsortedrrrrvrar2to_valuerYrAr6rrrjrQr'r&r(rrArr?r-r)rar7rkrVrs rcr#zUpdate.__sql__e s fd#C(   t  ," - KK "Kt||1139L9LM ?1!!T*!!U+JJqM!!E25)jO.L 1 A!!U+%a(A""8QC!,<#=> ?"c$**oggc- ,-zz%%%%8IKK)--mDJJ.GHI{{%%'<KK *..t{{;<   %'',E" -" -6II<. 8H8H8Mrerc&|jSr_r rs rcrxz)Insert._generate_insert.. rrez VALUES zMissing value for %s.F)r-rrTr0)%rurrnext StopIterationrrvr rrr1rr&rrCr itertoolschainrrr2 column_namenullr6r'r)rr enumeraterr\ callable_rarArYrCr()rarr7 rows_iterrdefaultsr*accumr column_setr clean_columnsseen column_obj fk_fieldsnullable_columns value_lookupslookupscolumns_converters all_valuesr!is_dictrr-lookupvals ` rcrzInsert._generate_insert s L --((* O9oc7+224?$%HII!)F!&*5!(V!<LL()!Z MJ6&CLL%&!,MN!cV i@IM5D! %fj1!(V!"# 65(AV__t L## # 8CF g.G*34F*G #&&FIP '4F&;+F(&)&k"' + #+N!!f"#t,C1G1791DyGC c"= #@   .v6 7G# 8J--.IJ J   t  , 677=45 6 6G! O112MNN Ol#&$,1T1 !*-P)&v.$S>"%%C#33"()@6;;)NOOP( 6 6sT N .'N+ N?N0N?)P N(0 N< 9N?;N< <N??A P  P Pc|jt|jjdj|jSr)r'r)rrrr6s rc _query_insertzInsert._query_insert/ s5%dmm45T\\" $recr|js|jdS|jj|SNzDEFAULT VALUES)rHrdefault_values_insertr6s rc_default_valueszInsert._default_values5 s.~~;;/0 0~~33C88rectt| ||j5d}|j|jj ||}|j |xs tdjdj |jjdt|jtr4|js( |j|tj"|_nxt|jt&tfr'|j)|tj*|_n1|j-|j|tj.|_|j>|jj1||}| |jdj ||j3|cdddS#|j$r|j!|YwxYw#1swYyxYw)NINSERTz INTO r)rr r#rCrrr'rQrr&rvrr rrrrSIMPLErr9rQUERYrMULTIrr)rar7stmtrrs rcr#zInsert.__sql__: s fd#C(     -D  ,((??TJ c$'#h-(ghc$**ogcl$,,0.'',$*== DLL;*<=""3'#)<< %%dllC8#)<<   ,**>>sDI%KK$((0'',; - -22.((-. - -s1B&G6 GC(G6 G3/G62G33G66G?c|j>|jr2|jjr|jjf|_ tt ||S#|j$rYywxYwr_)rareturning_clauser&rrr rr)rarrs rcrzInsert._execute[ se ?? "x'@'@zz&&#zz668DO /9 9**   s A A21A2c|jr|S|jr|j|S|j||jSr_)rrrlast_insert_idrrs rcrzInsert.handle_resultd sC   M   ))&1 1&&vt/?/?@@reNNNrj)rfrgrhrrr  Exceptionrrr)rarLrrrrrrrrrrr#rrrrs@rcr r  s F E E11"P YY)) YYEE YYGG YY((; 7 p6d$ 9 -BArer ceZdZfdZxZS)rctt| ||jd5|j dj |j |jC|j5|j dj |jddd|j||j|cdddS#1swY4xYw#1swYyxYw)NTr0 DELETE FROM r) rrr#rCrr'r&rr?r-rrs rcr#zDelete.__sql__m s fd#C(   t  , - KK ' + +DJJ 7{{&%%'<KK *..t{{;<   %'', - -<< - -s$AC.+C )C C CC!)rfrgrhr#rrs@rcrrl s  - -rerceZdZ ddZej ddZej dZej d dZdZ y) r9Nc||_t|ts t|n||_||_||_||_||_||_ yr_) rrvrSrb_table _expressionsr_unique_safe_using)rarr&runiquesafer)usings rcrzIndex.__init__{ sC +5eU+CfUm '    rec||_yr_)r)rars rcrz Index.safe s  recz|j|jf|z}ttj||_yr_rrs rcr)z Index.where rrec||_yr_)r)rars rcrz Index.using s  rec |jrdnd}|jd5|j||jr|jd|jj rzt |jtr`|jjrJt|jj|j}t|jj}n!t|j}|j}|j||j4|jjr|jd|jz|jdj|jd|j4|jjs|jd |jz|jt!|j"Dcgc]}t |t$r t'|n|!c}|j(*|jd j|j(ddd|Scc}w#1swY|SxYw) NzCREATE UNIQUE INDEX z CREATE INDEX Tr0IF NOT EXISTS z USING %srrz USING %s r)rrCrrrindex_schema_prefixrvrrSrrbrrfr'rindex_using_precedes_tabler)rr1rQr)rar7 statement index_name table_namer}s rcr#z Index.__sql__ s.2ll*   t  ,! 8 KK "zz ,-yy,,$++u-$++2E2E#DKK$7$7D #DKK$8$89 #DJJ/ ![[ GGJ {{&yy33 K$++56 gfoc*ogcl{{&yy33 K$++56 GG$ --&/(j9D tC&/0 1{{& I&**4;;7C! 8F &/;! 8F sF>I!$IAIII)FFNNrjr_) rfrgrhrrarLrr)rr#r`rercr9r9z sZDI#' YY YY99  YY%rer9c*eZdZ dfd ZdZxZS)rBc ||_||j||}|1|D],}t|tst |ds!|j }.t t|#||jj|||||y)N index_type)rr&rrrr)r) r_generate_name_from_fieldsrvr2rr*rrBrr%r&) rar6fieldsrrr)rrfieldrs rcrzModelIndex.__init__ s <225&AD = -eU+|0L!,,E - j$(++## ) rec0g}|D]}t|tr#|j|jd6t|tr t|t s|j }t|t sw|j|j|s tdtjdddj|}|j}|jr |jn |j}t!dj||fS)NrzJUnable to generate a name for the index, please explicitly specify a name.[^\w]+r(rf)rvr1rrrar2rhrrrerfrSr%legacy_table_namesrr'_truncate_constraint_name)rar6r,rr-clean_field_namesrHprefixs rcr+z%ModelIndex._generate_name_from_fields s 4E%, U[[]1-.eT*:eU3K!LLNEeU+LL!2!23 4:; ;FF9b#((5/B{{"554??(6;L2M)NOOre)FTNNN)rfrgrhrr+rrs@rcrBrB sEI"&$PrerBct||kDrBtj|jdj }|d|dz d|dd}|S)Nutf-8rCrf)rhashlibmd5encode hexdigest)rmaxlen name_hashs rcr2r2 sQ :KK 1 1' :;EEG *=VaZ 99Ra=I receZdZfdZxZS)PeeweeExceptioncp|r#t|dtr|d|ddc|_}tt||yr)rvrorigrr?r)rarrs rcrzPeeweeException.__init__ s9 JtAw 2"1gtABxODIt ot-t4rerfrgrhrrrs@rcr?r? s 55rer?c eZdZy)r8Nrr`rercr8r8 rrer8c eZdZy)r%Nrr`rercr%r% rrer%c eZdZy)r'Nrr`rercr'r' rrer'c eZdZy)r;Nrr`rercr;r; rrer;c eZdZy)r<Nrr`rercr<r< rrer<c eZdZy)r=Nrr`rercr=r= rrer=c eZdZy)rDNrr`rercrDrD rrerDc eZdZy)rFNrr`rercrFrF rrerFc eZdZy)rKNrr`rercrKrK rrerKc"eZdZdZdZdZdZy)ExceptionWrapper exceptionsc||_yr_rN)rarOs rcrzExceptionWrapper.__init__ s $recyr_r`rs rcrzExceptionWrapper.__enter__ rec|ytB|j|jvr*t|tjr|j d}nGt A|j|jvr)t|t jr|j d}|j|jvr:|j|j}|j}t|||g||yyr) pg_errorsrfrOrYError __bases__ pg3_errorsrr)rar exc_value tracebacknew_typeexc_argss rcrzExceptionWrapper.__exit__ s     X%6%6doo%M(IOO4))!,H  #   DOO 3(J$4$45))!,H    /x'8'89H ~~H Hhy<8)closedconnr7 transactionsrs rcrjz_ConnectionState.reset8 s  rec<||_d|_g|_g|_yre)rmrlr7rnrarms rcset_connectionz_ConnectionState.set_connection> s  re)rfrgrhrrjrqrrs@rcrhrh3 s rerhc eZdZy)_ConnectionLocalNrr`rercrsrsE rrersceZdZdZdZdZy) _NoopLockr`c|Sr_r`rs rcrz_NoopLock.__enter__H srecyr_r`rs rcrz_NoopLock.__exit__I rRreN)rfrgrhrrrr`rercruruF s I$7reruc(eZdZdZdZdZdZdZy)rrKc||_yr_ryrarKs rcrzConnectionContext.__init__N sbDGrecn|jjr|jjyyr_)rK is_closedconnectrs rcrzConnectionContext.__enter__O s% 77    GGOO  rec8|jjyr_)rKclosers rcrzConnectionContext.__exit__R s477==?rec2tfd}|S)Ncjtj5|i|cdddS#1swYyxYwr_)rrKrs rcrz)ConnectionContext.__call__..innerT s1"477+ +4*6* + + +)2rrs`` rcrzConnectionContext.__call__S rreN)rfrgrhrrrrrr`rercrrL sI(CrerceZdZeZiZiZdZdZdZ e Z dZ dZ dZdZdZdZdZdZdZdZ dAdZdZdZd Zd Zd ZdBd Zd ZdZdZdZ dZ!dZ"dZ#dCdZ$dCdZ%dDdZ&dZ'dZ(dZ)dZ*dZ+dDdZ,dZ-dZ.dZ/d Z0d!Z1d"Z2d#Z3d$Z4d%Z5d&Z6d'Z7d(Z8d)Z9d*Z:d+Z;d,ZdDd/Z?dDd0Z@dDd1ZAdDd2ZBdDd3ZCdDd4ZDd5ZEd6ZFd7ZGd8ZHd9ZId:ZJd;ZKd<ZLdEd=ZMdEd>ZNd?ZOePd@ZQy)Fr$r.rNFTc tt|j|_tt|j |_|r|jj||r|j j|||_||_ |r)t|_ tj|_nt|_ t!|_|r t#d| t#di|_|j&|fi|y)NzPeewee no longer uses the "autorollback" option, as we always run in autocommit-mode now. This changes psycopg2's semantics so that the conn is not left in a transaction-aborted state.a^Peewee no longer uses the "autocommit" option, as the semantics now require it to always be True. Because some database-drivers also use the "autocommit" parameter, you are receiving a warning so you may update your code and remove the parameter, as in the future, specifying autocommit could impact the behavior of the database driver you are using.)rPFIELD field_types _field_typesrEr _operationsr autoconnect thread_safers_state threadingLock_lockrhrurconnect_paramsinit) rarr autorollbackrr autocommitrrs rcrzDatabase.__init__p s'ud.>.>?%b$//:     $ $[ 1     # #J /&& *,DK")DJ*,DK"DJ  I J  ! < =! (%f%rec |js|j||_|jj |t | |_yr_)r}rrrrrYdeferred)rarrs rcrz Database.init s>~~ JJL   ""6* N* rec|jr|j|j}|jjj ||j |Sr_)r}r~rrr7rrr6s rcrzDatabase.__enter__ sD >>  LLNkkm s#  rec|jjj} |j||||jjs|j yy#|jjs|j wwxYwr_)rr7rrr)rarrrr7s rcrzDatabase.__exit__ s`kkoo!!#  LL7F 3;;?? #4;;?? #s A!!)B ct|Sr_rrs rcrzDatabase.connection_context rrectr_r\rs rc_connectzDatabase._connect r^rec6|j5|jr td|jjs|r dddyt d|jj t5|jj|j|j%|j|jj|j|jjddddddy#1swYxYw#1swYyxYw)N@Error, database must be initialized before opening a connection.FzConnection already opened.T)rrr<rrlrFrj__exception_wrapper__rqrserver_version_set_server_versionrm_initialize_connection)ra reuse_if_opens rcr~zDatabase.connect s ZZ >}}$&DEE;;%%   > >''CDD KK   & > **4==?;&&.,,T[[-=-=>++DKK,<,<=  > >  > > >s*1D+D2BD2DD DDcyr_r`rps rcrzDatabase._initialize_connection  recd|_yr)rrps rcrzDatabase._set_server_version s rec|j5|jr td|jr t d|j j } |r4t5|j|j jddd|j j|cdddS#1swY.xYw#|j jwxYw#1swYyxYw)Nrz7Attempting to close database while transaction is open.) rrr<in_transactionrFrrlr_closermrj)rais_opens rcrzDatabase.close s ZZ }}$&DEE""$&(>??++,,,G $.6 DKK$4$456 !!#  66 !!#  s<A CB? &B3B?C3B< 8B??CCC'c$|jyr_)rrps rcrzDatabase._close s  rec.|jjSr_rrlrs rcr}zDatabase.is_closed s{{!!!rec0|jj Sr_rrs rcis_connection_usablezDatabase.is_connection_usable s;;%%%%recn|jr|j|jjSr_)r}r~rrmrs rc connectionzDatabase.connection s% >>  LLN{{rec| td|jr(|jr|jn t d|j j jS)N,"commit" has been deprecated and is a no-op.z&Error, database connection not opened.)rr}rr~r<rrmr)racommit named_cursors rcrzDatabase.cursor sR   I J >>  $%MNN{{&&((rec| tdtj||ft5|j }|j ||xsdddd|S#1swYSxYwNrr`)rloggerdebugrrr)rar'rLrrs rc execute_sqlzDatabase.execute_sql s_   I J c6]# " .[[]F NN3 " - .  . s 'AA&c | td|jdi|}|j|j\}}|j ||Sr)rrJr'r9r)rar9rcontext_optionsr7r'rLs rcrzDatabase.execute sS   I J"d""5_5ggen**, VV,,rec |j|j|j|j|j|j |j |j|j|j|j|jd S)N) rrr2rWrhrrr~r#r$r,r) rrr2rWrhrrr~r#r$r,rrs rcget_context_optionszDatabase.get_context_options sp,,**ZZZZ+/+K+K"&"9"9#33//#'#;#;*.*I*I"11  rec l|j}|r|j||jdi|Sr )rr context_class)rarrs rcrJzDatabase.get_sql_context s5**,  NN? +!t!!,G,,rectr_r\rarr9s rcrzDatabase.conflict_statement r^rectr_r\rs rcrzDatabase.conflict_update r^rec |jrwtd}t|jDcgc]}t|tr t |n|!c}}|j Tt|td|j g}n2td}|j}t|tr t |}g}|jrc|jD]T}ttdt|fd}tt|td|f} |j| V|jr|jjD]\} } t| tsVt| trt|j | } t| t"r| j%| } nt'| d } n t)| } |jtt| td| f||td t+|g} |j,r/| j/tdt)|j,ft| Scc}w) N ON CONFLICTrBzON CONFLICT ON CONSTRAINTr1rRrrFrz DO UPDATE SET)rrQr)rvr1rbrrjrrrcrrrrarr&r2rrYrMr(rr5) rarr9r rtargetupdatesrexcluded expressionrrVrcs rc_build_on_conflict_updatez"Database._build_on_conflict_update s   ' '}%D%&77'9 *#z:s C'9:F**6!63w<#.#>#>#@A23D 55F&*-  %// +#S_mF6K$L),.%}V'|jjSr_)rrrs rc session_startzDatabase.session_startV s!++--rec |j}|j|jy#t$rYywxYwNFbeginT)pop_transactionr\rrratxns rcsession_commitzDatabase.session_commitY sE &&(C ,,. /   3 ??c |j}|j|jy#t$rYywxYwr)rr\rollbackrrs rcsession_rollbackzDatabase.session_rollbacka sE &&(C 4..0 1  rc@t|jjSr_)rYrrnrs rcrzDatabase.in_transactioni sDKK,,--recN|jjj|yr_)rrnr)rars rcpush_transactionzDatabase.push_transactionl s   '' 4recJ|jjjSr_)rrnrrs rcrzDatabase.pop_transactiono s{{''++--rec@t|jjSr_)rrrnrs rctransaction_depthzDatabase.transaction_depthr s4;;++,,recb|jjr|jjdSyNrr)rrnrs rctop_transactionzDatabase.top_transactionu s) ;; # #;;++B/ / $rec t|g|i|Sr_rrs rcrzDatabase.atomicy rrect|Sr_rrs rcrzDatabase.manual_commit| rrec t|g|i|Sr_rrs rcrzDatabase.transaction rrect|Sr_rrs rcrzDatabase.savepoint rrec|jr|jt5|jj ddddy#1swYyxYw)NBEGINr}r~rrrrs rcrzDatabase.begin sA >>  LLN " + KKM ! !' * + + +s AAcxt5|jjddddy#1swYyxYw)NROLLBACKrrrrs rcrzDatabase.rollback s. " . KKM ! !* - . . . 09cxt5|jjddddy#1swYyxYw)NCOMMITrrs rcrzDatabase.commit s. " , KKM ! !( + , , ,rc#Kt||D]'}|j5|D]}| ddd)y#1swY4xYwwr_)r r)rarwrxrzrs rc batch_commitzDatabase.batch_commit sQR^ E  CI     s A : AA Act|r.|}|jj}|jj}||j |vS)N)r)r$r%r'r get_tables)rar'rr6s rc table_existszDatabase.table_exists sC J E//J[[''FT__F_;;;rectr_r\)rars rcrzDatabase.get_tables r^rectr_r\rar&rs rc get_indexeszDatabase.get_indexes r^rectr_r\rs rc get_columnszDatabase.get_columns r^rectr_r\rs rcget_primary_keyszDatabase.get_primary_keys r^rectr_r\rs rcget_foreign_keyszDatabase.get_foreign_keys r^rectr_r\)raseqs rcsequence_existszDatabase.sequence_exists r^rec Ht|D]}|jdi|yr ) sort_models create_table)ramodelsoptionsr6s rc create_tableszDatabase.create_tables s) ( *E E   ) ) *rec Ztt|D]}|jdi|yr )rr  drop_table)rar rr6s rc drop_tableszDatabase.drop_tables s.k&12 'E E   &v & 'rectr_r\ra date_part date_fields rc extract_datezDatabase.extract_date r^rectr_r\rs rc truncate_datezDatabase.truncate_date r^rectr_r\rars rc to_timestampzDatabase.to_timestamp r^rectr_r\rs rcfrom_timestampzDatabase.from_timestamp r^rec*tjSr_)r5randomrs rcrzDatabase.random syy{rec:|D]}|j|||y)N) bind_refs bind_backrefs)r)rar r!r"r6s rcrz Database.bind s% OE JJty J N Orect||||Sr__BoundModelsContext)rar r!r"s rcrzDatabase.bind_ctx s"64MJJrec|jtjtdj tdS)N0r'rPrrQr)r6s rcget_noop_selectzDatabase.get_noop_select s1wwvx''C177CABBrec~tds%Gfdd}tdtfd|i_jS)NrceZdZWZy)Database.Model..MetaNrrsrcrr, rrerrrrs` rcrAzDatabase.Model rre)TFNNNTrrr_TT)Rrfrgrhr#rrrr2rWrrirhr~r#r$r,rr safe_create_indexsafe_drop_index sequencestruncate_tablerrrrrrr~rrrrr}rrrrrrrJrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr)rrAr`rercr$r$[ sMKJ E EN#8J!&INOIN@E?C!$&L+'"$  ""& )- - ""+Z -..5.-0.3 + ., <""""""*'""""OKCrer$c0fd}fd}t||S)Nc&|jSr_pragmars rcr{z__pragma__..__get__ s{{4  rec(|j|Sr_r4)rar~rs rc__set__z__pragma__..__set__ s{{4''re)r)rr{r7s` rc __pragma__r8 s!( GW %%receZdZejej ej ej ej ejdZdddZ dZ dZ e Z dZfdZdIfd Zd Zd Zd ZdZdZedd fdZedZedZedZedZedZedZedZedZ edZ!edZ"edZ#edZ$e%dZ&e&jNdZ&dZ(d Z)d!Z*d"Z+dJd#Z,dJd$Z-dKd%Z.dKd&Z/ dLd'Z0dLd(Z1dJd)Z2dJd*Z3dKd+Z4dKd,Z5d-Z6d.Z7d/Z8d0Z9d1Z:d2Z;d3Zd6Z?dKd7Z@d8ZAdKd9ZBd:ZCd;ZDdKd<ZEdKd=ZFdKd>ZGdKd?ZHdKd@ZIdKdAZJdBZKdCZLdDZMdEZNdFZOdGZPdHZQxZRS)MrR)rrr!r)r"r/GLOBr)rrTrrFcX|jdd|_tt||g|i|i|_i|_i|_i|_g|_ t|_ i|_ |jtdd|jtdd|j dk\|_y)Npragmasr`rrj date_trunc)rr)r_pragmasrrRr _aggregates _collations _functions_window_functions_table_functionsrC _extensions _attachedregister_functionrrrr)rarrrrs rcrzSqliteDatabase.__init__ s 9b1  nd,XGGG!# "5 0+qA 1<C"11Z?reNc |||_t|jtr(t|jj |_|%t dkrt jd||_||_ tt|2|fi|y)N)r#rz.RETURNING clause requires Sqlite 3.35 or newer) r?rvrr\r__sqlite_version__rrr _timeoutrrRr)rarr<timeoutr rrs rcrzSqliteDatabase.initsu  #DM dmmT * !4!4!67DM  '!J. NO$4D !  nd(>  " "4 ( ==   d # d# d# T"   * ,  ' ' -  "&"7"7 .''- .     ! !$ ' rec|j}|jD]\}}|jd|d|d|jy)NzPRAGMA z = ;)rr?rr)rarmrr5r~s rcrUzSqliteDatabase._set_pragmas-s@!]] @MFE NN> ? @ rec|j}|jjD]\}}|jd|d|d|j y)NATTACH DATABASE "" AS "r)rrFrrr)rarmrrrKs rcrTz SqliteDatabase._attach_databases3sI,,. HHD" NNRF G H rec.|d|d|}d|z}|turK|d|xsdzz }|rJt|jxsd}|||<t|j |_n |r t d|j |j}|r|dSy)Nr".z PRAGMA %sz = %srr`z/Cannot specify a permanent pragma without value)SENTINELrr?r\rrrfetchone)rar r~ permanentrr'r<r*s rcr5zSqliteDatabase.pragma9s  %s+CC  7ejq) )Ct}}23$ $W]]_ 5 NO Os#,,. q6M re cache_size foreign_keys journal_modejournal_size_limit mmap_size page_sizeread_uncommitted synchronouswal_autocheckpointapplication_id user_version data_versionc|jSr_)rKrs rcrLzSqliteDatabase.timeoutVs }}rec|j|k(ry||_|js|jd|dzzyy)NzPRAGMA busy_timeout=%d;i)rKr}r)rasecondss rcrLzSqliteDatabase.timeoutZsA ==G #  ~~   6'D.I J rect|jjD]\}\}}|j|||yr_)r@rcreate_aggregaterarmrklass num_paramss rcrVzSqliteDatabase._load_aggregateses<)-)9)9)?)?)A ; %D%5*  ! !$ E : ;recl|jjD]\}}|j||yr_)rArcreate_collation)rarmrr5s rcrWzSqliteDatabase._load_collationsis4((..0 ,HD"  ! !$ + ,rec|jjD]&\}\}}}|rd|ini}|j|||fi|(y)N deterministic)rBrcreate_function)rarmrr5n_paramsr~rs rcrXzSqliteDatabase._load_functionsmsQ37??3H3H3J ? /D/2x9Fo}5BF D x >v > ?rect|jjD]\}\}}|j|||yr_)rCrcreate_window_functionrxs rcrYz%SqliteDatabase._load_window_functionsrs>)-)?)?)E)E)G A %D%5*  ' 'j% @ Arec||f|j|xs|jj<|js |j |j yyr_)r@rfrhr}rVrraryrrzs rcregister_aggregatez!SqliteDatabase.register_aggregatevsM.decorator|s  # #E4 <Lrer`rarrzr's``` rc aggregatezSqliteDatabase.aggregate{ recxs |jfd}||_||j<|js |j |j yy)Nc>|tdzfz}t|S)Nz collate %s)rQrj)rrrs rc _collationz5SqliteDatabase.register_collation.._collations%#lT&9":!<.decorators  # #B -Irer`rarr's`` rcrSzSqliteDatabase.collations rec|||f|j|xs |j<|js |j|j yyr_)rBrfr}rXr)rar5rrzr~s rcrGz SqliteDatabase.register_functionsD02J /N+ ,~~  !2 3 recfd}|S)Nc0j||Sr_)rG)r5r~rrzras rcr'z&SqliteDatabase.func..decorators  " "2tZ GIrer`)rarrzr~r's```` rcr2zSqliteDatabase.funcs rec|xs|jj}||f|j|<|js |j |j yyr_)rfrhrCr}rYrrs rcregister_window_functionz'SqliteDatabase.register_window_functionsR-u~~++-(-z':t$~~  ' '(9 : recfd}|S)Nc.j||Sr_)rrs rcr'z1SqliteDatabase.window_function..decorators  ) )%z BLrer`rs``` rcwindow_functionzSqliteDatabase.window_functionrrec|||_|jj||js |j |j yyr_)rrDrr}rZr)raryrs rcregister_table_functionz&SqliteDatabase.register_table_functionsE  EJ $$U+~~ NN4??, - recfd}|S)Nc,j||Sr_)r)ryrras rcr'z0SqliteDatabase.table_function..decorators  ( ( 5Lrer`rs`` rcr\zSqliteDatabase.table_functions rec|j|=yr_)r@rs rcunregister_aggregatez#SqliteDatabase.unregister_aggregate   T "rec|j|=yr_)rArs rcunregister_collationz#SqliteDatabase.unregister_collationrrec|j|=yr_)rBrs rcunregister_functionz"SqliteDatabase.unregister_functions OOD !rec|j|=yr_)rCrs rcunregister_window_functionz)SqliteDatabase.unregister_window_functions  " "4 (rect|jD]\}}|j|k(sny|jj|yrg)rrDrr)rarrrys rcunregister_table_functionz(SqliteDatabase.unregister_table_functionsK#D$9$9: JCzzT!  !!#&recj|jd|jD]}|j|yr>)enable_load_extensionrEload_extension)rarm extensions rcr[zSqliteDatabase._load_extensionss3 ""4()) +I    * +rec|jj||js3|j}|j d|j |yyr>)rErr}rrr)rarrms rcrzSqliteDatabase.load_extensionsM Y'~~??$D  & &t ,    * rec:|jj|yr_)rEremove)rars rcunload_extensionzSqliteDatabase.unload_extensions  *rec||jvr!|j||k(rytd|z||j|<|js|jd|d|dy)NFzschema "%s" already attached.r`rarT)rFrFr}r)rafilenamers rcattachzSqliteDatabase.attachsa 4>> !~~d#x/"#BT#IJ J't~~   xN Orec||jvry|j|=|js|jd|zy)NFzDETACH DATABASE "%s"T)rFr}rrs rcdetachzSqliteDatabase.detachs> t~~ % NN4 ~~   3d: ;rec|js |jS|tjk(r |ddS|S#tt t f$rY|SwxYwr)r rr rr\r TypeErrorrs rcrzSqliteDatabase.last_insert_ids]$$## # 6== ( ay|# )4   s7AAcf |jS#t$r|jjcYSwxYwr_rrrrs rcrzSqliteDatabase.rows_affected0 *?? " *==)) ) * 00c8|rd|znd}|j|y)NzBEGIN %srr)ra lock_typer%s rcrzSqliteDatabase.begins.7J*W  #rect5|jjjcdddS#1swYyxYwr_)rrrmrrs rcrzSqliteDatabase.commits0 " -;;##**, - - -$5>ct5|jjjcdddS#1swYyxYwr_)rrrmrrs rcrzSqliteDatabase.rollbacks0 " /;;##,,. / / /rc|xsd}|jd|zd}|jDcgc]\}|c}Scc}w)Nmainz>SELECT name FROM "%s".sqlite_master WHERE type=? ORDER BY name)r&rfetchall)rarrr*s rcrzSqliteDatabase.get_tables sK!6!!#9;A#BCMO & 12222s <cjd|xsdz}|j|dDcgc] }t| c}Scc}w)NzCSELECT name, sql FROM "%s".sqlite_master WHERE type=? ORDER BY namer)view)rrf)rarr'r*s rc get_viewszSqliteDatabase.get_viewss<#)#3V5.2.>.>sI.NOs c"OOOs0c @|xsd}d|z}|j||df}t|j}t}|jd|d|d}|jD],}|d}t |ddk(} | s|j |.i} t |D]>} |jd|d | d}|jDcgc]}|d c}| | <@t |Dcgc]}t|||| |||v|c}Scc}wcc}w) NrzVSELECT name, sql FROM "%s".sqlite_master WHERE tbl_name = ? AND type = ? ORDER BY namervPRAGMA "z".index_list("")rrjz".index_info(")rrrrCrrrr`) rar&rr9r index_to_sqlunique_indexesr*r is_unique index_columnsr&s rcrzSqliteDatabase.get_indexessS!6ADJK!!%%)9:FOO-. !!#)5#23??$ )Cq6DCF q(I""4(  )  . NJ%%'-z';.?s 1R5rerrr*rrar&rrr*s rcrzSqliteDatabase.get_primary_keys<sJ!!#)#3V#3U#<="(&//:K"LM3AMMMs A c |jd|xsdd|d}|jDcgc]}t|d|d|d|c}Scc}w)Nrrz".foreign_key_list("rrrjr;rrrcrs rcrzSqliteDatabase.get_foreign_keysAsd!!#)#3V#3U#<="??,.#3q63q63q65A. ..sAc"tjSr_)rPBinaryrs rcget_binary_typezSqliteDatabase.get_binary_typeGs ~~rec|jr|jjnd}|r+|dvr&td|jjzSyy)Nr()nothingrz INSERT OR %s)rrhrQupperrarr9rs rcrz!SqliteDatabase.conflict_statementJsQ0;0C0C$$**, f$99~ (;(;(A(A(CCD D:6rec|jdkrMt|j|j|j|j |j fr td|jr|jjnd}|r|dvry|dk(r tdS|js|js td|j r td|j s td |j||S) N)rrzFSQLite does not support specifying which values to preserve or update.r()rrr(rzON CONFLICT DO NOTHINGzIf you are not performing any updates (or preserving any INSERTed values), then the conflict resolution action should be set to "NOTHING".zMSQLite does not support specifying named constraints for conflict resolution.zISQLite requires that a conflict target be specified when doing an upsert.) rr1rrrrrrrrhrQr)raocr9rs rcrzSqliteDatabase.conflict_updateOs    +  bjj"))R5H5H'') *67 7(*zz!!#r f$==  Y /0 0BLL*+ + $ $DE E$$?@ @--b%88rec:tj||tSN)r$)r5rrrs rcrzSqliteDatabase.extract_dateks||Iz|DDrec:tj||tSr)r5r=simple_date_timers rcrzSqliteDatabase.truncate_datens}}Y *:< >  $ $T^^ 4   $ $T%:%: ; recT|j|_|jdk\rd|_yy)NiaT)rr.rps rcrz&PostgresqlDatabase._set_server_versions+"11   % '%)D " (rec|jjry|jjj}|tj kSre)rrlrmget_transaction_statusrTRANSACTION_STATUS_INERROR)ra txn_statuss rcrz'PostgresqlDatabase.is_connection_usables= ;;   [[%%<<> MDDDDrecr |tjk7r|S|ddS#tttf$rYywxYwr)r rr\rrrs rcrz!PostgresqlDatabase.last_insert_ids> '6==86 JfQil JHi0   s66cf |jS#t$r|jjcYSwxYwr_rrs rcrz PostgresqlDatabase.rows_affectedrrc|jr|j|rd|z}nd}t5|jj |dddy#1swYyxYw)Nz$BEGIN TRANSACTION ISOLATION LEVEL %srr)rarOr s rcrzPostgresqlDatabase.beginsS >>  LLN 9OKDD " ( KKM ! !$ ' ( ( (s AA#c~d}|j||xsdf}|jDcgc]\}|c}Scc}w)NzSSELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = %s ORDER BY tablenamepublicr)rarr9rr&s rcrzPostgresqlDatabase.get_tabless@<!!%&*?$*OO$56&%666s :c d}|j||xsdf}|jDcgc] \}}t||jd"c}}Scc}}w)Nz\SELECT viewname, definition FROM pg_catalog.pg_views WHERE schemaname = %s ORDER BY viewnamer z ;)rrrfstrip)rarr9r view_namer's rcrzPostgresqlDatabase.get_viewss^;!!%&*?(.(9;$YY &(9:; ;;s%Ac d}|j||d|xsdf}|jDcgc]4\}}}}t||jd|j d||6c}}}}Scc}}}}w)Na SELECT i.relname, idxs.indexdef, idx.indisunique, array_to_string(ARRAY( SELECT pg_get_indexdef(idx.indexrelid, k + 1, TRUE) FROM generate_subscripts(idx.indkey, 1) AS k ORDER BY k), ',') FROM pg_catalog.pg_class AS t INNER JOIN pg_catalog.pg_index AS idx ON t.oid = idx.indrelid INNER JOIN pg_catalog.pg_class AS i ON idx.indexrelid = i.oid INNER JOIN pg_catalog.pg_indexes AS idxs ON (idxs.tablename = t.relname AND idxs.indexname = i.relname) WHERE t.relname = %s AND t.relkind = %s AND idxs.schemaname = %s ORDER BY idx.indisunique DESC, i.relname;r r z ;,)rrr`rstripr) rar&rr9rrr'rrs rcrzPostgresqlDatabase.get_indexess 9!!%%f6H)IJ6<__5FHH1D#y'dCJJt$4gmmC6H'0H HHs9A0 cd}|j|||xsdf}t|j||}|jD cgc]\}}}} t |||dk(||v|| c} }}}Scc} }}}w)Nz SELECT column_name, is_nullable, data_type, column_default FROM information_schema.columns WHERE table_name = %s AND table_schema = %s ORDER BY ordinal_positionr YESrrCrrra) rar&rr9rpksrrrdfs rcrzPostgresqlDatabase.get_columnss) !!%%1C8)DE$''v67*0//*;==&D$BtR UBO= ==s !A2 cd}d}|j||||xsdf}|jDcgc]\}|c}Scc}w)Na SELECT kc.column_name FROM information_schema.table_constraints AS tc INNER JOIN information_schema.key_column_usage AS kc ON ( tc.table_name = kc.table_name AND tc.table_schema = kc.table_schema AND tc.constraint_name = kc.constraint_name) WHERE tc.constraint_type = %s AND tc.table_name = %s AND tc.table_schema = %s PRIMARY KEYr r)rar&rr9ctyperpks rcrz#PostgresqlDatabase.get_primary_keyssK (!!%%8J()KL$oo/0sr000s >c d}|j|||xsdf}|jDcgc]}t|d|d|d|c}Scc}w)Na% SELECT DISTINCT kcu.column_name, ccu.table_name, ccu.column_name FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON (tc.constraint_name = kcu.constraint_name AND tc.constraint_schema = kcu.constraint_schema AND tc.table_name = kcu.table_name AND tc.table_schema = kcu.table_schema) JOIN information_schema.constraint_column_usage AS ccu ON (ccu.constraint_name = tc.constraint_name AND ccu.constraint_schema = tc.constraint_schema) WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = %s AND tc.table_schema = %sr rrrjr)rar&rr'rr*s rcrz#PostgresqlDatabase.get_foreign_keys se( !!#v/A'BC!??,.#3q63q63q65A. ..sAc`|jd|f}t|jdS)Nz SELECT COUNT(*) FROM pg_class, pg_namespace WHERE relkind='S' AND pg_class.relnamespace = pg_namespace.oid AND relname=%sr)rrYre)rasequenceress rcrz"PostgresqlDatabase.sequence_exists"s6 "%-; 0 CLLN1%&&rec"tjSr_)rrrs rcrz"PostgresqlDatabase.get_binary_type*s recyr_r`rs rcrz%PostgresqlDatabase.conflict_statement-rec L|jr|jjnd}|dvrtdg}|jrM|j t |jDcgc]}t |tr t|n|!c}|j tdt|S|r|dk7r td|js|js td|js|js td|j||Scc}w) Nr()rrrz DO NOTHINGrz\The only supported actions for conflict resolution with Postgresql are "ignore" or "update".zIf you are not performing any updates (or preserving any INSERTed values), then the conflict resolution action should be set to "IGNORE".zKPostgres requires that a conflict target be specified when doing an upsert.)rrhrQrrr)rvr1rbrjrrrrr)rarr9rrcrs rcrz"PostgresqlDatabase.conflict_update0s')zz!!#r * *'(E"" -!22/4$.c:#>F3KCG/456 LL\* +E? " (*)* *BLL)* *%%)@)@?@ @--b%88%/4s#$D! cVtjt|td|fSNFROMr5EXTRACTrjrQrs rcrzPostgresqlDatabase.extract_dateIs!zz(Is6{J#GHIIrec.tj||Sr_)r5 DATE_TRUNCrs rcrz PostgresqlDatabase.truncate_dateLs}}Y 33rec&|jd|S)NEPOCH)rrs rcrzPostgresqlDatabase.to_timestampOs  *55rec,tj|Sr_)r5rrs rcrz!PostgresqlDatabase.from_timestampRsz**rec|jtjtdj tdS)Nr'falser(r6s rcr)z"PostgresqlDatabase.get_noop_selectVs1wwvx''C177G EFFrec,|jd|zy)Nzset time zone "%s";r)rars rc set_time_zonez PostgresqlDatabase.set_time_zoneYs .9:rerr_)%rfrgrhrrr2rjrhr~rr r.r0rrrrrrrrrrrrrrrrrrrrrr)r2rrs@rcrGrGys$ K D1J E"8JNI=A!A.* E * (7 ;H( =1 .*'92J46+G;rerGc eZdZddddddddd Zd d d d ddZdZdZeZdZ dZ dZ dZ dZ dZfdZdZdZdZdZdZd,dZd,dZd,dZd,dZd,d Zd,d!Zd,d"Zd#Zd$Zd%Zd&Zd'Z d(Z!d)Z"d*Z#d+Z$xZ%S)-rCzINTEGER AUTO_INCREMENTzBIGINT AUTO_INCREMENTr!rrr+z VARCHAR(40)z VARBINARY(16))rrr!r&r)r+r/r0z LIKE BINARYrz REGEXP BINARYrr)rrrrrrIz``TlFPIPES_AS_CONCATc d|jdd}|j|d|vrtr|jd|d<t t ||fi|y)NrOT)charsetsql_mode use_unicodepasswordpasswd)r7r mysql_passwdrrrCr)rarrrLrs rcrzMySQLDatabase.initxsV !  f  L%zz*5F8  mT';F;rect tdtjd|jdd|j}|S)NzMySQL driver not installed!T)rKrr`)mysqlr8r~rrrps rcrzMySQLDatabase._connectsA =&'DE E}}4 $4#224 rec |j}|j||_y#t$r|j}Y2wxYwr_)rrget_server_info_extract_server_version)rarm version_raws rcrz!MySQLDatabase._set_server_versionsF 1--K#::;G 1..0K 1s %AAcBt|tr|S|j}d|vrtjd|}ntjd|}|2td|j dj dDStjd|zy) Nmariaz(1\d\.\d+\.\d+)z(\d\.\d+\.\d+)c32K|]}t|ywr_)r)rmnums rcroz8MySQLDatabase._extract_server_version..sNcSNrprrRz'Unable to determine MySQL version: "%s"r) rvr]rhr0searchgroupsrrr)raversion match_objs rcr@z%MySQLDatabase._extract_server_versions gu %N--/ g  "4g>I "3W=I  NY-=-=-?-B-H-H-MNN N ?'IJrec|jjry|jj}t|dr(|jddk(rd}nd} |j |yy#t $rYywxYw)NFpingrrCr`rT)rrlrmrrrKr)rarmrs rcrz"MySQLDatabase.is_connection_usablest ;;  {{ 4 ""1%*  4   sA## A/.A/c$|jdS)Nz () VALUES ()rr6s rcrz#MySQLDatabase.default_values_inserts{{>**rec|jr|jt5|j}|r|j d|z|j ddddy#1swYyxYw)Nz"SET TRANSACTION ISOLATION LEVEL %srr)rarOcurss rcrzMySQLDatabase.begins^ >>  LLN " ";;=D A,-. LL !  " " "s 8A((A1cTd}|j|dDcgc]\}|c}Scc}w)NzySELECT table_name FROM information_schema.tables WHERE table_schema = DATABASE() AND table_type != %s ORDER BY table_name)VIEWr)rarr9r&s rcrzMySQLDatabase.get_tabless.'%)$4$4UI$FG&%GGGs %czd}|j|}|jDcgc] }t| c}Scc}w)NztSELECT table_name, view_definition FROM information_schema.views WHERE table_schema = DATABASE() ORDER BY table_name)rrrf)rarr9rr*s rcrzMySQLDatabase.get_viewss<G!!%(.4oo.?@s c"@@@s8c J|jd|z}t}i}|jD]J}|ds|j|d|j |dg||dj |dL|Dcgc]}t |d||||v|c}Scc}w)NSHOW INDEX FROM `%s`rrjr;)rrCrrrrr`)rar&rrrindexesr*rs rcrzMySQLDatabase.get_indexess!!"85"@A??$ +Cq6 3q6"   s1vr * CFO " "3q6 *  + $%dD'$-O% %%sB cd}|j||f}t|j|}|jD cgc]\}}}} t |||dk(||v|| c} }}}Scc} }}}w)Nz SELECT column_name, is_nullable, data_type, column_default FROM information_schema.columns WHERE table_name = %s AND table_schema = DATABASE() ORDER BY ordinal_positionrr) rar&rr'rrrrrrs rcrzMySQLDatabase.get_columnss) !!#x0$''./*0//*;==&D$BtR UBO= ==s!A, c|jd|z}td|jDcgc]}|d c}Scc}w)NrSc|ddk(S)NrjPRIMARYr`)r*s rcrxz0MySQLDatabase.get_primary_keys..s3q6Y#6rer;rrs rcrzMySQLDatabase.get_primary_keyssK!!"85"@A68IJL3AL LLs Ac d}|j||f}|jDcgc]\}}}t||||c}}}Scc}}}w)Na@ SELECT column_name, referenced_table_name, referenced_column_name FROM information_schema.key_column_usage WHERE table_name = %s AND table_schema = DATABASE() AND referenced_table_name IS NOT NULL AND referenced_column_name IS NOT NULLr)rar&rr9rrrdres rcrzMySQLDatabase.get_foreign_keyssc:!!%%24:??3DFF/ K vz; FF FFsAc"tjSr_)r=rrs rcrzMySQLDatabase.get_binary_types ||rec|jsy|jj}|dk(r tdS|dk(r tdS|dk7r tdy)Nrr rz INSERT IGNORErzWUn-supported action for conflict resolution. MySQL supports REPLACE, IGNORE and UPDATE.)rrhrQrrs rcrz MySQLDatabase.conflict_statementsh""F$$**, Y y> ! x ' ' x JK K rec f|js|js |jr tdg}|jr|j xsd}|ddk(r|dk\rt j}nt j}|jD]D}t|}tt|td||f}|j|F|jr|jjD]\} } t| t sUt| t"rt%|j&| } t| t(r| j+| } n t-| d} |jtt| td| f|rttd t/|fSy) NzfMySQL does not support the specification of where clauses or conflict targets for conflict resolution.rr )r^rrrFrzON DUPLICATE KEY UPDATE)rrrrrrr5VALUEVALUESrcrjrQrrrrvrar1rr&r2rrYr() rarr9rrHVALUE_FNrentityrrrVs rcrzMySQLDatabase.conflict_updates   !=!=  + ++, ,  ))1TGqzRGz$98899%// +&v.%!&)HV$'&' z*  +   #++113 J1!!T*"!Z0#EKK3!!U+JJqM!!E2xq)93s8Q(GHI J S!:;*7356 6 rechtjtt|td|fSr&r(rs rcrzMySQLDatabase.extract_date+s%zz(C NCK#LMNNrecHtj|t|tSr)r5 DATE_FORMAT__mysql_date_trunc__rrs rcrzMySQLDatabase.truncate_date.s%~~j*>y*I+;= =rec,tj|Sr_)r5UNIX_TIMESTAMPrs rcrzMySQLDatabase.to_timestamp2s  ,,rec,tj|Sr_)r5 FROM_UNIXTIMErs rcrzMySQLDatabase.from_timestamp5s ++rec*tjSr_)r5randrs rcrzMySQLDatabase.random8swwyrec$|jdS)NzDO 0rr6s rcr)zMySQLDatabase.get_noop_select;s{{6""rer_)&rfrgrhrrr2rWrkrhr~r$r,r.r/r7rrrr@rrrrrrrrrrrrrrrrrr)rrs@rcrCrC]s(*$ "K! J E E":J!%IO H<H  +"H A % =L F K)6VO=-,#rerCc$eZdZdZdZdZdZy)rc||_yr_ryr{s rcrz_manual.__init__Cs rec2tfd}|S)Ncjtj5|i|cdddS#1swYyxYwr_)rrKrs rcrz_manual.__call__..innerGs1! +4*6* + + +rrrs`` rcrz_manual.__call__Frrec|jj}|t|ts t d|jj |y)Nz?Cannot enter manual commit block while a transaction is active.)rKrrvrrr)ratops rcrz_manual.__enter__MsFgg%%' ?:c7#;67 7   &recR|jj|ur tdy)Nz>Transaction stack corrupted while exiting manual commit block.)rKrrrs rcrz_manual.__exit__Ts. 77 " " $D 045 5 1reNrr`rercrrBs'5rerc$eZdZdZdZdZdZy)rc$||_||f|_yr_)rK_transaction_argsrarKrrs rcrz_atomic.__init__[s"&rec2tfd}|S)Ncj\}}tjg|i|5|i|cdddS#1swYyxYwr_)rwrrKrrrrr5ras rcrz_atomic.__call__..inner`sJ))DAq*1** +4*6* + + + <Arrs`` rcrz_atomic.__call___ r +  + recv|jjdk(r1|j\}}|jj|i||_nRt |jj tr td|jj|_|jjS)Nrz=Cannot enter atomic commit block while in manual commit mode.) rKrrwr_helperrvrrrrrrs rcrz_atomic.__enter__gs 77 $ $ &! +11LD&.477..??DL //17 ;34 4 77,,.DL||%%''rec<|jj|||Sr_)rrrs rcrz_atomic.__exit__rs||$$Xw??reNrr`rercrrZs0 (@rerc:eZdZdZdZdZd dZd dZdZdZ y) rc$||_||f|_yr_)rK _begin_argsrxs rcrz_transaction.__init__ws &>rec2tfd}|S)Ncj\}}tjg|i|5|i|cdddS#1swYyxYwr_)rrrKr{s rcrz$_transaction.__call__..inner|sJ##DAqdgg//Q/ +4*6* + + +r|rrs`` rcrz_transaction.__call__{r}recZ|j\}}|jj|i|yr_)rrKrrs rc_beginz_transaction._begins('' f t&v&rec^|jj|r|jyyr_)rKrrrars rcrz_transaction.commits!   KKM rec^|jj|r|jyyr_)rKrrrs rcrz_transaction.rollbacks#   KKM rec|jjdk(r|j|jj||Sr)rKrrrrs rcrz_transaction.__enter__s7 77 $ $ &! + KKM   & rec:|jj} |r|dk(r|jdn|dk(r |jd|jj y#|jdxYw#|jj wxYwNrF)rKrrrr)rarrrdepths rcrz_transaction.__exit__s))+ &EQJ e$!KK& GG # # % MM%( GG # # %sA>A''A;;A>>BNrj rfrgrhrrrrrrrr`rercrrvs%*'   &rerc:eZdZd dZdZdZd dZdZdZdZ y) rNc||_|xs!dtjjz|_|jj |jj |_y)Nrq)rKuuiduuid4hexsidrSrW quoted_sid)rarKrs rcrz_savepoint.__init__sB0# 0 00((-- 6rec2tfd}|S)Ncjtj5|i|cdddS#1swYyxYwr_)rrKrs rcrz"_savepoint.__call__..inners1DGG$ +4*6* + + +rrrs`` rcrz_savepoint.__call__rrecT|jjd|jzy)Nz SAVEPOINT %s;rKrrrs rcrz_savepoint._begins Odoo=>recz|jjd|jz|r|jyy)NzRELEASE SAVEPOINT %s;)rKrrrrs rcrz_savepoint.commits+ 3dooEF $++-5recT|jjd|jzy)NzROLLBACK TO SAVEPOINT %s;rrs rcrz_savepoint.rollbacks 7$//IJrec&|j|Sr_)rrs rcrz_savepoint.__enter__s  rec||r|jy |jdy#|jxYw)NFr)rrrs rcrz_savepoint.__exit__s4  MMO  % (  s(;r_rjrr`rercrrs&7 ? KrercFeZdZdZdZdZdZdZd dZdZ dZ d d Z y ) rcX||_d|_d|_d|_d|_g|_y)NrF)rrrv initialized populatedrrs rcrzCursorWrapper.__init__s-    recZ|jrt|jSt|Sr_)rrurResultIteratorrs rcrzCursorWrapper.__iter__s# >>' 'd##rec.t|trD|j}||dkr|jn|j||j|St|t r'|j|dkDr|nd|j|St d)Nrz6CursorWrapper only supports integer and slice indexes.)rvr~rrrrr)rarrs rcrzCursorWrapper.__getitem__s dE "99D|tax!%>>$' ' c " OOD1HD! 4>>$' '() )rec:|j|jSr_)rrrs rcrzCursorWrapper.__len__s zzrecyr_r`rs rcrzCursorWrapper.initializerrecX|jj}|'d|_|jjt|j s|j d|_|xjdz c_|j|}|r|jj||S)NTr) rrerrrrrr process_rowrr)racacher*rs rciteratezCursorWrapper.iterateskk""$ ;!DN KK    !! OO #D  a !!#&  NN ! !& ) rec|Sr_r`rar*s rcrzCursorWrapper.process_rows rec#TK |jd#t$rYywxYww)z1Efficient one-pass iteration over the result set.FN)rrrs rcrzCursorWrapper.iterators5 ll5))!  s(( %(%(c.|xs td}|dkr tdt|}|j|_|j s?||jkDr/ |j |j s||jkDr-yyyy#t$rYywxYw)NInfrz"Negative values are not supported.)floatrrrrvrrr)rarxrs rcrzCursorWrapper.fill_cache s u q5AB B!$'..a$**n  ..a$**n.n.!  sB BBNrjr]) rfrgrhrrrrrrrrrr`rercrrs/$ )   rerc eZdZdZeZdZeZy)rc|jj}|Dcgc].}|d|djddzdjd0c}|_t ||_ycc}w)NrrRr()"`)r descriptionrfindrrrncolsrarrs rc_initialize_columnsz%DictCursorWrapper._initialize_columnssdkk-- !,.!QqTZZ_q01288@. % .s3A'ci}t|jD]$}|j|j|||&|Sr_)rrrr)rar*rrs rc _row_to_dictzDictCursorWrapper._row_to_dict$s@tzz" 7A   dll1os1v 6 7 reN)rfrgrhrrrrr`rercrrs& %J KrerceZdZdZdZy)rc |jj}tjd|Dcgc].}|d|dj ddzdj d0c}|_ycc}w)NRowrrRrr)rr collections namedtuplerr tuple_classrs rcrz"NamedTupleCursorWrapper.initialize.sjkk-- &11%>I:K9:AaD1C1$% & , ,V 4:KL:Ks3A+ c |j|Sr_rrs rcrz#NamedTupleCursorWrapper.process_row3st%%reN)rfrgrhrrr`rercrr-s L &rerc$eZdZfdZdZxZS)rc:tt| |||_yr_)rrrr)rarrrs rcrzObjectCursorWrapper.__init__8s !41&9&recH|j|}|jdi|Sr )rr)rar*row_dicts rcrzObjectCursorWrapper.process_row<s($$S)t+(++rerfrgrhrrrrs@rcrr7s ',rerc"eZdZdZdZdZeZy)rc ||_d|_yr)cursor_wrapperrv)rars rcrzResultIterator.__init__Bs, rec|Sr_r`rs rcrzResultIterator.__iter__Frirecr|j|jjkr$|jj|j}nZ|jjs>|jj |jj|j}nt |xjdz c_|Sr)rvrrrrrrr(s rcrzResultIterator.nextIs ::++11 1%%// ;C$$..    ' ' )%%// ;C  a  reN)rfrgrhrrr__next__r`rercrrAs Hrerc eZdZdZddZdZy) FieldAccessorc.||_||_||_yr_)r6r-rrar6r-rs rcrzFieldAccessor.__init__Ys   reNch|%|jj|jS|jSr_)__data__rrr-rxs rcr{zFieldAccessor.__get__^s-  $$((3 3zzrec||j|j<|jj|jyr_)rr_dirtyrraryr~s rcr7zFieldAccessor.__set__cs,',$))$DII&rer_)rfrgrhrr{r7r`rercrrXs  'rerc2eZdZfdZdZddZdZxZS)ForeignKeyAccessorcRtt| ||||j|_yr_)rrr rel_model)rar6r-rrs rcrzForeignKeyAccessor.__init__is"  $0tDrecF|jj|j}||j|jvr|j|jvra|jj rK|j j|jj|k(}||j|j<|jj|j|S|jjs,|jj r|j j|Sr_) rrr__rel__r- lazy_loadr rel_fieldrr.)raryr~rs rcget_rel_instancez#ForeignKeyAccessor.get_rel_instancems!!%%dii0   X-=-= =yy 0 00TZZ5I5Inn(()=)=)FG.1  +##'' 59 9TZZ%9%9..-- - rec@||j|S|jSr_)rr-rxs rcr{zForeignKeyAccessor.__get__xs#  ((2 2zzrect||jr[t||jjj |j |j <||j|j <nt|j j|j }||j |j <||k7s|/|j |jvr|j|j =|jj|j yr_) rvrrr-rrrrrrr)raryrfk_values rcr7zForeignKeyAccessor.__set__}s c4>> *+23 8L8L8Q8Q+RH  dii (*-H  TYY '((,,TYY7H+.H  dii (x3;yyH,,,$$TYY/DII&rer_)rfrgrhrrr{r7rrs@rcrrhs)  'rerceZdZdZddZy)BackrefAccessorcV||_|j|_|j|_yr_)r-rr6rar-s rcrzBackrefAccessor.__init__s __ reNc|`|jjj}|jj j |jt ||k(S|Sr_)r-rrrrr)r)raryrzrs rcr{zBackrefAccessor.__get__sR  ::'',,DNNVXU4::4)@@A C rer_)rfrgrhrr{r`rercrrs % rerc$eZdZdZdZddZdZy)ObjectIdAccessorz(Gives direct access to the underlying idc||_yr_)r-rs rcrzObjectIdAccessor.__init__s  reNcb||jj|jj}|o|jj|jvrM|j|jj}t ||jj j}|S|jSr_)rrr-rrrr)raryrzr~rel_objs rcr{zObjectIdAccessor.__get__s  %%))$**//:E}H4D4D!D"**4::??;)=)=)B)BCLzzrecFt||jj|yr_)rr-rrs rcr7zObjectIdAccessor.__set__s$**//51rer_)rfrgrhrrr{r7r`rercrrs22rerceZdZdZdZeZdZdZdZ dZ ddZ dZ dZ dd Zed Zd Zd Zd ZdZdZdZdZdZdZy)r2rFNr'Tc| td|}||_||_||_||_||_||_||_||_| |_ | |_ | |_ | |_ | |_ |xs |j|_||_t"xj$dz c_t"j$|_|j xrdxsd|j&f|_y)NzL"db_column" has been deprecated in favor of "column_name" for Field objects.rrj)rrrvrrrurrrrS unindexedchoices help_text verbose_namedefault_index_typer*_hiddenr2_field_counter_order _sort_key)rarrvrrrurrrrSrrrrr* db_columnrs rcrzField.__init__s  > ?#K   & &&  "" "($?(?(?  !** **0q5A Crec`t|jdz|jjzSr)rrr6rfrs rcrzField.__hash__s$DIIOdjj&9&99::rect|drJt|ddr=dt|jd|jjd|j dSdt|jzS)Nr6rr: rRrz<%s: (unbound)>)rrrrfr6rrs rc__repr__zField.__repr__sY 4 !gdFD&A$(J$7$7$(JJ$7$7$(II/ /!4:#6#666rec ||_|x|_|_|jxs||_|rt |||j |||yyr_)r6r safe_namerraccessor_classrar6r set_attributes rcrz Field.bindsM %)) DN++3t  E4!4!4UD$!G H recjt|jjj|jSr_)r!r6r%r&rrs rcrz Field.columns%djj&&,,d.>.>??rec|Sr_r`rs rcadaptz Field.adapts rec,||S|j|Sr_r rs rcrzField.db_value u<4::e+<> LL[) *yy LLZ )    LL]+ , == LL4t}}DE F    LL)) * >> LL\DNN:; <re)FFFNNFNNNFNNNNNFrj)rfrgrhrrrr auto_incrementrr rrrrrrrr rr$rrr#r r r r`rercr2r2sN F"NNJ FJN>BIM?C). D@;7I@@==9$  $rer2ceZdZdZy)rANYNrfrgrhr r`rercrr!sJrerceZdZdZdZy)r:r,c< t|S#t$r|cYSwxYwr_)rrrs rcr zIntegerField.adapt(s% u:  L  Nrfrgrhr r r`rercr:r:%s Jrer:ceZdZdZy)rrNr r`rercrr/JrerceZdZdZy)rOr"Nr r`rercrOrO3sJrerOc&eZdZdZdZfdZxZS)rTrc|jddurtdt|zd|d<tt||i|y)NrFz %s must always be a primary key.T)rrrrrrrs rcrzAutoField.__init__;sG ::m $ -?$t*LM M $} i'88re)rfrgrhr r rrrs@rcrr7sNJ99rerceZdZdZy)rrNr r`rercrrBsJrerc$eZdZdZdfd ZxZS)r7z$INT GENERATED BY DEFAULT AS IDENTITYc >|rd|_tt|di|y)Nz INT GENERATED ALWAYS AS IDENTITYr`)r rr7r)ragenerate_alwaysrrs rcrzIdentityField.__init__Is @DO mT+5f5rer)rfrgrhr rrrs@rcr7r7Fs7J66rer7ceZdZfdZxZS)rHcBtdtt||i|y)Nz"PrimaryKeyField" has been renamed to "AutoField". Please update your code accordingly as this will be completely removed in a subsequent release.)rrrHrrs rcrzPrimaryKeyField.__init__Ps(E F ot-t>v>rerBrs@rcrHrHOs ??rerHceZdZdZdZy)r4r+c< t|S#t$r|cYSwxYwr_)rrrs rcr zFloatField.adaptZs% <  L r Nr r`rercr4r4Ws Jrer4ceZdZdZy)r/r)Nr r`rercr/r/ar" rer/c:eZdZdZ dfd ZdZdZdZxZS)r*r&c||_||_||_|xstjj |_tj d|j z|_tt|*|i|y)Nr^) max_digitsdecimal_places auto_rounddecimalDefaultContextroundingDecimal_exprr*r)rar1 r2 r3 r6 rrrs rcrzDecimalField.__init__hsc$,$ CG$:$:$C$C OOB'T-@-@,@A  lD*D;F;rec2|j|jgSr_)r1 r2 rs rcr zDecimalField.get_modifiersqs!4!455rectj}|s ||S|dS|jr8|t|}|j |j |j S|S)Nr)r6 )r4 r7 r3 rRquantizer8 r6 )rar~D decimal_values rcrzDecimalField.db_valuetsZ OO!M5 3qt 3 ??i./M ))$))dmm)L L rec||:t|tjr|Stjt|Syr_)rvr4 r7 rRrs rcr$zDecimalField.python_value}s4  %1 ??9U#34 4 re)r^r<FN) rfrgrhr rr rr$rrs@rcr*r*es"JCH<65rer*ceZdZdZdZdZy) _StringFieldc~t|tr|St|tr|jdSt|S)Nr6)rvrRrSrrs rcr z_StringField.adapts5 eY 'L z *<<( (rec8t|tj|Sr_rzrs rcrz_StringField.__add__s%5dBIIu%MMrec8t|tj|Sr_rzrs rcrz_StringField.__radd__s&6ubii&NNreN)rfrgrhr rrr`rercr@ r@ s NNrer@ c*eZdZdZdfd ZdZxZS)rr1c:||_tt||i|yr_) max_lengthrrr)rarF rrrs rcrzCharField.__init__s$ i'88rec@|jxr |jgxsdSr_)rF rs rcr zCharField.get_modifierss4DOO#4<.FlagDescriptorc>||_||_t|yr_)_field_valuerr)rar-r~FlagDescriptorrs rcrz.BitField.flag..FlagDescriptor.__init__s# # nd46recN|jj|jSr_)r[ rr\ rs rcclearz+BitField.flag..FlagDescriptor.clears{{**DKK<88recL|jj|jSr_)r[ rr\ rs rcrCz)BitField.flag..FlagDescriptor.sets{{))$++66recv||St||jjxsd}||jzdk7Sr)rr[ rr\ )raryrzr~s rcr{z-BitField.flag..FlagDescriptor.__get__s<#K$++*:*:;@q +11rec|dvr tdt||jjxsd}|r||jz}n||jz}t ||jj|y)NTFz"Value must be either True or Falser)rrr[ rr\ r)raryis_setr~s rcr7z-BitField.flag..FlagDescriptor.__set__sh.$%IJJ$++*:*:;@qT[[(Edkk\)E$++"2"2E:recp|j|jj|jdk7Sr)r'r[ rr\ r6s rcr#z-BitField.flag..FlagDescriptor.__sql__s)wwt{{224;;?1DEErer_) rfrgrhrr_ rCr{r7r#r)rr] s@rcr] rY s" 7 9 7 2  ; Frer] )rV rC)rar~r] s @rcflagz BitField.flagsM =''E   A % "'1*D  FZ F2dE**rer_)rfrgrhrrf rrs@rcrrs  +rerceZdZdZdZdZdZdZdZdZ e Z dZ eZ d Z d Zd Zd Zd ZdZdZdZej,ddkrdZydZy)BigBitFieldDatac"||_||_|jjj|j}|s t }nt |ts t |}|x|_|jj|j<yr_)ryrrrrN rv_buffer)raryrr~s rcrzBigBitFieldData.__init__sk    &&**4995KEE9-e$E;@@ t}}--dii8rec8|jjyr_)rj r_ rs rcr_ zBigBitFieldData.clears rect|d\}}t|j}||kr$|jjd|dz|z z||fS)NrCr)divmodrrj r5rarbyte_num byte_offsetcur_sizes rc_ensure_lengthzBigBitFieldData._ensure_lengthsS &sA+t||$ x  LL  HqLH+D E F$$rec`|j|\}}|j|xxd|zzcc<yrrs rj rarrp rq s rcset_bitzBigBitFieldData.set_bits0 $ 3 3C 8+ X1 #34recb|j|\}}|j|xxd|zzcc<yrru rv s rc clear_bitzBigBitFieldData.clear_bit s3 $ 3 3C 8+ XA$4"55rec|j|\}}|j|xxd|zzcc<t|j|d|zzSr)rs rj rYrv s rc toggle_bitzBigBitFieldData.toggle_bitsN $ 3 3C 8+ X1 #34DLL*a;.>?@@rect|d\}}t|j}||kryt|j|d|zzS)NrCFr)rn rrj rYro s rcrd zBigBitFieldData.is_setsI &sA+t||$ x DLL*a;.>?@@recN|r|j|y|j|yr_)rw ry )rarr~s rcrzBigBitFieldData.__setitem__s# T)=rec,t|jSr_)rrj rs rcrzBigBitFieldData.__len__s4<<  rect|tr |j}n)t|ttt fr|}n t dt|t|z }|dkDr|jjd|z|S)NIncompatible data-typerrm ) rvrh rj bytesrN memoryviewrrr5)rardatadiffs rc_get_compatible_dataz$BigBitFieldData._get_compatible_data"sj e_ -==D y*= >D56 64y3t9$ !8T\\((48 rec nt|tr |j}n)t|ttt fr|}n t dt dtt|t|z}tj|j|d}t|D]\}\}}|||||<|S)Nr rm r)rq) rvrh rj r rN r rmaxrr zip_longestr) rarrr bufrwrrbs rc _bitwise_opzBigBitFieldData._bitwise_op-s e_ -==D y*= >D56 6#c$iU"<<=  " "4<< C"2 IAv11XCF  recB|j|tjSr_)r rrrs rcrzBigBitFieldData.__and__:sx}}55recB|j|tjSr_)r rrrs rcrzBigBitFieldData.__or__<x||44recB|j|tjSr_)r rxorrs rcrzBigBitFieldData.__xor__>r rec#jK|jD] }tdD]}|d|zzrdnd"yw)NrCrr)rj r)rar js rcrzBigBitFieldData.__iter__As> 1A1X 1aLaq0 1 1s13c,t|jSr_)reprrj rs rcrzBigBitFieldData.__repr__FsDLL!!rerrc,t|jSr_rSrj rs rcr zBigBitFieldData.__str__Idll+ +rec,t|jSr_r rs rc __bytes__zBigBitFieldData.__bytes__Lr reN)rfrgrhrr_ rs rw ry r{ rd rr __delitem__rr r rrrrrrm version_infor r r`rercrh rh s~A%56A AK>K!  6551 " Q , ,rerh c&eZdZddZfdZxZS)BigBitFieldAccessorcJ| |jSt||jSr_)r-rh rrxs rcr{zBigBitFieldAccessor.__get__Qs#  :: x33rect|tr|j}nt|tr t |}nt|t r t |}nct|trt |j}n=t|tr|jd}nt|t s tdtt|;||y)Nr6zEValue must be either a bytes, memoryview or BigBitFieldData instance.)rvr tobytes buffer_typer rN rSrh rj rRr:rrr r7)raryr~rs rcr7zBigBitFieldAccessor.__set__Us eZ (MMOE { +%LE y )u%E  /u}}-E y )LL)EE:.9: : !405Arer_)rfrgrhr{r7rrs@rcr r Ps4BBrer c(eZdZeZfdZdZxZS)rcX|jdttt||i|y)Nru)rrSrrrrs rcrzBigBitField.__init__is')Z0 k4)4:6:rec | t|S|Sr_)rSrs rcrzBigBitField.db_valuems$)$5z% @5@re)rfrgrhr r rrrrs@rcrrfs(N;ArerceZdZdZdZdZy)rXr/cHt|trt|dk(r|St|tr$t|dk(rt j |}t|tj r |j S t j |j S#|cYSxYw)N rDr )rvr1rr rr/rrs rcrzUUIDField.db_valuets} eZ (SZ2-=L u %#e**:IIE*E eTYY '99  99U#'' ' Ls <BB!clt|tjr|S|tj|SdSr_)rvrr/rs rcr$zUUIDField.python_values. eTYY 'L#(#4tyy>$>reNrfrgrhr rr$r`rercrXrXqsJ ?rerXceZdZdZdZdZy)rr0cNt|trt|dk(r|j|St|tr$t|dk(rt j |}t|t j r|j|jS| tdy)NrDr )rzTvalue for binary UUID field must be UUID(), a hexadecimal string, or a bytes object.)rvr rrr1rr/rrs rcrzBinaryUUIDField.db_values eU #E b(8$$U+ + z *s5zR/?II%(E eTYY '$$U[[1 1  HI Irect|tjr|St|tr|j }n|rt|t s t |}|tj|SdS)Nr )rvrr/r r r rs rcr$zBinaryUUIDField.python_valuesX eTYY 'L z *MMOE :eU3%LE).):tyyu%DDreNr r`rercrrsJ IErercfd}|S)Ncd|jjjj|Sr_)r6r%rr)rars rcdecz_date_part..decs&zz((55iFFrer`rr s` rc _date_partr sG Jrec|xsd}|D]*} |tjj||cS|S#t$rY:wxYw)Nc|Sr_r`xs rcrxz"format_date_time..sare)rstrptimer)r~formats post_processfmts rcrrsY0KL  1 1 : :5# FG G L   s%9 AAcr tjj|dS#ttf$r|cYSwxYw)Nr)rr rrr^s rcrrs:  ))%1DEE z " s "66c$eZdZdZdfd ZxZS)_BaseFormattedFieldNc>|||_tt||i|yr_)r rr r)rar rrrs rcrz_BaseFormattedField.__init__s%  "DL !414B6Brer_)rfrgrhr rrrs@rcr r sGCCrer ceZdZdZgdZdZdZdZee dZ ee dZ ee dZ ee d Z ee d Zee d Zy ) r)r%)rrrcV|r&t|trt||jS|Sr_)rvr1rr rs rcr zDateTimeField.adapts$ Zz2#E4<<8 8 rec`|jjjj|Sr_r6r%rrrs rcrzDateTimeField.to_timestamp#zz((55d;;recb|jjjj||Sr_r6r%rrrarVs rctruncatezDateTimeField.truncate%zz((66tTBBrerrrrrrN)rfrgrhr r r rr rr rrrrrrr`rercr)r)szJG  <C Jv& 'D Z( )E :e$ %C Jv& 'D j* +F j* +Frer)c~eZdZdZgdZdZdZdZee dZ ee dZ ee dZ y ) r(r$)rrrc|r*t|trd}t||j|S|r*t|tjr|j S|S)Nc"|jSr_)rr s rcrxz!DateField.adapt..s 1668re)rvr1rr rrrar~pps rcr zDateField.adaptsI Zz2#B#E4<<< < z%):):;::<  rec`|jjjj|Sr_r rs rcrzDateField.to_timestampr recb|jjjj||Sr_r r s rcr zDateField.truncater rerrrN) rfrgrhr r r rr rr rrrr`rercr(r(sMJG <C Jv& 'D Z( )E :e$ %Crer(creZdZdZgdZdZeedZeedZ eedZ y)rUr.)rrrrrc@|rTt|trd}t||j|St|tjr|j S|Et|tj r+tjj|zj S|S)Nc"|jSr_)rr s rcrxz!TimeField.adapt..s qvvxre)rvr1rr rr timedeltaminr s rcr zTimeField.adapts} %,''t||R@@E8#4#45zz|#  E83E3E!F%%))E1779 9 rerrrN) rfrgrhr r r rr rrrr`rercrUrUsBJG  Jv& 'D j* +F j* +FrerUcfd}|S)Nc|jjj}|jdkDr|t |jdz n|}|j |j |SNrFr,)r6r%r resolutionrYrr)rarKr}rs rcr z!_timestamp_date_part..decs] ZZ   & &??Q&doo??,0 y"*;*;D*ABBrer`r s` rc_timestamp_date_partr sC Jrec,eZdZedDcgc]}d|z c}}ZfdZdZdZdZdZ dZ d Z e e d Ze e d Ze e d Ze e d Ze e dZe e dZxZScc}}w)rVr7r^cB|jdd|_|jsd|_ns|jtddvrd|jz|_nF|j|jvr.t ddj d|jDzd |jz|_|jd d xsd |_|jrtntjj}|jd |tt|:|i|y) Nr rrjr7r^z,TimestampField resolution must be one of: %src32K|]}t|ywr_)rU)rmrs rcroz*TimestampField.__init__..&s&N!s1v&Nrpi@BrFru)rr rvalid_resolutionsrrSticks_to_microsecondrrrrrrrVr)rarrdfltrs rcrzTimestampField.__init__s **\48DO __a + DOO3DO __D$:$: :K!YY&Nt7M7M&NNOP P$+t$>!::eU+4uvx'8'8'<'<)T* nd,d=f=rectjtjtj|j ddS)N)rrgmtimemktime timetuple)rars rc local_to_utczTimestampField.local_to_utc.s4   $++dkk",,..I"J2A"NOOrectj|j}tjj |Sr_)calendartimegm utctimetuplerr)rarrs rc utc_to_localzTimestampField.utc_to_local5s0 __R__. /  ..r22rec|jr#tj|jSt j |j Sr_)rr r r rr r rs rc get_timestampzTimestampField.get_timestamp=s7 88??5#5#5#78 8;;u01 1rec|yt|tjrnqt|tjr6tj|j|j|j }n!t t||jzS|j|}|jdkDr!||jdzz }||jz}t t|S)Nrgư>) rvrrrrrrroundr r microsecond)rar~rs rcrzTimestampField.db_valueDs =  eX.. /  x}} -%%ejj%++uyyIEuUT__456 6&&u- ??Q  %++g5 6I  (I5#$$rec\|t|tttfr|jdkDr2t ||j\}}t||j z}nd}|jr t|}ntjj|}|r|j|}|S)Nrr)r ) rvrrlongr rn r rrrrr)rar~ticks microsecondss rcr$zTimestampField.python_valueUs  EC3E!F"%eT__= u"54+D+D#DE  xx(/ ))77> , ? rec|jdkDr|t|jdz n|}|jjjj |Sr )r rYr6r%rr)rar}s rcrzTimestampField.from_timestampgsL??Q&doo??,0 zz((77==rerrrrrr)rfrgrhrr rr r r rr$rrr rrrrrrr)rmrrs00@rcrVrVs(-a11Q1>"P32%"$> (0 1D )'2 3E '. /C (0 1D *84 5F *84 5Fm2s BrVceZdZdZdZy)r>c`|,tjdtj|dSy)N!Ir)structrsocket inet_atonrars rcrzIPField.db_valueus- ?==v'7'7'<=a@ @ recZ|)tjtjd|Sy)Nr )r inet_ntoar packr s rcr$zIPField.python_valueys( ?##FKKc$:; ; reN)rfrgrhrr$r`rercr>r>ts AceZdZdZeZy)rr!N)rfrgrhr rYr r`rercrr~s J Ererc&eZdZdfd ZdZxZS)rc@tt| |i||||_yyr_)rrrr )rar rrrs rcrzBareField.__init__s) i'88  DJ recyr_r`r6s rcr zBareField.ddl_datatyper#rer_)rfrgrhrr rrs@rcrrs  rerc|eZdZeZeZ d fd ZedZ fdZ dZ dZ dZ dZd fd Zd d Zd ZxZS)r6cX|jddtt||i|| t d|}| t d| }| t d| }|dk(|_||_||_||_d|_ ||_ ||_ ||_ ||_ | |_| |_| |_y)NrvTzP"rel_model" has been deprecated in favor of "model" for ForeignKeyField objects.zO"to_field" has been deprecated in favor of "field" for ForeignKeyField objects.zK"related_name" has been deprecated in favor of "backref" for Field objects.ra)rrr6rr_is_self_referencerrdeclared_backrefbackref on_delete on_update deferrablerobject_id_namerconstraint_name)rar6r-r r r r _deferredrto_fieldr rr related_namerrrs rcrzForeignKeyField.__init__s '4( ot-t>v>  B CE   B CE  # : ;"G"'6/ ' ""$! ,".rect|jts|jjSt|jtrt jSt jSr_)rvrrr rrr:rs rcr zForeignKeyField.field_typesF$..)4>>,, ,  5"-- -&&&rect|jts|jjStt |Sr_)rvrrr rr6)rars rcr zForeignKeyField.get_modifierss4$..)4>>//1 1_d9;;rec|jxsQd|jjjd|jd|j jjS)Nfk_rf_refs_)r r6r%r'rrrs rcget_constraint_namez#ForeignKeyField.get_constraint_namesI##- JJ   ' '    NN + +(- -rec8|jj|Sr_)rr rs rcr zForeignKeyField.adapts~~##E**rect||jr t||jj}|jj |Sr_)rvrrrrrrs rcrzForeignKeyField.db_values; eT^^ ,E4>>#6#67E~~&&u--recht||jr|S|jj|Sr_)rvrrr$rs rcr$zForeignKeyField.python_values* eT^^ ,L~~**511rec<|js|jdr|n|dz|_|js6|j|_|j|k(rK|xjdz c_n5|j|k(r&td|jj d|d|j r||_t|jtr&t|j|j|_ n1|j%|jjj|_ tt|?||||j|_t#|j$r|j%||_n|j$dc|_|_|j&sd|jj z|_|r`t)||jt+||j&dvr1t)|j|j&|j-|yyy)N_idzForeignKeyField "z"."zA" specifies an object_id_name that conflicts with its field name.z%s_setz!+)rrtr rr%rr rrvrr1rrrr6rr rr r rrbackref_accessor_classrR s rcrzForeignKeyField.binds'+}}U';tD """&"2"2D ""d*##u,#  D ((- (8(8$@A A  " ""DN dnnj 1$T^^T^^DDN ^^ #!^^11==DN ot)%}E,, T** +006DL262G2G /DL$/||#ekk&6&66DL  E4..0@0F G||4' 33D9;( rec g}|js|r>|j}|jtdt t |g|jtdt |ftd|jt |jfg|jr'|jtd|jz|jr'|jtd|jz|jr'|jtd|jzt|S)Nrz FOREIGN KEY REFERENCESz ON DELETE %sz ON UPDATE %sz DEFERRABLE %s)r r r5rQrbr2r)rrr rr r rj)ra explicit_namercrs rcforeign_key_constraintz&ForeignKeyField.foreign_key_constraints   =++-D LLL!0679 :    dW %   NN dnn. / 1 2 >> LL^dnn<= > >> LL^dnn<= > ?? LL_t>? @rec|jdr td||jjjvr#|jjj|Std|z)N__z)Cannot look-up non-existant "__" methods.zNForeign-key has no attribute %s, nor is it a valid field on the related model.)rqrrr%r,rs rcrzForeignKeyField.__getattr__sk ??4  !LM M 4>>''.. .>>''..t4 4ACGHI Ire) NNNNNNNNNTNNrjr)rfrgrhrr rr rrr r r r rr$rr rrrs@rcr6r6s^'N,BF<@?CDH!/F''< - +. 2 ";H,Irer6cbeZdZeZfdZejZddZdZ e dZ xZ S)r+c ||_|j|_tjj |t t||jd|jd|jdy)Nrrr)rrr) field_kwargsrhrel_model_namer+ _unresolvedrrrr)rar% rrs rcrzDeferredForeignKey.__init__si",224&&**40  $0 =1F# =1 1 3recBt|jfi|jSr_)r+r% r$ )ramemos rc __deepcopy__zDeferredForeignKey.__deepcopy__&s!$"5"5K9J9JKKrect|fddi|j}|jr1|jjj |j |y|jjj|j |y)Nr T)r6r$ rr6r%set_primary_keyr add_field)rarr-s rc set_modelzDeferredForeignKey.set_model)sa OTOT=N=NO    JJ   , ,TYY > JJ   & &tyy% 8recttjtjd}|D]Z}|j |j jk(s+|j|tjj|\y)Nrr) rr+r& r attrgetterr% rfrhr- discard) model_cls unresolveddrs rcresolvezDeferredForeignKey.resolve1so.:: ( 3 3H =?  ;B  I$6$6$<$<$>> Y'"..66r: ;rer_) rfrgrhrCr& rrsrr) r- rlr4 rrs@rcr+r+s9%K3HL9;;rer+ceZdZdZdZdZy)r,cg|_yr_)_refsrs rcrzDeferredThroughModel.__init__<s  rec@|jj|||fyr_)r7 rrs rc set_fieldzDeferredThroughModel.set_field?s 5%./rect|jD])\}}}||_|jj||+yr_)r7 through_modelr%r, )rar; src_modelm2mfieldrs rcr- zDeferredThroughModel.set_modelBs8)- 6 %Ix%2H " OO % %dH 5 6reN)rfrgrhrr9 r- r`rercr,r,;s06rer,c eZdZdxZxZxZZdZy) MetaFieldNF)rfrgrhrrur6rrr`rercr? r? Hs+//K/'/EDKrer? c,eZdZfdZddZdZxZS)ManyToManyFieldAccessorctt| ||||j|_|j|_|j |_|j j j|j}|j j j|j}|s&td|jd|j d|s&td|jd|j d|d|_ |d|_ y)NzCannot find foreign-key to "z" on "z" model.r) rrA rr6rr; r% model_refsrsrc_fkdest_fk)rar6r-rsrc_fksdest_fksrs rcrz ManyToManyFieldAccessor.__init__Ns %t5eUDI[[ "00$$**55djjA%%++66t~~F"jj$*<*<>? ?"nnd.@.@BC Caj { rec|<|sw|jjdk7r^t||jj}t|tr.|Dcgc]"}t||j j $c}St||jjj }|2|jjrtd|jd|dt|||jj|jj|jj!|j|k(S|jScc}w)NrzCannot get many-to-many "" for unsaved instance "rc)rD r rrvr\rE rrr-_prevent_unsavedrManyToManyQueryrrSr; r6r))raryrz force_queryr rsrc_ids rcr{zManyToManyFieldAccessor.__get__^s  4;;#6#6##=!(DKK,?,?@gt,GNOGC):):;OOXt{{'<'<'A'ABF~$**"="= 59ZZ"KLL#HdDNNCT$,,-T$**%U4;;&01 3 zzPs'E c t||jjj}|2|jj rt d|jd|d|j|d}|j|dy)NzCannot set many-to-many "rI rcT)rL )clear_existing) rrD rrr-rJ rr{r)raryr~rM r9s rcr7zManyToManyFieldAccessor.__set__pso4;;#8#8#=#=> >djj9915XGH H X4 8 % -rere)rfrgrhrr{r7rrs@rcrA rA Ms# $.rerA c|eZdZeZ d dZdZd fd ZdZe dZ e jdZ dZ dZ xZS) r@c|7t|tst|s td|s|| t d||_||_||_||_||_ ||_ ||_ y)NzKUnexpected value for through_model. Expected Model or DeferredThroughModel.zFCannot specify on_delete or on_update when through_model is specified.) rvr,r$rrrr _through_model _on_delete _on_updaterJ _is_backref)rar6r r; r r prevent_unsavedrU s rcrzManyToManyField.__init__|s  $}.BC]+!ABBI$9Y=R "?@@ +## /&rect|Sr_)rA rs rc_get_descriptorzManyToManyField._get_descriptors &t,,rect|jtr|jj|||ytt |||||jst |j||j|j|jd}|jxs|jjdz|_ |jjj!|j|yy)NT)r r; r r rU rq)rvrR r,r9 rr@rrU r6r; rS rT r r%rrr, )rar6rr many_to_many_fieldrs rcrzManyToManyField.binds d))+? @    ) )%t <  ot)%}E!0 "00//// ""  <<A5;;+;+;c+ADL NN * *4<<9K L rect|j|jf|j |jffDcgc]\}}| c}}Scc}}wr_)rrU r6r)rarfr6s rc get_modelszManyToManyField.get_modelssS&,   tzz *!! !4>> 2.4'56(!U6 66s Ac\|j|j|_|jSr_)rR _create_through_modelrs rcr; zManyToManyField.through_models+    &"&"<"<">D """rec||_yr_)rR rs rcr; zManyToManyField.through_models #recj\fDcgc]}|jjc}Gfdd}jjd}jj t fi|jj t fi|d|i}jjd}t|tf|Scc}w)Nc eZdZWjjj ZWjjj ZdeWzZWjjWjjfdffZ y)3ManyToManyField._create_through_model..Metaz %s_%s_throughTN) rfrgrhr6r%rrr]r'rrT)rrratablessrcrrb sbzz''00HZZ%%,,F(5=8J))..#))..1Grer)r r Through) r\ r%r'rS rT rr6rfrrA) rar6rrLattrs klass_namerrrc s ` @@@rcr^ z%ManyToManyField._create_through_models??$S7:CjAU%++((A   $T__M IINNOC:6: IINNOC:6: D '*llCLLA J%00#BsCc|jSr_)r; rs rcget_through_modelz!ManyToManyField.get_through_models!!!re)NNNNTFrj)rfrgrhrA r rrX rr\ rr; rr^ rh rrs@rcr@r@ys[,NJNCH'$-M$6 ## $$1*"rer@c8eZdZdZdfd ZdZdZddZxZS) VirtualFieldNcl||n |j}||nd|_tt||i|yr_) field_classfield_instancerrj r)rarl rrr2rs rcrzVirtualField.__init__s:*6 D.>!@%*"&!1!1!8!8!?!@AEvOP P!@s*A) cj||_|x|_x|_|_t ||j|yr_)r6rrr rr s rcrzCompositeKey.binds/ 8<<<49t~tyy$'rer_rj)rfrgrhrrrrx r{r7rrrr#rr`rercr"r"sEH&&& B2  =P(rer"c:eZdZdZdZdZdZdZdZdZ dZ y ) _SortedFieldList_keys_itemsc g|_g|_yr_r rs rcrz_SortedFieldList.__init__ s  rec |j|Sr_)r )rars rcrz_SortedFieldList.__getitem__$s{{1~rec,t|jSr_)rur rs rcrz_SortedFieldList.__iter__'rrec|j}t|j|}t|j|}||j||vSr_)rrr rr )rarrrr s rc __contains__z_SortedFieldList.__contains__*sA NN  A & Q 't{{1Q'''recL|jj|jSr_)r rvrrs rcrvz_SortedFieldList.index0szz00rec|j}t|j|}|jj|||jj||yr_)rrr rr )rarrrs rcrz_SortedFieldList.insert3sC NN  A & !Q 1d#recZ|j|}|j|=|j|=yr_)rvr r )rarrs rcrz_SortedFieldList.remove9s'jj KK  JJsOreN) rfrgrhrrrrr rvrrr`rercr r s*#I!( 1$ rer ceZdZd!dZedZej dZdZd"dZdZ d"dZ d"d Z d"d Z d"d Z d"d Zd#d Zd#dZd"dZd"dZd"dZd"dZdZd"dZdZdZdZdZdZdZdZdZdZd"dZ dZ!d$d Z"y)%rNNc Z||_||_|jdt||_y)Nr)r6rHrrBr)rar6rrs rcrzSchemaManager.__init__Cs( !""7L9.rec|jxs |jjj}|t d|jz|S)Nz=database attribute does not appear to be set on the model: %s)rHr6r%rr8r{s rcrzSchemaManager.databaseIsL ^^ 8tzz//88 :&(ACG::(NO O rec||_yr_rrs rcrzSchemaManager.databaseQs recN|jjdi|jSr )rrJrrs rc_create_contextzSchemaManager._create_contextUs",t}},,Dt/C/CDDrec @|jdd}|j}|j|rdnd|r|jd|j|jjdg}g}|jj }|j rh|jjDcgc]}|j|j} }|jttdt| f|jD]_} |j| j!|t#| t$s4| j&rA|j| j)a|j*r|j-|j*|j-|j/||jt||z|j0Wt3|j0} | D]=} t#| t4s t7d|jdj| ?g} |j8r| jd |j:r| jd | r#|jd d j=| z|Scc}w) N temporaryFCREATE TEMPORARY TABLE CREATE TABLE r"rrztable_settings must be stringsSTRICTz WITHOUT ROWIDrr)rr rr'r6r% composite_keyrrs r,rrrjrQr) sorted_fieldsr rvr6rr rr5_create_table_option_sqltable_settingsr_r1r strict_tables without_rowidrS)rarr is_tempr7rrrH field_name pk_columnsr-r setting extra_optss rc _create_tablezSchemaManager._create_tableXs;++k51""$ -oN  KK( )  ##C( zz   ,0,<,<,H,HJ(++j188JJJ   x]);)9*)E)G H I'' CE NN599S> *%1%..""5#?#?#AB C      t// 0488AB  ;!678    *)$*=*=>N) 2!':6$%EFF C ((1 2    z00:   z00A  KK * 55 6 9Js3 Jcg}t|jjjxsi|}|s|St |j D]r\}}t |ts6t|r|jj}ntt|}|jtt||fdt|S)Nrr)rPr6r%r rrrvrar$r&rQrUrrj)rar rr r~s rcr z&SchemaManager._create_table_option_sqlsTZZ--55;WEL 1 @JCeT*E?!KK--EE OE LL3s8U"3#> ?  @ rec ^|jj|jdd|i|yNrr`)rrr rarr s rcr zSchemaManager.create_tables* 0d00FdFgFGrec |jj|jdrdnd}|r|jd|jt t |jdj|S)Nr r r r"r)r rrr'rbr_rar'r9rrHr7s rc_create_table_aszSchemaManager._create_table_assr##%88K026EG   KK( )V\*567U rec f|j||fd|i|}|jj|y)Nr)r rrr s rccreate_table_aszSchemaManager.create_table_ass2#d##JIDIDI c"rec |jj|rdndj|j}|j dr|jd}|S|j dr|jd}|S)NzDROP TABLE IF EXISTS z DROP TABLE cascade CASCADErestrictz RESTRICT)r rr'r6r)rarr r7s rc _drop_tablezSchemaManager._drop_tabless##%4/]KDJJ  ;;y !++j)C [[ $++k*C rec ^|jj|jdd|i|yr )rrr r s rcrzSchemaManager.drop_tables* .d..DDDGDErecb|j}|js8|jjdj |j S|jjdj |j }|r|jd}|r|jd}|S)NrzTRUNCATE TABLE z RESTART IDENTITYr )rr1r rr'r6)rarestart_identityr rKr7s rc_truncate_tablezSchemaManager._truncate_tables ]]  ((*W^,SS_ >""$,,->?CCDJJO ++12C ++j)C recZ|jj|j||yr_)rrr )rar r s rcr1zSchemaManager.truncate_tables" d223CWMNrec|jjjDcgc]}|j||c}Scc}wr_)r6r%fields_to_index _create_indexrarrvs rc_create_indexeszSchemaManager._create_indexessF!ZZ--==?A""5$/A AAsAc:t|trm|jjs|j d}n |j |k7r|j |}t|j tr t|}|jj|Sre) rvr9rr.rrrHrRrr r')rarvrs rcr zSchemaManager._create_indexsu eU #==22 5)$ 4($...9&e,##%))%00rech|j|D]}|jj|yN)r)r rrrarr9s rccreate_indexeszSchemaManager.create_indexess1))t)4 )E MM ! !% ( )rec|jjjDcgc]$}t|tr|j ||&c}Scc}wr_)r6r%r rvr9 _drop_indexr s rc _drop_indexeszSchemaManager._drop_indexessL!ZZ--==?-eU+  -- --s)Ac|d}|r|jjr|dz }t|jtrA|jj r+t |jj |j}nt |j}|jj|j|S)Nz DROP INDEX z IF EXISTS ) rr/rvrrSrrbrr rr')rarvrr%r&s rcr zSchemaManager._drop_indexs! DMM11  %I ellE *u||/C/C 4 4ekkBJ ,J "#Z "rech|j|D]}|jj|yr )r rrr s rc drop_indexeszSchemaManager.drop_indexess1''T'2 )E MM ! !% ( )recx|jr|jjstd|jzy)Nz@Sequences are either not supported, or are not defined for "%s".)rrr0rrrs rc_check_sequenceszSchemaManager._check_sequencess8~~T]]%<%<138::>? ?&=rec|jjjr4t|jjj|jSt|jSr_)r6r%rrbrrs rc_sequence_for_fieldz!SchemaManager._sequence_for_fieldsE ;;   # #%++++22ENNC C%..) )rec|j||jj|js=|j j dj |j|Sy)NzCREATE SEQUENCE r rrrr rr'r rs rc_create_sequencezSchemaManager._create_sequences[ e$}},,U^^<$_&W/0S11%89 ;=recb|j|}||jj|yyr_)r rrrar-seq_ctxs rccreate_sequencezSchemaManager.create_sequences/''.   MM ! !' * rec|j||jj|jr=|j j dj |j|Sy)NzDROP SEQUENCE r rs rc_drop_sequencezSchemaManager._drop_sequences[ e$ == ( ( 8$_&W-.S11%89 ; 9recb|j|}||jj|yyr_)r rrr s rc drop_sequencezSchemaManager.drop_sequence s/%%e,   MM ! !' * rec|jjdj|jjdj|j dS)Nz ALTER TABLE z ADD T)r rr'r6r rs rc_create_foreign_keyz!SchemaManager._create_foreign_keysI "(U[[!!U11$78  :recX|jj|j|yr_)rrr rs rccreate_foreign_keyz SchemaManager.create_foreign_keys d66u=>rec|jjrD|jjjD] }|j s|j |"yyr_)rr0r6r%r rr rs rccreate_sequenceszSchemaManager.create_sequencessH == " "))77 0>>((/ 0 #rec n|j|j|fi||j|yr )r r r )rar table_optionss rc create_allzSchemaManager.create_all s4 $0-0 &rec|jjrD|jjjD] }|j s|j |"yyr_)rr0r6r%r rr rs rcdrop_sequenceszSchemaManager.drop_sequences%sH == " "))77 .>>&&u- . #rec P|j|fi||r|jyyr_)rr )rarr r s rcdrop_allzSchemaManager.drop_all+s)((     ! rer_rjr]r-)#rfrgrhrrrrr r r r r r r rr r1r r r r r r r r r r r r r r r r r r r`rercrNrNBs/ __E(T H #F OA 1)- ")? * ;+ ;+ :?0 ' . "rerNc eZdZ ddZdZddZdZdZdZdZ e d Z e jd Z e jd Z e d Zejd Ze dZdZdZddZdZdZdZdZdZdZdZy)MetadataNc | td| }||_||_i|_i|_i|_t |_g|_g|_ i|_ i|_ i|_ i|_ g|_|jj!|_| |_||_|s-|j$r|j%|n|j)}||_d|_|r t/|ng|_||_||_||_dx|_|_||_| |_| |_ ||_!||_"||_#i|_$i|_%tMjNt.|_(tMjNt.|_)i|_*| xsi|_+|jYD]\}}t[|||t]|j_|_0g|_1y)NzC"db_table" has been deprecated in favor of "table_name" for Models.)2rr6rr,rcombinedr _sorted_field_listr sorted_field_namesr_default_by_name _default_dict_default_callables_default_callable_listrfrhrr\r1make_table_namer'rr\rTrrrr r only_save_dirty depends_onr r r r refsbackrefsr defaultdictrC model_backrefs manytomanyr rrrCkeys_additional_keysrQ )rar6rr'rTrrrr r r db_tabler\r r r r r1rr r~s rcrzMetadata.__init__2s   6 7!J      "2"4"$ ""$&(#NN((* ,"4!00--e4#335 % (/tG}R & &377T0.$,**"  %11$7)55d;}"  ,,. &JC D#u % & #FKKM 2rec|jr!tjdd|jSt |j j S)Nr/rf)r1r0rfrrjr6rfrs rcr zMetadata.make_table_nameus7  " "66)S$))4 4tzz2233recH|s |s tdd|jdfg}t}tj|f}|r |j n |j }|r|}||vr|j||rQ|jjD]4\} } |j| | df|j| j6|rQ|jjD]4\} } |j| | df|j| j6|r|S)Nz)One of `refs` or `backrefs` must be True.FT) rr6rCrdequerpopleftrr rrr%r ) rar r depth_firstrrqueuercurrfkr6s rc model_graphzMetadata.model_graphzsHHI I D)*u!!4'*)u}}8Dt|X HHTN!%!2.IBLL"eU!34LL-.!%!4!4!6.IBLL"eT!23LL-. rec |j}||j|<|j|j||j|j j |<|j j|jj|yr_)rr rC rr6r%r r rar-rels rcadd_refzMetadata.add_refsioo % ##E*$(JJ 5!   ,33E:rec|j}|j|=|j|j||jj |=|jj |jj|yr_)rr rC rr%r r r6r s rc remove_refzMetadata.remove_refsaoo IIe  ##E* II  u %   ,33E:rec6||j|j<yr_r rrs rcadd_manytomanyzMetadata.add_manytomanys&+ #rec2|j|j=yr_r rs rcremove_manytomanyzMetadata.remove_manytomanys OOEJJ 'rec|j_t|j|jDcgc]}|jc}|j |j |j|_|jScc}w)N)rrrH)rrSr'r rrr6rrs rcr&zMetadata.tables` ;; 040B0BCu""C{{zz-- )DK {{ DsA8 ctd)NzCannot set the "table".rrs rcr&zMetadata.tables677recd|_yr_)rrs rcr&zMetadata.tablerrec|jSr_)rrs rcrzMetadata.schemas ||rec||_|`yr_)rr&rs rcrzMetadata.schemas Jrec|jr t|j|jSt|jSr_)rrbr'rs rcrbzMetadata.entitys- <<$,,8 8$//* *rect|j|_|jDcgc]}|jc}|_ycc}wr_)r\r r rr rv s rc_update_sorted_fieldszMetadata._update_sorted_fieldss5!$"9"9:373E3E"Fa166"F"FsAct|tr |j}|jj |g}|j j |g}||fSr_)rv ModelAliasr6rC rr )rar6 forwardrefsr s rcget_rel_for_modelzMetadata.get_rel_for_modelsN eZ (KKEoo))%4 &&**5"5X&&recz||jvr|j|n,||jvr|j|j|t |t sp|`|j|j||||j|j<||j|j<||j|j<||j|j<|jj||j|j |j |j"|<t%|j rK|j |j&|<|j(j+|j|j fnZ|j |j,|<|j |j.|j<n|j|j||t |t0r|j3|yt |t4r|jr|j7|yyyr_)r, remove_fieldr r rvr? r&rr6rrrr r rr rurrr r rr r r6r r@r )rar r-r s rcr, zMetadata.add_fields  $   j ) 4?? *  " "4??:#> ?%+ JJtzz:} =&+DKK #.3DLL** +(-DMM%** %/4DMM%++ ,  # # * *5 1  & & (}}(',}} e$U]]+5:]]D++E2//66 8= 8GH16 D&&u-8= D))%**5 JJtzz:} = e_ - LL   /EJJ    &5? /rec||jvry|`|jj|}|j|j=|j |= |j |j=|jj||j|j|j|=|jj|drCt|jD]*\}\}}||k(s|jj|nDnB|jj|d|j j|j"dt%|t&r|j)|yy#t $rYwxYwr_)r,r&rrrr rr rr rurr rr r r rrvr6r )rar originalrrrfs rcr zMetadata.remove_fieldsO T[[ (  J;;??:. LL-- . MM* %  h223 &&x0 ""$    ' h'&&**8T:$-d.I.I$JLAyaz)3377: ""&&x6%%))(--> h 0 OOH % 1!   sE11 E>=E>ct|t|_|j||||_|j xst |j|_yr_)rvr"r r, rr rYr)rarr-s rcr+ zMetadata.set_primary_keysI'|< tU#    !   rec|jr:t|jjDcgc]}|j|c}S|jdur |jfSdScc}w)NFr`)r r]rrs r,)rar s rcrzMetadata.get_primary_keyssp   ,0,<,<,H,HJ(++j1JK K+/*:*:%*GD$$& OR OJsA$cv|jj}|jD]\}}|||<|Sr_)r rLr )raddr rus rcget_default_dictzMetadata.get_default_dict$s@  " " ' ' )#'#>#> ' J$YBzN ' rec g}|jD]e}|jr|js |js)|j t |j |f|j|jg|jD]}t|tr|j |%t|ttfs<|\}}g}|D]`}t|tr|j |j|2t|tr|j |Ttd|z|j t |j |||S)N)rrz;Expected either a field name or a subclass of Node. Got: %s)r)r rrvrrrBr6r*rTrvrar\r]r1r r)rarTrw index_obj index_partsrr,rVs rcr zMetadata.fields_to_index*s-## ?A}}ww!((z$**qd18801  >?  ? NI)T*y)Ie}5&/# V'MD!$ 3 dmmD&9:#D$/ d+(*EGK*LMM Mz$**fVLM N rec||_||jj_|`t |t r|jd}|jD] }|| yr_) rr6rrHr&rvrLrrQ )rarhooks rc set_databasezMetadata.set_databaseEsT  '/ $ J h &8<<+?HNN D N rec||_|`yr_)r'r&)rar's rcset_table_namezMetadata.set_table_nameRs$ Jre)NNNNNNFNNNNNFFNT)TTTrj)rfrgrhrr r r r r r rr&rdeleterrrbr r r, r r+ rr" r r( r* r`rercr r 1sFJ<@AEDHEI$( AF4 2;;,( \\88 ]] ]]++ G'!'F&:"P 6 rer c(eZdZgZfdZdZxZS)SubclassAwareMetadatacjtt| |g|i||jj |yr_)rr- rr rrar6rrrs rcrzSubclassAwareMetadata.__init__Zs/ #T3EKDKFK 5!rec6|jD] }|| yr_)r )rar5r6s rc map_modelsz SubclassAwareMetadata.map_models^s[[ E uI re)rfrgrhr rr1 rrs@rcr- r- Ws F"rer- c eZdZy)r.Nrr`rercr.r.crrer.cleZdZegdZfdZdZdZdZdZ dZ dZ d Z d Z e Zd ZxZS) ModelBase) rrrTrr rr\r r r1r r c ||tk(s|djtk(rtt|||fi|Si}|j dd}|r9|j jD]\}}|jdr|||<t|dd} dx} } |D]} t| ds| j} | t| j} j| jz}| j D]}||vs||vs | j |||< |j!d| j"|j!d| j$| j jD]J\}}||vr t'|t(s|j*jr3t|j*||<L|j ddxsi}|j-d t.}|j-d t0}tt|||fi|dx__|fi|_ |fi|_g}j jD]V\}}t'|t8s|jr| rt;d |z|jr||} } D|j=||fX| '| d ur | | | j>fn tAd f\} } n&d } n#t'| tBrd} dj_"| d urjjG| | |D]!\}}jjI||#tdrd|vrtKdfddjz}djLi}tO|tPf|}|_(jStTjWS)Nrrrfrr%rrschema_optionsmodel_metadata_classschema_manager_classzover-determined primary key %s.Fr#__composite_key__Tr rcFdjd|jdS)Nrrr)rfr )rars rcrxz#ModelBase.__new__..s dlln3.rez%sDoesNotExistrg),rGrfrr4 rrrYrrqrrr%rr inheritabler rrrrvrr-rr rNrrrr2rrrrr"r r+ r, rrgrr.validate_modelr+r4 )rrbasesre r meta_optionsrHrrVrpk_name parent_pkr base_metaall_inheritablesoptsrSchemar,r r~r-exc_name exc_attrsexception_classrs` rcrzModelBase.__new__ls : q!2!2j!@C0dE5;39; ; yy&  ++- (1||C(&'LO (T=$ /"")  1A1g&I $Y%:%:; !oo 0J0JJO'' <'A\,A&/&8&8&;LO <  # #J 0B0B C  # #Hi.>.> ?****, 1A:xa/8K8K'0E!H  1 1(  !148>B 6A!!"8-HIs+CueNvN%)) s{- - S*E* ,,,,. 0JC%'$$$%F%MNN&&"'BMM3,/ 0 :%"+"7!*9>>: ) T2G L ))G&*CII # U? II % %gr 2! -KD% II  e , - 3 "z'> C&. /$cll2!3>>2 x,)D* ""3' rec d|jzS)Nz )rfrs rcrzModelBase.__repr__st}},,rec4t|jSr_)rurrs rcrzModelBase.__iter__sDKKM""rec$|j|Sr_) get_by_idrar s rcrzModelBase.__getitem__s~~c""rec(|j||yr_) set_by_id)rar r~s rcrzModelBase.__setitem__s sE"rec&|j|yr_) delete_by_idrL s rcr zModelBase.__delitem__s #recR |j|y#|j$rYywxYwr)rK r.rL s rcr zModelBase.__contains__s2  NN3     s &&c>|jjSr_)rrrs rcrzModelBase.__len__s{{}""$$recyr>r`rs rc__bool__zModelBase.__bool__strecL|j|jjSr_)r'r%r&r6s rcr#zModelBase.__sql__swwtzz''((re)rfrgrhrCr; rrrrrr r rrT __nonzero__r#rrs@rcr4 r4 fsI:;K Yv-###%#K)rer4 ceZdZdZdZdZy)r%c<||_||_||_||_yr_)r rr!r")rar rr!r"s rcrz_BoundModelsContext.__init__s   "*rec 4g|_|jD]w}|jj|jj|j |j|j |jt|jy|jSN)rM) rr rr%rrr!r"rC)rar6s rcrz_BoundModelsContext.__enter__sx [[ 2E    & &u{{';'; < JJt}}dnnd6H6H #DKK 0  2 2{{rec t|j|jD]A\}}|j||j|j t |jCyrZ )r} r rrr!r"rC)rarrrr6rKs rcrz_BoundModelsContext.__exit__sST[[$*=*=> 2IE2 JJr4>>4+=+= #DKK 0  2 2reN)rfrgrhrrrr`rercr%r%s+ 2rer%ceZdZdZdZedZed1dZedZedZ ed1dZ ed1d Z ed1d Z ed Z ed1d Zed1d ZedZedZedZed1dZed1dZedZedZedZedZedZedZedZedZdZeeZej@dZdZ!dZ"dZ#d2d Z$d!Z%ed"Z&d3d#Z'd4d$Z(d%Z)d&Z*d'Z+d(Z,ed5d)Z-ed6d*Z.ed+Z/ed7d,Z0ed6d-Z1ed.Z2ed/Z3ed0Z4y)8rAc|jddri|_n|jj|_t |j|_i|_|D]}t||||y)N__no_default__)rrr%r" rCrrr)rarrrs rcrzModel.__init__sb ::& -DM JJ779DM$--(   (A D!VAY ' (rec`|jjdurt|jSdS)NFzn/a)r%rrU_pkrs rcr z Model.__str__s& $ 6 6e Cs488}NNrecyr_r`rs rcr< zModel.validate_model s reNct||Sr_)r )rrs rcrz Model.aliass#u%%recT| }|s|jj}t|||S)N) is_default)r%r ModelSelect)rr,re s rcrz Model.selects*Z YY,,F3:>>rec i}|r]t|ts|rtd|z|S|D]6} t|tr|n|jj |}||||<8|r'|D]"} ||||jj |<$|S#t $r't|tstd|d|d|}YdwxYw#t $r|||t||<YwwxYw)Nz/Data cannot be mixed with keyword arguments: %szUnrecognized field name: "z" in rR) rvrrr2r%r rrar)rr r normalizedr r-s rc_normalize_datazModel._normalize_datas dD)$&57;&<==  . $.sE$:S"%))"4"4S"9%)I 5! .  @@:@+Jsyy11#67 @   %c40(,/*788E   @4:3KJwsC01@s#+B *C -B=<B=CCc :t||j||Sr_) ModelUpdateri )r _Model__datars rcrz Model.update53 3 3FF CDDrec :t||j||Sr_) ModelInsertri rrl rs rcrz Model.insert9rm rect|||Sr)ro rrGr,s rc insert_manyzModel.insert_many=s3tV<>3s%:c F|j|fi|jdSrrrp s rcrz Model.replaceGs#szz&+F+77 BBrecF|j||jdS)N)rGr,r )rs rrr s rc replace_manyzModel.replace_manyKs"$v6Y' )rect|||Sr_)ModelRaw)rr'rLs rcrawz Model.rawQsS&))rect|Sr_) ModelDeleterb s rcrz Model.deleteUs 3rec :|di|}|jd|S)NT) force_insertr`)save)rr9insts rccreatez Model.createYs |U| t $ rec| t||}n|g}t|jj}|jjr1|jj j }|j||jjjr3|jj dur|jj}nd}|Dcgc]}|jj|}}g|D]I} t| trj| j/j| j K|D]s} fd| D} |j!| |j#} |s2| 5t%| | D]0\} }t%|| D]\}}t'||j |2uycc}w)NFc3\K|]}Dcgc]}t||c} ycc}wwr_)r)rmr6rw re s rcroz$Model.bulk_create..zs.)277AgeQ'7)7s ,' ,)r,)r r\r%r r rrrrr rr,rvr6rr rs rr} r)r model_list batch_sizebatchesrs r? pk_fieldsr r,r-batchrr r*r6pk_fieldobj_idre s @rc bulk_createzModel.bulk_create_s  !j*5G!lG399778 99 # #ii++00G   w ' 99   . . 99  - 224IIALM:#))"":.MM )E%1 U112 UZZ(  )  >E)"')E//%/7??ACS_"%c5/>JC.1)S.A>*6x}}f=>>  >Ns F>ct|jjtr t d|Dcgc]-}t|t r|jj |n|/}}|Dcgc]*}t|tr |jn |j,}}| t||}n|g}d}|jj} |D]} | D cgc]} | j} } i} t||D]x\}}g}| D][} t| |}t|ts|j|}|j!| j| j|f]t#| |}|| |<z||j%| j'|jjj)| j+z }|Scc}wcc}wcc} w)NzGbulk_update() is not supported for models with a composite primary key.r)rvr%rr"rr1r,r6r rr r` r} rrarrrrr)rr)rr r,r rw r-re r rxrr r6id_listrrrr~cases rc bulk_updatezModel.bulk_updates cii++\ :89 9 "#*4Az)B#))""1%I##/56%**4E?)K%%jj!66  !j*5G!lG  YY " " E.34Uuyy4G4F"651 % t"BE#E40E%eT2 %u 5LL"++eii"8%!@A B B $u  % #**V$5..227;<79 A  =#65s2G,/G Gct|dSr )NoopModelSelectrb s rcnoopz Model.noopssB''rec&|j}|r\t|dk(r?t|dtr,|j |j j |dk(}n|j|}|r|jdi|}|jS)Nrrr`) rrrvrr)r%rr*r)rr9filterssqs rcrz Model.getsz ZZ\ 5zQ:eAh#<XXcii33uQx?@RXXu% %W%BvvxrecF |j|i|S#t$rYywxYwr_)rr.)rr9r s rc get_or_nonezModel.get_or_nones/ 377E-W- -   s   cR|j|jj|k(Sr_)rr%rrrs rcrK zModel.get_by_ids wwsyy,,233rec||j|jS|j|j|jj |k(jSr_)rrrr)r%r)rr r~s rcrN zModel.set_by_idsP ;::e$,,. .JJu%U39900C78 Drec|jj|jj|k(j Sr_)rr)r%rrr s rcrP zModel.delete_by_ids1zz|!!#))"7"72"=>FFHHrec J|jdi}|j}|jD]#\}}|jt |||k(}% |j dfS#|j $r |r|j||jjj5|jdi|dfcdddcYS#1swYnxYwYy#t$r4} |j dfcYd}~cYS#|j $r|wxYwd}~wwxYwwxYw)NrFTr`) rrrr)rrr.rr%rrr r;)rrrr9r-r~excs rc get_or_createzModel.get_or_creates::j"- "LLN >LE5KKU 3u <=E > 99;% %  MM(+YY''..06%3:://56666!  99;--''I  s`A,,D"<7C!3C C!D"C C!! D+D<D=D"DDDD"cB|jj|i|Sr_)rr*)rdq_nodesr s rcr*z Model.filters "szz|""H888rec|jjdur*t||jjjSyre)r%rrr rs rcget_idz Model.get_ids8 :: ! ! .4!7!7!A!AB B /recZt||jjj|yr_)rr%rrrs rcr` z Model._pksdjj,,1159recH|jj|jk(Sr_)r%rr` rs rc_pk_exprzModel._pk_exprszz%%11reci}|D]V}t|tr|jj|}|j|vs;||j||j<X|Sr_)rvr1r%r r)ra field_dictonlynew_datar-s rc _prune_fieldszModel._prune_fieldss^ >E%, ++E2zzZ''1%**'=$  > rec |jjD]f}|j}||vxr&||duxr|jj |du}|s>t ||t |||j|||<hyr_)r%r rrrrrr)rar foreign_key_field foreign_key conditionss rc_populate_unsaved_relationsz!Model._populate_unsaved_relationss!% E +00Kz):;'4/:   -T9 k74+EF*.-- *D ;' Erec|jj}|jjdur#|jj}|j}ndx}}||j ||}nQ|jj r;|s9|j ||j}|s|jjy|j|d}|jjr||j|jd||s|jjr$|jD]}|j|dn|j|jd|s t!d|j"di|j%|j'j)}n|g|j*di|j)}|e|jjs|M||_|jj-|jn |j*di|j)|xjt/|zc_|S)NFrzno data to save!r`)rrLr%rr` r r dirty_fieldsrr_ r r rrr rs rrr)r rrr0 rC) rar r r r pk_valuerG pk_part_namers rcr z Model.saves]]'') :: ! ! .zz--HxxH"& &Hx  ++J=J ZZ ' ' ++J8I8IJJ !!# ((4 :: $ $)9 NN8==$ /   zz''$,$8$87LNN<67x}}d3 !3444;;,,224==?CKKMD  !*z*224B~4::#<#<#+#3 ##HMM2 DKK %* % - - / s:&  rec,t|jSr_)rYrrs rcis_dirtyzModel.is_dirty:rrec|jjDcgc]}|j|jvs|c}Scc}wr_)r%r rrrv s rcr zModel.dirty_fields=s/::33Maqvv7LMMMs>>c#Kt|}t|dfg}i}t}|r$|j\}}||vr|j||jj j D]\} } | |us|'| |j| jjk(} n| |z} | j| jjj| } | jr|s{|j| gj| | f| jr|r|j| |j| | f|r$t!t#|D]"} |j%| dD] \}}||f $ywr )rrCrrr%r rrrrrrr)rrrrr r)rasearch_nullableexclude_null_children model_classrqueriesrryr9r rr;rrr qs rc dependencieszModel.dependenciesAsi4j t*d#$u 99;LE5} HHUO!&!5!5!;!;!= < I +u}$-- 0A0A"BBD;D%,,Y__-H-HI"U4[ww/&&y"5<|s<|jdi|jdij |j \|jj |j t|jj |jj S)N)r r`) r r6rrrr)rrrr )rardelete_nullabler9r r6s rcdelete_instancezModel.delete_instance`s !..EX.Y : r77? ELL3BGGT?399%@HHJLLN((/779  : Dz  "((9AACCrecDt|j|jfSr_)rrr` rs rcrzModel.__hash__jsT^^TXX.//rec|j|jk(xr)|jduxr|j|jk(Sr_)rr` rs rcrz Model.__eq__ms= OOt~~ - " HHD  " HH ! #rec||k( Sr_r`rs rcrz Model.__ne__ss5=  rec|jjG|jjr1 |jt ||jjS|jt t||jjj|jjjS#t t f$rYswxYw)Nr,) rr-rr'rYrrrr%rrrr6s rcr#z Model.__sql__vs 99   *syy/C/C wwuTSYY5H5HIJJwwuWT4::+A+A+F+FG'+zz'='='F'FHI Iz*  s/CCCc>|jj|u}|jj||s|re| t}|jj ||}|D]7\}}} ||vs |jj||j |9|S)N)r r )r%rr( rCr r) rrr!r"rM is_differentGrfr6 is_backrefs rcrz Model.bindsyy))9  x(  5 %%9}%MA() ($5*(KK,,X6LL' (rec t|f|||Sr_r$)rrr!r"s rcrzModel.bind_ctxs"C68Y NNrec|j}|jjj|jj |j Sr_)r%rrrr&rfr)rMs rcrzModel.table_existss6 II{{##001A1A188LLrec \d|vrtd|jd}|r1|jjjs|j ry|j jr&|jd|j j|jj|fi|y)N fail_silentlyzU"fail_silently" has been deprecated in favor of "safe" for the create_table() method.r ) rrrrr.rr%r rr )rrr s rcr zModel.create_tables g % C D;;/D  ,,>>!  99     {CII,?,? @ t/w/rec |r1|jjjs|jsy|jj r&|j d|jj |jj||fi|y)Nr )rrr/rr%r rr )rrr r s rcrzModel.drop_tablesh  ,,<<##%  99     {CII,?,? @ T>=W=rec <|jjdi|yr )rr1)rr s rcr1zModel.truncate_tables" ""-W-rect||fi|Sr_)rBrr,rs rcrvz Model.indexs#v000rect|dk(rBt|dttfr)|jj j |dy|jj j t||fi|yrF)rrvrQr9r%rTrrBr s rc add_indexzModel.add_indexs_ v;!  6!9sEl C II   $ $VAY / II   $ $ZV%Fv%F Grer_)FNrc r])TTNr-rj)5rfrgrhrr  classmethodr< rrri rrrs ru rrx r{ rr r r r rr rK rN rP r r*r rr` rr r r r r r r r rrrr#rrrr rr1rvr r`rercrArAs (O  &&?? 4EEEE==?? CC)) **    > >D$$L((   44DDII(99C 6 CZZ::2 E)V!NN>D0# !I(  OOMM 0 0>>..11HHrerAc<eZdZdZd dZdZdZdZdZdZ d Z y) r z3Provide a separate reference to a model in a query.Nc@||jd<||jd<y)Nr6r)rY)rar6rs rcrzModelAlias.__init__s!& g!& grec|jf|jjzD]6} |j|}t|tr|j d|cS8t|j|}t|tr2tj|||j|<|j|S|S#t $rYwxYwr_) r6rVrYrvrr{rrr2 FieldAliasr )rarr r model_attrs rcrzModelAlias.__getattr__s **!5!55 A jj&c?3;;tT224 TZZ. j% (","3"3D*"EDMM$ ==& &  s0B88 CCctd)Nz'Cannot set attributes on model aliases.rrs rcrzModelAlias.__setattr__sFGGrec||jjjDcgc]}t||c}Scc}wr_)r6r%r r)rarxs rcget_field_aliaseszModelAlias.get_field_aliasess-*.***:*:*M*MNQa NNNs9c>|s|j}t||Sr_)r rf )ra selections rcrzModelAlias.selects ..0I4++rec &|jdi|Sr )r6)rars rcrzModelAlias.__call__stzz#F##rec|jtk(r|j|jS|jr|j|j |<|jt k(rc|j|jjjjdjt|j |S|jt|j |Sr) rrBr'r6rrr@r%rbrrbr6s rcr#zModelAlias.__sql__s 99 $774::& & ::&*jjC  d # 99 $S))001WV_S 1 1$ 789 ; 776#"3"3D"9:; ;rer_) rfrgrhrrrrr rrr#r`rercr r s*='&HO, $Gdd|t|}|||S)Nc eZdZy)&FieldAlias.create.._FieldAliasNrr`rerc _FieldAliasr s rer )r)rrMr-r s rcr zFieldAlias.creates! #tE{ 65))recBt|j|jSr_)r rMr-rs rcrZzFieldAlias.clones$++tzz22rec8|jj|Sr_)r-r rs rcr zFieldAlias.adapts4::#3#3E#::rec8|jj|Sr_)r-r$rs rcr$zFieldAlias.python_values$***A*A%*H#Hrec8|jj|Sr_)r-rrs rcrzFieldAlias.db_valuesdjj&9&9%&@@recP|dk(r |jSt|j|S)Nr6)rMrr-rs rcrzFieldAlias.__getattr__s""got{{L74::t3LLrect|jt|j|jjSr_)r'r!rMr-rr6s rcr#zFieldAlias.__sql__s&wwvdkk4::+A+ABCCreN) rfrgrhrr r rZr r$rrr#r`rercr r s7 ** 3;H@MDrer cttgfdd}t|D] }| S)NcR|vr|vrj||jjjD]\}}|jr||jj r#|jj D] }| j |yyyr_)rr%r rrr r)r6r r dependencydfsr r.rs rcr zsort_models..dfss F?uD0 HHUO*/++*:*:*@*@*B #& Y#++ N  # {{%%"'++"8"8$J O$ OOE " 1?recZ|jj|jjfSr_)r%rr')rs rcrxzsort_models..,sqww||QWW%7%78rer)rCr)r r%rr r.rs` @@@rcr r sF [F 5DH # 9E F & A OrecheZdZejZfdZejddZ dZ dZ xZ S)_ModelQueryHelperctt| |i||js&|jj j |_yyr_)rr rrHr6r%rrs rcrz_ModelQueryHelper.__init__5s; /@@~~!ZZ--66DNrecdtj|_||j|_y||_yr_)rr@rr6rrs rcr5z_ModelQueryHelper.objects:s%*5*=DJJ;recP|jxs |j}|tjk(r|j |S|tj k(r!t ||j|jS|tjk(r!t||j|jS|tjk(r!t||j|jS|tjk(r,t||j|j|jSt!d|zr)rrrrA_get_model_cursor_wrapperr>ModelDictCursorWrapperr6rar=ModelTupleCursorWrapperr?ModelNamedTupleCursorWrapperr@ModelObjectCursorWrapperrrrs rcrz%_ModelQueryHelper._get_cursor_wrapper?s>>:T%:%: syy 11&9 9  !)&$**dooN N  "*64::tO O  (/ 04A A  (+FDJJ,0OOT=N=NP P;hFG GrecFt||jg|jSr_)r r6rs rcr z+_ModelQueryHelper._get_model_cursor_wrapperPs' B KKrer_) rfrgrhrrArrrarLr5rr rrs@rcr r 2s8yy7  YYOOH"Lrer c$eZdZfdZdZxZS)rz c N||_d|_tt|d||d|y)Nr`r)r6rarrz r)rar6r'rLrrs rcrzModelRaw.__init__Us*  h&H3vHHrec |jdS#t$rA|j\}}|jj |jd|d|wxYw)Nr. instance matching query does not exist: SQL: Params: )rr\r'r6r.rs rcrz ModelRaw.getZsc E<<>!$ $ E((*KC**))+/::sF+DE E Es A A)rfrgrhrrrrs@rcrz rz TsI Ererz cteZdZdZeZdZeZdZeZdZ e Z dZ dZ d dZ d d Zej d Zy) BaseModelSelectc2t|j|d|S)Nr:ModelCompoundSelectQueryr6rs rcr=zBaseModelSelect.union_alle' D+sKKrec2t|j|d|S)Nr;r rs rcr@zBaseModelSelect.unionis' D'3GGrec2t|j|d|S)Nr<r rs rcr?zBaseModelSelect.intersectmr rec2t|j|d|S)Nr=r rs rcr@zBaseModelSelect.except_qs' D(CHHrecd|js|jt|jSr_)rrrurs rcrzBaseModelSelect.__iter__us%## LLND(())rec t|g|i|Sr_)rI)ra subqueriesrs rcrIzBaseModelSelect.prefetchzs4z4V44reNc|jdd}d|_ |j|dS#t$rA|j \}}|j j |j d|d|wxYw)Nrrr r )r*rrr\r'r6r.)rarrZr'rLs rcrzBaseModelSelect.get}s~ a# $ F==*1- - F))+KC**))+0;;V+EF F Fs /A A9cf |j|S#|jj$rYywxYw)N)r)rr6r.rs rcr zBaseModelSelect.get_or_nones4 88X8. .zz&&   s 00c hg}|D]}t|r&|j|jj4t |t rK|j s td|j|j Dcgc]}t||c}|j|||_ ycc}wr) r$r5r%r rvrSrrrrrRrs rcr{zBaseModelSelect.group_bys (F : :;FE*$&12217!B%-")!:!BC' (" !Bs9B/ r_)rfrgrhr=rr@rr?rr@rrrIrr rarLr{r`rercr r ds[LGH FLGIG* 5 F  YY""rer c$eZdZfdZdZxZS)r c:||_tt||i|yr_)r6rr rr/ s rcrz!ModelCompoundSelectQuery.__init__s  &6GGrec8|jj|Sr_)rr rs rcr z2ModelCompoundSelectQuery._get_model_cursor_wrappersxx11&99re)rfrgrhrr rrs@rcr r sH:rer c g}|D]}t|r&|j|jj4t |t r |j|j dt |tr@|jr4|j|jDcgc]}t||c}|j||Scc}wr_) r$r5r%r rvr r rSrrr)fields_or_modelsr,fmrs rc_normalize_model_selectr s F B< MM"((00 1 J ' MM"..0 1 E "r{{ MMr{{C72s+C D MM"  MDsC ceZdZdfd ZfdZfdZfdZddZdZdZ dd Z e je jdddfd Zdd Ze jddfd Zd ZddZdZdZddZddZxZS)rf c~|x|_|_i|_||_t |}t t ||g|yr_)r6 _join_ctx_joins _is_defaultr rrf r)rar6r re r,rs rcrzModelSelect.__init__s>&++ T^ %()9: k4)5'6:rec`tt| }t|j|_|Sr_)rrf rZrr rs rcrZzModelSelect.clones'k4.0ELL)  rech|s |js"d|_t|}tt||S|Sre)r r rrf r)rar r,rs rcrzModelSelect.selects8 4#3#3$D ,-=>Fd2F; ; recHd|_t|}tt||Sre)r r rrf r)rarr,rs rcrzModelSelect.select_extends' (1[$5v>>reNc>||j|_|S||_|Sr_)r6r r6s rcswitchzModelSelect.switchs$'*{ 9< rect|r|dfSt|tr|jr|jdfSt|tr|j dfSt|t r|j dfSy)NTFre)r$rvrSrr r6rf )rar s rc _get_modelzModelSelect._get_modelsg C=9  U # ::u$ $ Z (99e# # [ )99e# #rec t|t}|r |xs |j}|j}|j |\}}|j |\}} |r|r||_|} |r| st|t r||j|ur$|jj|j} nG|j|ur$|jj|j} ntd|d|d|dd}nt|tr|} d}nd} |j||| |\} } ||rdnd}| rdnd}| r7t|t| |}t|t| j|}n6t|t| |}t|t| j|}||k(}|s(| | s | j}n|jj}no|rm| k|| j k(r\| sZt#d|d| d t|t$r8t&} |xs |j}|s t|t(r|xs |j*}|| fS) Nz"on" clause Column z does not belong to z or rRrrzCannot assign join alias to "zF", as this attribute is the object_id_name for the foreign-key field "r)rvrGrrr$ r r!rMr%rrrr2_generate_on_clauserrr rrrrSrf)rar rrron_aliasr< src_is_model dest_model dest_is_modelrr fk_fieldr src_attr dest_attrrrs rc_normalize_joinzModelSelect._normalize_joins3b%( $299DB#'//#"6 <$(OOD$9! M !DN$K!] 2v8N99#(66rww?HYY$&)//77@H(*,i*EFFB&#'#;#;:x$5 Hjz%16}&3F !$)(DEC!#wx/A/A8'LMC!#wx'BCC!$0B0BI(NOCSj' #==D%++00Dh2H333J =A8"MNNf %K&4;;DJtU3,t}}D+&&recV|j}dx}}||jvr|j|}n||jvr|j|}d}|s|ytd|d|d|At |t r |j n|}|D cgc]} | |us|r| j|ur| }} t|dk(r|d|fS|B|D]+} | j|jjk(s'| |fcStd |d|d d}t |tr|j|j} } t|} t | tr(t | t r | j n| }|| vr|}|dfSt | tr$t | t r | j n| }|| vr|}|dfScc} w) NFTrez#Unable to find foreign key between z and z,. Please specify an explicit join condition.rrz"More than one foreign key between z*. Please specify which you are joining on.)r%rC r rrvr r-rrrr rrrCr2)rar rr rrHr rrrw r rrfk_setlhs_frhs_fs rcr& zModelSelect._generate_on_clause"syy!&& Y 4?? "-I T(( (++D1IJ~"!4)* * !)38Z(Hhnn# $-Dqv+$)@DID y>Q Q<+ + :  *77djjoo-z>) *!4)* * b* %vvrvvC^F#u%%/Z%@ cF?$H  C'%/Z%@ cF?$HQDs F&c| |jn|}|tjk(s|tjk(rd}ny|tjk7rY|j ||||\}}}|rL|j j|g|j |j||||fn | td|js td|jj}|jjt||||y)NTz)Cannot specify on clause with cross join.r) r r?r2r:r8r. r rrrrurr)rarrrr rrrs rcrSzModelSelect.joincs # dnn  $ T5F5F(FB $** $$($8$8dB$M !Bk &&sB/ C ''t[)(LM ^HI I56 6""$ tD$ 2>?recH|j|tj|||Sr_r)rarrr rs rcrzModelSelect.left_outer_joinwsyytC>>rec,|j|||||Sr_)rS)rar rrrrs rc join_fromzModelSelect.join_fromzsyyy"c488rect|jdk(r8|js,t||j|j |jSt ||j|j |j|jSr)rrur r r6raModelCursorWrapperrs rcr z%ModelSelect._get_model_cursor_wrapper}sg t 1 $T[[+FDJJ,0OOTZZI I!&$**doo"&//4;;@ @rec |j}|jj|gD]\}}}}||k(s|cS|j|j|fd|i|j|S)Nr)r r rr" rS) ralmrmr join_kwargsjoin_ctxrrfrs rc ensure_joinzModelSelect.ensure_joinsp>>'+{{r2'>  #D![!rz  $t{{2##B=2==DDXNNrecg}g}ttf}t|jD]9\}}|j}d|vr:|j dddt vr|j dd\}}t |}n| t d}n t d}d|vr t||} n|jdD]} |jj|dD]=\} } } } t|| d} | | k(s!t| ts+| j| k(s;| }^t|| } |nt| |s{| j}|j| |j| |<||fS#YxYw)Nr! rrrr`)r6rrrr6rsplitr-rrr rrvr rrr)raqdictrjoinsfksr r~r rr piecerrrfs rcconvert_dict_to_nodez ModelSelect.convert_dict_to_nodest0 / 0JC::Ds{szz$215C**T1-R^%%3%T3/  YYt_ 5E,0KKOOD",E 5(dAq*1$t*DZ5=Zj-I-1ZZ5-@#'D! 5&-T5%9  ,J1L#-#7#7D!LL4 5 LLJ. /9 0:e|%s  E++E/ c|rE|rCttj|Dcgc]}|jc}t di|z}nm|rBttj|Dcgc]}|jc}t z}n)|rt di|t z}n|jSt j|g}g}t}|r|j}t|ts#d|jfd|jffD]\} } t| tr|j| j\} } | D])} | |vs|j!| |j#| +ttj| }| j$r t'|}t)|| ||j!| |r|r|s |j}|j} |D]t}t|t*r|j,|j.}}|}n4t|t0r$|j,|j.}}|j2}| j5} v| j7|Scc}wcc}w)Nrrr`)rtrrrZr0rCrr rCr rvr rrrE r9rrrr\rr6r6rrr-r> r))rarrrdq_noder dq_joins seen_joinsr siderD r9rB rSrr-r: r; field_objs rcr*zModelSelect.filters Fhmm-FAaggi-FG|F|$G hmm-FAaggi-FG!|$G l6lZ\1G::<    wi (U 99;DdJ/!& 1E4883DE $ eeR(#'#<# rE r*r rrrs@rcrf rf s; ?  A'F?B YY#'::$Dt@@&?.2ZZDt9@O!F1$fL7rerf ceZdZdZdZy)r c`|jjjj|Sr_)r6r%rr)r6s rcr#zNoopModelSelect.__sql__s#zz((88==rect|Sr_)rrs rcrz#NoopModelSelect._get_cursor_wrappers V$$reN)rfrgrhr#rr`rercr r s >%rer c.eZdZfdZfdZdZxZS)_ModelWriteQueryHelpercB||_tt||g|i|yr_)r6rrR rr/ s rcrz_ModelWriteQueryHelper.__init__s$  $d4ULTLVLrecg}|D]D}t|r&|j|jj4|j |Ft t ||Sr_)r$r5r%r rrrR r)rarrrrs rcrz _ModelWriteQueryHelper.returningsU #D~ TZZ556 T"  # +T>% re)rfrgrhrrrrrs@rcrR rR sME2rerR c eZdZy)rk Nrr`rercrk rk rerk cLeZdZejZfdZfdZdZdZ xZ S)ro c0tt| |i||jv|jj j U|jj j jr*|jj j|_yyyyr_) rro rrar6r%rr rrs rcrzModelInsert.__init__sw k4)4:6: ?? "tzz'7'7'@'@'Lzz((99"&**"2"2"C"C"E:(M "recj|r!|jtj|_tt||Sr_)rrrArro r)rarrs rcrzModelInsert.returnings. / YYDN[$19==recB|jjjSr_)r6r%rrs rcrzModelInsert.get_default_dataszz(((rec|jjj}|jjjr|ddS|Sr)r6r%r r )rar,s rcrzModelInsert.get_default_columns s:!!//!ZZ--<)Irero c eZdZy)r} Nrr`rercr} r} %rW rer} c8eZdZfdZdZddZdZdZxZS)rK c||_||_|jjj|_|j jj|_tt|*||fg|i|yr_) _instance _accessorrD rr _src_attrrE _dest_attrrrK r)raryaccessorr rrrs rcrzManyToManyQuery.__init__*s^!!!2277"**4499 ot-cC6KDKFKrec~t|dtr$|Dcgc]}t||jc}S|Scc}wr)rvrArrc )ramodel_or_id_listrs rc_id_listzManyToManyQuery._id_list1s: &q)5 1=MNcGC1N NOs:c|r|j|j}t|j|j}t |t rq|jt||jj}|jj|j|jg|jyt|}|sy|j!|Dcgc]0}|jj"||jj"|i2}}|jj%|jycc}w)N)r,r9)r_ ra rr` rb rvr9rrYrE rr; ru rD rr_rg rrs )rar~rO rd rM r9rel_idinsertss rcrzManyToManyQuery.add6s  JJL>>8 e[ )MMf   **,E  " " . . )9)9: / $WY 'E& #mmE24$$f  %%v/4G4  " " . .w 7 ? ? A 4s!5Ect|j|j}t|trt|j |j }|j|}|jjjj|jj|z|jj|k(zjSt|}|sy|jjjj|jj|j!|z|jj|k(zjSr_)rr` rb rvr9r6rc rra r; rr)rE rD rr_rg )rar~rM rrs rcrzManyToManyQuery.removeMs8 e[ )U[[$//:F}}V,HNN00VXU//8;..&8:;WY  !'ENN00VXU//4==3GG..&8:;WY  rect|j|j}|jjj j |jj|k(jSr_) rr` rb ra r; rr)rD r)rarM s rcr_ zManyToManyQuery.clearcsO8,,t~~,,67 rer) rfrgrhrrg rrr_ rrs@rcrK rK )sL B. ,rerK cfd}|S)NcD |S#ttf$r|cYSwxYwr_)rr)r~ conv_funcs rcvalidatez#safe_python_value..validatels, U# #:& L s  r`)ro rp s` rcsafe_python_valuerq ks Orec.eZdZfdZdZeZdZxZS)BaseModelCursorWrappercPtt| |||_|xsg|_yr_)rrs rr6r)rarr6rrs rcrzBaseModelCursorWrapper.__init__us% $d4V< m rec>|jjj}|jjj}|jj }t |jj |_g|_dg|jzx|_ }dg|jzx|_ }t|D]@\}}|dx}} |jd} | dk7r|| dzd}|jd}|jj| |j|} | j!} | j%} | r| |j|<t'| t(r=| j*r| j,||<| ||<| r| j.|j|<t'| t0r| j2r| j2||<t'| t4r| j*r| j6| j6||<L| j8sZt'| j8dt:sy| j8dj!}t'|t<r |j>d}|jA|}t'|t(stC|j,||<||vs| j*r||j,||<t'| tDs(| jF|k(s9||||<Cy#t"$r||vr||x} } nY]YwxYw)NrrRrrrr)$r6r%r r&rrrrr convertersr,rrrrrrhr\rfrvr2rbr$rrCrErr"rrarbrrrq r!rM)rar r&rrv r,rdescription_itemr orig_column dot_indexrr;rfrirTs rcrz*BaseModelCursorWrapper._initialize_columnszs::##,,   &&kk-- 001  (,v '::* $v 22 f%.{%;= 3 !C!#3A#6 6F[  S)IB A /\\&)F LL   '  );;s+ ( ((*H$/ S! $&##&*&7&7JsO"s (, DLL%D*-(2E2E"*"5"5 3D(+ %%1&*&8&8JsO^^ 4>>!3Dd(K !NN1-446E!%0${{2 ( T 2!%/*;E.s'7t'7'7'=re) rrrrrrrrr)ra attributesrs` rcrz'ModelNamedTupleCursorWrapper.initializes_   " tzz" /A   dll1o . /&11%D=reN)rfrgrhrr`rercr r s>rer c(eZdZfdZfdZxZS)r c^||_t||_tt||||yr_)rr$rr r)rarr6rrrs rcrz!ModelObjectCursorWrapper.__init__s+& -  &6vufMrectt| |}|jr0|jdddi|}|j j |S|jdi|S)Nr^ rr`)rr rr$rrr_ )rar*r rrs rcrz$ModelObjectCursorWrapper.process_rowsa-t@E =="$""| j|j | <X|jD]%\} }}}}| |vxr ||vxs| |v|j| <'g|_t1|D]\}}|j} |j|}|*t|t2r |j4} n|j} nt|t6r[|j8|j vr6t;|j=d|j8d|j8d|j8} nr|j=}t|t@r |j4} |j.j| ycc}w)Nz specifies bind-to z, but z# is not among the selected sources.)!rrCr,r6rrkey_to_constructor src_is_dest src_to_destrr rzr rvrrrrrB rrr$r column_keysrr rMrLrrrhrar!)rar- selected_srcrrrdestsr rr rrrr rfrrr;s rcrzModelCursorWrapper.initializes   "T[[2E$0"KK23 ++t||#'::tzz":!!$..1==?D$% TXX& TXX&4::% t,G59ZZ5E &1T; d5553>D++C0$$++T4g-6-89IIcNLL% &,  =C$111C=36D++C0Z03699D++C0  =#'"2"2 N CD!Q$'5L%Ndl6J7M9< 9L   S ! N"6* )IC**CKK$E eZ0,,C++CD&)99D$;$;;$&*kkmTYY &KLLiidD);;=DdF+++C    # #C () )[2sMci}g}|jjD]%\}}|d||<|j||'||j}t }t |j D]\}}|j||} |j|} ||} | |j||j|r|j|| } t| tr| | | <yt| | | |jD]f\} } }}}|| } ||}| !|||vr|j j|s8| |vr||vr|j#drR|r|| | <Zt| | |h|D]-} t| t$s| j&j)/||jS#t$rYwxYw)NT)r^ z OUTER JOIN)r rrr6rCrr rrrrv rvrrr rr rtrArr_ )rar*r5 object_listr rdefault_instanceset_keysrryrr~r rrrrjoined_instances rcrzModelCursorWrapper.process_rowJs $ 7 7 = = ? - C&d;GCL   ws| , -#4::.5!$"2"23 1HC{{3(89H\\#&FHE  S!s#,,U3(D)#( &%0 1"6:5E5E 9 1S$gys|H ")$- 4<H$T-=-=-A-A$-Gx'D,@%%l3!0$8- 92$ (H(E*%%' (tzz""3  sF33 F?>F?)rfrgrhrrrrrs@rcr8 r8 s C)J8#rer8 c0eZdZ dfd ZdZdZxZS) PrefetchQueryc |r|r?||Dcgc]}|j}}|Dcgc]}|jj}}n4||Dcgc]}|j}}|Dcgc]}|j}}t t ||}|j}t t|#|||||||Scc}wcc}wcc}wcc}wr_) r6rrrr\r} rr r) rr9r,r rel_models field_to_namer6r-foreign_key_attrsrs rcrzPrefetchQuery.__new__s %;A!B%%++!BJ!BGM$NeU__%9%9$N!$N%?E!Fe%//!FJ!F=C$DEUZZ$D!$D V->!?@M ]C0  J uN N"C$N"G$DsB3B8 B=$Cc|jrN|jD]>}|j|j}||f}||vs%t ||j||@y|j D]\}}|j|j j}||f}|j|g}|D])}t ||||jj+t ||j|yr_) r r,rrrr rrrr_ r ) raryid_mapr- identifierr attname rel_instancesr s rcpopulate_instancezPrefetchQuery.populate_instances ?? ?%..uzz: j)&=Hejj&+>  ? #'"4"4 @w%..u/C/CD j) & 3 3 )(DD'84KK%%'(%--? @rec|jD]i\}}|jj|j|}||f}|jr|||<D|j |g||j |kyr_)r rr$rr rr)raryr r-r identityr s rcstore_instancezPrefetchQuery.store_instancesv"00 -NE733H4E4Eg4NOH(#C&s !!#r*s ""8, -re)NNNNN)rfrgrhrr r rrs@rcr r sEI*.N @"-rer _PrefetchQuery)r9r,r r r r6c  t|g}t|D]`\}}t|tr|\}}nd}t|ts t |st|t r|j}|j}tt|dzD]}dx} } ||} | j} | jx} }t| t r | j} |jjj| g}|rQ|Dcgc]}t||j } }|Dcgc]"}t||j"j $}}n%|jj$j| } | s| s||us|n|rd|znd}t'd|||r|fnd}| rI|t(j*k(r[t-t.j0t3| Dcgc]\}}|| j|zc}}}|j5|}n|t(j6k(rg}t9}t3| D]H\}}|j;t| j<|j>|k(|jA|J|jCjE| j|t-t.j0|}|j;t|| d|| sg}g}| D]K}t||j"j }t||j }|j;||fM|t(j*k(rW|D](\}}|j;|| j|z*|j5t-t.j0|}n|t(j6k(rg}|D]J\}}|j;|t| j<|j>}|j;||k(L|jCjE| j|t-t.j0|}|j;t|| d|c|Scc}wcc}wcc}}w)Nrz using %sr(z-Error: unable to find foreign key for query: )rFT)#r rrvr]rr$r rr6rrr9r%rC rrrrr rrJrBrtrrr} r)r?rCrrwrrrrS)r r prefetch_type fixed_queriesrr target_modelsubquery_modelr rC r fixed last_query last_modellast_objrelsr rtgt_errrrr} select_pksr,r rr+ select_fksrs rcprefetch_add_subqueryr s5"2&'M ,FP 8 h &%- "HlL(E*x/A h +(H!%A,' FA! !C(!!$EJ$)KK /J*j1'-- !''2266z2FDBFGBw~rww7GGFJKwx):):;KK)//>>BB:Nx|x'?'3'; F$5AkL0bG 2:G"EF F#/ D  3 33hll$'SM-3 R:,,R00-34$>>$/-"4"44 U !#sm'FBKK bnn E KLNN2&'$,,.33%J%%z2hllD143  xeT!J K DF# 5#NG4E4E4J4JK "8W\\: y(34 5  3 33+1J'IxKK Z->->x-H HIJ#>>&t*DE-"4"44 +15'Ix%%h/$Z\\83G3GHFKK V 345$,,.33%J%%z2hllD143  x4!N OMFPP mHK -3sQ>&'RRc|s|S|jdtj}|rtd|zt |||}i}i}t |D]}|j }|jr7|jD](} |j| g|| j|*|j|i||} t|j|} |jD]L} |jr|j| | | s$||D]!} | j| || j #Nt!jS)Nr zUnrecognized arguments: %s)rrJrBrr rr6r,r rrrYrr9r r r\)r r rr r depsrel_mappq query_modelrr has_relationsryr s rcrIrI sB  JJ 0C0CDM 5>??)"j-HM DG}%Ehh 99]] . ""9b1 "))"- .  R(k"W[[56  EHyy!!(F3";/EC))(DODE  EE$ >rer_r`rr)@(Xbisectrr contextlibrrLr functoolsr inspectr r rrr4 r8rloggingrr0r r rmrrrrcollections.abcr ImportError pysqlite3r pysq3 pysqlite2rPsqlite_version_info psycopg2cffir rZrrrrrTpsycopg2.extrasrpg_register_uuidrpsycopgrWr;pymysqlr=MySQLdb __version____all__r\Handler getLoggerr addHandlerr unicoderRrUrSbufferr rtcallablerr\r] frozensetrCrexecrrbuiltinsrsrtr r r1rr rrr rrrregister_adapterr7 rrrrregister_converterrJrrrrfrrrrrrsrdrErrlergerlshiftr-rr?rrJrr@rBrDrFrirjrkcompilerergrGrJrPrWr$r_rcrjr r|rLr&rrrrrr#rMr1rarnrvr~rrrrr3rrrrSrrZrrCr!rrrrGrLr\rrrYrrrrrUrYr r{rbrQrrr5r[r:rnrrrjr(r)rrr1r0rWrMrrrrr rr7r9rBr5rPrrr rr9rBr2r?r8r%r'r;r<r=rDrFrKrM EXCEPTIONSrr`rarcrfrhlocalrsrurr$r8rRrGrCrrrrrrrrrrrrrr2rr:rrOrrr7rHr4r/r*r@ rr3rTrrrh r rrXrr rrr r)r(rUr rVr>rrr6r+r,r? rA r@rj r"r rNr r- r.rr4 r%rAr r r r rz r r r rf r rR rk ro r} rK rq rs r r r r r8 r r rIr`rercr s%  $')  **g.I.II #FOO 40  A,  L \#   8 $+- A!IJK))LI 3/K ?@),!1IIJKJ D 36K Xw 'F((L g((99    % %F''  GW__c2GX]]C0GX]]C0 7"8K J !  !2!24DE"""6<8""";0AB 44"IJ   !! #-113!4X!4X$;)HtH 8                 !" #$ %& '( )* +, -. /0 12 34 567> ++ ++ ;; ++ ;; ++ // . 2 46                                    ! " # $ % & ' .  "    $ &          2::232::34" $) ? 9GC9&;F&;RE0$f# )!6)!X, "K " "8.: ;,.h0fh0V:( .6DFVfB4B/8T/8d$f$NzzE 3 3882\*OY\*~9, ) F</6<~KK\PZP, "* "'F'V$0K$0N"["2k2 $6 $ 2\; 25J5*&K& & 2; 2{D34))X6z6GZG" * >CzCLdDkTk\ 6$ 6&$&.:.(,z0!'// j !   '&[& 7%7%td%d%N$y$(LIL^%,>&+>H@%*@%F{%Z{%|1%1h/-[/-d\A[\A~ -[ ->D>B%P%PP5i5 2?1*O*$ $)])+_+(M(, ,+}++}+IvI.&"$$"*(( 0)% ' )4 ' &&13 (''DF,[++46&{%%noF v$@'?88  }(}@ &S4XS4l a;a;H_#H_#J5f50@f@8-&6-&`##RIFIX $&m&,+,V. 'F ' ''D f 2v2&rJrju5l 9 996I6?i?*555> O5 O= =Y >&+|_&+R\,f\,~B-B,A)A??.EiE4 C%C,',6&#&6,#,4X6_X6v#:>,5,"C#/C#L+-*K**+;>MN+-\JZO$##$ - G     Hy   J   rgoo0 )(()s&w<-x4x/x=/ y:y  y'y3z#z"{< x  x x,xx,x%"x,$x%%x,+x,/x:9x:=yy yyyy y$#y$'y0/y03y>=y>zz zzzzzz"{?{ {{