ghddlZddlZddlZddlZddlZddlTddlmZddlmZddlmZddlm Z ddlm Z ddlm Z dd lm Z dd lm Z dd lmZdd lmZdd lmZ ddlmZmZmZmZmZmZmZmZmZmZmZdZn #e$rdZYnwxYwejddkre Z!dZ"dZ#eej$dddkrdndZ%ndZ%dZ&Gdde'Z(Gdde(Z)Gdde'Z*Gdde+Z,Gdd eZ-Gd!d"e-Z.Gd#d$e/Z0Gd%d&e0Z1Gd'd(e2Z3Gd)d*e4Z5Gd+d,e6Z7Gd-d.e7Z8Gd/d0e8Z9d1Z:e;d2e;e:ze;e:<ze;e=d3fzZ>e;d4e?d5DZ@[:[>ejAd6ZBGd7d8e8ZC dRd9ZDGd:d;e7ZEdd?eHZIer@dZJd@ZKdAZLdZMdZNdBZOdCZPdDZQdEZRdFZSdZTd@ZUdAZVdZWdZXdBZYdCZZdDZ[dEZ\dFZ]dGZ^dSdHZ_dTdIZ`GdJdKeIZadLZbdMZcdNZddOZedPZfdQZgdS)UN)*) ColumnBase)EnclosedNodeList)Entity) Expression)Insert)Node)NodeList)OP) VirtualField) merge_dict)sqlite3) backupbackup_to_fileBlobConnectionHelperregister_bloomfilterregister_hash_functionsregister_rank_functionssqlite_get_db_statussqlite_get_status TableFunctionZeroBlobTFpcxpcnalx)rr)r rc.eZdZdZdxZxZZfdZxZS) RowIDFieldTrowidc||jkr'tt|d|jdtt|j||g|RdS)Nz must be named "z".) required_name ValueErrortypesuperr!bind)selfmodelnameargs __class__s K/opt/imunify360/venv/lib64/python3.11/site-packages/playhouse/sqlite_ext.pyr(zRowIDField.bind8sm 4% % %"4jjjj$*<*<*<>?? ?$j$$UD84888888) __name__ __module__ __qualname__auto_increment column_namer+r$r( __classcell__r-s@r.r!r!4sLN)00K0$999999999r/r!ceZdZdxZxZZdS) DocIDFielddocidN)r0r1r2r4r+r$r/r.r8r8?s)00K0$r/r8ceZdZfdZxZS)AutoIncrementFieldctt||}t|t dfS)N AUTOINCREMENT)r'r<ddlr SQL)r)ctx node_listr-s r.r?zAutoIncrementField.ddlDs<,d3377<< C$8$89:::r/)r0r1r2r?r5r6s@r.r<r<Cs8;;;;;;;;;r/r<ceZdZdZdZdS) TDecimalFieldTEXTcdSNr:r)s r. get_modifierszTDecimalField.get_modifiersKsr/N)r0r1r2 field_typerIr:r/r.rDrDIsJ!!!!!r/rDceZdZdfd ZedZdZddZddZddZ ddZ dd Z d Z d Z d Zd ZdZdZdZxZS)JSONPathNcvtt|||_|pd|_dSNr:)r'rL__init___field_path)r)fieldpathr-s r.rOzJSONPath.__init__Os5 h&&((( ZR r/cVtdd|jzS)Nz$%s)ValuejoinrQrHs r.rSz JSONPath.pathTs#URWWTZ000111r/ct|ts|dkrd|z}nd|z}t||j|j|fzS)N#z[%s]z.%s) isinstanceintr&rPrQ)r)idxitems r. __getitem__zJSONPath.__getitem__XsS c3   3#::C>>r/c|st|ttfr2t|j|}||j|j|SrG)rZrarbrcrdrPrerSr)funcrhris r._json_operationzJSONPath._json_operationdsX  ww*6rt{DI>>>*.+77 7r/rG)r0r1r2rOpropertyrSr^rjrnrqrsrvr{r~rrrrrr5r6s@r.rLrLNsC      22X2===???? 3333 DDDDAAAAEEEEMMM666444<<<4444447777777r/rLcHeZdZd dZd dZd dZd dZd dZdZdZ d Z dS) JSONBPathNc|st|ttfr2t|j|}t|j|dj|Sr`) rZrarbrcjsonbrPre jsonb_setrSrgs r.rjzJSONBPath.appends^  =jt 55 =HHT[44U;;<.innersB#d|,, HC4=GGGdB,, ,r/r:)rrs` r._ez JSONField._es# - - - - - r/c8|||SrG)Path)r)r]s r.r^zJSONField.__getitem__syyt$$r/c>d|D}tj|g|RS)Nc0g|]}t|dSFrrV.0ps r. z%JSONField.extract..%:::qqE***:::r/)rcrr)pathss r.extractzJSONField.extracts-::E:::t,e,,,,r/cBt|dt|dS)Nz->FrrrVr)rSs r. extract_jsonzJSONField.extract_jsons!$eDE&B&B&BCCCr/cBt|dt|dS)Nz->>Frrrs r. extract_textzJSONField.extract_texts!$uTU'C'C'CDDDr/cT||||SrG)rrjrgs r.rjzJSONField.append"yy%%eW555r/cT||||SrG)rrqrgs r.rqzJSONField.insertrr/cT||||SrG)rrsrgs r.rsz JSONField.sets"yy""5'222r/cT||||SrG)rrvrgs r.rvzJSONField.replaces"yy&&ug666r/cR|||SrG)rr{)r)datas r.r{zJSONField.updates yy%%d+++r/cx|s'||Stj|g|RSrG)rr~rcr}rs r.r~zJSONField.removes> ,99T??))++ +~d+U++++r/c6t|SrG)rcrrHs r.rzJSONField.json_type||D!!!r/c0|r||fn|f}tj|SrG)rcr)r)rSr,s r.rzJSONField.lengths$#0d||$#T**r/c6t|S)a? Schema of `json_each` and `json_tree`: key, value, type TEXT (object, array, string, etc), atom (value for primitive/scalar types, NULL for array and object) id INTEGER (unique identifier for element) parent INTEGER (unique identifier of parent element or NULL) fullkey TEXT (full path describing element) path TEXT (path to the container of the current element) json JSON hidden (1st input parameter to function) root TEXT hidden (2nd input parameter, path at which to start) )rcrrHs r.rzJSONField.childrens||D!!!r/c6t|SrG)rcrrHs r.rzJSONField.treerr/)NNrG))r0r1r2rJrrLrrOrrrr EQ__eq__NE__ne__GT__gt__GTE__ge__LT__lt__LTE__le__Field__hash__r^rrrrjrqrsrvr{r~rrrrr5r6s@r.rrsJ F D222222   RYYF RYYF RYYF RZZF RYYF RZZF~H%%%---DDDEEE6666666633337777,,,,,, """++++"""""""""""r/rc.eZdZdZeZdZdZdZdZ dS) JSONBFieldJSONBc|Dt|ts-t||}|SdSrG)rZr rcrrerzs r.rzJSONBField.db_value sF  eT** :!1!1%!8!899L  r/c6t|SrG)rcrdrHs r.rdzJSONBField.jsonswwt}}r/c>d|D}tj|g|RS)Nc0g|]}t|dSrrrs r.rz&JSONBField.extract..rr/)rcrrs r.rzJSONBField.extracts.::E:::-u----r/cx|s'||Stj|g|RSrG)rr~rcrrs r.r~zJSONBField.removes> ,99T??))++ +t,e,,,,r/N) r0r1r2rJrrrrdrr~r:r/r.rrsZJ D ...-----r/rcJeZdZd fd ZdZedZdZd d ZxZ S) SearchFieldFNc |rtdt|ztt|||ddS)Nz8SearchField does not accept these keyword arguments: %s.T) unindexedr4null)r%sortedr'rrO)r)rr4kr-s r.rOzSearchField.__init__sm  ;.06q :;; ; k4  ))I6A * N N N N Nr/c"t||SrG)match)r)terms r.rzSearchField.match&sT4   r/ct|ds:d|jjjD}||j|_|jS)N_fts_column_indexcFg|]}t|t|jSr:)rZrr+)rfs r.rz0SearchField.fts_column_index..,s8<<< *1k : :.WsDDDc!ffDDDr/ UNINDEXEDc,g|]}t|Sr:rrs r.rzCVirtualTableSchemaManager._create_virtual_table..cs===c!ff===r/)r* clean_optionsr roptions_create_contextliteralrextension_modulerZr r@prefix_argumentsextendrr!_hiddenrr4rrjr arguments_create_table_option_sqlr) r)saferrA ext_moduler$metarR field_defs r._create_virtual_tablez/VirtualTableSchemaManager._create_virtual_table>s&*** tz'/ 9 9;;""$$ +,,,  * KK( ) ) ) #dj// ')   Z%6 j$ ' ' '77:&& & J  ((--- z   F   DDd.CDDD E E E' 2 2E%*.. %-  1223I 3  [!1!1222   Xi00 1 1 1 1 > ?   ==dn=== > > >  E   T::7CC D D Dww' 22333r/c t|jtr|j|fi|St t |j|fi|SrG) issubclassr* VirtualModelr*r'r _create_table)r)r&rr-s r.r.z'VirtualTableSchemaManager._create_tableisd dj, / / ?-4-d>>g>> >Cu.55C  r/T)r0r1r2r*r.r5r6s@r.rr=sR)4)4)4)4Vr/rc>eZdZGddZedZdS)r-c"eZdZdZdZdZdZeZdS)VirtualModel.MetaNF) r0r1r2r$r r! primary_keyrschema_manager_classr:r/r.Metar2rs,  8r/r5c|SrGr:)clsrs r.rzVirtualModel.clean_optionsysr/N)r0r1r2r5 classmethodrr:r/r.r-r-qsW99999999[r/r-c$eZdZedZdS) BaseFTSModelcF|d}|d}|d}t|tr |dkrd|d<n.s":":":a3q66":":":r/z'%s'z' fts5"%s")getrZ basestringrrr*r table_namer4ratuplerWstripr lower)r7rr<r=r>s r.rzBaseFTSModel.clean_optionss&++i((X&&;;z** gz * * =w"}}!%GI    ' ' =!' (;(F(/(;"="=GI   <&4-00 <":":6":":":;; &d);); ;GH   4 288::fDD#)8"3GJ r/N)r0r1r2r8rr:r/r.r:r:~s-[r/r:ceZdZdZeZGddZedZedZ edZ edZ edd Z edd Z ed ZedZedZedZedZedZe ddZe ddZe ddZe ddZdS)FTSModelz VirtualModel class for creating tables that use either the FTS3 or FTS4 search extensions. Peewee automatically determines which version of the FTS extension is supported and will use FTS4 if possible. ceZdZdezZdS) FTSModel.MetazFTS%sN)r0r1r2 FTS_VERSIONr r:r/r.r5rNs"[0r/r5c |jj}|jjd|d|d|d}|S)Nz INSERT INTO (z ) VALUES('z');)rrGdatabase execute_sqlfetchone)r7cmdtblress r._fts_cmdzFTSModel._fts_cmdsOi"i ,,,25##sssCCC @BB||~~r/c,|dSNoptimizerXr7s r.r[zFTSModel.optimize||J'''r/c,|dSNrebuildr\r]s r.razFTSModel.rebuild||I&&&r/c,|dS)Nintegrity-checkr\r]s r.integrity_checkzFTSModel.integrity_checks||-...r/c8|d|d|S)Nzmerge=r?r\)r7blockssegmentss r.mergezFTSModel.merges!|||VVVXX>???r/Tc:|d|rdpdzS)Nz automerge=%s10r\)r7states r. automergezFTSModel.automerges"||Nem.BsCDDDr/c6t|jj|SzU Generate a `MATCH` expression appropriate for searching this table. rrrr7rs r.rzFTSModel.match SY%t,,,r/czt|jjt}tj|g|RSrG)rc matchinforrFTS3_MATCHINFOfts_rank)r7weightsrws r.rankz FTSModel.ranks2LL!1>BB {9/w////r/czt|jjt}tj|g|RSrG)rcrwrrFTS4_MATCHINFOfts_bm25r7rz match_infos r.bm25z FTSModel.bm25s2\\#)"2NCC {:00000r/czt|jjt}tj|g|RSrG)rcrwrrr} fts_bm25frs r.bm25fzFTSModel.bm25fs2\\#)"2NCC |J11111r/czt|jjt}tj|g|RSrG)rcrwrrr} fts_luceners r.lucenezFTSModel.lucenes2\\#)"2NCC }Z2'2222r/c|s |}nut|tr[g}|jjD]F} || || jd} || G||}n||}d} |} |r|||f} |r|st|} |j | | | | S)N?r:) rZrbrrrEr+rjaliasr@selectwhererorder_by) r7rrz with_score score_aliasscore_fnexplicit_orderingr{ weight_argsrR field_weight selectionrs r._searchzFTSModel._searchs &8::DD  & & &K0 1 1 '{{5'++ej#2N2NOO ""<00008[)DD8W%D   7djj556I  (/ (;''H$syy''(## %r/NFscorec@||||||j|S'Full-text search using selected `term`.)rr{r7rrzrrrs r.searchzFTSModel.search.{{     H   r/c@||||||j|Sz:Full-text search for selected `term` using BM25 algorithm.)rrrs r. search_bm25zFTSModel.search_bm25rr/c@||||||j|Sr)rrrs r. search_bm25fzFTSModel.search_bm25fs.{{     I   r/c@||||||j|Sr)rrrs r. search_lucenezFTSModel.search_lucenes.{{     J   r/)rfrgr/NFrF)r0r1r2__doc__r8r9r5r8rXr[rarerkrprr{rrrrrrrrr:r/r.rLrLsA JLLE11111111[ (([(''['//[/@@@[@EEE[E--[- 00[011[122[233[3%%[%6FM!&   [ 8=;@   [ 9>r.s8KK3q663J3JSVV3J3J3J3JKKr/z(?:[^\s"]|"(?:\\.|[^"])*")+c*eZdZdZeZGddZddddZedZ ed Z e d Z e e d fd Zed ZedZedZe d"dZe d"dZedZedZedZedZedZedZedZedZedZed#dZed$d!ZdS)% FTS5Modelan Requires SQLite >= 3.9.0. Table options: content: table name of external content, or empty string for "contentless" content_rowid: column name of external content primary key prefix: integer(s). Ex: '2' or '2 3 4' tokenize: porter, unicode61, ascii. Ex: 'porter unicode61' The unicode tokenizer supports the following parameters: * remove_diacritics (1 or 0, default is 1) * tokenchars (string of characters, e.g. '-_' * separators (string of characters) Parameters are passed as alternating parameter name and value, so: {'tokenize': "unicode61 remove_diacritics 0 tokenchars '-_'"} Content-less tables: If you don't need the full-text content in it's original form, you can specify a content-less table. Searches and auxiliary functions will work as usual, but the only values returned when SELECT-ing can be rowid. Also content-less tables do not support UPDATE or DELETE. External content tables: You can set up triggers to sync these, e.g. -- Create a table. And an external content fts5 table to index it. CREATE TABLE tbl(a INTEGER PRIMARY KEY, b); CREATE VIRTUAL TABLE ft USING fts5(b, content='tbl', content_rowid='a'); -- Triggers to keep the FTS index up to date. CREATE TRIGGER tbl_ai AFTER INSERT ON tbl BEGIN INSERT INTO ft(rowid, b) VALUES (new.a, new.b); END; CREATE TRIGGER tbl_ad AFTER DELETE ON tbl BEGIN INSERT INTO ft(fts_idx, rowid, b) VALUES('delete', old.a, old.b); END; CREATE TRIGGER tbl_au AFTER UPDATE ON tbl BEGIN INSERT INTO ft(fts_idx, rowid, b) VALUES('delete', old.a, old.b); INSERT INTO ft(rowid, b) VALUES (new.a, new.b); END; Built-in auxiliary functions: * bm25(tbl[, weight_0, ... weight_n]) * highlight(tbl, col_idx, prefix, suffix) * snippet(tbl, col_idx, prefix, suffix, ?, max_tokens) ceZdZdZdS)FTS5Model.MetarCNr0r1r2r r:r/r.r5rns!r/r5zQBesides the implicit `rowid` column, all columns must be instances of SearchFieldz3Secondary indexes are not supported for FTS5 modelsz4FTS5 models must use the default `rowid` primary key)rJrpkc^|jjjdkrt|jd|jjD]8}t|ttfst|jd9|jj rt|jddS)Nr"rrJr) rr3r+ImproperlyConfigured_error_messagesfieldsvaluesrZrr!indexes)r7rRs r.validate_modelzFTS5Model.validate_modelxs 9 % 0 0&s':4'@AA AY%,,.. N NEek:%>?? N*3+>|+LMMM N 9  E&s':7'CDD D E Er/ctjddtkrdStjd} |dno# |d|d|jjdn#YY| dSxYwYnxYw| n#| wxYwdS)NrFz:memory:z0CREATE VIRTUAL TABLE fts5test USING fts5 (data);TrC) rsqlite_version_infoFTS5_MIN_SQLITE_VERSIONconnectexecuteenable_load_extensionload_extensionrrRclose)r7tmp_dbs r.fts5_installedzFTS5Model.fts5_installeds  &rr *-D D D5,,  NNM N N N N : :,,T222%%f--- "11&9999 u LLNNNNN:9 LLNNNNFLLNNNNtsAA C B7*B8 B7B2B7C2B75CC%ct|}|D]G}|dr|dr-t |t zrdSHdS)z Simple helper function to indicate whether a search query is a valid FTS5 query. Note: this simply looks at the characters being used, and is not guaranteed to catch all problematic queries. "FT) _quote_refindall startswithendswithrs_invalid_ascii)querytokenstokens r.validate_queryzFTS5Model.validate_querysv""5))  E$$ )<)< 5zzN* uu tr/rcg}d}t|}|D]}|dr+|dr||Bt |}|t z}|rd}|D]}|||}|||rd|S|S)z2 Clean a query of invalid tokens. FrTr) rrrrrjrsrrvrW) rrvaccum any_invalidrr token_setinvalid_for_tokencs r. clean_queryzFTS5Model.clean_querys  ""5)) E$$ )<)<  U###E I )N :   6" *66A!MM!W55EE LL      #88E?? " r/c6t|jj|Srrrsrts r.rzFTS5Model.matchrur/c8|r |j|ntdS)Nr{)rr@)r7r,s r.r{zFTS5Model.ranks"&7xsxCKK7r/c:tj|jjg|RSrG)rcrrr)r7rzs r.rzFTS5Model.bm25swsy'2'2222r/NFrcd|t|||||Sr)rrrrs r.rzFTS5Model.searchs7  ! !$ ' '      r/c |std}nt|trg}|jjD]`}t|t rI|jsB|||||j datj |jj g|R}ntj |jj g|R}d} |} |r|| |f} |r|st|} |j| |t"|| S)rr{rr:)r@rZrbrrrrrjrEr+rcrrrrrrrrr) r7rrzrrrr{rrRrrs r.rzFTS5Model.search_bm25si 7v;;DD  & & 7K0 J Je[11J%/J&& E7;;uz3+G+GHHJJJ739+:k:::DD739+6g666D   7djj556I  (/ (;''H$syy!6!6t!>(## %r/c l|jj}|g}|g}|D]<\}}|t |||=t t d|jjt|t dt|fS)Nz INSERT INTOVALUES)rritemsrjrr r@r)r7rU extra_paramsrVcolumnsrkeyrhs r. _fts_cmd_sqlzFTS5Model._fts_cmd_sqlsi%&,,.. ! !JC NN6#;; ' ' ' MM%     I  W % % MM V $ $ &'' 'r/c \|j|fi|}|jj|SrG)rrrRr)r7rUrrs r.rXzFTS5Model._fts_cmds5  55 55y!))%000r/cld|cxkrdksntd|d|S)Nrr zlevel must be between 0 and 16rpr{)r%rX)r7levels r.rpzFTS5Model.automerge sFU    b    =>> >||Ke|444r/c0|d|S)Nrkrr\)r7npagess r.rkzFTS5Model.merges||G&|111r/c,|dSrZr\r]s r.r[zFTS5Model.optimizer^r/c,|dSr`r\r]s r.razFTS5Model.rebuildrbr/c0|d|S)Npgszrr\)r7rs r.set_pgszzFTS5Model.set_pgszs||F|...r/c0|d|S)Nr{rr\)r7rank_expressions r.set_rankzFTS5Model.set_rank!s||F|999r/c,|dS)Nz delete-allr\r]s r. delete_allzFTS5Model.delete_all%s||L)))r/rc0|d|S)Nrdrr\)r7r{s r.rezFTS5Model.integrity_check)s||-D|999r/rowc dvrtddz}t|sGfdd}ttt t t |d}dkrtt|d<ndkrtt|d <d jz}t|t|tf|t|S) N)rcolinstancez5table_type must be either "row", "col" or "instance".z_vocab_model_%sceZdZjjZpjjdzZejje Z dS)"FTS5Model.VocabModel..Meta_vN) r0r1r2rrRrGrc fts5vocabrr@r )r7table table_typesr.r5r6sV9-"Aci&:T&A #%<<I$C OO$%$%   r/r5)rdoccntr"r5rroffsetz%sVocab) r%rr TextField IntegerFieldr!r0setattrr&r-getattr)r7rrattrr5attrs class_names``` r. VocabModelzFTS5Model.VocabModel-s, 7 7 7+,, ,!:-sD!! I % % % % % % % % % % % %%Y//#~~#~~# EU""+I66e z))".|"<"<h"S\1J CtJGG H H HsD!!!r/r)r)rN)r0r1r2rr!r"r5rr8rr staticmethodrrrrr{rrrrrXrprkr[rarrrrerr:r/r.rr4s44n JLLE""""""""5FD OEE[E[*  \ #&3r77\.--[- 88[833[3FM!&[8=;@%%%[%6 ' '[ '11[155[5 22[2(([(''['//[/::[:**[*:::[:"""["""r/rc+jjD]}|jur|ntdjjGfddt }Gfdd}djz}t||fd|iS)z3Model factory for the transitive closure extension.Nz,Unable to find self-referential foreign key.ceZdZeeZeeZeeZeeZ eeZ eeZ GddZ e dfd Ze dfd Ze d fd ZdS) &ClosureTable..BaseClosureTableceZdZdZdS)+ClosureTable..BaseClosureTable.Metatransitive_closureNrr:r/r.r5r is3   r/r5NFc~|jd||jk|j|k}|||j|k}n |s||jdk}|SNdepthonr)rrrrWidrrootobjectsr7noder include_noder model_class source_keys r. descendantsz2ClosureTable..BaseClosureTable.descendantsls f[#)//'*B*BCCd3J#&$8d::eCH,--gii    CI$677! 3 CIM22Lr/c~|jd||jk|j|k}|r||j|k}n |s||jdk}|Sr)rrrrWrrrrrs r. ancestorsz0ClosureTable..BaseClosureTable.ancestorsys f[#)//'*B*BCCd3J#($:d<<eCFdN++gii   3 CI$677! 3 CIM22Lr/c urK|jj}|k}n ||jk|j|k|jdkz} |z }|s| |k}|S)Nr) __data__rEr+rrrWrrrr) r7rrfk_valuersiblings foreign_keyrreferencing_classreferencing_keyrs r.r#z/ClosureTable..BaseClosureTable.siblingss K//=,,[-=>>#**,,22;(3JKK.#VO44!T#;#(+BTDD"UCFdNsyA~#FGG % &((% h 677!'))   8 J$$677Lr/NFF)r0r1r2r rrrridcolumn parentcolumnr tablenamer5r8rrr#)r$rr%r&rsr.BaseClosureTabler as3 \** \, ' '< **#|I.. |L)) L++  4 4 4 4 4 4 4 4                                r/r,c`eZdZjjZjjjjdZdZdS)ClosureTable..Meta)r+r)r*FN) r0r1r2rrRrGr4rr3)r$r%r&sr.r5r.sB$*3*0;'3'355 r/r5z %sClosure)rrefs rel_modelr%r3r-r0r&) rr$r%r& field_objr,r5r+rs ```` @r. ClosureTabler2Os$ '$*/ M MI"k11' 2KLL L".J$;;;;;;;;;;;<;;;z - -D ')FD> : ::r/ceZdZGddZedZed dZedZedZ edZ ed Z ed Z d S) LSMTableceZdZdZdZdS) LSMTable.Metalsm1N)r0r1r2r filenamer:r/r.r5r6s!r/r5c|jj}|stdt|dkr|ddkrd|z}|jjstd|jj}t |t rtdt |tttfstdd |_ t |trd }nt |trd }nd }|d|j z|g|j_ t|jj dkr|jj d |j_n d|j_|S)NzILSM1 extension requires that you specify a filename for the LSM database.rrrDz-LSM1 models must specify a primary-key field.z8LSM1 models must explicitly declare a primary key field.z9LSM1 key must be a TextField, BlobField, or IntegerField.TUINTBLOBrEr )rr8r%lenr3rZ AutoFieldr BlobFieldrr#r+r!r _value_field)r7rr8r data_types r.rzLSMTable.clean_optionssl9% ->?? ?8}}!!hqkS&8&8!H,y$ NLMM Mi# c9 % % +*++ +# 9lCDD .-.. . c< ( ( II Y ' ' III&.0A9%M " sy& ' '1 , ,%(Y%FF # # t"U  # t $ $ "DD s # # ">D&)SY "# D!!#####r/c|||jj|\}}|SrG)rNdeleterr3r)r7rrrRs r. delete_by_idzLSMTable.delete_by_idsB55 JJLL I ! y}}r/N)rB) r0r1r2r5r8rrrrHrNrSrXr[r:r/r.r4r4s!![!F000[0##\# 4 4\ 4  [  $ $[ $[r/r4MATCHc0tj||duSrG)rer)regexrhs r._sqlite_regexpr`s 9UE " "$ ..r/c6eZdZ dfd ZfdZdZxZS)SqliteExtDatabaseNTFctt|j|g|Ri| d|_|rtst dto|du} |r~| rt |nl|td|td|td|td|r | stdt||r|tdd |r | std t||r|td | |_dS) NzRSqliteExtDatabase initialized with C extensions, but shared library was not found!Fr~ryrrz0C extension required to register hash functions.regexpr:z(C extension required to use bloomfilter. json_contains)r'rbrO _row_factoryCYTHON_SQLITE_EXTENSIONSrrregister_functionrr{r%rr`r_json_contains _c_extensions) r)rR c_extensionsrank_functionshash_functionsregexp_function bloomfilterrer,rprefer_cr-s r.rOzSqliteExtDatabase.__init__s 0&&/J4JJJ6JJJ   5 8 5&(455 5,KU1J  ; ;'----&&tZ888&&tZ888&&t[999&&t\:::  * / "./// #D ) ) )  @  " ">8Q ? ? ?  ' M !KLLL  & & &  D  " ">? C C C%r/ctt|||jr|j|_dSdSrG)r'rb_add_conn_hooksrf row_factoryr)connr-s r.rrz!SqliteExtDatabase._add_conn_hooks;sH &&66t<<<   1#0D    1 1r/c||_dSrG)rfr)rcs r.rszSqliteExtDatabase.row_factory@sr/)NTFFFF)r0r1r2rOrrrsr5r6s@r.rbrbsoCG7<27!&!&!&!&!&!&F11111 r/rbr r:rrgr c0fd}t|S)zt Expose a sqlite3_status() call for a particular flag as a property of the Database object. c:t}r|dn|SrP)r)r)resultflagreturn_highwaters r.getterz__status__..getteras#&t,,F 0<6!99f .getterlsV{'*+LMMM)$+*:DAAF !ay 0<6!99f BBBBB C Cr/cp||_|s|j||SrG)r is_closedrrrws r. on_commitzCSqliteExtDatabase.on_commit8 "D >>## 6!11"555Ir/cp||_|s|j||SrG)rrrrrws r. on_rollbackzCSqliteExtDatabase.on_rollbacks8"$D >>## 8!33B777Ir/cp||_|s|j||SrG)rrrrrws r. on_updatezCSqliteExtDatabase.on_updaterr/c4|jSrG)rchangesrHs r.rzCSqliteExtDatabase.changess$,,.. .r/c4|jSrG)rlast_insert_rowidrHs r.rz$CSqliteExtDatabase.last_insert_rowids$6688 8r/c4|jSrG)r autocommitrHs r.rzCSqliteExtDatabase.autocommits$//11 1r/Ncrt|||||SN)pagesr+progress)r connection)r) destinationrr+rs r.rzCSqliteExtDatabase.backups>$//++[-C-C-E-E %D8EEE Er/cNt|||||Sr)rr)r)r8rr+rs r.rz!CSqliteExtDatabase.backup_to_files2!$//"3"3XU'+h@@@ @r/c(t|||||SrG)r)r)rcolumnr" read_onlys r. blob_openzCSqliteExtDatabase.blob_openseVUI>> >r/Tr(NNN):r0r1r2rOrrrrrrrrrrrrrrrSQLITE_STATUS_MEMORY_USED memory_usedSQLITE_STATUS_MALLOC_SIZE malloc_sizeSQLITE_STATUS_MALLOC_COUNT malloc_countSQLITE_STATUS_PAGECACHE_USEDpagecache_used SQLITE_STATUS_PAGECACHE_OVERFLOWpagecache_overflowSQLITE_STATUS_PAGECACHE_SIZEpagecache_sizeSQLITE_STATUS_SCRATCH_USED scratch_usedSQLITE_STATUS_SCRATCH_OVERFLOWscratch_overflowSQLITE_STATUS_SCRATCH_SIZE scratch_sizerSQLITE_DBSTATUS_LOOKASIDE_USEDlookaside_usedSQLITE_DBSTATUS_LOOKASIDE_HIT lookaside_hit#SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZElookaside_miss#SQLITE_DBSTATUS_LOOKASIDE_MISS_FULLlookaside_miss_fullSQLITE_DBSTATUS_CACHE_USED cache_usedSQLITE_DBSTATUS_SCHEMA_USED schema_usedSQLITE_DBSTATUS_STMT_USEDstatement_usedSQLITE_DBSTATUS_CACHE_HIT cache_hitSQLITE_DBSTATUS_CACHE_MISS cache_missSQLITE_DBSTATUS_CACHE_WRITE cache_writer5r6s@r.rrus F F F F F  > > > > > > @ @ @ @ @ C C C C C             / / /  9 9  9  2 2  2 E E E E=A$( @ @ @ @  ? ? ? ?!j!:;;  j!:DAA !z"<== #$@AA'Z(HII#$@$GG!z"<== %:&DEE!z"tLL %&?MM L!:E4HH !\"tLL r/rc8t|tj|SrG)rr r\)lhsrs r.rrs c28S ) ))r/c\t}fdtd|dDS)Nc \g|](}tjd||dzd)S)z@Irr)structr)rrBbufs r.rz%_parse_match_info..s6 M M M1FM$AacE + +A . M M Mr/rr)r=range)rbufsizes` r._parse_match_infors4#hhG M M M Ma!8L8L M M MMr/cV|sdg|zSdg|z}t|D] \}}|||< |S)Nr r) enumerate)ncol raw_weightsrzrBweights r. get_weightsrsL  sTz#*";//  IAvGAJJ Nr/cJt|}d}|dd\}}t||}t|D]c}d||zdzz}t|D]F} || } | s || dzz} || } || dz} | dkr|| t| | z zz }Gd| S)Nr:rr r)rrrfloat)raw_match_inforrrrrrz phrase_numphrase_info_idxcol_numrcol_idxrow_hits all_rows_hitss r.r{r{s#>22J E bqb>DAq![))GAhhDD zA~12Qxx D DGW%F %15G "'*H&w{3M!||5??]#BCC D 6Mr/ct|}d}d}d}td\}}}} ||} ||} ||} | | z} | | z}t| |}t| D]}t| D]}||}|dkr|d||| zzzz}t||}t||dz}t j| |z dz|dzz }|dkrd }t|| |z}t|| |zpd }||z }||d zz}d |z ||zz}|||zz}|||z z}|||zz }׌| S) z Usage: # Format string *must* be pcnalx # Second parameter to bm25 specifies the index of the column, on # the table being queries. bm25(matchinfo(document_tbl, 'pcnalx'), 1) AS rank g333333?g?rrrrr:g?gư>r)rrrrmathlog)rr,rKBrP_OC_ON_OA_O term_count col_count total_docsL_OX_OrzrBjrxterm_frequencydocs_with_termidf doc_length avg_lengthrationumb_partdenompc_scores r.rrs#>22J A A EqCc3CJ3ICJ /C /C:)T**G :  ))y!! ) )AQZF{{qAI -./A":a=11N":a!e#455N(.036#c)+,,Cczzz#'233Jz#'2339rJ+E AG,C1WE *F"a&j1EcEk*H h' (EE3 )6 6Mr/cg} |tj|tj|fn#YdSxYw|rB|\}}t |t rnt |t r0|D],}||vrdS|||||f-nt |t r |D] }||vrdS n||vrdSnt |t rt |t rdSt |t rU tt|D]%}|||||f&n #t$rYdSwxYw||vrdSn||krdS|BdSrJ) rjrdrpoprZrbrarr= IndexError)src_jsonobj_jsonstackobjsrcrr]rBs r.riribs E dj**DJx,@,@ABBBBuu 99;;S c4  #t$$ 77C#~~$uuLL#c(CH!566667C&& %%D3$uu'%Cu T " " #t$$ uC&& !"3s88__77 c!fc!f%566667!!!! 55!Cu CZZ55 6 4s;AA'AE** E87E8rr()FF)hrdrr^rsyspeeweerrrrrr r r r r rplayhouse._sqlite_extrrrrrrrrrrrrg ImportError version_inforArFrxr}rrOrr>r!r8r< DecimalFieldrDrLrrrrrr SchemaManagerrModelr-r:rL _alphabetrsupperrrrrcompilerrr2r4r\r`SqliteDatabaserbrrrrrrSQLITE_STATUS_PARSER_STACKrrrrrrrrrrrrrSQLITE_DBSTATUS_DEFERRED_FKSrrrrrrr{rrir:r/r.r%s ######%                           $%%%$%A!J 22A26)CC!!KKK#9999999911111111;;;;;;;; """""L""" 8787878787z878787t77777777>]"]"]"]"]" ]"]"]"@--------.33333%333>11111 111h     5   <8LLLLL|LLL^ ) S* + + S^^ S"" # #$S##b''__ KKUU3ZZKKKKK  BJ5 6 6 X"X"X"X"X" X"X"X"vCG!%X;X;X;X;vddddd|dddN ///********ZTM !#$ '($!"%&" !!"#$ !"!"%&"!""# !$%!*+'*+' !!""##%          cMcMcMcMcM.cMcMcML***NNN !!!HNNNb#####sA99BB